특정 그룹에 대한 CPU 액세스를 25%로 제한하기 위해 공유 시스템에 cgroup을 설정했지만 작동하지 않는 것 같습니다. 따라야 할 단계는 다음과 같습니다.
다음 줄을 추가하세요
/etc/cgrules.conf
.@guest_users cpu lowcpu
위 레코드에서 @guest_users
CPU 사용량을 제한하려는 구성원이 있는 Linux 그룹은 cpu
컨트롤러이고, lowcpu
다음 단계에 표시된 대로 cgroup을 구성하는 핸들입니다.
다음 행을 추가하십시오
/etc/cgconfig.conf
.group lowcpu{ cpu{ cpu.shares=256; } }
활성화 및 다시 시작
cgred
및 서비스를 사용하십시오.cgconfig
systemctl
저는 CentOS 시스템 7.5, 커널 3.10, 32개 코어를 실행하고 있습니다.
디렉토리가 /sys/fs/cgroup/cpu/lowcpu
생성되고 cpu.shares
파일에 256행이 있는 것을 볼 수 있습니다.
top
그럼에도 불구하고 guest_users 그룹의 사용자가 여전히 CPU에 과부하를 걸 수 있다는 것을 발견했습니다 . 가능한 원인과 문제 디버깅 방법에 대한 제안 사항이 있습니까?
답변1
답은 에 있습니다스택 오버플로도움이되었습니다. 나는 cpu.shares
cgroup과 시스템 프로세스 사이에 CPU 경합이 있을 때만 커널이 이 규칙을 시작한다는 것을 발견했습니다. 경합이 없으면 cgroup에서 모든 CPU 리소스를 사용할 수 있습니다. CPU 섹션에 다음 줄을 추가하기만 하면 됩니다.
cpu.cfs_period_us=1000000;
cpu.cfs_quota_us=800000;
위 행의 효과는 CPU의 1초마다 0.8초의 시간 분할을 cgroup 프로세스에 할당한다는 것입니다.
cgroup이 생성되었고 활성화되었는지 확인하려면 systemd-cgls
및 명령이 systemd-cgtop
유용합니다.