격리 된 CPU 세트에서 멀티 스레드 벤치 마크를 실행하려고합니다. 긴 이야기를 짧게 줄이기 위해 처음에는 isolcpus
and로 시도 taskset
했지만 문제 가 발생했습니다 . 이제 cgroups / csets를 가지고 놀고 있습니다.
"간단한" cset shield
사용 사례가 잘 작동해야 한다고 생각합니다 . 코어가 4 개이므로 벤치마킹에 코어 1-3을 사용하고 싶습니다 (이러한 코어를 적응 형 틱 모드로 구성했습니다). 그러면 코어 0을 다른 모든 용도로 사용할 수 있습니다.
여기 의 자습서 를 따르면 다음과 같이 간단해야합니다.
$ sudo cset shield -c 1-3
cset: --> shielding modified with:
cset: "system" cpuset of CPUSPEC(0) with 105 tasks running
cset: "user" cpuset of CPUSPEC(1-3) with 0 tasks running
이제 "방패"가 격리되어 있으며 (사용자 cset) 코어 0은 다른 모든 것 (시스템 cset)을위한 것입니다.
좋아, 지금까지 좋아 보인다. 이제를 보자 htop
. 프로세스는 모두 CPU 0으로 마이그레이션되어야합니다.
응? 일부 프로세스는 차폐 코어에서 실행중인 것으로 표시됩니다. htop에 버그가있는 경우를 배제 taskset
하기 위해 쉴드에있는 것으로 표시된 프로세스의 선호도 마스크를 검사하는 데 에도 노력했습니다 .
그 작업이 움직일 수 없었습니까? CPU3 (쉴드에 있어야 함)에서 실행되는 것으로 표시된 임의의 프로세스를 뽑아 htop
시스템 cgroup에 다음과 같이 표시되는지 확인하십시오 cset
.
$ cset shield -u -v | grep 864
root 864 1 Soth [gmain]
vext01 2412 2274 Soth grep 864
그래,에 따라 시스템 cgroup에서 실행 중입니다 cset
. 그래서 htop
및 cset
동의하지 않는다.
무슨 일이야? 누가 CPU 친화도 ( htop
/ taskset
)를 신뢰 cset
합니까?
나는 당신 cset
과 친밀감을 함께 사용해서는 안된다고 생각 합니다. 아마도 방패가 잘 작동하고 있기 때문에 선호도 마스크와 htop
출력을 무시해야 합니다. 어느 쪽이든, 나는 혼란 스럽습니다. 누군가 빛을 비출 수 있습니까?
numactl
하고 cgconfig
그리고 cgrules
/ cgred
당신이 무슨 일을하는지 간소화 할 수 있습니다. 이것들 은 약간의 작업으로 데비안 에서 사용할 수 있습니다 .