시스템에는 32개의 코어(각각 16개의 코어가 있는 2개의 CPU)가 있으며 사용자를 4개의 코어로만 제한하고 싶습니다(이 4개의 코어는 100% 사용됨). 매뉴얼에 따르면 두 가지 커널 매개변수가 있습니다
cpu.cfs_quota_us
.cpu.cfs_period_us
kernel.org의 예문서설명하다:
With 500ms period and 1000ms quota, the group
can get 2 CPUs worth of runtime every 500ms.
# echo 1000000 > cpu.cfs_quota_us /* quota = 1000ms */
# echo 500000 > cpu.cfs_period_us /* period = 500ms */
이 ms가 어떻게 결정되는지 알고 싶습니다. 제 경우에는 할당량이 32,000,000, 기간이 4,000,000이라고 생각합니다. 내가 맞나요? 그 내용은 etc/cgconfig.conf
다음과 같습니다:
group ansys {
cpu {
cpu.cfs_quota_us = 32000000;
cpu.cfs_period_us = 4000000;
}
memory {
memory.limit_in_bytes = 8000m;
}
}
하지만 작동하지 않습니다! 오류를 실행하면 /etc.init.d.cgconfig start
다음 오류가 발생합니다.
Failed to parse /etc/cgconfig.conf or /etc/cgconfig.d
[FAILED]Starting cgconfig service: /sbin/cgconfigparser; error loading
/etc/cgconfig.conf: Failed to remove a non-empty group
답변1
구경하다중앙 처리 유닛cgroup/컨테이너 매개변수. 그것은 당신을 허용합니다특정 CPU 코어에 컨테이너 고정. 귀하의 경우 코어 0-3에 대해 하나의 컨테이너만 지정하고 다른 컨테이너가 동일한 코어에서 실행되는 것을 허용하지 않으므로 컨테이너당 4개의 코어를 100% 활용하도록 허용할 수 있습니다.
또한, cpuset은 CPU(공유/할당량 사용)에 비해 더 효율적인 할당 메커니즘입니다.