Weine, Österreich: Nein, ich mache keine Witze. Nach 20 Jahren, Echtzeit-Linux (PREEMPT_RT) Endlich-Endlich – im HauptkernelLinus Torvalds segnete den Kodex während seiner Zeit Europäischer Open-Source-GipfelWarum ist das eine große Sache? Beginnen wir damit, zu erklären, was ein Echtzeitbetriebssystem (RTOS) ist und welche Vorteile es bietet.
Was ist RTOS?
RTOS ist ein spezialisiertes Betriebssystem, das darauf ausgelegt ist, geschäftskritische Aufgaben präzise und zuverlässig zu erledigen. Im Gegensatz zu Allzweck-Betriebssystemen wie Windows oder macOS sind RTOS so konzipiert, dass sie innerhalb strenger Zeitvorgaben, die häufig in Millisekunden oder Mikrosekunden gemessen werden, auf Ereignisse reagieren und Daten verarbeiten. Steven Rostedt, ein führender Echtzeit-Linux-Entwickler und Google-Ingenieur, sagt: „Echtzeit ist das schnellste Worst-Case-Szenario.“
Dies bedeutet, dass ein wichtiges Merkmal eines RTOS sein deterministisches Verhalten ist. RTOS garantiert, dass kritische Aufgaben innerhalb vorgegebener Fristen erledigt werden. Viele Leute gehen davon aus, dass RTOS für eine schnelle Verarbeitung gedacht ist; nicht so. Bei einem RTOS kommt es nicht auf Geschwindigkeit, sondern auf Zuverlässigkeit an. Diese Vorhersagbarkeit ist besonders wichtig bei Anwendungen, die ein Timing erfordern, wie z. B. industrielle Steuerungssysteme, medizinische Geräte und Luft- und Raumfahrtausrüstung.
Außerdem: 5 Linux-Befehle, die Sie nicht ausführen können (und warum)
Einige beliebte Beispiele für heute verwendete Echtzeitbetriebssysteme sind: VxBekerWird im Mars-Rover der NASA zu ihrer Lenkung und im Boeing 787 Dreamliner-Flugzeug zur Steuerung von Avioniksystemen eingesetzt, um eine Echtzeitreaktion für die Flugsteuerung sicherzustellen. Ein weiteres Beispiel ist QNX-Neutrinodas in Autos häufig für Infotainment und fortschrittliche Fahrerassistenzsysteme wie Antiblockiersysteme verwendet wird.
Echtzeit-Linux-Verlauf
Seit dem kommenden Linux 6.12-Kernel ist Echtzeit-Linux-Code nun in alle Linux-Distributionen eingebettet. Dies bedeutet, dass Linux bald in kritischeren Geräten und industrieller Hardware zum Einsatz kommen wird. Es hat jedoch lange gedauert, bis wir hierher kamen.
Echtzeit-Linux begann Ende der 1990er Jahre, als der Bedarf an Linux zur Unterstützung von Echtzeitanwendungen zunahm. Die ersten Bemühungen konzentrierten sich auf die Erstellung eines separaten Echtzeitkernels, der neben dem Linux-Kernel lief. Dazu gehören akademische Projekte wie KURT von der University of Kansas; RTAI, von der Universität Mailand; und RTLinux vom New Mexico Institute of Mining and Technology.
Ingo Molnar, ein leitender Linux-Kernel-Entwickler, begann 2004 mit der Zusammenstellung und Umgestaltung dieser Technologieteile, um die Grundlage für eine Echtzeit-Preemption-Patch-Suite zu schaffen. PREEMPT_RT.
Dieser Ansatz unterscheidet sich von früheren Echtzeit-Linux-Lösungen dadurch, dass er den vorhandenen Linux-Kernel modifiziert, anstatt einen separaten Echtzeit-Kernel zu erstellen. Bis 2006 hatte dieser Ansatz so viel Aufmerksamkeit erregt, dass Linus Torvalds feststellte: „Laser mit Linux zu steuern ist verrücktAber jeder in diesem Raum ist auf seine Art verrückt. Wenn Sie also Linux zur Steuerung eines industriellen Schweißlasers verwenden möchten, macht es mir nichts aus, PREEMPT_RT zu verwenden.“
Im Jahr 2009 hatte ein kleines Team von Kernel-Entwicklern, darunter Thomas Gleixner, Peter Ziljstra und Rostedt, die frühere Prototypenentwicklung in einer Reihe von Out-of-Tree-Patches zusammengefasst. Zu diesem Zeitpunkt begannen viele Unternehmen, diese Patch-Sets zum Aufbau industrieller Systeme zu verwenden, die harte Echtzeiteigenschaften mit Millisekundengenauigkeit erforderten.
Außerdem: Diese Linux-Distribution eignet sich am besten für Entwickler – hier erfahren Sie, warum
Im Laufe des Projekts wurden viele seiner Elemente in den Kernel verschoben. Rostedt sagte mir in einem Interview, dass es wohl falsch wäre zu sagen, Echtzeit sei neu für Linux. Viele seiner Funktionen wurden im Laufe der Jahre in das Mainstream-Linux eingeführt. Einige davon sind wichtig für das Linux, das Sie täglich verwenden.
Zum Beispiel haben Sie wahrscheinlich noch nie von „NO_HZ“, was den Stromverbrauch bei inaktiven Systemen reduziert. Dadurch kann Linux auf Maschinen mit Tausenden von CPUs effizient ausgeführt werden. „Man merkt nicht, wie sehr sich Linux durch Echtzeit-Patches verbessert hat“, betonte Rostedt. „Der einzige Grund, warum Linux heute in Rechenzentren läuft, ist unsere Arbeit.“
Außerdem: Linus Torvalds denkt über die grauen Haare seines Managers und des nächsten „Königs von Linux“ nach
Ohne NO_HZ würde Linux also nicht alle Rechenzentren betreiben. Dies wiederum erklärt, warum Linux in der Cloud läuft. Ich weiß nicht genau, wie die Welt ohne diese Echtzeitbeiträge aussehen würde, aber sie würde nicht so aussehen wie jetzt.
Echtzeit-Linux ist auch in vielerlei Hinsicht sehr nützlich, die man sich noch nie hätte vorstellen können. Rostedt erinnert sich: „Im Jahr 2005 erhielt ich in Echtzeit einen Fehlerbericht, schickte einen Patch und sagte: ‚Hey, hier ist eine Lösung.‘ Können Sie es umsetzen?’ Und der Typ sagte: „Ich weiß nicht, was ich tue.“ Ich sagte: „Moment, sind Sie kein Kernel-Entwickler?“ Er antwortete: ‚Ich bin Gitarrist.‘“
Außerdem: 10 Linux-Apps, ohne die ich nicht leben kann – und warum
Es stellte sich heraus, dass er einen frühen Echtzeit-Patch verwendete, weil er JACKSoundserver für Audioverbindungen mit geringer Latenz. Er nutzt es, weil er, wie die meisten Musiker, zu arm war, um sich High-End-Equipment leisten zu können, also „kaufte er sich einen billigen Laptop mit Linux und JACK, weil er mit Echtzeit-Patching gut aufnehmen konnte, anstatt die Festplatte zu überspringen.“ schrieb.“
Es stellte sich heraus, dass viele Musiker zu den ersten Anwendern von Real-Time Linux gehörten, weil es ihnen ermöglichte, qualitativ hochwertige Aufnahmen zu geringen Kosten zu produzieren. Wer hätte das gedacht? Zu den weiteren Echtzeit-Linux-Funktionen, die im Laufe der Jahre Eingang in den Hauptkernel gefunden haben, gehören:
1. Einführung Mutex
2. Das schnelle Spur Debugging-Tool, das wohl das wichtigste Linux-Debugging-Tool ist
3. Prioritätsvererbung für User-Space-Anwendungen
Warum dauert Real-Time-Linux so lange?
Warum ist das neue Real-Time-Linux jetzt vollständig im Kernel integriert? „Eigentlich treiben wir nichts voran, wenn wir nicht glauben, dass es fertig ist“, erklärte Rostedt. „Fast alles wird normalerweise mindestens dreimal umgeschrieben, bevor es in die Hauptlinie kommt, weil wir sehr hohe Ansprüche an das haben, was drin ist.“
Außerdem geht es beim Weg zur Hauptstrecke nicht nur um technische Herausforderungen. Auch Politik und Wahrnehmung spielen eine Rolle. „Am Anfang konnten wir nicht einmal Echtzeit nennen“, erinnert sich Rostedt. „Jeder sagt: ‚Oh, die Echtzeit ist uns egal.“
Ein weiteres Problem ist Geld. Kurz gesagt, die Finanzierung von Real-Time Linux war jahrelang unregelmäßig. Im Jahr 2015 gründete die Linux Foundation das Gemeinschaftsprojekt Real-Time Linux (RTL), um die Bemühungen rund um das Mainlining von PREEMPT_RT zu koordinieren.
Außerdem: Müssen Sie Dateien zwischen Linux-Rechnern übertragen? Hier sind 5 zuverlässige Lösungen
Die letzte Herausforderung für die vollständige Integration bestand in der Überarbeitung des Kernels print_k Funktion, ein wichtiges Debugging-Tool, das es seit 1991 gibt. Torvalds war gegenüber print_k sehr beschützerisch. Er hat den Originalcode geschrieben und verwendet ihn bis heute zum Debuggen. Allerdings führt print_k bei jedem Aufruf auch zu erheblichen Verzögerungen bei Linux-Programmen. Solche Verlangsamungen sind in Echtzeitsystemen nicht akzeptabel.
Rostedt erklärt: „print_k bietet tausende Möglichkeiten, tausende verschiedene Situationen zu bewältigen. Jedes Mal, wenn wir print_k ändern, um etwas zu tun, wird einer dieser Fälle unterbrochen. Das Tolle an print_k im Hinblick auf das Debuggen ist, dass Sie genau wissen können, wo Sie sich befanden, als ein Prozess abstürzte. Als ich wirklich hart am System gearbeitet habe und die Latenz meist bei etwa 30 Mikrosekunden lag, sprang sie plötzlich auf fünf Millisekunden.“ Die Verzögerung ist die print_k-Nachricht.
Nach viel harter Arbeit, mehreren abgelehnten Vorschlägen und hitzigen Diskussionen konnte Anfang des Jahres endlich ein Kompromiss erzielt werden. Torvalds war glücklich, Real-Time Linux-Entwickler waren glücklich, priint_K-Benutzer waren glücklich und schließlich wurde Real-Time Linux Realität.
Außerdem: Die 5 besten Linux-Distributionen für Gamer im Jahr 2024
Nach zwei Jahrzehnten der Entwicklung wurden nun endlich Echtzeit-Linux-Patches in den Hauptkernel integriert. Dieser Meilenstein markiert den Höhepunkt jahrelanger harter Arbeit von Kernel-Entwicklern, um Linux deterministische Leistung und niedrige Latenz zu verleihen.
Damit lässt sich der Linux-Kernel komplett stoppen. Dadurch kann es innerhalb von Mikrosekunden auf Ereignisse reagieren. Diese Fähigkeit ist von entscheidender Bedeutung für Anwendungen, die ein präzises Timing erfordern, wie z. B. industrielle Steuerungssysteme, Robotik und Audioproduktion.
Durch die Integration von Echtzeit-Patches ist Linux nun bereit, ein ernstzunehmender Player in der RTOS-Welt zu werden. Dies ist nicht nur ein Gewinn für Echtzeitproduzenten, sondern auch für alle Linux-Benutzer.