27.4. cgroups-v1을 사용하여 애플리케이션에 CPU 제한 설정
제어 그룹 버전 1 (cgroups-v
1)을 사용하여 애플리케이션에 대한 CPU 제한을 구성하려면 /sys/fs/
가상 파일 시스템을 사용합니다.
사전 요구 사항
- 루트 권한이 있습니다.
- 시스템에 설치된 CPU 사용을 제한하는 애플리케이션이 있습니다.
systemd
시스템 및 서비스 관리자가 시스템 부팅 중에cgroups-v1
을 기본적으로 마운트하도록 시스템을 구성했습니다.grubby --update-kernel=/boot/vmlinuz-$(uname -r) --args="systemd.unified_cgroup_hierarchy=0 systemd.legacy_systemd_cgroup_controller"
# grubby --update-kernel=/boot/vmlinuz-$(uname -r) --args="systemd.unified_cgroup_hierarchy=0 systemd.legacy_systemd_cgroup_controller"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 그러면 현재 부팅 항목에 필요한 커널 명령줄 매개 변수가 추가됩니다.
절차
CPU 소비에서 제한하려는 애플리케이션의 PID(프로세스 ID)를 식별합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow PID 6955
가 있는sha1sum
예제 애플리케이션은 많은 양의 CPU 리소스를 사용합니다.cpu
리소스 컨트롤러 디렉터리에 하위 디렉터리를 생성합니다.mkdir /sys/fs/cgroup/cpu/Example/
# mkdir /sys/fs/cgroup/cpu/Example/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 디렉터리는 특정 프로세스를 배치하고 프로세스에 특정 CPU 제한을 적용할 수 있는 제어 그룹을 나타냅니다. 동시에 여러
cgroups-v1
인터페이스 파일과cpu
컨트롤러별 파일이 디렉터리에 생성됩니다.선택 사항: 새로 생성된 제어 그룹을 검사합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow cpuacct.usage
,cpu.cfs._period_us
와 같은 파일은예제
제어 그룹의 프로세스에 대해 설정할 수 있는 특정 구성 및/또는 제한을 나타냅니다. 파일 이름 앞에는 자신이 속한 제어 그룹 컨트롤러의 이름이 접두어 있습니다.기본적으로 새로 생성된 제어 그룹은 제한 없이 시스템의 전체 CPU 리소스에 대한 액세스를 상속합니다.
제어 그룹에 대한 CPU 제한을 구성합니다.
echo "1000000" > /sys/fs/cgroup/cpu/Example/cpu.cfs_period_us echo "200000" > /sys/fs/cgroup/cpu/Example/cpu.cfs_quota_us
# echo "1000000" > /sys/fs/cgroup/cpu/Example/cpu.cfs_period_us # echo "200000" > /sys/fs/cgroup/cpu/Example/cpu.cfs_quota_us
Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
cpu.cfs_period_us
파일은 CPU 리소스에 대한 제어 그룹의 액세스를 다시 할당해야 하는 빈도를 나타냅니다. 기간은 마이크로초(microsecondss, "us")입니다. 상한은 1 000 000 마이크로초이며 더 낮은 제한은 1000 마이크로초입니다. cpu.cfs_quota_us
파일은cpu.cfs_period_us
에서 정의한 대로 제어 그룹의 모든 프로세스가 한 기간 동안 집합적으로 실행할 수 있는 마이크로초 단위로 총 시간을 나타냅니다. 제어 그룹의 프로세스에서 단일 기간 동안 할당량에 의해 지정된 모든 시간을 사용하는 경우 나머지 기간 동안 제한되며 다음 기간까지 실행할 수 없습니다. 낮은 제한은 1000 마이크로초입니다.위의 예제 명령은 CPU 시간 제한을 설정하므로
Example
제어 그룹의 모든 프로세스가 0.2초(cpu.cfs_quota_us
) 중 1초(cpu.cfs_period_us
로 정의됨)만 실행할 수 있도록 합니다.
-
선택 사항: 제한을 확인합니다.
cat /sys/fs/cgroup/cpu/Example/cpu.cfs_period_us /sys/fs/cgroup/cpu/Example/cpu.cfs_quota_us 1000000 200000
# cat /sys/fs/cgroup/cpu/Example/cpu.cfs_period_us /sys/fs/cgroup/cpu/Example/cpu.cfs_quota_us 1000000 200000
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 애플리케이션 PID를
Example
제어 그룹에 추가합니다.echo "6955" > /sys/fs/cgroup/cpu/Example/cgroup.procs
# echo "6955" > /sys/fs/cgroup/cpu/Example/cgroup.procs
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령을 수행하면 특정 애플리케이션이
Example
제어 그룹의 멤버가 되고Example
제어 그룹에 구성된 CPU 제한을 초과하지 않습니다. PID는 시스템의 기존 프로세스를 표현해야 합니다. 여기에PID 6955
는sha1sum /dev/zero &
amp; process에 할당되었으며cpu
컨트롤러의 사용 사례를 설명합니다.
검증
애플리케이션이 지정된 제어 그룹에서 실행되는지 확인합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 애플리케이션의 프로세스는 애플리케이션의 프로세스에 CPU 제한을 적용하는
예제
제어 그룹에서 실행됩니다.제한 애플리케이션의 현재 CPU 사용량을 확인합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow PID 6955
의 CPU 사용량이 99 %에서 20%로 감소했습니다.
cpu.cfs_period_us
및 cpu.cfs_quota_us
에 해당하는 cgroups-v2
파일은 cpu.max
파일입니다. cpu.max
파일은 cpu
컨트롤러를 통해 사용할 수 있습니다.