13 puntos por GN⁺ 2024-09-20 | 4 comentarios | Compartir por WhatsApp
  • 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

 
ilotoki0804 2024-09-23

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 ;_;

 
tongji 2024-09-23

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.

  1. Resumen de Linux y RTOS
    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.

  1. Diferencias en tiempo real y comportamiento determinista
    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.

  1. Resumen de las principales diferencias desde la perspectiva de tiempo real
    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.

 
helloppfm 2024-09-22

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.

 
GN⁺ 2024-09-20
Opiniones en Hacker News
  • Es un gran logro alcanzado tras años de esfuerzo

    • La mayor parte del trabajo fue realizada por Thomas Gleixner y su equipo
    • Fundó Linutronix, que actualmente es propiedad de Intel
    • Se proporciona el enlace al pull request sobre el último fragmento de printk
    • Se proporciona el enlace al pull request de PREEMPT_RT en la configuración del kernel
    • Se proporciona el enlace al registro de parches RT sobre el kernel v6.11
    • La nueva infraestructura de printk necesita ser adoptada en controladores reales
    • El tamaño del conjunto de parches RT se ha reducido mucho en comparación con antes
    • Es una gran señal de confianza por parte de Linus
    • Felicitaciones al equipo
  • Recomiendan compilar y ejecutar la utilidad cyclictest para ver el efecto del kernel en tiempo real

    • Mide y muestra la latencia de interrupciones de cada núcleo de CPU
    • Sin el parche de tiempo real, en el peor caso la latencia puede llegar a decenas de milisegundos
    • Con el parche de tiempo real aplicado, en el peor caso la latencia baja a microsegundos de un solo dígito
    • Para obtener una latencia baja y consistente, hay que desactivar los estados de ahorro de energía
    • cyclictest es una herramienta importante al hacer trabajo en tiempo real en Linux
    • Explica la diferencia de rendimiento del sistema al procesar radio definida por software (SDR)
    • Con un kernel en tiempo real, el SDR funciona sin problemas incluso mientras se ejecutan GNOME y libreoffice
  • Sin el conjunto de parches RT se pueden ejecutar uno o dos instrumentos con 3 ms de latencia

    • Con el conjunto de parches RT se pueden ejecutar 6 instrumentos con 1 ms de latencia
    • No hay problemas incluso con decenas de ventanas de Chrome abiertas y jugando un shooter 3D
    • La diferencia es grande frente a un scheduler normal de baja latencia
  • Comparte su experiencia de haber intentado usar Linux para trabajo en tiempo real a mediados de los 2000

    • En ese entonces, Linux en tiempo real era muy improvisado y estaba fuera del árbol principal
    • Una solución común era alojar Linux como un proceso dentro de un microkernel de tiempo real verdadero para lograr comportamiento en tiempo real
    • La razón por la que Linux en tiempo real no era práctico era que había que garantizar el tiempo de ejecución de todas las secciones no apropiativas
    • Se pregunta cómo resolvieron ese requisito
    • Pregunta si Linux admite inversión de prioridad
  • Pregunta si hay buenos recursos sobre cómo se hace la programación en tiempo real

    • Tiene curiosidad sobre cómo verificar si un programa realmente es de tiempo real
    • Pregunta si programar en tiempo real es diferente de la programación general
    • Tiene curiosidad por el impacto de las arquitecturas modernas de CPU en la programación en tiempo real
  • Cuestiona la mención de que Torvalds escribió el código original de printk

    • No está de acuerdo con la explicación sobre la herramienta de depuración printk
  • Será de gran ayuda para la comunidad CNC

    • RT es esencial y hace que las compilaciones sean mucho más fáciles
  • Le parece muy genial

    • Tiene curiosidad sobre cómo se “activa”
    • Pregunta si es una opción de compilación/arranque, o si es algo donde un proceso en ejecución en el sistema solicita garantías de timeslice/latencia
  • Tiene curiosidad sobre las desventajas de usar un kernel en tiempo real para usuarios de escritorio