Cgroups, abreviação de “control groups”, é um recurso do kernel do Linux que permite organizar, priorizar, limitar, e isolar o uso de recursos do sistema (como CPU, memória, disco e rede) por conjuntos de processos. Introduzido no kernel 2.6.24 em 2007, tem sido continuamente aprimorado em versões subsequentes.
Os cgroups são essenciais para administradores de sistema e softwares de orquestração de contêineres, como Docker e Kubernetes, pois fornecem ferramentas para gerenciar e monitorar os recursos do sistema de forma eficiente. Com os cgroups, é possível:
Limitar: Alocar uma quantidade máxima de recursos do sistema. Exemplo: limitar um grupo a usar no máximo 20% da CPU disponível ou 1 GB de memória.
Priorizar: Definir pesos ou prioridades relativos entre diferentes grupos de processos, permitindo uma distribuição mais flexível dos recursos.
Isolar: Garantir que os recursos usados por um grupo de processos sejam separados dos demais, crucial para a segurança e estabilidade em ambientes compartilhados.
Monitorar: Acompanhar o uso de recursos por grupos de processos, facilitando a identificação de problemas e a otimização do desempenho.
Os cgroups são organizados hierarquicamente, permitindo a criação de subgrupos com suas próprias regras de gestão de recursos, o que proporciona uma flexibilidade sem igual na administração dos recursos do sistema.
Existem várias versões do cgroups, sendo a mais recente conhecida como cgroups v2. Esta versão oferece uma API mais simplificada e consistente, além de abordar algumas das limitações encontradas na versão anterior.
Cgroups é uma tecnologia fundamental para a infraestrutura de contêineres Linux, utilizada amplamente por ferramentas de orquestração de contêineres para assegurar que os aplicativos rodem eficientemente e de forma segura, gerenciando o compartilhamento dos recursos do sistema de maneira controlada.
Este laboratório prático demonstra o uso de cgroups no Linux para limitar o uso de CPU por um grupo de processos. Execute as etapas a seguir em um ambiente de teste ou com cautela em um ambiente de produção.
Crie um grupo de controle chamado lab-cgroups
sob o subsistema cpu
:
mkdir /sys/fs/cgroup/cpu/lab-cgroups
Para limitar o uso da CPU a, no máximo, 20%, escreva 20000
em cpu.cfs_quota_us
:
echo 20000 > /sys/fs/cgroup/cpu/lab-cgroups/cpu.cfs_quota_us
Adicione um processo ao grupo escrevendo seu PID no arquivo tasks
:
echo [PID] > /sys/fs/cgroup/cpu/lab-cgroups/tasks
Substitua [PID]
pelo ID do processo desejado.
Use ferramentas como top
ou htop
para observar o limite de uso da CPU pelo processo.
Após os testes, remova o grupo de controle:
rmdir /sys/fs/cgroup/cpu/lab-cgroups
Lembre-se de remover todos os processos do grupo antes de tentar remover o diretório.
Este laboratório oferece uma introdução básica ao uso de cgroups para limitação de recursos no Linux.
cgcreate
Este documento serve como um guia para criar e gerenciar grupos de controle (cgroups) no Linux, utilizando o comando cgcreate
. Grupos de controle permitem limitar, priorizar, negar, monitorar e isolar recursos do sistema utilizados por processos.
cgroup-tools
instalado. Para instalar, execute um dos seguintes comandos, dependendo da sua distribuição:# Para Debian/Ubuntu
sudo apt update
sudo apt install cgroup-tools
# Para CentOS/RHEL
sudo yum install libcgroup-tools
meugrupo
para os subsistemas de CPU e memória, utilize o seguinte comando:sudo cgcreate -g cpu,memory:/meugrupo
Este comando cria um novo grupo de controle sob os subsistemas cpu
e memory
.
meugrupo
, use:sudo cgset -r memory.limit_in_bytes=512M meugrupo
cgclassify
. Por exemplo, para adicionar o processo com PID 1234
ao meugrupo
:sudo cgclassify -g cpu,memory:meugrupo 1234
cgls
meugrupo
, execute:cgget -r memory.stat meugrupo
Este laboratório ofereceu uma introdução básica ao uso do cgcreate
e outras ferramentas de cgroup no Linux para gerenciar recursos do sistema. Os cgroups são uma parte poderosa da administração do sistema Linux, permitindo controle fino sobre o uso de recursos.