27장. cgroupfs를 사용하여 cgroup을 수동으로 관리
가상 파일 시스템에 디렉터리를 생성하여 시스템의 cgroup 계층을 관리할 수 있습니다. 파일 시스템은 기본적으로 cgroup fs/sys/fs/cgroup/ 디렉토리에 마운트되며 전용 제어 파일에 원하는 구성을 지정할 수 있습니다.
일반적으로 Red Hat은 시스템 리소스 사용량을 제어하기 위해 systemd 를 사용할 것을 권장합니다. 특수한 경우에만 cgroup 가상 파일 시스템을 수동으로 구성해야 합니다. 예를 들어 cgroup-v2 계층 구조에 동등한 권한이 없는 cgroup-v1 컨트롤러를 사용해야 하는 경우입니다.
27.1. cgroup 생성 및 cgroup-v2 파일 시스템에서 컨트롤러 활성화 링크 복사링크가 클립보드에 복사되었습니다!
디렉토리를 만들거나 제거하고cgroup가상 파일 시스템의 파일에 작성하여 제어 그룹 ( cgroups )을 관리할 수 있습니다. 파일 시스템은 기본적으로 /sys/fs/cgroup/ 디렉토리에 마운트됩니다. cgroup 컨트롤러의 설정을 사용하려면 하위 에 대해 원하는 컨트롤러도 활성화해야 합니다. 루트 cgroup cgroup 에는 기본적으로 하위 cgroup 에 대한 메모리 및 pids 컨트롤러가 활성화되었습니다. 따라서 Red Hat은 /sys/fs/cgroup/ root 내에 두 개 이상의 하위 cgroup을 생성할 것을 권장합니다. 이렇게 하면 하위 cgroup cgroup에서 파일의 조직적인 명확성을 유지할 수 있습니다.
메모리 및 pids 컨트롤러를 선택적으로 제거하고 cgroup
사전 요구 사항
- 루트 권한이 있습니다.
절차
/sys/fs/cgroup/Example/디렉토리를 생성합니다.mkdir /sys/fs/cgroup/Example/
# mkdir /sys/fs/cgroup/Example/Copy to Clipboard Copied! Toggle word wrap Toggle overflow /sys/fs/cgroup/Example/디렉토리는 하위 그룹을 정의합니다./sys/fs/cgroup/Example/디렉토리를 생성하면 일부cgroups-v2인터페이스 파일이 디렉터리에 자동으로 생성됩니다./sys/fs/cgroup/Example/디렉터리에는메모리및pids컨트롤러에 대한 컨트롤러별 파일도 포함되어 있습니다.선택 사항: 새로 생성된 하위 제어 그룹을 검사합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예제 출력에는
또는cgroup.procscgroup.controllers와 같은 일반 cgroup 제어 인터페이스 파일이 표시됩니다. 이러한 파일은 활성화된 컨트롤러에 관계없이 모든 제어 그룹에 공통적입니다.memory.high및pids.max와 같은 파일은 루트 제어 그룹(/sys/fs/cgroup/)에 있는메모리및pids컨트롤러와 관련되어 있으며systemd에서 기본적으로 활성화됩니다.기본적으로 새로 생성된 하위 그룹은 상위
cgroup의 모든 설정을 상속합니다. 이 경우 루트cgroup에서 제한이 없습니다.원하는 컨트롤러를
/sys/fs/cgroup/cgroup.controllers파일에서 사용할 수 있는지 확인합니다.cat /sys/fs/cgroup/cgroup.controllers cpuset cpu io memory hugetlb pids rdma
# cat /sys/fs/cgroup/cgroup.controllers cpuset cpu io memory hugetlb pids rdmaCopy to Clipboard Copied! Toggle word wrap Toggle overflow 원하는 컨트롤러를 활성화합니다. 이 예제에서는
cpu및cpuset컨트롤러입니다.echo "+cpu" >> /sys/fs/cgroup/cgroup.subtree_control echo "+cpuset" >> /sys/fs/cgroup/cgroup.subtree_control
# echo "+cpu" >> /sys/fs/cgroup/cgroup.subtree_control # echo "+cpuset" >> /sys/fs/cgroup/cgroup.subtree_controlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령을 사용하면
/sys/fs/cgroup/root 제어 그룹의 즉시 하위 그룹에cpu및cpuset컨트롤러를 활성화합니다. 새로 생성된예제제어 그룹을 포함합니다. 하위 그룹은 프로세스를 지정하고 기준에 따라 각 프로세스에 제어 검사를 적용할 수 있는 위치입니다.사용자는 모든 수준에서
cgroup.subtree_control파일의 내용을 읽고 즉시 하위 그룹에서 활성화에 사용할 수 있는 컨트롤러를 파악할 수 있습니다.참고기본적으로 root 제어 그룹의
/sys/fs/cgroup/cgroup.subtree_control파일에는메모리및 Pids컨트롤러가 포함되어 있습니다.Example제어 그룹의 하위cgroups에 대해 원하는 컨트롤러를 활성화합니다.echo "+cpu +cpuset" >> /sys/fs/cgroup/Example/cgroup.subtree_control
# echo "+cpu +cpuset" >> /sys/fs/cgroup/Example/cgroup.subtree_controlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 이 명령을 사용하면 즉시 하위 제어 그룹이 CPU 시간 분배를 규제하는 데 관련된 컨트롤러 만 가질 수 있습니다.
메모리또는pids컨트롤러와 다릅니다./sys/fs/cgroup/Example/tasks/디렉터리를 생성합니다.mkdir /sys/fs/cgroup/Example/tasks/
# mkdir /sys/fs/cgroup/Example/tasks/Copy to Clipboard Copied! Toggle word wrap Toggle overflow /sys/fs/cgroup/Example/tasks/디렉터리는cpu 및 cpuset컨트롤러에만 관련된 파일이 있는 하위 그룹을 정의합니다. 이제 프로세스를 이 제어 그룹에 할당하고 프로세스에cpu및cpuset컨트롤러 옵션을 활용할 수 있습니다.선택 사항: 하위 제어 그룹을 검사합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
cpu 컨트롤러는 관련 하위 제어 그룹에 단일 CPU에서 시간을 위해 경쟁하는 최소 2개의 프로세스가 있는 경우에만 활성화됩니다.
검증
선택 사항: 원하는 컨트롤러만 활성 상태로 새
cgroup을 생성했는지 확인합니다.cat /sys/fs/cgroup/Example/tasks/cgroup.controllers cpuset cpu
# cat /sys/fs/cgroup/Example/tasks/cgroup.controllers cpuset cpuCopy to Clipboard Copied! Toggle word wrap Toggle overflow