- Realtime Linux ist nun offiziell Teil des Kernels, sodass sich jetzt „Echtzeit-Linux“ ohne ein separates Echtzeitbetriebssystem (RTOS) nutzen lassen dürfte
- Wer „Realtime Linux“ für Audiogeräte, industrielle Schweißlaser oder Mars-Rover einsetzen wollte, hatte diese Option schon lange (vorausgesetzt, man nutzte keine Alternativen wie QNX)
- Universitäten begannen bereits Ende der 1990er-Jahre, eigene Echtzeit-Kernel zu entwickeln
- Der Patch-Satz PREEMPT_RT existiert mindestens seit 2005
- Einige Aspekte von Echtzeitarbeit wie NO_HZ wurden schon vor langer Zeit in den Mainline-Kernel übernommen und sind dadurch für Rechenzentren, Cloud-Computing oder generell Systeme mit vielen CPUs verfügbar geworden
Mainline-Merge von PREEMPT_RT
- Im Kernel 6.12 wird PREEMPT_RT mit hoher Wahrscheinlichkeit in den Mainline-Kernel integriert
- Die endgültige Zustimmung erfolgte, während Linus Torvalds am Open Source Summit Europe teilnahm
- Torvalds schrieb den ursprünglichen Code für
printk, ein Debugging-Werkzeug, das zwar den exakten Moment eines Prozessabsturzes finden kann, aber Latenzen einführt, die der Echtzeitverarbeitung entgegenstehen
- Der Blog Phoronix hat den Fortschritt von PREEMPT_RT in Richtung Kernel verfolgt, zusammen mit den
printk-Änderungen für die Thread-/Atomic-Console-Unterstützung, die für das Echtzeit-Mainlining wichtig ist
Auswirkungen auf Desktop-Linux? Kaum
- Abgesehen von fortgeschrittener Audioproduktion oder -reproduktion (selbst das ist umstritten) wird ein Echtzeit-Kernel weder Fenster schneller machen noch Programme beschleunigen
- Die von Realtime Linux gebotene garantierte Ausführung und Worst-Case-Latenz sind jedoch äußerst nützlich für Systeme, die Autobremsen überwachen, CNC-Maschinen steuern oder komplexe Multi-CPU-Systeme regeln
- Die Aufnahme von PREEMPT-RT in den Mainline-Kernel erleichtert die Wartung von Echtzeitsystemen, da keine Out-of-Tree-Patches mehr verwaltet werden müssen
Auswirkungen auf Anbieter spezialisierter Echtzeit-OS-Lösungen
- Ubuntu begann 2023 damit, eine Echtzeit-Version seiner Distribution anzubieten, dafür war jedoch ein Ubuntu-Pro-Abonnement erforderlich
- Ubuntu bot diese Echtzeit-Releases mit Fixes, Patches, Modul-Integration und Tests für Robotik, Automatisierung, Embedded Linux und andere Echtzeit-Anforderungen an
- Für Anbieter spezialisierter Echtzeit-OS-Lösungen für mission-kritische Systeme dürfte sich die Lage nun verändern
Die Sicht von Linus Torvalds
- Auf dem Kernel Summit 2006 sagte Torvalds: „Einen Laser mit Linux zu steuern ist verrückt, aber jeder in diesem Raum ist auf seine eigene Weise verrückt“
- Er sagte außerdem: „Wenn man mit Linux einen industriellen Schweißlaser steuern will, gibt es kein Problem damit, PREEMPT_RT zu verwenden“
- Rund 18 Jahre später haben Torvalds, das Kernel-Team und Steven Rostedt, langjähriger Maintainer und Verfechter von Echtzeit, diese Art von Arbeit einfacher gemacht
Meinung von GN⁺
- Es wird erwartet, dass die Mainline-Integration von Realtime Linux den Einsatzbereich von Linux weiter vergrößert und die Nutzung in verschiedensten Bereichen ermöglicht
- Insbesondere in Industriebereichen, Embedded-Systemen und der Robotik, wo Echtzeitfähigkeit wichtig ist, dürfte Linux noch breiter eingesetzt werden
- Beim Einsatz von Realtime Linux sollten jedoch Hardware-Kompatibilität, Systemstabilität und Entwicklungsaufwand berücksichtigt werden
- Bestehende Echtzeitbetriebssysteme wie QNX, VxWorks und INTEGRITY bleiben in ihren Bereichen weiterhin wettbewerbsfähig, sodass eine situationsgerechte Auswahl nötig sein wird
- Mit der Aufnahme von Realtime Linux in den Mainline-Kernel dürfte sich das Entwickler-Ökosystem weiter beleben und die Unterstützung für unterschiedlichste Hardware und Software ausweiten
4 Kommentare
Es wäre schön gewesen, wenn es wenigstens eine kurze Erklärung dazu gegeben hätte, was ein Echtzeitbetriebssystem ist, was PREEMPT_RT genau ist und in welchem Zusammenhang es mit einem Echtzeitbetriebssystem steht. Schade, dass dazu fast keine Details enthalten sind :(
Der Hauptunterschied zwischen Linux und einem Real-Time Operating System (RTOS) liegt in der Echtzeitfähigkeit und im deterministischen Verhalten. Dieser Unterschied hat großen Einfluss auf die zeitlichen Anforderungen und die Genauigkeit, mit der ein System reagieren muss, und hilft dabei zu verstehen, in welchen Situationen welches Betriebssystem geeignet ist.
Linux: Ein Betriebssystem, das in der Regel auf einem modifizierten Linux-Kernel basiert und auf verschiedenster Embedded-Hardware eingesetzt wird. Es ist benutzerfreundlich und bietet zahlreiche Funktionen wie Netzwerk, Dateisysteme und Treiber, wodurch es sich für komplexe Anwendungen eignet.
RTOS (Real-Time Operating System): Ein Betriebssystem, das garantiert, dass Aufgaben innerhalb eines festgelegten Zeitraums verarbeitet werden. RTOS wird vor allem in Bereichen eingesetzt, in denen Echtzeitreaktionen entscheidend sind, etwa in der industriellen Automatisierung, in Medizingeräten oder in automobilen Steuerungssystemen.
Eigenschaften von Linux
Nichtdeterministische Reaktionszeiten: Der Linux-Kernel ist in erster Linie auf Durchsatz und Effizienz ausgelegt, weshalb sich nicht exakt vorhersagen lässt, wann eine Aufgabe ausgeführt wird. Das liegt daran, dass der Scheduler Aufgaben mit unterschiedlichen Prioritäten verwaltet und komplexe Prozesse wie I/O-Operationen oder Speicherverwaltung Einfluss nehmen.
Eingeschränkte Preemption: Ein gewöhnlicher Linux-Kernel bietet zwar einige Echtzeitfunktionen, aber nicht jede Kernel-Aufgabe kann sofort unterbrochen werden. Insbesondere kann es vorkommen, dass der Kernel über längere Zeit nicht auf Interrupts reagiert oder dass andere Tasks verzögert werden, weil gerade wichtige Arbeiten ausgeführt werden.
Schwankende Latenz: In unterschiedlichen Systemaufgaben und Multitasking-Umgebungen kann die Latenz unregelmäßig variieren. Das kann durch verschiedene Faktoren wie die Verarbeitung des Netzwerk-Stacks oder Disk-I/O beeinflusst werden.
Echtzeit-Patch (PREEMPT-RT): Um die Echtzeitreaktion zu verbessern, kann der PREEMPT-RT-Patch angewendet werden, um die Echtzeitfähigkeit des Kernels zu erhöhen. Dennoch garantiert auch das keine so vollständig vorhersagbaren Reaktionen wie bei einem RTOS.
Eigenschaften eines RTOS
Deterministische Reaktionszeiten: Ein RTOS ist so konzipiert, dass Aufgaben garantiert innerhalb einer bestimmten Zeit abgeschlossen werden können. Da Aufgaben zwingend innerhalb des vorgegebenen Zeitfensters ausgeführt werden, ist das Antwortverhalten sehr konsistent und vorhersagbar.
Schnelle Interrupt-Verarbeitung: Ein RTOS verarbeitet Interrupts schnell und mit hoher Priorität und priorisiert in den meisten Fällen Unterbrechungen so, dass wichtige Tasks rasch bearbeitet werden können. Dadurch werden harte Echtzeitbedingungen erfüllt.
Kleiner und leichtgewichtiger Kernel: Ein RTOS enthält nur die minimal erforderlichen Funktionen, ist dadurch sehr leichtgewichtig und ermöglicht ein sehr effizientes Task-Scheduling. Deshalb ist die Systemlast gering, und Aufgaben können nach exakt definiertem Timing ausgeführt werden.
Prioritätsbasiertes Scheduling: Task-Prioritäten sind klar festgelegt, und Aufgaben mit hoher Priorität können sofort bearbeitet werden. Das macht den Einsatz in mission-kritischen Umgebungen möglich.
Niedrige Latenz: Ein RTOS verarbeitet Echtzeitaufgaben mit sehr geringer Latenz. Es eignet sich daher, wenn schnelle Reaktionen auf Hardware-Ebene erforderlich sind.
Eigenschaft || Linux RTOS
============================================================
Reaktionszeit || nichtdeterministisch, variabel deterministisch, konstante Reaktionszeit garantiert
Prioritätsverarbeitung || Prioritäten vorhanden, aber keine Echtzeitgarantie Prioritäten klar definiert,
|| Aufgaben mit hoher Priorität werden bevorzugt
Kernel-Größe || groß und funktionsreich klein und leichtgewichtig
Latenz || durch Netzwerk, Disk-I/O usw. sehr niedrig, nahezu konstant
verzögerbar
Systemkomplexität || geeignet für komplexe Anwendungen geeignet für einfache Echtzeitaufgaben
Einsatzgebiete || Multimedia, Netzwerk usw. industrielle Steuerung, Robotik, Medizingeräte usw.
|| komplexe Benutzeroberflächen
Fazit
Embedded Linux eignet sich für Embedded-Systeme, die Netzwerkverarbeitung, Multimedia-Anwendungen und komplexe Benutzeroberflächen benötigen. Mit einem Echtzeit-Patch lässt sich die Echtzeitleistung bis zu einem gewissen Grad verbessern, aber sie bleibt weniger deterministisch als bei einem RTOS.
Ein RTOS ist unverzichtbar für zeitkritische, mission-kritische Anwendungen. Wenn konstante Reaktionszeiten erforderlich sind, wird ein RTOS insbesondere in Umgebungen mit Echtzeitvorgaben eingesetzt, etwa bei Hardware-Steuerung, Industrierobotern, in der Luft- und Raumfahrt oder in Medizingeräten.
Ich musste mich wegen QNX und VxWorks immer herumärgern, aber jetzt wird es für alle deutlich leichter zugänglich sein.
Hacker-News-Kommentare
Nach jahrelanger Arbeit ist dies ein großer Meilenstein
Es wird empfohlen, das Utility
cyclictestzu bauen und auszuführen, um die Wirkung eines Echtzeit-Kernels zu sehencyclictestist ein wichtiges Werkzeug für Echtzeitarbeit unter LinuxOhne RT-Patchset lassen sich ein oder zwei Instrumente mit 3 ms Latenz betreiben
Es wird eine Erfahrung aus der Mitte der 2000er geteilt, als versucht wurde, Linux für Echtzeitarbeit zu nutzen
Es wird nach guten Materialien gefragt, die erklären, wie Echtzeitprogrammierung funktioniert
Es wird infrage gestellt, ob Torvalds den ursprünglichen Code für
printkgeschrieben hatprintkals Debugging-Werkzeug wird nicht zugestimmtDas wird für die CNC-Community eine große Hilfe sein
Es wird als sehr cool angesehen
Es wird nach den Nachteilen eines Echtzeit-Kernels für Desktop-Nutzer gefragt