대기 시간에 민감한 일부 프로세스의 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
다시 시작하지 않고도 작동했습니다.