Visión general
En entornos Linux de alto rendimiento, gestionar de forma directa las políticas de planificación y las prioridades de ejecución constituye un pilar esencial para garantizar latencias mínimas en operaciones críticas. A lo largo de esta guía práctica, desglosaremos el funcionamiento de la utilidad chrt—herramienta clave del paquete util-linux—para dominar los algoritmos de tiempo real del kernel (como FIFO y Round-Robin). Desde la instalación del instrumental necesario en Ubuntu hasta la alteración dinámica de prioridades en procesos en segundo plano y su posterior supervisión, abordaremos cada fase paso a paso.
Verificación de directivas de planificación y rangos en chrt
Antes de interactuar con el planificador, garantizamos la presencia de las utilidades base actualizando los repositorios del sistema e instalando los paquetes util-linux y procps.

La utilidad chrt permite tanto auditar como modificar las propiedades de despacho en tiempo real asociadas a cualquier hilo o proceso.
Al invocar el flag -m, la herramienta consulta al kernel para exponer el catálogo completo de políticas disponibles y los umbrales de prioridad (mínimos y máximos) permitidos en el sistema.
⚙️ [Parámetros esenciales]
-m : Muestra las políticas de planificación activas en el sistema y los límites numéricos de prioridad admitidos.-p : Permite inspeccionar o redefinir la directiva de ejecución de un PID específico.-f : Establece la política en tiempo real de tipo primero en entrar, primero en salir (SCHED_FIFO).-r : Asigna la política de turnos rotativos en tiempo real (SCHED_RR).-o : Aplica la política convencional de tiempo compartido estándar del kernel (SCHED_OTHER).-b : Configura el modo por lotes orientado a tareas masivas sin interactividad (SCHED_BATCH).-i : Relega el hilo a ejecutarse únicamente cuando la CPU permanece ociosa (SCHED_IDLE).-d : Implementa la directiva de despacho basada en plazos temporales estrictos (SCHED_DEADLINE).

Inspección del estado y la política de despacho por defecto
Para llevar a cabo las pruebas sin poner en riesgo cargas operativas, lanzamos una tarea inofensiva en segundo plano con una pausa de 600 segundos mediante la instrucción sleep 600 &.

Con el fin de agilizar las referencias a este hilo en comandos posteriores, almacenamos de inmediato su PID en una variable de terminal ejecutando TARGET_PID=$!.

Al consultar las características de este proceso con chrt -p, el sistema revela su configuración de fábrica.
Como es habitual en procesos estándar, se encuentra gobernado por la política de reparto equitativo SCHED_OTHER y mantiene un valor de prioridad nulo (0).

Para obtener una perspectiva más detallada desde la óptica del gestor de procesos, recurrimos a ps con el modificador -o, solicitando la clase de planificación (CLS), la prioridad de tiempo real (RTPRIO) y la prioridad base del núcleo (PRI).
El informe confirma la clase de tiempo compartido (TS), dejando vacía la prioridad de tiempo real (-) y reflejando el valor interno predeterminado de 19.

Transición hacia políticas de tiempo real: SCHED_FIFO y SCHED_RR
Ejecutamos sudo chrt -f -p 50 $TARGET_PID para transformar la política del proceso hacia el esquema estricto de cola SCHED_FIFO, asignándole un nivel de prioridad en tiempo real de 50.
Debido a que estas modificaciones alteran el orden en que el procesador atiende las tareas y pueden condicionar la estabilidad general, se requiere elevación de privilegios (sudo).

Revisamos la nueva configuración ejecutando de nuevo chrt -p.
La salida confirma de forma concluyente que el hilo ahora se rige bajo la directiva SCHED_FIFO y que el registro de prioridad en tiempo real ha subido eficazmente a 50.

A continuación, reconfiguramos el proceso para evaluar el comportamiento bajo turnos rotativos ejecutando sudo chrt -r -p 30 $TARGET_PID, estableciendo la prioridad en 30.
La directiva SCHED_RR asegura que los distintos procesos con la misma categoría de prioridad compartan los núcleos mediante rodajas de tiempo controladas (time slices), evitando bloqueos prolongados causados por una sola tarea.

Para validar la persistencia del ajuste en el subsistema del kernel, consultamos de nuevo las columnas relevantes con ps -o.
La tabla muestra claramente la clase asignada como RR, con una prioridad en tiempo real (RTPRIO) fijada en 30 y un índice interno del planificador (PRI) recalculado en 70.

Despliegue de nuevos procesos en tiempo real y depuración final
Además de intervenir sobre tareas preexistentes, chrt permite inicializar programas dotándolos de atributos de tiempo real desde su primer ciclo de ejecución. Para comprobarlo, arrancamos una nueva instancia en segundo plano con política SCHED_RR y prioridad 25 mediante sudo chrt -r 25 sleep 300 &.

Mediante la canalización ps -eo pid,cls,rtprio,comm | grep '[s]leep', filtramos los procesos en ejecución para evaluar simultáneamente ambas instancias.
El resultado demuestra que ambas sesiones conviven bajo la clase de tiempo real RR, operando en paralelo con sus respectivas prioridades asignadas (30 y 25).

Finalizadas las pruebas, procedemos a restablecer el entorno y liberar los recursos del sistema invocando kill -9 $TARGET_PID && pkill -f 'sleep 300'.
Esta instrucción termina forzosamente tanto el proceso rastreado por la variable como la tarea secundaria de 300 segundos, dejando el sistema limpio de cargas residuales.

Con este recorrido hemos comprobado la versatilidad de chrt para modular la latencia y el comportamiento del planificador de Linux. Este control determinista resulta fundamental a la hora de desplegar servicios de baja latencia, servidores de audio profesional o sistemas de procesamiento de datos en tiempo crítico.