Hay varios usos para cgroups . Desde la administración del sistema, probablemente la más importante es la limitación de recursos: el ejemplo clásico aquí es el acceso a la CPU. Si crea un grupo para, por ejemplo, sshd
y le da un tiempo compartido de CPU no despreciable (en comparación con otros grupos o el valor predeterminado en el que se encuentran todos los procesos no clasificados), tiene la garantía de poder iniciar sesión incluso en momentos en que la máquina estará funcionando Tareas intensivas en CPU.
Más interesante aún, si le da a este proceso de "acceso remoto" un porcentaje de CPU mucho mayor que el resto, podrá iniciar sesión casi instantáneamente (porque el daemon ssh tendrá prioridad sobre el resto de los procesos en ejecución), mientras que no dañará la fuerza de cálculo general de la máquina, ya que los recursos se asignan solo según las necesidades. Por lo general, desea hacer esto junto con la priorización de E / S (incluida la red). Sin embargo, como John señala correctamente en el comentario a continuación, uno no quiere hacer estas cosas descuidadamente (ya que podría disparar de forma inesperada). Lo importante a tener en cuenta es que los grupos se heredan de forma predeterminada, es decir, uno no quiere iniciar una memoria / CPU desde una sesión ssh de este tipo. Sin embargo, para esto existen mecanismos que pueden asignar procesos a cgroups a medida que comienzan.
Otro uso es aislar los procesos entre sí; en combinación con otras características (aislamiento de espacio de nombres) en los núcleos de Linux recientes, se usan para crear virtualización a nivel de sistema operativo como LXC (Contenedores de Linux) .
Aparte de eso, puede hacer varias cosas de contabilidad y control (congelar algunos grupos de procesos, asignarlos a núcleos de CPU específicos, etc.).
Los dos enlaces aquí deberían ser un punto de partida razonable si está buscando más información. También es posible que desee verificar el Documentation/cgroups
directorio en el árbol de origen del kernel de Linux.