Linux Prepara eBPF para Crear Programadores de Tareas en la Versión 6.11

Published:

Con la esperada versión estable de Linux 6.10 a la vuelta de la esquina, la comunidad de Linux ya está mirando hacia el futuro con anticipación. Una de las características más interesantes que se espera para la versión 6.11 es la inclusión del mecanismo sched_ext (SCX), anunciado por Linus Torvalds. Este nuevo mecanismo tiene el potencial de revolucionar la forma en que se manejan los programadores de CPU en el kernel de Linux.

¿Qué es eBPF y Cómo se Relaciona con los Programadores de CPU?

eBPF (Extended Berkeley Packet Filter) es una tecnología que permite ejecutar código de forma segura en el kernel de Linux sin necesidad de modificar el código fuente del kernel o cargar módulos adicionales. Con sched_ext, eBPF se utilizará para crear y gestionar programadores de CPU de manera dinámica. Este enfoque ofrece una serie de beneficios significativos:

  1. Carga Dinámica: Los programadores de CPU pueden ser cargados y ejecutados dentro del kernel de Linux mediante eBPF. La compilación Just-In-Time (JIT) traduce el código de bytes eBPF en instrucciones de máquina para su ejecución eficiente.
  2. Clase SCHED_EXT: Una nueva clase de programación, con una prioridad de llamada del kernel entre SCHED_IDLE y SCHED_NORMAL, permite a los controladores BPF gestionar tareas con prioridad inferior a la ejecución en tiempo real, sin interferir con las tareas del programador normal.
  3. Selección de Tareas: Los controladores BPF analizan las colas de tareas en espera y seleccionan qué tarea asignar cuando se libera un núcleo de CPU. Si no hay controladores activos en SCHED_EXT, las tareas se manejan utilizando el programador SCHED_NORMAL.

Beneficios de sched_ext

El mecanismo sched_ext facilita la experimentación con diferentes técnicas y estrategias de programación de manera dinámica. Esto permite crear rápidamente prototipos funcionales de programadores y reemplazarlos sobre la marcha en entornos de producción. Algunos beneficios adicionales incluyen:

  • Ajustes Específicos para Aplicaciones: Los programadores pueden ajustarse para adaptarse a las características específicas de una aplicación y cambiar la estrategia de programación según el estado del sistema y otros factores.
  • Flexibilidad y Adaptabilidad: Permite la implementación de programadores personalizados que se pueden cambiar rápidamente sin necesidad de reiniciar el sistema o recompilar el kernel.

Desarrollo y Adopción de sched_ext

El concepto de sched_ext fue propuesto inicialmente en 2022 y ha pasado por múltiples revisiones. Aunque no está soportado oficialmente en el kernel principal, varias distribuciones como Ubuntu, Arch Linux, Fedora y NixOS ya ofrecen la instalación de sched_ext a través de paquetes adicionales. Canonical está considerando incluir componentes de sched_ext en Ubuntu 24.10, y Valve trabaja en su integración para el Steam Deck. En Meta, el programador basado en sched_ext ya se utiliza en infraestructura de producción.

Actualmente, se están desarrollando aproximadamente una docena de programadores basados en sched_ext, cada uno con lógica de programación de tareas definida en el espacio del usuario y cargada en el kernel mediante programas BPF. Algunos ejemplos notables incluyen:

  • scx_layered: Un programador híbrido que divide las tareas en capas, desarrollado por Meta con lógica en Rust.
  • scx_rustland: Optimizado para priorizar tareas interactivas sobre las intensivas en CPU, desarrollado por un empleado de Canonical con lógica en Rust.
  • scx_lavd: Implementa el algoritmo LAVD para reducir la latencia en juegos y tareas interactivas, desarrollado por Igalia y Valve con lógica en Rust.

Otros programadores en desarrollo incluyen scx_rusty, scx_rlfifo, scx_mitosis, scx_central, scx_flatcg, scx_nest, scx_pair, scx_qmap, scx_simple, y scx_userland, demostrando la versatilidad y capacidad de sched_ext.

Conclusión

La inclusión del mecanismo sched_ext en Linux 6.11 promete una gran flexibilidad y eficiencia en la gestión de tareas del CPU. Con el poder de eBPF, los desarrolladores y administradores de sistemas podrán experimentar y adaptar programadores de manera dinámica para optimizar el rendimiento según las necesidades específicas de sus aplicaciones y entornos. Mantente atento a futuras actualizaciones sobre Linux 6.11 y el emocionante desarrollo de sched_ext.

- Advertisement -
Jorge
Jorgehttps://nksistemas.com
Soy Jorge, Sr Sysadmin Linux/DevOps/SRE y creador de NKSistemas.com Trabajo con plataformas: Linux, Windows, AWS, GCP, VMware, Helm, kubernetes, Docker, etc.

Related articles