- Realtime Linux se incorpora oficialmente como parte del kernel, por lo que ahora será posible usar "Linux en tiempo real" sin un sistema operativo en tiempo real (RTOS) aparte
- Si querías usar "Linux en tiempo real" en equipos de audio, láseres de soldadura industrial o incluso sondas a Marte, esa opción ya existía desde hace mucho tiempo (asumiendo que no eligieras alternativas como QNX)
- Las universidades empezaron a crear sus propios kernels en tiempo real desde finales de los años 90
- El conjunto de parches llamado PREEMPT_RT existe al menos desde 2005
- Algunos aspectos de las tareas en tiempo real, como NO_HZ, ya habían pasado al kernel principal hace tiempo, lo que permitió su uso en centros de datos, computación en la nube y cualquier entorno con muchos CPU
La integración de PREEMPT_RT al mainline
- Es muy probable que PREEMPT_RT se integre al mainline en el kernel 6.12
- La aprobación final se dio mientras Linus Torvalds asistía al Open Source Summit Europe
- Torvalds escribió el código original de
printk, una herramienta de depuración que puede identificar el momento exacto en que un proceso falla, pero que introduce latencia, algo contrario a la computación en tiempo real
- El blog Phoronix ha seguido el avance de PREEMPT_RT hacia el kernel, junto con los cambios en
printk para el soporte de consolas con hilos/atómicas, algo importante para llevar tiempo real al mainline
¿Impacto en Linux de escritorio? Casi ninguno
- Más allá de la producción o reproducción avanzada de audio (e incluso eso sigue siendo debatible), un kernel en tiempo real no hará que las ventanas ni los programas sean más rápidos
- Sin embargo, la ejecución garantizada y la latencia en el peor caso que ofrece Linux en tiempo real son muy útiles para sistemas que monitorean frenos de automóviles, guían máquinas CNC o regulan sistemas complejos con múltiples CPU
- Incluir PREEMPT-RT en el kernel principal facilitará el mantenimiento de sistemas en tiempo real, al eliminar la necesidad de gestionar parches fuera del árbol
Impacto en los proveedores especializados de soluciones de sistemas operativos en tiempo real
- Ubuntu empezó a ofrecer una versión en tiempo real de su distribución en 2023, aunque requería una suscripción a Ubuntu Pro
- Ubuntu ofrecía esa versión en tiempo real con correcciones, parches, integración de módulos y pruebas para robótica, automatización, Linux embebido y otros requisitos de tiempo real
- A partir de ahora, el panorama podría cambiar para los proveedores especializados de soluciones RTOS para sistemas de misión crítica
La postura de Linus Torvalds
- En el Kernel Summit de 2006, Torvalds dijo: "Controlar un láser con Linux es una locura, pero todos en esta sala están locos a su manera"
- También dijo: "Si quieres usar Linux para controlar un láser de soldadura industrial, no hay problema con usar PREEMPT_RT"
- Unos 18 años después, Torvalds, el equipo del kernel y Steven Rostedt, mantenedor de largo plazo y principal impulsor del tiempo real, han hecho que ese tipo de trabajo sea mucho más fácil
Opinión de GN⁺
- Se espera que la integración de Linux en tiempo real al mainline amplíe aún más el alcance de Linux y permita su uso en campos más diversos
- En particular, parece probable que Linux se use todavía más en entornos industriales, sistemas embebidos y robótica, donde el tiempo real es crucial
- Aun así, al adoptar Linux en tiempo real habrá que considerar la compatibilidad de hardware, la estabilidad del sistema y la dificultad de desarrollo
- Los RTOS ya existentes, como QNX, VxWorks e INTEGRITY, seguirán siendo competitivos en sus respectivos campos, por lo que será necesario elegir según cada caso
- A medida que Linux en tiempo real se incorpore al mainline, se espera que el ecosistema de desarrollo se active aún más y que se amplíe el soporte para distinto hardware y software
4 comentarios
Habría estado bien que incluyera хотя sea una explicación breve de qué es un sistema operativo en tiempo real, qué es PREEMPT_RT y qué relación tiene con un sistema operativo en tiempo real, pero casi no entra en detalles, así que es una pena ;_;
La diferencia principal entre Linux y un Real-Time Operating System (RTOS) está en la capacidad de tiempo real y el comportamiento determinista. Esta diferencia tiene un gran impacto en las restricciones de tiempo de respuesta y en la precisión con la que debe responder el sistema, y ayuda a entender en qué situaciones es adecuado cada sistema operativo.
Linux: es un sistema operativo que por lo general se basa en un kernel de Linux modificado y se usa en diverso hardware embebido. Es amigable para el usuario y ofrece varias funciones como red, sistema de archivos y drivers, por lo que es adecuado para aplicaciones complejas.
RTOS (Real-Time Operating System): es un sistema operativo que garantiza la capacidad de respuesta necesaria para procesar tareas dentro de un tiempo determinado. El RTOS se usa principalmente en áreas donde la respuesta en tiempo real es importante, como automatización industrial, equipos médicos y sistemas de control automotriz.
Características de Linux
Tiempo de respuesta no determinista: el kernel de Linux está diseñado principalmente con enfoque en throughput y eficiencia, por lo que no se puede predecir con exactitud cuándo se ejecutará una tarea. Esto se debe a que el scheduler administra tareas con distintas prioridades y también influyen procesos complejos como operaciones de I/O y administración de memoria.
Limitaciones de preemption: aunque un kernel de Linux común ofrece algunas funciones de tiempo real, no todas las tareas del kernel pueden interrumpirse de inmediato. En particular, puede haber casos donde el kernel no responda a interrupciones durante un periodo prolongado o donde otras tareas se retrasen mientras se ejecutan trabajos importantes.
Variabilidad de la latencia: en distintos trabajos del sistema y en entornos multitarea, la latencia puede variar de forma irregular. Esto puede verse afectado por varios factores, como el procesamiento del stack de red y el I/O de disco.
Parche de tiempo real (PREEMPT-RT): para mejorar la respuesta en tiempo real, se puede aplicar el parche PREEMPT-RT y así aumentar la capacidad de tiempo real del kernel. Sin embargo, aun así no garantiza una respuesta completamente predecible como la de un RTOS.
Características de un RTOS
Tiempo de respuesta determinista: un RTOS está diseñado para garantizar que las tareas puedan completarse dentro de un tiempo específico. Como las tareas deben ejecutarse obligatoriamente dentro del tiempo asignado, la respuesta es muy consistente y predecible.
Procesamiento rápido de interrupciones: un RTOS maneja las interrupciones de forma rápida y prioritaria, y en la mayoría de los casos da prioridad a las interrupciones para poder procesar rápidamente las tareas importantes. Esto permite cumplir restricciones de tiempo real duro.
Kernel pequeño y liviano: un RTOS incluye solo las funciones mínimas necesarias, por lo que es muy ligero, y la planificación de tareas es muy eficiente. Por ello, la carga del sistema es baja y las tareas pueden ejecutarse conforme a una temporización diseñada con precisión.
Planificación basada en prioridades: las prioridades de las tareas se configuran con claridad, y los trabajos de mayor prioridad pueden procesarse de inmediato. Esto garantiza su uso en entornos mission-critical.
Low Latency: un RTOS procesa tareas en tiempo real con una latencia muy baja. Es adecuado cuando se necesita una respuesta rápida a nivel de hardware.
Característica || Linux RTOS
============================================================
Tiempo de respuesta || no determinista, con variabilidad determinista, garantiza tiempo de respuesta constante
Manejo de prioridades || hay prioridades, pero sin garantía de tiempo real las prioridades son claras,
|| y las tareas de mayor prioridad se procesan primero
Tamaño del kernel || grande y con muchas funciones pequeño y liviano
Latencia || puede retrasarse por red, I/O de disco, etc. muy baja, casi constante
Complejidad del sistema || adecuado para ejecutar aplicaciones complejas adecuado para realizar tareas simples de tiempo real
Áreas de aplicación || multimedia, redes, etc. control industrial, robótica, dispositivos médicos, etc.
|| interfaces de usuario complejas
Conclusión
Embedded Linux es adecuado para sistemas embebidos que requieren procesamiento de red, aplicaciones multimedia e interfaces de usuario complejas. Si se aplican parches de tiempo real, el rendimiento en tiempo real puede mejorar hasta cierto punto, pero sigue sin ser tan determinista como un RTOS.
Un RTOS es esencial para aplicaciones mission-critical donde el tiempo es importante. Cuando se necesita un tiempo de respuesta constante, se usa un RTOS especialmente en entornos con restricciones de tiempo real, como control de hardware, robots industriales, industria aeroespacial y dispositivos médicos.
Siempre me han dado dolores de cabeza por culpa de QNX y VxWorks, pero ahora cualquiera podrá acceder a esto con mucha más facilidad.
Opiniones en Hacker News
Es un gran logro alcanzado tras años de esfuerzo
printkPREEMPT_RTen la configuración del kernelprintknecesita ser adoptada en controladores realesRecomiendan compilar y ejecutar la utilidad
cyclictestpara ver el efecto del kernel en tiempo realcyclictestes una herramienta importante al hacer trabajo en tiempo real en LinuxSin el conjunto de parches RT se pueden ejecutar uno o dos instrumentos con 3 ms de latencia
Comparte su experiencia de haber intentado usar Linux para trabajo en tiempo real a mediados de los 2000
Pregunta si hay buenos recursos sobre cómo se hace la programación en tiempo real
Cuestiona la mención de que Torvalds escribió el código original de
printkprintkSerá de gran ayuda para la comunidad CNC
Le parece muy genial
Tiene curiosidad sobre las desventajas de usar un kernel en tiempo real para usuarios de escritorio