Como faço para verificar se o cgroup v2 está instalado na minha máquina?

1

Eu quero tentar o cgroup v2, mas não tenho certeza se ele está instalado na minha máquina linux

>> uname -r
4.14.66-041466-generic

Como o cgroup v2 está disponível no 4.12.0-rc5, presumo que esteja disponível na versão do kernel que estou usando.

link

No entanto, não parece que meu sistema tenha o cgroup v2, pois os arquivos de interface de memória mencionados em sua documentação não estão disponíveis em meu sistema.

link

Parece que ainda tenho o cgroup v1.

/sys/fs/cgroup/memory# ls
cgroup.clone_children  memory.kmem.failcnt                 memory.kmem.tcp.usage_in_bytes   memory.memsw.usage_in_bytes      memory.swappiness
cgroup.event_control   memory.kmem.limit_in_bytes          memory.kmem.usage_in_bytes       memory.move_charge_at_immigrate  memory.usage_in_bytes
cgroup.procs           memory.kmem.max_usage_in_bytes      memory.limit_in_bytes            memory.numa_stat                 memory.use_hierarchy
cgroup.sane_behavior   memory.kmem.slabinfo                memory.max_usage_in_bytes        memory.oom_control               notify_on_release
docker                 memory.kmem.tcp.failcnt             memory.memsw.failcnt             memory.pressure_level            release_agent
memory.failcnt         memory.kmem.tcp.limit_in_bytes      memory.memsw.limit_in_bytes      memory.soft_limit_in_bytes       tasks
memory.force_empty     memory.kmem.tcp.max_usage_in_bytes  memory.memsw.max_usage_in_bytes  memory.stat 

Perguntas de acompanhamento Obrigado Brian pela ajuda. Por favor, deixe-me saber se eu deveria estar criando uma nova pergunta, mas acho que pode ser útil para outros, se eu fizer minhas perguntas aqui.

1) Eu não consigo adicionar controladores cgroup, seguindo o comando no doc

>> echo "+cpu +memory -io" > cgroup.subtree_control

No entanto, recebi "echo: write error: Invalid argument". Estou faltando um pré-requisito para esta etapa?

2) Eu corri um contêiner docker, mas o log daemon docker reclamou sobre não conseguir encontrar "/sys/fs/cgroup/cpuset/docker/cpuset.cpus". Parece que o docker ainda está esperando o cgroupv1. Qual é a melhor maneira de ativar o suporte ao cgroupv2 no meu daemon do docker?

docker -v
Docker version 17.09.1-ce, build aedabb7
    
por user3397467 26.09.2018 / 06:34

1 resposta

1

A maneira mais fácil é tentar montar o pseudo-sistema de arquivos. Se você puder montá-lo em um local, poderá tentar gerenciar processos com a interface:

mount -t cgroup2 none $MOUNT_POINT

Eu vejo que você citou a documentação acima. Um dos pontos que você pode estar perdendo é que os caminhos ainda precisam ser criados. Não existe razão você deve gerenciar os recursos do cgroup em qualquer local específico. É apenas uma convenção.

Por exemplo, você pode apresentar totalmente procfs at /usr/monkeys ... desde que o diretório /usr/monkeys exista:

$ sudo mkdir /usr/monkeys
$ sudo mount -t proc none /usr/monkeys
$ ls -l /usr/monkeys
...
...
-r--r--r--.  1 root        root                      0 Sep 25 19:00 uptime
-r--r--r--.  1 root        root                      0 Sep 25 23:17 version
-r--------.  1 root        root                      0 Sep 25 23:17 vmallocinfo
-r--r--r--.  1 root        root                      0 Sep 25 18:57 vmstat
-r--r--r--.  1 root        root                      0 Sep 25 23:17 zoneinfo
$ sudo umount /usr/monkeys

Da mesma forma, posso fazer isso com o pseudo-sistema de arquivos cgroup v2:

$ sudo mount -t cgroup2 none /usr/monkeys
$ ls -l /usr/monkeys
total 0
-r--r--r--.  1 root root 0 Sep 23 16:58 cgroup.controllers
-rw-r--r--.  1 root root 0 Sep 23 16:58 cgroup.max.depth
-rw-r--r--.  1 root root 0 Sep 23 16:58 cgroup.max.descendants
-rw-r--r--.  1 root root 0 Sep 23 16:58 cgroup.procs
-r--r--r--.  1 root root 0 Sep 23 16:58 cgroup.stat
-rw-r--r--.  1 root root 0 Sep 23 16:58 cgroup.subtree_control
-rw-r--r--.  1 root root 0 Sep 23 16:58 cgroup.threads
drwxr-xr-x.  2 root root 0 Sep 23 16:58 init.scope
drwxr-xr-x.  2 root root 0 Sep 23 16:58 machine.slice
drwxr-xr-x. 59 root root 0 Sep 23 16:58 system.slice
drwxr-xr-x.  4 root root 0 Sep 23 16:58 user.slice
$ sudo umount /usr/monkeys
    
por 26.09.2018 / 08:22

Tags