Lange hats gedauert: Linux integriert die zentralen Echtzeit-Patches

Linux integriert Echtzeit-Patches
Linux / Debian

Linux hat nun eine Echtzeitunterstützung, deren Herzstück den offiziellen Kernel erreicht hat. Bisher konnte der Realtime-Support nicht starten, es müssen vor dem Start noch einige kleine bis mittelgroße Baustellen beseitigt werden. Diese Beseitigung konnte von den Entwicklern noch nicht umgesetzt werden, da es einen Geldmangel gab. Dadurch sind auf der Linux Plumbers Conference 2021 Diskussionen entstanden. Eine der diskutierten Fragen war, wie das System instandgehalten werden soll, wenn jetzt schon das Geld fehlt.

Das Herzstück ist nun da

Am vorletzten Tag im vergangenen August wurde ein wichtiges Zwischenziel für die Echtzeitunterstützung erreicht. Der Realtime-Support / Echtzeit-Patches erfordert eine Locking-Infrastruktur, welcher bei Linux zum großen Teil von Linus Torvalds in den Hauptentwicklungszweig integriert wurde.

Das Herzstück des RT Kernels nennt man auch RT Patch oder RT Zweig. Hier werden die Quellcode-Patches gesammelt, gepflegt und verbessert, was die Echtzeiteigenschaften von Linux verbessert. Diese Sammlung haben die Entwickler des Preempt_RT-Projektes gestartet.

Der Preempt_RT im Herbst

Der Kern liegt in den aufgenommenen Änderungen, an den Locking-Techniken, wie Mutexes, Rwlocks und Spinlocks. Alles begann bereits im Herbst 2014, aber damals noch unter einem anderen Namen. Es waren stolze siebzig Patches, welche in Form von Anpassungen integriert wurden. Dadurch kann ein kompilitierter Kernel mit Realtime-Support eine Aufgabe ohne Pause unterbrechen, um eine wichtigere Aufgabe dazwischen zu schieben.

Nur wenige Tage später wurde das zweite Zwischenziel erreicht

Das Herzstück PREEMPT_RT ermöglicht Linux, dass es an viel mehr Stellen unterbrechen kann. Es gibt aber auch Codebereiche, welche der Kernel nicht unterbrechen darf, denn die ununterbrochene Bearbeitung sichert die Integrität der Daten in einem Mehrprozessorsystem.

Der Slub Memory Allocator stellt Kernel-intern kleine Bereiche des Arbeitsspeichers zur Verfügung, was zu längeren Wartezeiten führen kann. Torvalds hat eine Serie mit 30 Patches kurz nach den Locking-Änderungen in Linux, genauer in den Hauptentwicklungszweig eingearbeitet.

Was ist für den Echtzeitsupport wichtig?

Linux hat jetzt die mit den Echtzeit-Patches die Möglichkeit ein Programm vorzuziehen, dessen Erledigung in einem bestimmten Zeitfenster erledigt sein muss, auch wenn das System gerade mit unwichtigeren Aufgaben zu tun hat. Die Prozesse sind markiert, damit der Kernel weiß, welche Linux Programme er als wichtiger ansehen soll. Dieses können ist für PCs und Server nicht so interessant, da durch diese Reaktionen einige aufgaben öfter unterbrochen werden und dadurch nur langsam abgearbeitet werden.

Anfang November erscheint Linux 5.15-rc5

Die Neuerungen werden in Version 5.15-rc5 von Linux enthalten sein. Die neue Version soll am 1. oder 8. November auf den Markt kommen. Hier sind auch die Grundlagen enthalten, welche bei Linux 5.3 das Starten des Realtime-Supports ermöglichen sollen. Trotzdem kann die Funktion beim Kompilieren eines Kernels noch nicht gestartet werden.

Es gibt eine große, und mehrere kleine noch offene Arbeiten. Es gibt noch einige Stellen im Linux-Code, die nicht pausiert werden dürfen. Dadurch entstehen Wartezeiten, welche durchaus länger ausfallen können. Diese Wartezeiten stehen natürlich den Echtzeiteinsatz. Eine Arbeit, die nicht pausiert werden kann, ist die Printk-Infrastruktur, die für die Annahme und die Ausgabe der Log-Meldungen zuständig ist. Bei Linux 5.15 konnten die Entwickler des PREEMPT_RT diese Wartezeiten enorm verbessern, aber andere Arbeiten stehen trotzdem noch aus. Wer Details dazu wissen möchte, der findet dieses Wissen auf Folien. Die Folien gehören zu dem Vortrag, welchen die Entwickler der Linux-Veränderung auf der Plumbers Conference 2021 gehalten haben.

Die kleinen Baustellen:

Printk-Arbeiten gehören zur großen Baustelle und es bleiben noch viele kleine Baustellen. Die realtime-taugliche Vorabversion Linux 5.15-rt zeigt, was die Entwickler für Arbeit mit der Integration der Echtzeit-Patches geleistet haben. Die Arbeiten:

  • 175 Patches anwenden
  • 215 geänderte Daten
  • das Einfügen von 1.350 Zeilen
  • das Entfernen von 2.650 Zeilen

Zum Vergleich die Arbeiten von Linux 5.14-rt:

  • 260 geänderte Daten
  • das Einfügen von 3.700 Zeilen
  • das Entfernen von 7.450 Zeilen

Dazu gehören natürlich auch Echtzeit-Patches, die nur ein bestimmtes Einsatzgebiet betreffen oder, die mit der Architektur des Prozessors zu tun haben.

Die Dauer ist kaum abzuschätzen

Dienstag gab es einen Status-Überblick. Im Rahmen dessen besprachen die Entwickler welche Baustellen noch ausstehen. Ein großer Teil der Gespräche drehte sich um „Cpu_chill()“ und „NOHZ-Verhalten“, zwei weitere Baustellen mittlerer Größe. Dabei war zwischen den Zeilen herauszuhören, dass sogar die Entwickler nicht wagen, einen zeitlichen Rahmen zu geben.

So war es geplant:

Linux Echtzeit-PatchesAktuell kann wohl niemand sagen, ob noch Jahre vergehen werden oder ob die Probleme in wenigen Monaten gelöst sind. Bereits 2018 und 2019 gab es noch die Meinung, dass alle wichtigen Änderungen schnell bei Linux in den Hauptentwicklungszweig untergebracht werden.

Ein Grund dafür war, dass Probleme unterschätzt wurden. Ein großes Problem ist der stete Geldmangel. Zwar ist der RT-Kernel bei vielen Firmen beliebt und häufig genutzt, trotzdem geben nur wenige dieser Firmen Geld, um die Entwicklung zu unterstützen. Daher müssen sich die PREEMPT_RT-Entwickler oft von ihrer Arbeit trennen und andere Jobs übernehmen, denn das Leben kostet Geld.

Fazit: Wie läuft die Linux Pflege in der Zukunft?

Ein Diskussionspunkt ist aktuell, wie die Pflege und Echtzeit-Patches weitergehen soll. Die Pflege endet ja nicht, wenn alles erfolgreich im Kernel angekommen ist. Nehmen andere Entwickler irgendwo eine Änderung vor, könnte es zu Störungen führen. Das der Geldmangel die Entwicklung der Echtzeitfähigkeit und womöglich sogar die Qualität negativ beeinflusst, wird leider erstmal bleiben.