Список контроллеров пуст с 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 смонтированы в системе Arch Linux с помощью systemd 239:

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) становятся доступными даже после размонтирования всех cgroupфайловых систем v1. Доступны следующие:

cpu io rdma

При загрузке с помощью systemd.unified_cgroup_hierarchy=1файловые системы v1 не монтируются:

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

А теперь стали доступны еще несколько контроллеров:

cpu io memory pids rdma

Связанный контент