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 dar-lhe algum compartilhamento de tempo de CPU não desprezível (comparado a outros grupos ou o padrão sob o qual caem todos os processos indiferenciados), é garantido que você pode efetuar login mesmo quando a máquina estiver executando um intensivo de CPU tarefas.
Mais interessante, se você der a este "acesso remoto" processos muito maiores, então você poderá logar quase instantaneamente (porque o daemon ssh será priorizado sobre o resto dos processos em execução) enquanto você ganhou prejudica a força computacional geral da máquina, uma vez que os recursos são alocados apenas por 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 quer fazer essas coisas de maneira descuidada (uma vez que pode ser acionado de maneira inesperada). É importante ter em mente que os grupos são herdados por padrão - ou seja, não se deseja iniciar um hog de memória / CPU a partir de uma sessão ssh desse tipo. Ainda assim, existem mecanismos que podem atribuir processos aos cgroups quando eles começam.
Outro uso é isolar os processos uns dos outros - 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 (contêineres Linux) .Além disso, você pode fazer várias coisas de contabilidade e controle (congelando alguns grupos de processos, atribuindo-os a núcleos de CPU específicos, etc.).
Os dois links aqui devem ser um ponto de partida razoável se você estiver procurando por mais informações. Você também pode querer verificar o diretório Documentation/cgroups
na árvore fonte do kernel Linux.