Grupo de control (Linux)
Grupo de control ( grupo de control en inglés , cgroups [1] , cgroup [2] ) - un grupo de procesos en Linux , para el cual los mecanismos del kernel imponen el aislamiento y se imponen restricciones en algunos recursos informáticos (procesador, red, recursos de memoria, I / O recursos). El mecanismo hace posible formar grupos jerárquicos de procesos con propiedades de recursos específicas y proporciona control programático sobre ellos.
Historia
El desarrollo fue iniciado por los ingenieros de Google Paul Menage y Rohit Seth en 2006 y originalmente se llamó contenedores de proceso [3 ] . En 2007, el proyecto pasó a llamarse cgroups (del inglés control groups ) debido a la ambigüedad del significado del término "contenedor" en el kernel de Linux.
Desde la versión 2.6.24 del kernel de Linux, la tecnología se ha incluido en las versiones oficiales del kernel [4] . Desde entonces, el desarrollo ha aumentado significativamente, se han agregado muchas características adicionales al mecanismo, el mecanismo se usa significativamente en la tecnología de inicialización systemd y también es un elemento clave en la implementación del sistema de virtualización a nivel del sistema operativo LXC .
Características
Uno de los objetivos del mecanismo es proporcionar una única interfaz de programación para toda una gama de herramientas de gestión de procesos, desde el control de un único proceso (como la utilidad nice ) hasta la virtualización completa del nivel del sistema (como OpenVZ , Linux-VServer , LXC ). El mecanismo proporciona las siguientes características:
- limitación de recursos : uso de memoria , incluida la virtual [5] ;
- priorización: a diferentes grupos se les pueden asignar diferentes cantidades de recursos de procesador [6] y rendimiento del subsistema de entrada-salida [7] ;
- contabilidad: cálculo de los costos de ciertos recursos por parte de un grupo [8] ;
- aislamiento: separación de espacios de nombres para grupos de tal manera que los procesos, conexiones de red y archivos de otro grupo son inaccesibles [4] ;
- gestión: suspender ( congelar ) grupos, crear puntos de control ( checkpointing ) y recargarlos [8] .
Uso
Grupo de control ( cgroup ) - un conjunto de procesos unidos según algunas características, la agrupación puede ser jerárquica con la herencia de restricciones y parámetros del grupo padre. El kernel de Linux proporciona acceso a muchos de los llamados controladores (subsistemas) a través de la interfaz cgroup [4] , por ejemplo, el controlador de "memoria" limita el uso de RAM, el controlador "cpuacct" tiene en cuenta el uso del tiempo del procesador.
Los grupos de control se pueden gestionar de varias maneras:
- a través del acceso al sistema de archivos virtual de cgroup (como /proc ) directamente;
- utilidades cgcreate , cgexec , cgclassify (de libcgroup);
- usando el demonio del motor de reglas , que automáticamente mueve los procesos de ciertos usuarios, grupos o comandos a cgroups según la configuración;
- indirectamente a través de otro software que utiliza cgroups, como los sistemas de contenedorización LXC [9] y Docker , la biblioteca libvirt , la tecnología systemd init y el software de administración de clústeres Grid Engine [10] .
En la documentación del kernel de Linux se incluye una descripción de la instalación y el uso del mecanismo.
Notas
- ↑ La reducción es válida para la versión 1
- ↑ La reducción es válida para la versión 2
- ↑ Jonathan Corbet . Contenedores de proceso , LWN.net (29 de mayo de 2007). Archivado desde el original el 12 de junio de 2017. Consultado el 29 de diciembre de 2012.
- ↑ 1 2 3 Jonathan Corbet . Notas desde un contenedor , LWN.net (29 de octubre de 2007). Archivado desde el original el 22 de junio de 2012. Consultado el 29 de diciembre de 2012.
- ↑ Jonathan Corbet . Control de uso de memoria en contenedores , LWN (31 de julio de 2007). Archivado desde el original el 29 de enero de 2018. Consultado el 29 de diciembre de 2012.
- ↑ Jonathan Corbet . Espacio del kernel: Programación justa de usuarios para Linux , Network World (23 de octubre de 2007). Archivado desde el original el 19 de octubre de 2013. Consultado el 22 de agosto de 2012.
- ↑ Kamkamezawa Hiroyu (2008-11-19). Cgroup y controlador de recursos de memoria (PDF) . Simposio Linux de Japón. Archivado desde el original (diapositivas de presentación en PDF) el 22 de julio de 2011 . Consultado el 29 de diciembre de 2012 . Archivado el 22 de julio de 2011 en Wayback Machine .
- ↑ 1 2 Dave Hansen. Gestión de recursos (PDF) . Fundación Linux. Archivado desde el original (diapositivas de presentación en PDF) el 2011-10-09 . Consultado el 29 de diciembre de 2012 .
- ↑ Matt Helsley . LXC: herramientas de contenedor de Linux , IBM developerWorks (3 de febrero de 2009). Archivado desde el original el 29 de octubre de 2012. Consultado el 29 de diciembre de 2012.
- ↑ Grid Engine cgroups Integration (enlace descendente) . Lógica escalable (22 de mayo de 2012). Archivado desde el original el 26 de enero de 2013. (indefinido)
Enlaces