Home Uncategorized 20 Jahre später schaffte es Echtzeit-Linux in den Kernel – im Ernst

20 Jahre später schaffte es Echtzeit-Linux in den Kernel – im Ernst

14
0
20 Jahre später schaffte es Echtzeit-Linux in den Kernel – im Ernst

Steven Rostedt, Senior Real-Time Linux Developer, und ich, Steven Vaughan-Nichols, beim Linux Summit Europe in Wien.

sjvn

WIEN – 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 auf schnelle Verarbeitung ausgelegt 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)

Ein Beispiel für ein heute verwendetes Echtzeitbetriebssystem ist 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-Kernel 6.12 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.

Die Geschichte von 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, dass es wohl falsch wäre zu sagen, dass Echtzeit für Linux neu sei. 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. NO_HZ ermöglicht die effiziente Ausführung von Linux auf Maschinen mit Tausenden von CPUs. „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.“

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 hat sich auch auf eine noch nie dagewesene Weise als nützlich erwiesen. 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: Linus Torvalds denkt über die grauen Haare seines Managers und des nächsten „Königs von Linux“ nach

Es stellte sich heraus, dass er einen frühen Echtzeit-Patch verwendete, weil er JACKSoundserver für Audioverbindungen mit geringer Latenz. Er benutzte es, weil er, wie die meisten Musiker, zu arm war, um sich High-Tech-Equipment leisten zu können. Deshalb, fährt Rostedt fort, „kaufte er sich einen billigen Laptop mit Linux und JACK, weil er mit Echtzeit-Patching gut aufnehmen konnte.“ Ich vermisse schwere Zeiten beim Schreiben.

Es stellte sich heraus, dass viele Musiker frühe Anwender von Echtzeit-Linux waren, 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:

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. Seit Jahren ist die Finanzierung von Echtzeit-Linux 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 hält print_k sehr fürsorglich – er hat den Originalcode geschrieben und verwendet ihn immer noch 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 verfügt über Tausende von Hacks, um Tausende verschiedener Situationen zu bewältigen. Jedes Mal, wenn wir print_k ändern, um etwas zu tun, bricht einer dieser Fälle ab. 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 richtig hart gearbeitet habe, betrug die Latenz meist etwa 30 Mikrosekunden und sprang dann plötzlich auf fünf Millisekunden.“ Die Verzögerung ist die print_k-Nachricht.

Nach viel harter Arbeit, vielen hitzigen Diskussionen und mehreren abgelehnten Vorschlägen wurde Anfang des Jahres ein Kompromiss erzielt. Torvalds war glücklich, Echtzeit-Linux-Entwickler waren glücklich, priint_K-Benutzer waren glücklich und schließlich wurde Echtzeit-Linux Realität.

Außerdem: Die 5 besten Linux-Distributionen für Gamer im Jahr 2024

Nach zwei Jahrzehnten der Entwicklung wurden 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 kann der Linux-Kernel vollständig gestoppt werden, sodass er innerhalb von Mikrosekunden auf Ereignisse reagieren kann. Diese Fähigkeit ist wichtig 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.

Source link