Menu Close

Red Hat Training

A Red Hat training course is available for RHEL 8

21장. cgroups-v2를 사용하여 애플리케이션의 CPU 시간 분배 제어

일부 애플리케이션은 너무 많은 CPU 시간을 사용하므로 환경의 전체 상태에 부정적인 영향을 미칠 수 있습니다. 애플리케이션을 제어 그룹 버전 2 (cgroups-v2)에 배치하고 해당 제어 그룹의 CPU 제한을 구성할수 있습니다. 따라서 CPU 소비에서 애플리케이션을 규제할 수 있습니다.

사용자는 제어 그룹에 할당된 CPU 시간 분배를 제어하는 두 가지 방법을 제공합니다.

21.1. cgroups-v2 마운트

부팅 프로세스 중에 RHEL 8은 기본적으로 cgroup-v1 가상 파일 시스템을 마운트합니다. 애플리케이션에 대한 리소스를 제한하는 cgroup-v2 기능을 활용하려면 시스템을 수동으로 구성합니다.

사전 요구 사항

  • 루트 권한이 있습니다.

절차

  1. 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"
  2. 변경 사항을 적용하려면 시스템을 재부팅합니다.

검증 단계

  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/ 디렉터리에 성공적으로 마운트되었습니다.

  2. 선택적으로 /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 ).

추가 리소스