Lista de controladores vazios com cgroup v2

Lista de controladores vazios com cgroup v2

Estou tentando aprender como funciona o cgroups v2. Eu fiz isso:

mount -t cgroup2 none /mnt/cgroup2

Isso me deu uma lista de objetos em/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

No entanto, o arquivo /mnt/cgroup2/cgroup.controllersestá vazio. Achei que deveria ter a lista de controladores, não é correto? Lendo documentos aqui:http://man7.org/linux/man-pages/man7/cgroups.7.html

Responder1

Os controladores cgroup só podem ser montados em uma hierarquia (v1 ou v2). Se você tiver um controlador montado em uma hierarquia legada v1, ele não aparecerá na hierarquia cgroup2. Esta limitação está documentada emcgroup-v2 - Montagembem como a cgroups(7)página de manual:

Não é possível montar o mesmo controlador em múltiplas hierarquias de cgroups. Por exemplo, não é possível montar os controladores cpu e cpuacct em uma hierarquia e montar o controlador de cpu sozinho em outra hierarquia. É possível criar vários pontos de montagem exatamente com o mesmo conjunto de controladores montados. No entanto, neste caso, tudo o que resulta são vários pontos de montagem, fornecendo uma visão da mesma hierarquia.

Observe que em muitos sistemas, os controladores v1 são montados automaticamente em /sys/fs/cgroup; em particular, o systemd(1) cria automaticamente esses pontos de montagem.

Para evitar esse comportamento legado, inicialize com a systemd.unified_cgroup_hierarchy=1opção. Esta opção poderá se tornar o padrão no futuro, de acordo com oEntrada NEWS para systemd v233.

Para ilustrar, estes sistemas de arquivos cgroup são montados em um 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)

O arquivo somente leitura /sys/fs/cgroup/unified/cgroup.controllersestá inicialmente vazio. Após desmontar o cpucontrolador ( cpu,cpuacct), o cpucontrolador fica disponível. Infelizmente, nem todos os controladores (como memory) ficam disponíveis mesmo após a desmontagem de todos cgroupos sistemas de arquivos v1. Os que estão disponíveis são:

cpu io rdma

Ao inicializar com systemd.unified_cgroup_hierarchy=1, nenhum sistema de arquivos v1 é montado:

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

E agora mais alguns controladores estão disponíveis:

cpu io memory pids rdma

informação relacionada