A documentação do kernel fornece uma cobertura geral do cgroups com exemplos.
O cgroups-bin
pacote (que depende libcgroup1
) já fornecido pela distribuição deve estar bem.
A configuração é feita editando os dois arquivos a seguir:
/etc/cgconfig.conf
Usado pelo libcgroup para definir grupos de controle, seus parâmetros e pontos de montagem.
/etc/cgrules.conf
Usado pelo libcgroup para definir os grupos de controle aos quais o processo pertence.
Esses arquivos de configuração já possuem exemplos, portanto, tente ajustá-los aos seus requisitos. As páginas do manual cobrem muito bem sua configuração.
Depois, inicie o gerenciador de carga de trabalho e o daemon de regras:
service cgconfig restart
service cgred restart
O gerenciador de carga de trabalho (cgconfig) é responsável por alocar os recursos.
Adicionando um novo processo ao gerente:
cgexec [-g <controllers>:<path>] command [args]
Incluindo um processo já em execução no gerenciador:
cgclassify [-g <controllers>:<path>] <pidlist>
Ou automaticamente, sobre o arquivo cgrules.conf e o CGroup Rules Daemon (cgred), que força todo processo recém-gerado no grupo especificado.
Exemplo /etc/cgconfig.conf:
group group1 {
perm {
task {
uid = alice;
gid = alice;
}
admin {
uid = root;
gid = root;
}
}
cpu {
cpu.shares = 500;
}
}
group group2 {
perm {
task {
uid = bob;
gid = bob;
}
admin {
uid = root;
gid = root;
}
}
cpu {
cpu.shares = 500;
}
}
mount {
cpu = /dev/cgroups/cpu;
cpuacct = /dev/cgroups/cpuacct;
}
Exemplo /etc/cgrules.conf:
alice cpu group1/
bob cpu group2/
Isso compartilhará os recursos da CPU entre 50 e 50 entre o usuário 'alice' e 'bob'