cgroups(V1)이 작동하지 않습니다. 진단/디버깅하는 방법은 무엇입니까?

cgroups(V1)이 작동하지 않습니다. 진단/디버깅하는 방법은 무엇입니까?

특정 그룹에 대한 CPU 액세스를 25%로 제한하기 위해 공유 시스템에 cgroup을 설정했지만 작동하지 않는 것 같습니다. 따라야 할 단계는 다음과 같습니다.

  1. 다음 줄을 추가하세요 /etc/cgrules.conf.

    @guest_users cpu lowcpu

위 레코드에서 @guest_usersCPU 사용량을 제한하려는 구성원이 있는 Linux 그룹은 cpu컨트롤러이고, lowcpu다음 단계에 표시된 대로 cgroup을 구성하는 핸들입니다.

  1. 다음 행을 추가하십시오 /etc/cgconfig.conf.

    group lowcpu{
      cpu{
       cpu.shares=256;
      }
    }
    
  2. 활성화 및 다시 시작 cgred및 서비스를 사용하십시오.cgconfigsystemctl

저는 CentOS 시스템 7.5, 커널 3.10, 32개 코어를 실행하고 있습니다.

디렉토리가 /sys/fs/cgroup/cpu/lowcpu생성되고 cpu.shares파일에 256행이 있는 것을 볼 수 있습니다.

top그럼에도 불구하고 guest_users 그룹의 사용자가 여전히 CPU에 과부하를 걸 수 있다는 것을 발견했습니다 . 가능한 원인과 문제 디버깅 방법에 대한 제안 사항이 있습니까?

답변1

답은 에 있습니다스택 오버플로도움이되었습니다. 나는 cpu.sharescgroup과 시스템 프로세스 사이에 CPU 경합이 있을 때만 커널이 이 규칙을 시작한다는 것을 발견했습니다. 경합이 없으면 cgroup에서 모든 CPU 리소스를 사용할 수 있습니다. CPU 섹션에 다음 줄을 추가하기만 하면 됩니다.

cpu.cfs_period_us=1000000;
cpu.cfs_quota_us=800000;

위 행의 효과는 CPU의 1초마다 0.8초의 시간 분할을 cgroup 프로세스에 할당한다는 것입니다.

cgroup이 생성되었고 활성화되었는지 확인하려면 systemd-cgls및 명령이 systemd-cgtop유용합니다.

관련 정보