Existem vários usos para cgroups . Da administração do sistema, provavelmente o mais importante é a limitação de recursos - o exemplo clássico aqui é o acesso à CPU. Se você criar um grupo para, por exemplo, sshd
e conceder a ele um compartilhamento de tempo da CPU não desprezível (comparado a outros grupos ou o padrão no qual se enquadram todos os processos não classificados), é garantido que você poderá fazer login mesmo nos momentos em que a máquina estiver em execução tarefas com uso intensivo de CPU.
O mais interessante é que, se você conceder a esse processo de "acesso remoto" um compartilhamento de CPU muito maior do que o restante, será possível fazer logon quase instantaneamente (porque o daemon ssh será priorizado nos demais processos em execução) enquanto você não machucar a força geral da computação da máquina, uma vez que os recursos são alocados somente conforme a necessidade. Você geralmente deseja fazer isso junto com a priorização de E / S (incluindo rede). No entanto, como John aponta corretamente no comentário abaixo, não se deseja fazer essas coisas descuidadamente (pois isso pode ser disparado de maneira inesperada). O importante é ter em mente que os grupos são herdados por padrão - ou seja, não se deseja iniciar um problema de memória / CPU a partir de uma sessão ssh. No entanto, para isso, existem mecanismos que podem atribuir processos aos cgroups quando eles começam.
Outro uso é isolar os processos um do outro - em combinação com outros recursos (isolamento de namespace) nos kernels recentes do Linux, eles são usados para criar virtualização no nível do SO, como o LXC (Linux Containers) .
Fora isso, você pode fazer várias coisas de contabilidade e controle (congelando alguns grupos de processos, atribuindo-os a núcleos específicos da CPU, etc.).
Os dois links aqui devem ser um ponto de partida razoável se você estiver procurando mais informações. Você também pode verificar o Documentation/cgroups
diretório na árvore de fontes do kernel do Linux.