10장. cgroupfs를 사용하여 cgroup을 수동으로 관리


cgroup fs 가상 파일 시스템에 디렉터리를 생성하여 시스템에서 cgroup 계층 구조를 관리할 수 있습니다. 파일 시스템은 기본적으로 /sys/fs/cgroup/ 디렉터리에 마운트되며 전용 제어 파일에서 원하는 구성을 지정할 수 있습니다.

중요

일반적으로 Red Hat은 시스템 리소스 사용을 제어하는 데 systemd 를 사용하는 것이 좋습니다. 특별한 경우에만 cgroups 가상 파일 시스템을 수동으로 구성해야 합니다. 예를 들어 cgroup-v2 계층에 동등한 항목이 없는 cgroup-v1 컨트롤러를 사용해야 하는 경우입니다.

10.1. cgroup 생성 및 cgroups-v2 파일 시스템에서 컨트롤러 활성화

디렉터리를 생성하거나 제거하고cgroups가상 파일 시스템의 파일에 작성하여 제어 그룹 ( cgroup )을 관리할 수 있습니다. 파일 시스템은 기본적으로 /sys/fs/cgroup/ 디렉터리에 마운트됩니다. cgroup 컨트롤러의 설정을 사용하려면 하위 cgroup 에 대해 원하는 컨트롤러를 활성화해야 합니다. 기본적으로 root cgroup 에는 하위 cgroup 에 대해 메모리 pid 컨트롤러가 활성화되어 있습니다. 따라서 Red Hat은 /sys/fs/cgroup/ 루트 cgroup 내에 두 개 이상의 하위 cgroup 을 생성하는 것이 좋습니다. 이렇게 하면 선택적으로 하위 cgroup에서 메모리 및 pid 컨트롤러를 제거하고 cgroup 파일을 보다 조직적으로 명확하게 유지할 수 있습니다.

사전 요구 사항

  • root 권한이 있습니다.

