Linux: Los CGROUPS no son un DEVICE, son un Filesystem!

Cgroups es una incorporación reciente del Kernel Linux que permite agregar/particionar grupos de tareas y todos sus futuros procesos hijos, en árboles jerárquicos con un comportamiento especializado.

Los CGROUPS han sido caso de estudio y debate, pues luego que se incorporaran al Kernel (luego de una “idea” de Linus Torvalds y creada la primera prueba de concepto por Kon Colivas) han salido muchas buenas ideas de allí, sobre todo los sub-sistemas de virtualización como LXC y los “parches” para optimizar el rendimiento del equipo escritos por Mike Galbraith (que genera grupos de tareas por TTY) y por Lennart Poettering (que crea grupos de tareas por usuario).

Mucha gente, tal vez por desconocimiento, siguiendo guías que a diestra y siniestra han salido por Internet, monta los CGROUPS en donde se les ocurre:

  • /cgroups
  • /usr/lib/cgroups
  • /dev/cgroups

Y hasta en usr/local o carpetas “personalizadas”, sin embargo, este último es el más popular en muchisimas guías …

Hago esta aclaratoria, pues existe algo que se llama los LSB (Linux Standard Base: convenciones de la estructura organizativa de GNU/Linux, árbol de directorio y ubicación de recursos en cada Linux, para disminuir las diferencias entre diversas distribuciones de Linux).

Les explico, gracias a LSB, la carpeta /etc siempre contendrá los archivos de configuración de los programas, no importa la distribución donde estés, que podrás acceder a logs en /var/log y que los comandos más comunes (ls, cp, mv) siempre tengan “al menos”, los mismos parámetros.

Para eso son los estándares y la compatibilidad.

Bueno, he leído en muchos lados (incluyendo en el script de Lennart Poettering incorporado a Canaima Linux) que la gente monta los CGROUPS en /dev/cgroup, /dev es una carpeta especial del sistema Base Linux para contener ¿adivinan qué?, DEVICES, todo recurso en POSIX se representa con un archivo y los recursos de hardware y sistema (devices) son representados acá.

Pero CGROUPS utiliza la estructura jerárquica representacional de los sistemas de archivos y su módulo se incorpora al kernel Linux como un Sistema de Archivos (el cgroup FS, lo pueden en /proc/filesystem:

cat /proc/filesystems | grep cgroup
nodev    cgroup

¿Vieron que es un FS de tipo “NODEV”?, en Debian y derivados (si soportan CGROUPS, activado en el Kernel de Debian Squeeze 2.6.32) se creó una carpeta en:

/sys/fs

Que es donde se montan todos los filesystem (como FUSE u otros) y es donde (si instalas libcgroup1, la librería de gestión de cgroups de Debian) se debería montar los CGROUPS, más específicamente en:

/sys/fs/cgroups

Tal vez los que usan el parche se dieron cuenta que es un filesystem sin “tanta” explicación, por algo hay que montarlo, ¿no?

Acerca de phenobarbital

http://about.me/phenobarbital

Publicado el 9 marzo 2011 en Canaima, Linux, PlanetaLinux, Software Libre. Añade a favoritos el enlace permanente. 7 comentarios.

  1. Héctor Lozada

    Entonces, a fin de cuenta para los pocos ilustrados en la materia, para que sirve el CGROUPS? y que utilidad tiene para un probre mortal que no sabe siquiera lo que es un fs.

    • Los CGROUPS permiten “aislar” tareas, sus procesos y todos los procesos hijos en segmentos de memoria definidos, esto hace que el Kernel Linux pueda “de hecho”, correr infinitas veces en espacios de memoria aislados del resto de procesos, o un mismo proceso varias veces ejecutado en distintos sectores “aislados” de memoria, esto es muy útil para verdaderamente aprovechar “al maximo” los multi-hilos de los procesadores y la alta capacidad de proceso de los equipos actuales.
      Si quieres ver una utilidad práctica de los CGROUPS, busca leer sobre el sistema de contenedores LXC, que es una implementación de contenedores o jaulas “BSD-Like”, al estilo de openVZ, pero simplemente usando cgroups …

      • Héctor Lozada

        Gracias por tu aclaración, esto es me recuerda acerca de POSIX y la librería pthreads que utilicé en C el año pasado.

        Entonces resumiendo, el usuario mortal nunca va a saber acerca de CGROUPS (o al menos que el quiera), sin embargo se va a ver beneficiado en la velocidad que el sistema le va a brindar.

        Y voy a revisar el POST que hiciste hace un tiempo acerca de las máquinas virtuales, allí haces mención de LXC.

        Muchas gracias

  2. Probando los cgroups en Debian 6.0.2 acabo de conseguirme con que los cgroups están montados por defecto en /mnt/cgroups a pesar que el directorio /sys/fs/cgroups existe.

    • Si, en el paquete cgroup-bin se mantiene ese error, fué corregido en wheezy, pero con cambiarlo a la ruta normal basta …

  3. Cual seria la ruta normal en Fedora 15, es que lo tengo, pero esta vacio y en consola sale lo que vos decis ?

    • La ruta es idéntica en fedora 15, esta vacío porque necesitas montarlos … es decir, agregar la línea de montaje automático en /etc/fstab

Responder

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: