#4sysadmins

Inicio » GNU/Linux » Cgroups Linux

Cgroups Linux

Últimas Entradas

Follow #4sysadmins on WordPress.com

Debido a que los permisos tradicionales Linux; ACLs, MAC (SELinux), los limites (/etc/security/limits.conf) que acotan la máxima asignación de recursos, y el planificador de recursos (nice, renice o ionice) son insuficientes si lo que desea un administrador de sistemas es especificar con detalle como se deben asignar los recursos entre las diferentes tareas en ejecución, se integró en el kernel de Linux la herramienta cgroups.

El fin de utilizar cgroups, es poseer a nivel de sistema la capacidad de aislar el consumo de recursos (CPU, memoria, E/S, ancho de banda, etc…) de forma independiente a cada grupo de procesos. Por tanto cgroups es una herramienta útil para controlar la asignación de los recursos a los procesos, la cual se integro en el núcleo de Linux a partir de la versión 2.6.29.

Nota: existe la versión cgroups-v2 integrada en Marzo del 2016 en el kernel 4.5

Los grupos de control (cgroups) permiten definir una jerarquía de grupos de procesos de manera que un administrador pueda definir al detalle la asignación de sus recursos (tiempo de CPU, I/O, RAM…).

Una forma sencilla de ver la potencia de cgroups es con el siguiente ejemplo:

“Supongamos que tenemos una CPU y dos procesos en ejecución, y que con el comando nice le hemos dado la misma prioridad de tiempo de CPU a cada uno de ellos. El problema surge cuando uno de los dos procesos es por ejemplo un software como Apache HTTP, el cual crea procesos hijos haciendo uso de fork. Estos subprocesos heredan la prioridad del proceso padre (la cual es la misma que para el otro proceso), de modo que si apache a creado 98 subprocesos (+ el proceso padre) al otro proceso no Apache le queda tan solo un 1% de uso de CPU, haciéndose Apache con el 99% de tiempo de CPU. Con los grupos de control se podría entonces crear dos grupos independientes, uno para apache y otro para la otra aplicación, y asignar por ejemplo un 50% de tiempo de CPU para cada uno de ellos. La suma de todos los subprocesos Apache no consumirá nunca mas del 50% de tiempo de CPU.”

Nota: en las distribuciones que están implementando systemd como controlador de procesos, cgroups se integra directamente con este. En las que no, cabe la posibilidad de manipular cgroups a partir del sistema de archivos virtual /sys. Concretamente los cgroups mantienen su punto de montaje bajo /sys/fs/cgroup

No es muy extraño que navegadores como Chrome o Firefox consuman recursos del sistema en exceso, concretamente memoria RAM. Es posible con cgroup aislar en un grupo a los navegadores, de manera que nunca nuestra estación de trabajo se llegue a congelar como consecuencia de un “mal funcionamiento” del navegador.

Podemos aprender mas sobre los cgroups:

 

Anuncios

Deja un comentario, Gracias!

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: