24장. cgroups-v2를 사용하여 애플리케이션의 CPU 시간 분배 제어
일부 애플리케이션은 너무 많은 CPU 시간을 사용하므로 환경의 전체 상태에 부정적인 영향을 미칠 수 있습니다. 애플리케이션을 제어 그룹 버전 2 (cgroups-v2)에 배치하고 해당 제어 그룹의 CPU 제한을 구성할
수 있습니다. 따라서 CPU 소비에서 애플리케이션을 규제할 수 있습니다.
사용자는 제어 그룹에 할당된 CPU 시간 분배를 제어하는 두 가지 방법을 제공합니다.
24.1. cgroups-v2 마운트
부팅 프로세스 중에 RHEL 8은 기본적으로 cgroup-v1
가상 파일 시스템을 마운트합니다. 애플리케이션에 대한 리소스를 제한하는 cgroup-v2
기능을 활용하려면 시스템을 수동으로 구성합니다.
사전 요구 사항
- 루트 권한이 있습니다.
절차
systemd
시스템 및 서비스 관리자가 시스템 부팅 중에cgroups-v2
를 기본적으로 마운트하도록 시스템을 구성합니다.# grubby --update-kernel=/boot/vmlinuz-$(uname -r) --args="systemd.unified_cgroup_hierarchy=1"
그러면 현재 부팅 항목에 필요한 커널 명령줄 매개 변수가 추가됩니다.
모든 커널 부팅 항목에
systemd.unified_cgroup_hierarchy=1
매개변수를 추가하려면 다음을 수행합니다.# grubby --update-kernel=ALL --args="systemd.unified_cgroup_hierarchy=1"
- 변경 사항을 적용하려면 시스템을 재부팅합니다.
검증
선택적으로
cgroups-v2
파일 시스템이 마운트되었는지 확인합니다.# mount -l | grep cgroup cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,seclabel,nsdelegate)
cgroups-v2
파일 시스템이/sys/fs/cgroup/
디렉터리에 성공적으로 마운트되었습니다.선택적으로
/sys/fs/cgroup/
디렉터리의 콘텐츠를 검사합니다.# ll /sys/fs/cgroup/ -r—r—r--. 1 root root 0 Apr 29 12:03 cgroup.controllers -rw-r—r--. 1 root root 0 Apr 29 12:03 cgroup.max.depth -rw-r—r--. 1 root root 0 Apr 29 12:03 cgroup.max.descendants -rw-r—r--. 1 root root 0 Apr 29 12:03 cgroup.procs -r—r—r--. 1 root root 0 Apr 29 12:03 cgroup.stat -rw-r—r--. 1 root root 0 Apr 29 12:18 cgroup.subtree_control -rw-r—r--. 1 root root 0 Apr 29 12:03 cgroup.threads -rw-r—r--. 1 root root 0 Apr 29 12:03 cpu.pressure -r—r—r--. 1 root root 0 Apr 29 12:03 cpuset.cpus.effective -r—r—r--. 1 root root 0 Apr 29 12:03 cpuset.mems.effective -r—r—r--. 1 root root 0 Apr 29 12:03 cpu.stat drwxr-xr-x. 2 root root 0 Apr 29 12:03 init.scope -rw-r—r--. 1 root root 0 Apr 29 12:03 io.pressure -r—r—r--. 1 root root 0 Apr 29 12:03 io.stat -rw-r—r--. 1 root root 0 Apr 29 12:03 memory.pressure -r—r—r--. 1 root root 0 Apr 29 12:03 memory.stat drwxr-xr-x. 69 root root 0 Apr 29 12:03 system.slice drwxr-xr-x. 3 root root 0 Apr 29 12:18 user.slice
기본적으로 루트 제어 그룹 이라고도 하는
/sys/fs/cgroup/
디렉터리에는 인터페이스 파일(CGroup 시작)
및cpuset.cpus.effective
와 같은 컨트롤러별 파일이 포함되어 있습니다. 또한systemd
와 관련된 일부 디렉터리(예:/sys/fs/cgroup/init.scope
,/sys/fs/cgroup/system.slice
,/sys/fs/cgroup/user.slice
).
추가 리소스
- 제어 그룹 이해
- 커널 리소스 컨트롤러는 무엇입니까.
-
cgroups(7)
,sysfs(5)
도움말 페이지