control de prioridad de aplicaciones que usan cgroups

Respuestas:

8

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, sshdy 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/cgroupsdirectorio en el árbol de origen del kernel de Linux.

Peterph
fuente
gracias. El ejemplo de sshd es interesante y trae otro pensamiento relacionado. Un aspecto que no había considerado es asegurar que otros recursos se asignen de manera adecuada; supongo que alguien con un conocimiento incompleto del perfil de una aplicación puede causar estragos al asignar recursos solo para la CPU (en este ejemplo) y sin asignación para I / O (decir red). Si es así, ¿hay perfiles bien conocidos para cgroups publicados en alguna parte?
Johnnie
@John pregunta interesante de hecho. Es posible que desee verificar las distribuciones que tienen systemd, que (ab) usa cgroups para sus propios fines: los archivos de unidad systemd para servicios pueden dar algunas pistas sobre lo que podría ser razonable. Pero al final siempre depende del administrador del sistema aprender de la manera difícil, lo que realmente no es la "Buena Idea (TM)".
Peter
1
@kokbira depende de qué nivel, generalmente escribe en el sistema de cgrouppseudofiles que puede necesitar montar primero. En la mayoría de los casos hoy, el sistema init lo hace por usted y, a menudo, ya usa cgroups de alguna manera. La única respuesta definitiva es leer la documentación: kernel docs , OpenRC @ Gentoo , systemd @ freedesktop .
Peter
1
@kokbira, el sistema operativo hace lo que le dices (al menos uno bueno, hay algunos que hacen muchas otras cosas que no les dices, pero esa es otra historia). La idea es que si ejecuta una aplicación, desea que obtenga lo que necesita para realizar lo que espera. Si la aplicación se comporta mal, depende del operador del sistema (que es usted en este caso) hacer algo al respecto. Los autores de la distribución podrían proponer algunos heuréticos sobre cómo detectar este tipo de problemas, pero causaría más problemas que solucionaría.
Peter
1
@kokbira en cuanto a Firefox en sí, sugeriría usar algunos complementos que disminuyen la carga puesta en el navegador y, en consecuencia, en todo el sistema. Desde mi experiencia, NoScript y el origen uBlock son suficientes. Especialmente NoScript en el "bloquear todo por defecto" hace maravillas: solo habilite el mínimo necesario que necesita para trabajar con los sitios web que está utilizando y puede obtener fácilmente cientos de pestañas en un sistema de RAM de 8GB y aún así funciona bastante bien. Además, tiene el nivel adicional de protección contra toda la basura de JS que la mayoría de los sitios web usan en estos días para obtener efectos de fantasía innecesarios.
Peter