Cgroups (abreviação de control groups, ou grupos de controle) são um mecanismo do Kernel Linux que permite organizar processos em grupos hierárquicos e gerenciar/limitar o acesso deles a recursos do sistema, como CPU, memória, largura de banda de rede e E/S de disco.
cgroups-tools (Control Groups Tools) é um conjunto de utilitários no Linux para gerenciar cgroups
Instalando o cgroups-tools
apt-getinstallcgroups-tools-y
Criando um novo Cgroup
Criando o Cgroup cgroup_toto
cgcreate-gcpu,memory,io,pids:cgroup_toto
cgcreate: Utilitário para criar novos Cgroups no sistema.
-g: Flag que especifica os controladores (subsistemas) e o nome do cgroup a ser criado.
cpu: Controla o tempo de CPU disponível para os processos. Permite definir quotas, períodos e prioridades de uso do processador.
memory: Gerencia o uso de memória RAM. Possibilita estabelecer limites de consumo de memória, tanto física quanto swap, e monitorar o uso atual.
io: Controla operações de I/O em dispositivos de bloco (discos). Permite limitar a largura de banda de leitura/escrita e definir pesos de prioridade para acesso ao disco.
pids: Limita número de processos/threads.
cgroup_toto: O nome que você está atribuindo a este cgroup específico. Ele será criado em /sys/fs/cgroup/[controlador]/cgroup_toto para cada controlador especificado.
Lista os diretórios associados ao cgroup CPU cgroup_toto
Listando Cgroups
ls/sys/fs/cgroup/cgroup_toto/
O saída do comando será semelhante a que está abaixo:
Note que o PPID (Parent Process ID) do comando bash (11318) é o mesmo do PID (Process ID) do comando unshare. Isto indica que este processo bash foi criado pelo comando unshare.
Agora usaremos o PID do comando bash (11318) do passo anterior para adicionar o ambiente isolado ao Cgroup cgroup_toto:
Adicionando o ambiente isolado ao Cgroup cgroup_toto
cgclassify-gcpu,memory,io,pids:cgroup_toto11318
cgclassify: Utilitário que move processos já em execução para um cgroup específico.
-g: - Flag que especifica os controladores e o Cgroup de destino onde o processo será movido.
cpu,memory,io,pids: Lista dos controladores (subsistemas) nos quais o processo será classificado. O processo será movido para o Cgroup cgroup_toto em cada um desses controladores.
cgroup_toto: O nome do cgroup de destino que você criou anteriormente com o cgcreate.
11318: O PID do processo (bash) que você quer mover para o Cgroup.