메모리 제한과 유사한 방식으로 CPU 코어에 대한 액세스를 관리할 수 있습니까?
특히, 특정 프로세스 세트를 원하는 CPU 코어 수로 제한하기 위해 cgroup을 동적으로 생성하고 제거할 수 있어야 합니다.
다중 소켓(최대한 작은 NUMA) 시스템에서 작업해야 하기 때문에 CPU 세트를 사용할 수 없습니다. 프로세스를 코어에 하드 고정하면 코어 조각화(프로세스 범위는 런타임 시 몇 분에서 몇 달까지).
두 번째 문제는 이것이 cgroup 외부 프로세스와 잘 작동해야 한다는 것입니다.
예를 들어 다음과 같은 상황이 발생할 수 있습니다.
1 process limited to 2 cores and 4GB RAM
2 processes unlimited, but should have guaranteed access to the remainder of the machine
답변1
다음 두 가지 옵션을 사용하여 cgroup에 사용 가능한 CPU 코어 수를 제한할 수 있습니다.
cpu.cfs_period_us
cpu.cfs_quota_us
cfs_period_us
이 작업을 얼마나 자주 수행해야 하는지 정의하고 cfs_quota_us
각 기간에 cgroup이 수신해야 하는 금액을 정의합니다. us
따라서 N번 지정하면 cfs_quota_us
cgroup 수는 N개의 코어를 받게 됩니다.cfs_period_us