Lista de controladores vazios com cgroup v2

1

Estou tentando aprender como o cgroups v2 funciona. 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.controllers está vazio. Eu pensei que deveria ter a lista de controladores, isso não é correto? Lendo documentos aqui: link

    
por Abhishek Chanda 02.09.2018 / 18:18

1 resposta

1

Os controladores cgroup só podem ser montados em uma hierarquia (v1 ou v2). Se você tiver um controlador montado em uma hierarquia legacy v1, ele não será exibido na hiearchy cgroup2. Essa limitação está documentada em cgroup-v2 - montagem também como a página de manual cgroups(7) :

It is not possible to mount the same controller against multiple cgroup hierarchies. For example, it is not possible to mount both the cpu and cpuacct controllers against one hierarchy, and to mount the cpu controller alone against another hierarchy. It is possible to create multiple mount points with exactly the same set of comounted controllers. However, in this case all that results is multiple mount points providing a view of the same hierarchy.

Note that on many systems, the v1 controllers are automatically mounted under /sys/fs/cgroup; in particular, systemd(1) automatically creates such mount points.

Para evitar esse comportamento herdado, inicialize com a opção systemd.unified_cgroup_hierarchy=1 . Essa opção pode se tornar o padrão no futuro, de acordo com a entrada NEWS do systemd v233 .

Para ilustrar, esses sistemas de arquivos cgroup são montados em um sistema Arch Linux usando o 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 /sys/fs/cgroup/unified/cgroup.controllers somente leitura está inicialmente vazio. Depois de desmontar o controlador cpu ( cpu,cpuacct ), o controlador cpu fica disponível. Infelizmente, nem todos os controladores (como memory ) ficam disponíveis mesmo após a desmontagem de todos os sistemas de arquivos v1 cgroup . 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 ficam disponíveis:

cpu io memory pids rdma
    
por 16.09.2018 / 23:27

Tags