Red Hat Training

A Red Hat training course is available for RHEL 8

44.2. Qué son los controladores de recursos del núcleo

La funcionalidad de los grupos de control es 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 kernel 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 controlador cpuacct 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 controlador cpu 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 comando tc ) identificar los paquetes que se originan en una tarea de grupo de control particular. Un subsistema de net_cls, el net_filter (iptables), también puede utilizar esta etiqueta para realizar acciones sobre dichos paquetes. El net_filter etiqueta los sockets de red con un identificador de cortafuegos (fwid) que permite al cortafuegos de Linux (a través del comando iptables ) 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 rendimiento perf.
  • 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 de blkio de cgroups-v1.
  • memory - Un seguimiento de memory de cgroups-v1.
  • pids - Igual que pids en cgroups-v1.
  • rdma - Igual que rdma en cgroups-v1.
  • cpu - Una continuación de cpu y cpuacct de cgroups-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 un v2 cgroup como parámetro del comando perf que perfilará todas las tareas dentro de ese cgroup.
Importante

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 manual cgroups(7).