프로세스를 다시 시작하지 않으면 cgroups v2 cpuset이 적용되지 않습니다.

프로세스를 다시 시작하지 않으면 cgroups v2 cpuset이 적용되지 않습니다.

대기 시간에 민감한 일부 프로세스의 CPU 코어를 격리하기 위해 cgroup v2의 cpuset 컨트롤러를 사용하려고 합니다.

그룹을 만들었습니다 lowlatency.

mkdir /sys/fs/cgroup/lowlatency

1-7,9-15그리고 CPU 만 사용하도록 제한합니다 .

echo "1-7,9-15" > /sys/fs/cgroup/lowlatency/cpuset.cpus

root또한 이 그룹을 새로운 cpuset 파티션의 일부로 만들었습니다 .

echo "root" > /sys/fs/cgroup/lowlatency/cpuset.cpus.partition

마지막으로 루트 그룹은 더 이상 별도의 CPU를 사용하지 않습니다 1-7,9-15.

cat /sys/fs/cgroup/cpuset.cpus.effective
0,8

문제는 루트 하위 그룹의 프로세스가 여전히 잘못된 CPU를 사용하고 있다는 것입니다.

여기에 이미지 설명을 입력하세요.

CPU 선호도 마스크가 정확합니다.

여기에 이미지 설명을 입력하세요.

종료하고 다시 시작한 후 올바른 CPU(0 및 8)에 배치되었습니다. 이것은 cgroup의 버그입니까? 재부팅하지 않고 이러한 프로세스를 새 CPUSet으로 이동할 수 있습니까?

cpuset.cpus.partition=root낮은 대기 시간 그룹을 사용 하고 수동으로 제거해 보았는데 taskset -cp 4 1079다시 시작하지 않고도 작동했습니다.

여기에 이미지 설명을 입력하세요.

관련 정보