CPU 사용량을 제한하려면 cpu.cfs_quota_us 및 cpu.cfs_period_us를 사용하세요.

CPU 사용량을 제한하려면 cpu.cfs_quota_us 및 cpu.cfs_period_us를 사용하세요.

시스템에는 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(공유/할당량 사용)에 비해 더 효율적인 할당 메커니즘입니다.

관련 정보