Como verificar se um cgroup está configurado no Linux

LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como verificar se os cgroups estão configurados no seu sistema Linux. Os cgroups são um recurso poderoso do kernel para gerenciar e controlar o uso de recursos dos processos.

Você conseguirá isso listando os subsistemas cgroup disponíveis usando cat /proc/cgroups, examinando os pontos de montagem cgroup em /sys/fs/cgroup e verificando o arquivo de configuração cgroup /etc/cgconfig.conf. Essas etapas fornecerão uma visão geral abrangente da configuração cgroup do seu sistema.

Listar cgroups com cat /proc/cgroups

Nesta etapa, você aprenderá como listar os subsistemas cgroup disponíveis no seu sistema Linux. Cgroups (grupos de controle) são um recurso do kernel Linux que permite organizar processos em grupos hierárquicos e controlar o uso de seus recursos (CPU, memória, I/O de disco, rede, etc.).

Pense nos cgroups como uma maneira de impor limites ou alocar recursos para aplicativos ou usuários específicos. Isso é crucial para gerenciar os recursos do sistema de forma eficaz, especialmente em ambientes como contêineres ou computação em nuvem.

O sistema de arquivos /proc é um sistema de arquivos virtual que fornece informações sobre processos e outras informações do sistema. O arquivo /proc/cgroups contém detalhes sobre os subsistemas cgroup suportados pelo seu kernel.

Para visualizar os subsistemas cgroup disponíveis, você usará o comando cat. O comando cat é um utilitário Linux fundamental usado para exibir o conteúdo de arquivos.

Abra seu terminal, caso ainda não esteja aberto. Você pode fazer isso clicando no ícone Xfce Terminal no lado esquerdo da sua área de trabalho.

Agora, digite o seguinte comando no terminal e pressione Enter:

cat /proc/cgroups

Você deve ver uma saída semelhante a esta:

#subsys_name    hierarchy       num_cgroups     enabled
cpuset  0       1       1
cpu     0       1       1
cpuacct 0       1       1
blkio   0       1       1
memory  0       1       1
devices 0       1       1
freezer 0       1       1
net_cls 0       1       1
perf_event      0       1       1
net_prio        0       1       1
hugetlb 0       1       1
pids    0       1       1
rdma    0       1       1

Vamos analisar a saída:

  • #subsys_name: O nome do subsistema cgroup (por exemplo, cpu, memory, blkio). Cada subsistema controla um tipo específico de recurso.
  • hierarchy: O ID da hierarquia à qual o subsistema está anexado. Nesta saída, todos os subsistemas estão anexados à hierarquia 0, que é a hierarquia unificada padrão em distribuições Linux mais recentes.
  • num_cgroups: O número de cgroups atualmente criados dentro da hierarquia deste subsistema.
  • enabled: Indica se o subsistema está habilitado (1) ou desabilitado (0) no kernel.

Esta saída mostra quais recursos de controle estão disponíveis e ativos no seu sistema. Compreender esses subsistemas é o primeiro passo para aprender a gerenciar recursos com cgroups.

Clique em Continuar para prosseguir para a próxima etapa.

Verificar montagens de cgroup em /sys/fs/cgroup

Na etapa anterior, você viu os subsistemas cgroup disponíveis. Agora, vamos explorar onde esses cgroups estão montados no sistema de arquivos. No Linux, os cgroups são normalmente expostos por meio de um sistema de arquivos virtual, geralmente montado em /sys/fs/cgroup.

O sistema de arquivos /sys é outro sistema de arquivos virtual que fornece uma interface para as estruturas de dados do kernel. Ele é frequentemente usado para configurar e monitorar hardware e recursos do kernel. O diretório /sys/fs/cgroup é o ponto de montagem padrão para o sistema de arquivos cgroup.

Para ver o conteúdo deste diretório e entender como as hierarquias cgroup são organizadas, você usará o comando ls. O comando ls lista o conteúdo de um diretório.

Abra seu terminal, caso ainda não esteja aberto.

Digite o seguinte comando no terminal e pressione Enter:

ls /sys/fs/cgroup

Você deve ver uma saída semelhante a esta:

cgroup.controllers  cgroup.max.depth  cgroup.max.descendants  cgroup.stat  cgroup.subtree_control  cgroup.threads  cpu  cpu.stat  cpu.pressure  cpuset  cpuset.cpus  cpuset.mems  cpuset.stat  io  io.stat  io.pressure  memory  memory.stat  memory.pressure  memory.swap.max  memory.high  memory.low  memory.min  memory.swap.current  memory.current  memory.events  memory.events.local  pids  pids.current  pids.max  systemd  user.slice

Esta saída mostra os diretórios e arquivos dentro do diretório /sys/fs/cgroup. Em sistemas que usam a hierarquia cgroup unificada (cgroup v2), você verá arquivos como cgroup.controllers, cgroup.stat e diretórios correspondentes aos controladores montados (como cpu, memory, io, pids).

Cada um desses diretórios (como cpu, memory, etc.) representa um controlador cgroup. Dentro desses diretórios, você encontrará arquivos que permitem configurar e monitorar os limites de recursos para processos dentro desse cgroup.

