AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 471476
Accepted
user3397467
user3397467
Asked: 2018-09-26 20:34:43 +0800 CST2018-09-26 20:34:43 +0800 CST 2018-09-26 20:34:43 +0800 CST

Como verifico se o cgroup v2 está instalado na minha máquina?

  • 772

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 na versão 4.12.0-rc5, presumo que ele esteja disponível na versão do kernel que estou usando.

https://www.infradead.org/~mchehab/kernel_docs/unsorted/cgroup-v2.html

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 no meu sistema.

https://www.kernel.org/doc/Documentation/cgroup-v2.txt

Parece que eu ainda tenho 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 outras pessoas se eu apenas fizer minhas perguntas aqui.

1) Não consigo adicionar controladores cgroup, seguindo o comando no documento

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

No entanto, recebi "echo: erro de gravação: argumento inválido". Estou faltando um pré-requisito para esta etapa?

2) Eu executei um contêiner do docker, mas o log do daemon do docker reclamou de 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 habilitar o suporte ao cgroupv2 no meu daemon docker?

docker -v
Docker version 17.09.1-ce, build aedabb7
linux cgroups
  • 5 5 respostas
  • 35021 Views

5 respostas

  • Voted
  1. Wadih M.
    2019-03-27T11:34:48+08:002019-03-27T11:34:48+08:00

    Você poderia executar o seguinte comando:

    grep cgroup /proc/filesystems
    

    Se o seu sistema suportar cgroupv2, você verá:

    nodev   cgroup
    nodev   cgroup2
    

    Em um sistema com apenas cgroupv1, você só veria:

    nodev   cgroup
    
    • 49
  2. Best Answer
    Brian Redbeard
    2018-09-26T22:22:09+08:002018-09-26T22:22:09+08:00

    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
    

    Vejo que você citou a documentação acima. Um dos pontos que pode estar faltando é que os caminhos ainda precisam ser criados. Não há motivo para você gerenciar recursos do cgroup em qualquer local específico. É apenas convenção.

    Por exemplo, você pode apresentar totalmente procfsem /usr/monkeys... desde que o diretório /usr/monkeysexista:

    $ 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
    
    • 12
  3. Stuart Cardall
    2021-09-09T16:37:00+08:002021-09-09T16:37:00+08:00

    Para verificar se o seu sistema Linux suporta cgroup v2 , verifique a existência de cgroup.controllers:

    $ cat /sys/fs/cgroup/cgroup.controllers
    
    cpuset cpu io memory hugetlb pids rdma
    

    Para inicializar o host com cgroup v2 , adicione a seguinte string à GRUB_CMDLINE_LINUXlinha /etc/default/grube execute sudo update-grub:


    • systemd.unified_cgroup_hierarchy=1

    • Distribuições Linux atuais que suportam cgroups v2

    • Docker 20.10 recomendado para cgroups v2


    Também é útil - verificar se você está em um namespace sem privilégios

    • 4
  4. Aposhian
    2021-07-09T07:46:33+08:002021-07-09T07:46:33+08:00

    Alguns sistemas irão montar o cgroup v1 e o cgroup v2 por padrão, apenas em locais diferentes. Pode ajudar a ver onde eles estão com:

    grep ^cgroup /etc/mtab
    

    Saída de exemplo (no Ubuntu 20.04 LTS):

    cgroup2 /sys/fs/cgroup/unified cgroup2 rw,nosuid,nodev,noexec,relatime 0 0
    cgroup /sys/fs/cgroup/systemd cgroup rw,nosuid,nodev,noexec,relatime,xattr,name=systemd 0 0
    cgroup /sys/fs/cgroup/cpu,cpuacct cgroup rw,nosuid,nodev,noexec,relatime,cpu,cpuacct 0 0
    cgroup /sys/fs/cgroup/devices cgroup rw,nosuid,nodev,noexec,relatime,devices 0 0
    cgroup /sys/fs/cgroup/memory cgroup rw,nosuid,nodev,noexec,relatime,memory 0 0
    cgroup /sys/fs/cgroup/freezer cgroup rw,nosuid,nodev,noexec,relatime,freezer 0 0
    cgroup /sys/fs/cgroup/rdma cgroup rw,nosuid,nodev,noexec,relatime,rdma 0 0
    cgroup /sys/fs/cgroup/cpuset cgroup rw,nosuid,nodev,noexec,relatime,cpuset 0 0
    cgroup /sys/fs/cgroup/blkio cgroup rw,nosuid,nodev,noexec,relatime,blkio 0 0
    cgroup /sys/fs/cgroup/net_cls,net_prio cgroup rw,nosuid,nodev,noexec,relatime,net_cls,net_prio 0 0
    cgroup /sys/fs/cgroup/pids cgroup rw,nosuid,nodev,noexec,relatime,pids 0 0
    cgroup /sys/fs/cgroup/hugetlb cgroup rw,nosuid,nodev,noexec,relatime,hugetlb 0 0
    cgroup /sys/fs/cgroup/perf_event cgroup rw,nosuid,nodev,noexec,relatime,perf_event 0 0
    

    No entanto, isso não diz estritamente se o seu sistema suporta cgroup v2. Como a outra resposta mencionada, grep cgroup /proc/filesystemsé ótimo para isso.

    • 1
  5. Konstantin Volenbovskyi
    2022-08-27T00:42:53+08:002022-08-27T00:42:53+08:00

    Pode não ser relevante não apenas ver se o cgroup é suportado, mas também se eles estão habilitados, pois o seguinte comando pode ser usado:

    stat -fc %T /sys/fs/cgroup/

    No caso dos estados de saída cgroup2fs, cgroups v2 são usados, tmpfsno caso de cgroups v1. Caso o sistema suporte cgroups v2, mas não seja ativado por padrão, ele pode ser ativado configurando systemd.unified_cgroup_hierarchy=1como parâmetro do kernel (por exemplo GRUB_CMDLINE_LINUX="systemd.unified_cgroup_hierarchy=0, em sistemas com GRUB)

    • 1

relate perguntas

  • Existe uma maneira de fazer ls mostrar arquivos ocultos apenas para determinados diretórios?

  • Inicie/pare o serviço systemd usando o atalho de teclado [fechado]

  • Necessidade de algumas chamadas de sistema

  • astyle não altera a formatação do arquivo de origem

  • Passe o sistema de arquivos raiz por rótulo para o kernel do Linux

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    ssh Não é possível negociar: "nenhuma cifra correspondente encontrada", está rejeitando o cbc

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    Como descarregar o módulo do kernel 'nvidia-drm'?

    • 13 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add retorna com: "Erro ao conectar ao agente: nenhum arquivo ou diretório" 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve