격리 된 CPU 세트에서 멀티 스레드 벤치 마크를 실행하려고합니다. 긴 이야기를 짧게 줄이기 위해 처음에는 isolcpusand로 시도 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당신이 무슨 일을하는지 간소화 할 수 있습니다. 이것들 은 약간의 작업으로 데비안 에서 사용할 수 있습니다 .
