Eu gostaria de entender melhor o cgroups e gostaria de entender os casos de uso para aplicar o cgroups.
Os cgroups são uma boa maneira de priorizar aplicativos diferentes (ou seja, dar maior prioridade a tipos específicos de aplicativos, como servidores da Web)?
linux
scheduling
cgroups
priority
Johnnie
fonte
fonte
Respostas:
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.fonte
systemd
, que (ab) usam o cgroups para seus próprios propósitos - os arquivos da unidade systemd para serviços podem fornecer algumas dicas sobre o que pode ser razoável. Mas, no final, é sempre tarefa do administrador do sistema aprender da maneira mais difícil, o que realmente não é a "Good Idea (TM)".cgroup
pseudo - arquivos que pode ser necessário montar primeiro. Atualmente, na maioria dos casos, o sistema init faz isso por você e muitas vezes já usa o cgroups de alguma forma. A única resposta definitiva é ler a documentação: documentação do kernel , OpenRC @ Gentoo , systemd @ freedesktop .