24.3. CPU 대역폭을 조정하여 애플리케이션 CPU 시간 분배 제어
CPU 시간을 특정 cgroup 트리의 애플리케이션에 분산하기 위해 CPU 컨트롤러
의 관련 파일에 값을 할당해야 합니다.
사전 요구 사항
- 루트 권한이 있습니다.
- CPU 시간 배포를 제어하려는 애플리케이션이 두 개 이상 있습니다.
- CPU 시간 배포를 위해 cgroup 준비에 설명된 것과 동일한 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에서 실행될 수 있습니다. 즉, 1초의 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 및
의 CPU 사용량이 10%로 감소했습니다.PID 34
579Example/tasks
하위 그룹은 프로세스를 전체적으로 CPU 시간의 20%로 조정합니다. 제어 그룹에는 두 개의 프로세스가 있으므로 각각 CPU 시간의 10%를 활용할 수 있습니다.
추가 리소스
- 제어 그룹 이해
- 커널 리소스 컨트롤러는 무엇입니까.
- cgroups-v2 마운트
- CPU 시간 분배를 위해 cgroup 준비
-
cgroups(7)
,sysfs(5)
도움말 페이지