Lista de controladores vacía con cgroup v2

Lista de controladores vacía con cgroup v2

Estoy intentando aprender cómo funciona cgroups v2. Hice esto:

mount -t cgroup2 none /mnt/cgroup2

Eso me dio una lista de objetos en/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

Sin embargo, el archivo /mnt/cgroup2/cgroup.controllersestá vacío. Pensé que debería tener la lista de controladores, ¿no es correcto? Leyendo documentos aquí:http://man7.org/linux/man-pages/man7/cgroups.7.html

Respuesta1

Los controladores cgroup solo se pueden montar en una jerarquía (v1 o v2). Si tiene un controlador montado en una jerarquía v1 heredada, no aparecerá en la jerarquía cgroup2. Esta limitación está documentada encgroup-v2 - Montajeasí como la cgroups(7)página del manual:

No es posible montar el mismo controlador en varias jerarquías de cgroup. Por ejemplo, no es posible montar los controladores de CPU y CPUacct en una jerarquía, ni montar el controlador de CPU solo en otra jerarquía. Es posible crear múltiples puntos de montaje con exactamente el mismo conjunto de controladores montados. Sin embargo, en este caso todo lo que resulta son múltiples puntos de montaje que brindan una vista de la misma jerarquía.

Tenga en cuenta que en muchos sistemas, los controladores v1 se montan automáticamente en /sys/fs/cgroup; en particular, systemd(1) crea automáticamente dichos puntos de montaje.

Para evitar este comportamiento heredado, inicie con la systemd.unified_cgroup_hierarchy=1opción. Esta opción podría convertirse en la predeterminada en el futuro según laEntrada de NOTICIAS para systemd v233.

Para ilustrar, estos sistemas de archivos cgroup están montados en un sistema Arch Linux usando 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)

El archivo de sólo lectura /sys/fs/cgroup/unified/cgroup.controllersestá inicialmente vacío. Después de desmontar el cpucontrolador ( cpu,cpuacct), el cpucontrolador pasa a estar disponible. Desafortunadamente, no todos los controladores (como memory) están disponibles incluso después de desmontar todos cgrouplos sistemas de archivos v1. Los que están disponibles son:

cpu io rdma

Al arrancar con systemd.unified_cgroup_hierarchy=1, no se montan sistemas de archivos v1:

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

Y ahora hay más controladores disponibles:

cpu io memory pids rdma

información relacionada