sched_ext en el núcleo de Linux 6.12: Planificadores dinámicos con BPF
La versión 6.12 del núcleo de Linux introduce la clase de planificador sched_ext, que permite reemplazar dinámicamente la lógica de programación de tareas mediante programas BPF. Esto elimina la necesidad de parches y recompilaciones del núcleo al experimentar con algoritmos. Las políticas se cargan desde el espacio de usuario, con el núcleo garantizando la seguridad mediante un mecanismo de retroceso a SCHED_NORMAL en caso de fallos.
La clase sched_ext divide las responsabilidades: el núcleo maneja las colas de despacho (DSQ), la migración de tareas y la gestión de estados, mientras que la política BPF decide sobre la clasificación, el rango y el quantum de tiempo. Al despertar una tarea, se invoca el gancho enqueue(); en el despacho del núcleo, se llama a dispatch().
Ciclo de Vida de las Tareas en sched_ext
Una tarea despierta mediante try_to_wake_up(), y la política analiza sus características: patrones de despertar, uso de CPU/E-S, cgroup y presencia de políticas RT (SCHED_FIFO, SCHED_RR). La política coloca la tarea en una cola global o local, utilizando tiempo virtual para la priorización.
En dispatch(), la tarea se extrae de la cola y se entrega al núcleo mediante scx_bpf_dispatch() junto con un quantum de tiempo en nanosegundos. La migración se activa con scx_bpf_kick_cpu() para equilibrado de carga o localidad de caché.
Las colas DSQ operan en modo FIFO o por prioridad según el método de inserción:
- scx_bpf_dispatch() — semántica FIFO.
- scx_bpf_dispatch_vtime() — ordenación por vtime.
El rango (puntuación) interno de la política no afecta las prioridades del núcleo (nice, prio).
Ejemplo: scx_horoscope como Demostración de Capacidades
El proyecto scx_horoscope utiliza datos astrológicos para ajustar quantums de tiempo, mostrando el patrón sched_ext. Cada 60 segundos, calcula posiciones planetarias, retrogradaciones y fases lunares para generar coeficientes.
Clasificación de tareas por:
- Políticas RT.
- Patrones de despertar.
- Uso de CPU/E-S.
- cgroup.
El quantum base se ajusta con multiplicadores: signos zodiacales aumentan o reducen quantums para tipos de tareas, las retrogradaciones imponen una penalización del 50 %, y las lunas llenas otorgan bonos a tareas interactivas. Los quantums están limitados por min_slice_ns y max_slice_ns.
Se trata de un ejemplo educativo: cálculos reales con operación estable, pero sin base científica para uso en producción.
Planificadores Prácticos en sched_ext
El ecosistema scx incluye políticas orientadas a producción:
- scx_lavd (Latency-Aware Virtual Deadline): plazos virtuales basados en patrones de despertar, reduciendo latencias en el percentil 99 en un 15–30 % frente a CFS en escritorios.
- scx_rusty: optimización NUMA, migraciones minimizadas y conciencia de límites térmicos para servidores.
- scx_flash: predicciones de ML desde el espacio de usuario vía memoria compartida.
Los ciclos de desarrollo se han reducido a horas: compilar, cargar, métricas, iterar — sin necesidad de reinicios.
Herramientas para Evaluación
Evaluación mediante:
/sys/kernel/sched_ext/— métricas de despacho y migración.- bpftrace — rastreo de eventos.
- perf sched — latencias de cambio de contexto.
- cyclictest — latencias de cola.
Enfocarse en percentiles, no en promedios: las colas son críticas para la capacidad de respuesta.
Casos de uso:
- Servidores de juegos: quantums garantizados para lógica de juego, aislamiento de tareas de fondo.
- Sistemas empotrados: agrupación de tareas para reducir frecuencia de cambios.
- Nube: garantías de ancho de banda más allá de cgroup.
- Audio/video: reserva de núcleos, minimización de jitter.
Limitaciones y Desarrollo
La sobrecarga de llamadas de despacho crece con tasas altas de cambios. Errores lógicos degradan el rendimiento sin provocar pánicos. La API está en evolución y la funcionalidad sigue siendo experimental.
Puntos clave:
- sched_ext en 6.12 con CONFIG_SCHED_CLASS_EXT.
- Políticas BPF para prototipado rápido.
- Retroceso a SCHED_NORMAL en fallos.
- Enfoque en percentiles en evaluaciones.
- Aplicaciones en escenarios de latencia crítica y NUMA.
— Editorial Team
Aún no hay comentarios.