절차

  1. /sys/fs/cgroup/Example/ 디렉터리를 생성합니다.

    # mkdir /sys/fs/cgroup/Example/
    Copy to Clipboard

    /sys/fs/cgroup/Example/ 디렉터리는 하위 그룹을 정의합니다. /sys/fs/cgroup/Example/ 디렉터리를 생성하면 일부 cgroups-v2 인터페이스 파일이 디렉터리에 자동으로 생성됩니다. /sys/fs/cgroup/Example/ 디렉터리에는 메모리 및 pid 컨트롤러에 대한 컨트롤러별 파일도 포함되어 있습니다.

  2. 선택 사항: 새로 생성된 하위 제어 그룹을 검사합니다.

    # ll /sys/fs/cgroup/Example/
    -r—​r—​r--. 1 root root 0 Jun  1 10:33 cgroup.controllers
    -r—​r—​r--. 1 root root 0 Jun  1 10:33 cgroup.events
    -rw-r—​r--. 1 root root 0 Jun  1 10:33 cgroup.freeze
    -rw-r--​r--. 1 root root 0 Jun  1 10:33 cgroup.procs
    …​
    -rw-r—​r--. 1 root root 0 Jun  1 10:33 cgroup.subtree_control
    -r—​r—​r--. 1 root root 0 Jun  1 10:33 memory.events.local
    -rw-r—​r--. 1 root root 0 Jun  1 10:33 memory.high
    -rw-r—​r--. 1 root root 0 Jun  1 10:33 memory.low
    …​
    -r—​r—​r--. 1 root root 0 Jun  1 10:33 pids.current
    -r—​r—​r--. 1 root root 0 Jun  1 10:33 pids.events
    -rw-r—​r--. 1 root root 0 Jun  1 10:33 pids.max
    Copy to Clipboard

    예제 출력은 cgroup.procs 또는 cgroup.controllers 와 같은 일반적인 cgroup 제어 인터페이스 파일을 보여줍니다. 이러한 파일은 활성화된 컨트롤러에 관계없이 모든 제어 그룹에 공통입니다.

    memory.highpids.max 와 같은 파일은 루트 제어 그룹(/sys/fs/cgroup/)에 있는 메모리pids 컨트롤러와 관련이 있으며 systemd 에 의해 기본적으로 활성화됩니다.

    기본적으로 새로 생성된 하위 그룹은 상위 cgroup 의 모든 설정을 상속합니다. 이 경우 루트 cgroup 의 제한이 없습니다.

  3. 원하는 컨트롤러를 /sys/fs/cgroup/cgroup.controllers 파일에서 사용할 수 있는지 확인합니다.

    # cat /sys/fs/cgroup/cgroup.controllers
    cpuset cpu io memory hugetlb pids rdma
    Copy to Clipboard
  4. 원하는 컨트롤러를 활성화합니다. 이 예에서는 cpucpuset 컨트롤러입니다.

    # echo "+cpu" >> /sys/fs/cgroup/cgroup.subtree_control
    # echo "+cpuset" >> /sys/fs/cgroup/cgroup.subtree_control
    Copy to Clipboard

    이러한 명령은 /sys/fs/cgroup/ root 제어 그룹의 즉시 하위 그룹에 대해 cpucpuset 컨트롤러를 활성화합니다. 새로 생성된 예제 제어 그룹 포함. 하위 그룹은 기준을 기반으로 프로세스를 지정하고 각 프로세스에 제어 검사를 적용할 수 있는 위치입니다.

    사용자는 모든 수준에서 cgroup.subtree_control 파일의 내용을 읽고 즉시 하위 그룹에서 활성화에 사용할 수 있는 컨트롤러를 파악할 수 있습니다.

    참고

    기본적으로 루트 제어 그룹의 /sys/fs/cgroup/cgroup.subtree_control 파일에는 메모리pids 컨트롤러가 포함되어 있습니다.

  5. 예제 제어 그룹의 하위 cgroup 에 대해 원하는 컨트롤러를 활성화합니다.

    # echo "+cpu +cpuset" >> /sys/fs/cgroup/Example/cgroup.subtree_control
    Copy to Clipboard

    이 명령을 사용하면 즉시 하위 제어 그룹에 메모리 또는 pid 컨트롤러가 아닌 CPU 시간 분배를 규제하는 컨트롤러 사용할 있습니다.

  6. /sys/fs/cgroup/Example/tasks/ 디렉터리를 생성합니다.

    # mkdir /sys/fs/cgroup/Example/tasks/
    Copy to Clipboard

    /sys/fs/cgroup/Example/tasks/ 디렉터리는 cpucpuset 컨트롤러와 순전히 관련된 파일이 있는 하위 그룹을 정의합니다. 이제 이 제어 그룹에 프로세스를 할당하고 프로세스에 cpucpuset 컨트롤러 옵션을 사용할 수 있습니다.

  7. 선택 사항: 하위 제어 그룹을 검사합니다.

    # ll /sys/fs/cgroup/Example/tasks
    -r—​r—​r--. 1 root root 0 Jun  1 11:45 cgroup.controllers
    -r—​r—​r--. 1 root root 0 Jun  1 11:45 cgroup.events
    -rw-r—​r--. 1 root root 0 Jun  1 11:45 cgroup.freeze
    -rw-r—​r--. 1 root root 0 Jun  1 11:45 cgroup.max.depth
    -rw-r—​r--. 1 root root 0 Jun  1 11:45 cgroup.max.descendants
    -rw-r—​r--. 1 root root 0 Jun  1 11:45 cgroup.procs
    -r—​r—​r--. 1 root root 0 Jun  1 11:45 cgroup.stat
    -rw-r—​r--. 1 root root 0 Jun  1 11:45 cgroup.subtree_control
    -rw-r—​r--. 1 root root 0 Jun  1 11:45 cgroup.threads
    -rw-r—​r--. 1 root root 0 Jun  1 11:45 cgroup.type
    -rw-r—​r--. 1 root root 0 Jun  1 11:45 cpu.max
    -rw-r—​r--. 1 root root 0 Jun  1 11:45 cpu.pressure
    -rw-r—​r--. 1 root root 0 Jun  1 11:45 cpuset.cpus
    -r—​r—​r--. 1 root root 0 Jun  1 11:45 cpuset.cpus.effective
    -rw-r—​r--. 1 root root 0 Jun  1 11:45 cpuset.cpus.partition
    -rw-r—​r--. 1 root root 0 Jun  1 11:45 cpuset.mems
    -r—​r—​r--. 1 root root 0 Jun  1 11:45 cpuset.mems.effective
    -r—​r—​r--. 1 root root 0 Jun  1 11:45 cpu.stat
    -rw-r—​r--. 1 root root 0 Jun  1 11:45 cpu.weight
    -rw-r—​r--. 1 root root 0 Jun  1 11:45 cpu.weight.nice
    -rw-r—​r--. 1 root root 0 Jun  1 11:45 io.pressure
    -rw-r—​r--. 1 root root 0 Jun  1 11:45 memory.pressure
    Copy to Clipboard
중요

cpu 컨트롤러는 관련 하위 제어 그룹에 단일 CPU에서 시간 동안 경쟁하는 프로세스가 2개 이상인 경우에만 활성화됩니다.

검증

  • 선택 사항: 원하는 컨트롤러만 활성화된 새 cgroup 을 생성했는지 확인합니다.

    # cat /sys/fs/cgroup/Example/tasks/cgroup.controllers
    cpuset cpu
    Copy to Clipboard
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat