9.2. Qué son los controladores de recursos del núcleo
La funcionalidad de los grupos de control está habilitada por los controladores de recursos del kernel. RHEL 8 soporta varios controladores para control groups version 1 (cgroups-v1
) y control groups version 2 (cgroups-v2
).
Un controlador de recursos, también llamado subsistema de grupo de control, es un subsistema del núcleo que representa un único recurso, como el tiempo de la CPU, la memoria, el ancho de banda de la red o la E/S del disco. El núcleo de Linux proporciona una serie de controladores de recursos que son montados automáticamente por el sistema systemd
y el administrador de servicios. La lista de los controladores de recursos montados actualmente se encuentra en el archivo /proc/cgroups
.
Los siguientes controladores están disponibles para cgroups-v1
:
-
blkio
- puede establecer límites en el acceso de entrada/salida a y desde los dispositivos de bloque. -
cpu
- puede ajustar los parámetros del programador Completely Fair Scheduler (CFS) para las tareas del grupo de control. Se monta junto con el controladorcpuacct
en el mismo montaje. -
cpuacct
- crea informes automáticos sobre los recursos de la CPU utilizados por las tareas de un grupo de control. Se monta junto con el controladorcpu
en el mismo montaje. -
cpuset
- se puede utilizar para restringir las tareas del grupo de control para que se ejecuten sólo en un subconjunto especificado de CPUs y para dirigir las tareas para utilizar la memoria sólo en nodos de memoria especificados. -
devices
- puede controlar el acceso a los dispositivos para las tareas de un grupo de control. -
freezer
- se puede utilizar para suspender o reanudar las tareas en un grupo de control. -
memory
- puede utilizarse para establecer límites en el uso de la memoria por parte de las tareas de un grupo de control y genera informes automáticos sobre los recursos de memoria utilizados por dichas tareas. -
net_cls
- etiqueta los paquetes de red con un identificador de clase (classid
) que permite al controlador de tráfico de Linux (el comandotc
) identificar los paquetes que se originan en una tarea de grupo de control particular. Un subsistema denet_cls
, elnet_filter
(iptables), también puede utilizar esta etiqueta para realizar acciones sobre dichos paquetes. Elnet_filter
etiqueta los sockets de red con un identificador de cortafuegos (fwid
) que permite al cortafuegos de Linux (a través del comandoiptables
) identificar los paquetes que se originan en una tarea de grupo de control particular. -
net_prio
- establece la prioridad del tráfico de red. -
pids
- puede establecer límites para un número de procesos y sus hijos en un grupo de control. -
perf_event
- puede agrupar las tareas para su supervisión por la utilidad de supervisión e informes de rendimientoperf
. -
rdma
- puede establecer límites en los recursos específicos de Remote Direct Memory Access/InfiniBand en un grupo de control. -
hugetlb
- puede utilizarse para limitar el uso de páginas de memoria virtual de gran tamaño por parte de las tareas de un grupo de control.
Los siguientes controladores están disponibles para cgroups-v2
:
-
io
- Un seguimiento deblkio
decgroups-v1
. -
memory
- Un seguimiento dememory
decgroups-v1
. -
pids
- Igual quepids
encgroups-v1
. -
rdma
- Igual querdma
encgroups-v1
. -
cpu
- Una continuación decpu
ycpuacct
decgroups-v1
. -
cpuset
- Sólo admite la funcionalidad principal (cpus{,.effective}
,mems{,.effective}
) con una nueva función de partición. -
perf_event
- El soporte es inherente, no hay un archivo de control explícito. Puede especificar unv2 cgroup
como parámetro del comandoperf
que perfilará todas las tareas dentro de esecgroup
.
Un controlador de recursos puede utilizarse en una jerarquía cgroups-v1
o en una jerarquía cgroups-v2
, pero no simultáneamente en ambas.
Recursos adicionales
-
Para más información sobre los controladores de recursos en general, consulte la página del manual
cgroups(7)
. -
Para obtener descripciones detalladas de los controladores de recursos específicos, consulte la documentación en el directorio
/usr/share/doc/kernel-doc-<kernel_version>/Documentation/cgroups-v1/
. -
Para más información sobre
cgroups-v2
, consulte la página del manualcgroups(7)
.