24.3. CPU 대역폭을 조정하여 애플리케이션의 CPU 시간 분배 제어
cpu
컨트롤러의 관련 파일에 값을 할당하여 특정 cgroup 트리 아래의 애플리케이션에 CPU 시간 배포를 규제해야 합니다.
사전 요구 사항
- root 권한이 있습니다.
- CPU 시간 배포를 제어하려는 애플리케이션이 두 개 이상 있습니다.
- 관련 애플리케이션이 CPU 시간 배포를 위해 cgroup 준비에 설명된 대로 동일한 CPU에서 CPU 시간 경쟁을 보장했습니다.
-
cgroups-v2
마운트에 설명된 대로 cgroups-v2 파일 시스템을 마운트했습니다. -
CPU 시간 배포를 위해 cgroup 준비에 설명된 것과 유사하게 상위 제어 그룹 및 하위 제어 그룹에서
cpu
및cpuset
컨트롤러를 활성화했습니다. 아래 예제와 같이
/sys/fs/cgroup/
root 제어 그룹 내에 두 개의 하위 제어 그룹을 생성했습니다.… ├── Example │ ├── tasks …
프로세스
제어 그룹 내에서 리소스 제한을 달성하도록 CPU 대역폭을 구성합니다.
# echo "200000 1000000" > /sys/fs/cgroup/Example/tasks/cpu.max
첫 번째 값은 하위 그룹에서 모든 프로세스를 집합적으로 실행할 수 있는 마이크로초 단위로 허용된 시간 할당량입니다. 두 번째 값은 마침표 길이를 지정합니다.
단일 기간 동안 제어 그룹의 프로세스가 이 할당량에 의해 지정된 시간을 집합적으로 소모하면 나머지 기간 동안 제한되며 다음 기간까지 실행할 수 없습니다.
이 명령은 CPU 시간 분배 제어를 설정하여
/sys/fs/cgroup/Example/tasks
하위 그룹에서 모든 프로세스가 1초마다 0.2초 동안 CPU에서 실행할 수 있도록 CPU 시간 분배 제어를 설정합니다. 즉, 각 초의 5 분의 1입니다.선택 사항: 시간 할당량을 확인합니다.
# cat /sys/fs/cgroup/Example/tasks/cpu.max 200000 1000000
애플리케이션의 PID를
Example/tasks
하위 그룹에 추가합니다.# echo "34578" > /sys/fs/cgroup/Example/tasks/cgroup.procs # echo "34579" > /sys/fs/cgroup/Example/tasks/cgroup.procs
예제 명령은 필수 애플리케이션이
Example/tasks
하위 그룹의 멤버가 되고 이 하위 그룹에 구성된 CPU 시간 배포를 초과하지 않도록 합니다.
검증
애플리케이션이 지정된 제어 그룹에서 실행되는지 확인합니다.
# cat /proc/34578/cgroup /proc/34579/cgroup 0::/Example/tasks 0::/Example/tasks
위의 출력은
Example/tasks
하위 그룹에서 실행되는 지정된 애플리케이션의 프로세스를 보여줍니다.제한된 애플리케이션의 현재 CPU 사용을 검사합니다.
# top top - 11:13:53 up 23:10, 1 user, load average: 0.26, 1.33, 1.66 Tasks: 104 total, 3 running, 101 sleeping, 0 stopped, 0 zombie %Cpu(s): 3.0 us, 7.0 sy, 0.0 ni, 89.5 id, 0.0 wa, 0.2 hi, 0.2 si, 0.2 st MiB Mem : 3737.4 total, 3312.6 free, 133.4 used, 291.4 buff/cache MiB Swap: 4060.0 total, 4060.0 free, 0.0 used. 3376.0 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 34578 root 20 0 18720 1756 1468 R 10.0 0.0 37:36.13 sha1sum 34579 root 20 0 18720 1772 1480 R 10.0 0.0 37:41.22 sha1sum 1 root 20 0 186192 13940 9500 S 0.0 0.4 0:01.60 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd 3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp 4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_par_gp ...
PID 34578
및PID 34579
의 CPU 사용량이 10%로 단축되었습니다.Example/tasks
하위 그룹은 프로세스를 전체적으로 CPU 시간의 20%로 조정합니다. 제어 그룹에 2개의 프로세스가 있으므로 각각 CPU 시간의 10%를 사용할 수 있습니다.