2.5. Grupos de control
Red Hat Enterprise Linux proporciona muchas opciones útiles para ajustar el rendimiento. Los grandes sistemas, que escalan a cientos de procesadores, pueden ajustarse para entregar un gran rendimiento. Sin embargo, el ajuste de estos sistemas requiere una experiencia considerable y una carga de trabajo bien definida. Cuando los grandes sistemas eran costosos y escasos, se aceptaba darles un tratamiento especial. Ahora que estos sistemas son comunes, se requieren herramientas más efectivas.
En cosas más complicadas, se utilizan sistemas más poderosos para consolidación de servicios. Las cargas de trabajo, que podrían estar ejecutándose en cuatro a ochos servidores más antiguos, ahora se colocan dentro un servidor individual. Además, como se discutió anteriormente en Sección 1.2.1, “Computación paralela”, muchos sistemas de medio rango de hoy, contienen más núcleos que las máquinas de alto rendimiento de ayer.
Muchas aplicaciones modernas están diseñadas para procesamiento paralelo, mediante múltiples hilos o procesos para mejorar el rendimiento. Sin embargo, pocas aplicaciones pueden hacer uso efectivo de más de ocho hilos. Por lo tanto, múltiples aplicaciones deben ser instaladas en un sistema de CPU de 32 a una capacidad máxima.
Considere la situación: los sistemas actuales pequeños y baratos están ahora en paridad con el rendimiento de las máquinas de ayer. Las máquinas de alto rendimiento otorgan a los arquitectos de sistemas la capacidad de consolidar más servicios a un número menor de máquinas.
Sin embargo, algunos recursos (tales como E/S y comunicaciones de redes) son compartidos y no crecen tan rápido como el conteo de CPU. Como tal, un sistema que alberga varias aplicaciones puede experimentar rendimiento total degradado cuando una aplicación acapara demasiado de un solo recurso.
Para solucionarlo, Red Hat Enterprise Linux 6 ahora soporta grupos de control (cgroups). Los cgroups le permiten a los administradores asignar recursos para tareas específicas cuando se necesiten. Esto significa, por ejemplo, que pueden asignar el 80% de cuatro CPU, 60GB de memoria y 40% de E/S de disco a una aplicación de base de datos. Una aplicación que se ejecute en el mismo sistema puede recibir dos CPU, 2GB de memoria y 50% del ancho de banda de red.
Como resultado, ambas bases de datos y aplicaciones de red entregan buen rendimiento, ya que el sistema evita que ambas consuman de forma excesiva los recursos del sistema. Además, varios aspectos de cgroups son de auto-ajuste, lo que permite al sistema responder según los cambios en carga de trabajo.
Un Cgroup tiene dos componentes importantes:
- Una lista de tareas asignadas al Cgroup
- Recursos asignados a aquellas tareas
Tareas asignadas al Cgroup se ejecutan dentro del Cgroup. Cualquier tarea hija que generen también se ejecuta dentor del Cgroup. Esto permite a un administrados manejar una aplicación entera como una unidad. Una administrador también puede configurar asignaciones para los siguientes recursos:
- CPUsets
- Memoria
- E/S
- Redes (ancho de banda)
Dentro de CPU, los cgroups permiten al los administradores configurar la cantidad de CPU, la afinidad para CPU o nodos específicos [3], y la cantidad de tiempo de CPU utilizada por una serie de tareas. El uso de cgroups para configurar CPUsets es vital para garantizar un buen rendimiento total, evitando así que una aplicación consuma recursos excesivos al costo de otras tareas, mientras que se garantiza de forma simultánea que a la aplicación no le falte tiempo de CPU.
El ancho de banda de E/S y de red se manejan mediante otros controladores de recursos. Una vez más, los controladores recursos le permiten determinar cuánto ancho de banda pueden consumir las tareas y garantizar que las tareas en un cgroup ni consuman recursos excesivos ni carezcan de ellos.
Los cgroups le permiten al administrador definir y asignar a un alto nivel, los recursos de sistemas que necesitan (y consumirán) varias aplicaciones. El sistema maneja de forma automática y equilibra las aplicaciones, entregando de ese modo un buen rendimiento predecible de todo el sistema.
Para obtener mayor información sobre cómo usar grupos de control, consulte la Guía de administración de recursos, disponible en http://access.redhat.com/site/documentation/Red_Hat_Enterprise_Linux/.