Instalar CGroups en CentOS, Fedora y Gentoo

Instalar CGroups en CentOS, Fedora y Gentoo.

CGroups (grupos de control) es una función del kernel Linux, que limita y aísla los recursos del sistema (procesador, red, memoria, recursos E/S) creando grupos de procesos independientes.

Ejecutando esta función, podrás crear grupos jerárquicos de procesos especificando sus propiedades, ademas también tendrás un control total del software que puedan usar.

Puedes usar CGroups para limitar la cantidad de recursos que un proceso o grupo puede consumir.

 

Grupos de arquitectura

La herramienta CGroups consta de dos partes: el núcleo (núcleo cgroup) y los subsistemas:

  • net_cls: marca paquetes de red con una etiqueta única, que permite identificar paquetes generados por una tarea específica dentro del grupo de control.
  • devices: permite o bloquea el acceso a los dispositivos.
  • blkio: establece los límites para leer y escribir desde los dispositivos del bloque.
  • pids: se usa para limitar el número de procesos dentro del grupo de control.
  • CPU: proporciona acceso a los procesos dentro del grupo de control a la CPU.
  • hugetlb: activa el soporte de páginas de memoria grandes para grupos de control.
  • cpuacct: genera informes sobre el uso de los recursos del procesador.
  • freezer: suspender y reanudar tareas dentro del grupo de control.
  • cpuset: distribuye tareas dentro del grupo de control entre los núcleos del procesador.
  • memory: controla la asignación de memoria en los grupos de procesos.
  • netprio: se usa para establecer dinámicamente prioridades en el tráfico.

 

Instalar CGroups en Linux

 

Instalar CGroups en CentOS, Redhat y derivados.

Puedes verificar que CGroups esta corriendo con…

Para agregar servicios:

 

Instalar CGroups en Gentoo.

 

Instalar CGroups en Fedora.

 

Configurar CGroups

La documentación del kernel nos ofrece una descripción general con ejemplos. De todas maneras veremos unos cuantos ejemplos.

El paquete cgroups-bin (que depende de libcgroup1), es proporcionado por la distribución que tengas instalada. La configuración se realiza editando los archivos siguientes:

  • /etc/cgconfig.conf – Dependiendo del contenido del archivo de configuración “cgconfig“, es posible crear jerarquías, montar sistemas de ficheros, crear un grupo y establecer los parámetros de un subsistema (limitaciones de recursos) para cada grupo. Una jerarquía es un conjunto de grupos ubicados en el árbol, de modo que cada tarea en el sistema se encuentra en uno de los grupos de la jerarquía.
  • /etc/cgrules.conf – Agrega restricciones para usuarios, grupos y procesos.

Por tanto, el archivo cgconfig es muy importante que este bien configurado, dado que es administrador de asignar recursos y cargas de trabajo.

 

Vemos unos ejemplos de su uso.

Agregar un nuevo proceso al administrador.

Agregar un proceso en ejecución al administrador.

El método anterior de agregar procesos puede resultar un poco tedioso y lento, por eso mismo también tienes la posibilidad de automatizarlo.

un ejemplo de uso…

 

Puede usar este archivo de ejemplo y crear un nuevo archivo en el directorio “/etc/cgconfig.d“.

Por ejemplo:

Explicación:

  • En el grupo limitcpu, limitamos los recursos de CPU totales disponibles para los procesos en este grupo a 400. cpu.shares especifica la fracción relativa del tiempo de procesador disponible para las tareas en el grupo cg.
  • En el grupo limitmem, limitamos la memoria de cgroup disponible hasta 512 MB.
  • En el grupo de limitio, limitamos el ancho de banda del disco a 2 MB / s. Aquí, restringimos la lectura de E / S al disco principal, / dev / vda, con el primario: el número menor 11: 0 y 2MiB / s se convierte a bytes por segundo (2x1024x1024 = 2097152).
  • En el grupo browsers, limitamos los recursos totales del procesador a 200 y la memoria disponible a 128 MB.

Asegúrate de que la configuración es correcta.

salida:

 

En este nuevo ejemplo agregaremos procesos (tareas), para los cuales queremos limitar los recursos para los grupos ya creados. Cgred (servicio que gestiona el grupo) es un servicio que mueve las tareas en grupos, según los parámetros que hayamos especificado en el archivo “/etc/cgrules.conf“.

Las entradas en /etc/cgrules.conf  se pueden ver como…

Explicación:

  1. USER – es el nombre de usuario o grupo con el prefijo “@”.
  2. subsystems (subsistemas) se refieren a una lista de subsistemas separados por comas.
  3. control_group es la ruta al cgroup, y el comando indica el nombre del proceso o la ruta completa al proceso del proceso.

Las entradas en el archivo /etc/cgrules.conf pueden contener los siguientes símbolos adicionales:

  • @ – Especifica el grupo en vez del usuario. Por ejemplo, @admin especifica todos los usuarios en el grupo de administración.
  • * – Use “all \ all” – Si establecemos “*” en el campo de usuario se usarán todos los usuarios del sistema.
  • % – Representa el mismo elemento que el elemento que la línea superior.

 

Ahora agregamos una restricción al software, procesos, etc…,  que queremos limitar.

Copia y pega el ejemplo (con tus datos).

Explicación de las reglas anteriores:

  • Para el usuario “sololinux“, limitamos la CPU. Le asignamos el grupo group1.
  • Los procesos abiertos por Firefox de cualquier usuario, se agregarán automáticamente al grupo de navegadores y se restringirán al subsistema de CPU y RAM.
  • Los procesos hdparm ejecutados por cualquier usuario, se agregarán al grupo blkio con la restricción del subsistema blkio de acuerdo con los valores establecidos en el grupo.
  • Todos los procesos realizados por el usuario “sergio” se agregarán al grupo limitado y estarán limitados al subsistema blkio.
  • Los procesos memhog ejecutados por un admin del grupo administrativo, se agregarán a limitmem cgroup, están limitados por memoria.
  • Los procesos cpuhog, que sean ejecutados por cualquier usuario, se agregarán al grupo limitcpu, se limitara la CPU.

 

Reiniciamos cgred, para que los cambios en la configuración de cgrules sean efectivos.

Para que inicien las reglas con el sistema.

Reinicia…

Ya lo tienes funcionando.

 

En el siguiente articulo veremos como instalar CGroup en Debian, Ubuntu y derivados.

 

Instalar CGroups en CentOS, Fedora y Gentoo
5 (100%) 2 Votos

Una respuesta

  1. Valle
    15/03/2018

Agregar comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.