10장. cgroupfs를 사용하여 cgroup을 수동으로 관리
가상 파일 시스템에 디렉터리를 생성하여 시스템에서 cgroup 계층 구조를 관리할 수 있습니다. 파일 시스템은 기본적으로 cgroup fs/sys/fs/cgroup/ 디렉터리에 마운트되며 전용 제어 파일에서 원하는 구성을 지정할 수 있습니다.
일반적으로 Red Hat은 시스템 리소스 사용을 제어하는 데 systemd 를 사용하는 것이 좋습니다. 특별한 경우에만 cgroups 가상 파일 시스템을 수동으로 구성해야 합니다. 예를 들어 cgroup-v2 계층에 동등한 항목이 없는 cgroup-v1 컨트롤러를 사용해야 하는 경우입니다.
10.1. cgroup 생성 및 cgroups-v2 파일 시스템에서 컨트롤러 활성화 링크 복사링크가 클립보드에 복사되었습니다!
디렉터리를 생성하거나 제거하고cgroups가상 파일 시스템의 파일에 작성하여 제어 그룹 ( cgroup )을 관리할 수 있습니다. 파일 시스템은 기본적으로 /sys/fs/cgroup/ 디렉터리에 마운트됩니다. cgroup 컨트롤러의 설정을 사용하려면 하위 에 필요한 컨트롤러도 활성화해야 합니다. 기본적으로 root cgroup cgroup 에는 하위 cgroup 에 대해 메모리 및 pid 컨트롤러가 활성화되어 있습니다. 따라서 /sys/fs/cgroup/ root cgroup 내에 하위 cgroup 의 두 개 이상을 생성해야 합니다. 이렇게 하면 선택적으로 하위 cgroup에서 파일을 보다 명확하게 이해할 수 있습니다.
메모리 및 pid 컨트롤러를 제거하고 cgroup
사전 요구 사항
- 시스템에 대한 root 권한이 있습니다.
프로세스
/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/디렉터리에는메모리및 pid 컨트롤러에 대한 컨트롤러별 파일도 포함되어 있습니다.선택 사항: 새로 생성된 하위 제어 그룹을 검사합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 예제 출력은
cgroup.procs또는와 같은 일반적인 cgroup 제어 인터페이스 파일을 보여줍니다. 이러한 파일은 활성화된 컨트롤러에 관계없이 모든 제어 그룹에 공통입니다.cgroup.controllersmemory.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파일의 내용을 읽고 즉시 하위 그룹에서 활성화에 사용할 수 있는 컨트롤러를 파악할 수 있습니다.참고기본적으로 루트 제어 그룹의
/sys/fs/cgroup/cgroup.subtree_control파일에는메모리및pids컨트롤러가 포함되어 있습니다.예제제어 그룹의 하위cgroup에 필요한 컨트롤러를 활성화합니다.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 이 명령을 사용하면 즉시 하위 제어 그룹에
메모리또는 pid 컨트롤러가 아닌 CPU 시간 분배를 규제하는 컨트롤러 만 사용할수있습니다./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