Me gustaría entender mejor cgroups y me gustaría entender los casos de uso para aplicar cgroups.
¿Son cgroups una buena forma de priorizar diferentes aplicaciones (es decir, otorgar mayor prioridad a tipos específicos de aplicaciones como servidores web)?
linux
scheduling
cgroups
priority
Johnnie
fuente
fuente
Respuestas:
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.fuente
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)".cgroup
pseudofiles 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 .