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.



