cgroup v2가 있는 비어 있는 컨트롤러 목록

cgroup v2가 있는 비어 있는 컨트롤러 목록

cgroups v2의 작동 방식을 배우려고 합니다. 나는 이걸했다:

mount -t cgroup2 none /mnt/cgroup2

그 결과 나에게 개체 목록이 제공되었습니다./mnt/cgroup2

root@ubuntu-s-1vcpu-1gb-lon1-01:~# ls -la /mnt/cgroup2/
total 4
dr-xr-xr-x  5 root root    0 Sep  2 16:04 .
drwxr-xr-x  3 root root 4096 Sep  2 16:05 ..
-r--r--r--  1 root root    0 Sep  2 16:04 cgroup.controllers
-rw-r--r--  1 root root    0 Sep  2 16:04 cgroup.max.depth
-rw-r--r--  1 root root    0 Sep  2 16:04 cgroup.max.descendants
-rw-r--r--  1 root root    0 Sep  2 16:04 cgroup.procs
-r--r--r--  1 root root    0 Sep  2 16:04 cgroup.stat
-rw-r--r--  1 root root    0 Sep  2 16:07 cgroup.subtree_control
-rw-r--r--  1 root root    0 Sep  2 16:04 cgroup.threads
drwxr-xr-x  2 root root    0 Sep  2 16:04 init.scope
drwxr-xr-x 59 root root    0 Sep  2 16:00 system.slice
drwxr-xr-x  3 root root    0 Sep  2 15:59 user.slice

그러나 파일이 /mnt/cgroup2/cgroup.controllers비어 있습니다. 컨트롤러 목록이 있어야 한다고 생각했는데 정확하지 않나요? 여기에서 문서를 읽으세요:http://man7.org/linux/man-pages/man7/cgroups.7.html

답변1

cgroup 컨트롤러는 하나의 계층 구조(v1 또는 v2)에만 마운트할 수 있습니다. 레거시 v1 계층 구조에 컨트롤러가 마운트된 경우 cgroup2 계층 구조에 표시되지 않습니다. 이 제한 사항은 다음 문서에 설명되어 있습니다.cgroup-v2 - 마운트매뉴얼 페이지 도 마찬가지입니다 cgroups(7):

여러 cgroup 계층에 대해 동일한 컨트롤러를 마운트하는 것은 불가능합니다. 예를 들어, 한 계층 구조에 대해 CPU 및 CPUACCT 컨트롤러를 모두 마운트하고 다른 계층 구조에 대해 CPU 컨트롤러만 마운트하는 것은 불가능합니다. 정확히 동일한 마운트된 컨트롤러 세트를 사용하여 여러 마운트 지점을 생성할 수 있습니다. 그러나 이 경우 결과는 동일한 계층 구조에 대한 보기를 제공하는 여러 마운트 지점뿐입니다.

많은 시스템에서 v1 컨트롤러는 /sys/fs/cgroup 아래에 자동으로 마운트됩니다. 특히 systemd(1)은 이러한 마운트 지점을 자동으로 생성합니다.

이러한 레거시 동작을 방지하려면 해당 systemd.unified_cgroup_hierarchy=1옵션을 사용하여 부팅하십시오. 이 옵션은 향후에 기본값이 될 수 있습니다.systemd v233에 대한 뉴스 항목.

설명을 위해 이러한 cgroup 파일 시스템은 systemd 239를 사용하여 Arch Linux 시스템에 마운트됩니다.

tmpfs    on  /sys/fs/cgroup                   type  tmpfs    (ro,nosuid,nodev,noexec,mode=755)
cgroup2  on  /sys/fs/cgroup/unified           type  cgroup2  (rw,nosuid,nodev,noexec,relatime,nsdelegate)
cgroup   on  /sys/fs/cgroup/systemd           type  cgroup   (rw,nosuid,nodev,noexec,relatime,xattr,name=systemd)
cgroup   on  /sys/fs/cgroup/cpu,cpuacct       type  cgroup   (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup   on  /sys/fs/cgroup/cpuset            type  cgroup   (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup   on  /sys/fs/cgroup/net_cls,net_prio  type  cgroup   (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup   on  /sys/fs/cgroup/memory            type  cgroup   (rw,nosuid,nodev,noexec,relatime,memory)
cgroup   on  /sys/fs/cgroup/pids              type  cgroup   (rw,nosuid,nodev,noexec,relatime,pids)
cgroup   on  /sys/fs/cgroup/blkio             type  cgroup   (rw,nosuid,nodev,noexec,relatime,blkio)
cgroup   on  /sys/fs/cgroup/rdma              type  cgroup   (rw,nosuid,nodev,noexec,relatime,rdma)
cgroup   on  /sys/fs/cgroup/freezer           type  cgroup   (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup   on  /sys/fs/cgroup/perf_event        type  cgroup   (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup   on  /sys/fs/cgroup/devices           type  cgroup   (rw,nosuid,nodev,noexec,relatime,devices)
cgroup   on  /sys/fs/cgroup/hugetlb           type  cgroup   (rw,nosuid,nodev,noexec,relatime,hugetlb)

읽기 전용 /sys/fs/cgroup/unified/cgroup.controllers파일은 처음에는 비어 있습니다. 컨트롤러 를 마운트 해제하면 cpu( cpu,cpuacct) cpu컨트롤러를 사용할 수 있게 됩니다. 안타깝게도 memory모든 v1 파일 시스템을 마운트 해제한 후에도 모든 컨트롤러(예: )를 사용할 수 있는 것은 아닙니다 cgroup. 사용 가능한 항목은 다음과 같습니다.

cpu io rdma

로 부팅할 때 systemd.unified_cgroup_hierarchy=1v1 파일 시스템이 마운트되지 않습니다:

cgroup2  on  /sys/fs/cgroup           type  cgroup2  (rw,nosuid,nodev,noexec,relatime,nsdelegate)

이제 더 많은 컨트롤러를 사용할 수 있습니다.

cpu io memory pids rdma

관련 정보