Por exemplo, se você navegar para o diretório cpu, encontrará arquivos relacionados ao controle de recursos da CPU.

Vamos dar uma olhada rápida dentro do diretório cpu usando ls:

ls /sys/fs/cgroup/cpu

Você pode ver uma saída como:

cgroup.controllers  cgroup.events  cgroup.freeze  cgroup.max.depth  cgroup.max.descendants  cgroup.stat  cgroup.subtree_control  cgroup.threads  cpu.max  cpu.stat  cpu.weight  cpu.pressure

Esses arquivos (como cpu.max, cpu.weight) são usados para definir limites e prioridades de CPU para cgroups.

Compreender a estrutura de /sys/fs/cgroup é fundamental para trabalhar com cgroups, pois é aqui que você interage com eles diretamente.

Clique em Continuar para passar para a próxima etapa.

Verificar configuração de cgroup com cat /etc/cgconfig.conf

Nas etapas anteriores, você aprendeu sobre os subsistemas cgroup disponíveis e onde eles estão montados no sistema de arquivos. Agora, vamos analisar um arquivo de configuração comum para cgroups: /etc/cgconfig.conf.

Embora os cgroups possam ser gerenciados diretamente através do sistema de arquivos /sys/fs/cgroup, arquivos de configuração como /etc/cgconfig.conf são frequentemente usados para definir hierarquias cgroup e configurações iniciais quando o sistema é iniciado. Este arquivo faz parte do pacote cgroup-tools, que fornece utilitários para gerenciar cgroups.

O arquivo /etc/cgconfig.conf é lido pelo serviço cgconfig (se instalado e habilitado) para configurar hierarquias cgroup e anexar controladores no momento da inicialização. Examinar este arquivo pode fornecer informações sobre como os cgroups são configurados em seu sistema.

Você usará novamente o comando cat para exibir o conteúdo deste arquivo de configuração.

Abra seu terminal, caso ainda não esteja aberto.

Digite o seguinte comando no terminal e pressione Enter:

cat /etc/cgconfig.conf

Você deve ver uma saída semelhante a esta (o conteúdo exato pode variar dependendo da configuração do sistema):

#
## A sample configuration file for cgconfig.
#
## The file contains two sections:
##   mount: defines the hierarchy and where to mount it.
##   group: defines the cgroup and its parameters.
#
## Example:
#
#mount {
##       cpuset = /cgroup/cpuset;
##       cpu = /cgroup/cpu;
##       cpuacct = /cgroup/cpuacct;
##       memory = /cgroup/memory;
##       devices = /cgroup/devices;
##       freezer = /cgroup/freezer;
##       net_cls = /cgroup/net_cls;
##       blkio = /cgroup/blkio;
#}
#
#group staff {
##       perm {
##               task {
##                       uid = staff;
##                       gid = staff;
##               }
##               admin {
##                       uid = staff;
##                       gid = staff;
##               }
##       }
##       cpu {
##               cpu.shares = 1000;
##       }
##       memory {
##               memory.limit_in_bytes = 256M;
##       }
#}
#
#group / {
##       cpu {
##               cpu.shares = 1024;
##       }
#}

Nesta saída de exemplo, você pode ver seções comentadas (#) que mostram como você pode definir pontos de montagem para diferentes controladores e criar grupos cgroup (como staff) com limites de recursos específicos (por exemplo, cpu.shares, memory.limit_in_bytes).

Se o arquivo estiver vazio ou contiver apenas comentários, isso significa que as hierarquias cgroup e os grupos iniciais não estão sendo configurados por meio deste arquivo específico. Em sistemas modernos, o systemd geralmente lida com o gerenciamento de cgroup, usando a hierarquia unificada montada em /sys/fs/cgroup.

Mesmo que este arquivo não seja usado ativamente para configuração em seu sistema, saber sobre sua existência e finalidade é importante para entender como os cgroups podem ser gerenciados.

Você agora explorou os subsistemas cgroup disponíveis, seus pontos de montagem no sistema de arquivos e um arquivo de configuração comum. Isso fornece uma compreensão fundamental de como os cgroups são estruturados e potencialmente configurados em um sistema Linux.

Clique em Continuar para concluir este laboratório.

Resumo

Neste laboratório, você aprendeu como verificar se os cgroups estão configurados em um sistema Linux. Você começou usando o comando cat /proc/cgroups para listar os subsistemas cgroup disponíveis suportados pelo kernel, entendendo as colunas de saída como subsys_name, hierarchy, num_cgroups e enabled. Esta etapa forneceu informações sobre quais mecanismos de controle de recursos estão ativos.

Em seguida, você verificou os pontos de montagem cgroup examinando o diretório /sys/fs/cgroup, que é o local padrão onde as hierarquias cgroup são montadas. Por fim, você verificou o arquivo /etc/cgconfig.conf para ver se alguma configuração cgroup persistente está definida, embora este arquivo possa não existir ou ser usado em todos os sistemas, especialmente aqueles que dependem do systemd para o gerenciamento de cgroup. Essas etapas demonstram coletivamente como determinar a presença e a configuração básica de cgroups em um sistema Linux.