Linux 6.6 bringt neuen Scheduler

Seite 2: Schattenwirtschaft

Inhaltsverzeichnis

Die Kernel-Entwickler konnten sich nach mehrjähriger Diskussion nun durchringen, Intels Hardware-Shadow-Stack zu nutzen. Statt Rücksprungadressen nur auf dem Aufrufstapel (Call-Stack) wie jeher abzulegen, gehen diese zusätzlich gespiegelt auf den geschützten Schattenstapel (Shadow-Stack). Beim Rücksprung liest der Prozessor die Rücksprungadresse sowohl vom normalen Call-Stack, als auch vom Shadow-Stack.

Ein Vergleich der beiden Werte zeigt an, ob der Call-Stack modifiziert wurde. Dies kann im Falle eines Bugs, aber auch bei einem Angriff über einen Pufferüberlauf geschehen. Eine Ungleichheit der Rücksprungadressen der beiden Stapel zeigt dies an. Der Prozessor löst dann eine Ausnahme (Fault) aus.

Ein Angriff lässt sich damit erkennen und dessen Folgen eindämmen. Da es ein Hardware-Feature ist und einen 64-Bit-Intel-Prozessor voraussetzt, ist es lediglich im 64-Bit-Kernel verfügbar.

Der Kernel legt zum Jahresschluss noch mal tempomäßig nach. Er verspricht bei asynchronen direkten I/O-Zugriffen eine Leistungssteigerung von bis zu 37 Prozent beim Datendurchsatz und bei der Latenz. Möglich machen das Verbesserungen und der Einsatz des System-Call-Interface io_uring.

Nachdem schon beim vorherigen Kernel die Rust-Versionen angehoben wurden, ist auch beim neuen Kernel ein Aktualisieren der Versionen nötig. Dieses erneute, für Kernel-Verhältnisse untypisch schnelle Upgrade in so kurzer Zeit war vor allem notwendig, um Allokator-Funktionen zu konsolidieren.

Auch bindgen musste aktualisiert werden, um LLVM 16 unterstützen sowie Noreturn-Funktionen aus C korrekt in Rust abbilden zu können. Letztere zeigen durch das Schlüsselwort __noreturn an, dass sie nichts an den Aufrufer zurückliefern und der folgende Code unerreichbar ist (eingeführt mit C11). Linux 6.6 setzt jetzt Rust 1.71.1 und bindgen 0.65.1 voraus.

Neben diesen infrastrukturellen Umbauten zeigt die Rust-Integration diesmal aber auch bei der API Fortschritte. Der Löwenanteil liegt dabei der auf "pinned-init API" zum Initalisieren von Strukturen (structs).

Der Hort der temporären Dateien – das tmpfs – kann nun mit Benutzer- und Gruppen-Quotas begrenzt werden. Projekt-Quotas sollen in Kürze folgen. Dem ausufernden Gebrauch lässt sich damit nun auch beim tmpfs ein Riegel vorschieben. Bislang war dies bei /tmp nur mit echtem Plattenspeicher dahinter möglich.

Das Urgestein der Netzwerkdateisysteme NFS legt auf Server-Seite mit delegierten Schreibzugriffen (write delegations) von NFSv4 nach. Damit können Nutz- und Metadaten effizienter in Caches zwischengespeichert werden. Das reduziert Netzwerk-Traffic und steigert die Leistung.

Der mit Linux 5.15 eingeführte Kernel-eigene SMB3-Server ksmbd ist nicht mehr als "experimentell" eingestuft. Das adelt den auf hohen Datendurchsatz ausgelegten Server für den produktiven Einsatz.

Das Journaling-Dateisystem XFS nutzt im neuen Kernel die mit Linux 5.17 eingeführten "Large Folios" der Speicherverwaltung. Der Page-Cache lässt sich damit für einige Anwendungsfälle optimieren und verspricht mehr Leistung. Zudem stellt XFS die Weichen für den lang erwarteten Online-Dateisystem-Check. Bislang müssen XFS-Dateisysteme für eine Reparatur ausgehängt sein. Linux 6.6 liefert die ersten wichtigen Bausteine, um einen "Heilungsprozess" auf bei gemountetem Dateisystem vornehmen zu können.

ReiserFS ist jetzt offiziell als "obsolet" markiert. Es erfährt keine Unterstützung und Weiterentwicklung mehr. Planmäßig soll es in 2025 seinen endgültigen Abschied aus dem Kernel nehmen. Spätestens jetzt sollten Anwender des Journaling-Veteranen den Umstieg planen.

Mehr als überfällig war, dass das Kernel-Team rigoros die Unterstützung für den alten Data Encryption Standard (DES) über Bord wirft. Die alte Feistelchiffre unterstützt lediglich die heute unsichere Verschlüsselung mit 56 Bit und wurde schon vor Jahrzehnten durch den Advanced Encryption Standard (AES) abgelöst. Selbst die übergangsweise dreifach angewendete DES-Chiffre (Triple-DES beziehungsweise 3DES) fliegt an wesentlichen Stellen aus dem Kernel.

Betroffen sind davon das DES-basierte Authentifizieren mittels Kerberos und die Verschlüsselung mit DES und 3DES in SunRPC. DES ist jedoch bereits seit 2012 mit RFC 6649 in Kerberos als veraltet gebrandmarkt. Für 3DES folgte der Marker 2018 mit RFC 8429.

Das betrifft unter anderem das Netzwerkdateisystem NFS, welches auf SunRPC aufsetzt. Auch dieses unterstützt mit Linux 6.6 keine Authentifizierung auf Basis von DES. Betroffen sollten davon allenfalls Installationen aus historischem Interesse sein. Moderne Systeme und Netzwerkumgebungen sollten ohnehin schon seit Jahren nicht mehr auf die alten Chiffren angewiesen sein.

Linux 6.6 ist das letzte stabile Kernel-Release in diesem Jahr. Somit ist es wahrscheinlich, dass der Tradition folgend diese Version der nächste LTS-Kernel mit Langzeitunterstützung (LTS = Long Time Support) werden wird. Er wird somit voraussichtlich länger aktiv gepflegt und mit Sicherheits-Updates versorgt. Zudem werden viele Linux-Distributionen in ihren auf Produktivbetrieb ausgelegten Varianten auf diese Version aufsetzen. Üblich ist dies beispielsweise bei Debian GNU/Linux, Ubuntu oder auch Proxmox.

Sollte sich diese Erwartung erfüllen, wird Linux 6.6 allerdings seit 2017 der erste LTS-Kernel sein, der wieder nur zwei Jahre Unterstützung erhält. Aufgrund des hohen Aufwands, Kernel sechs Jahre lang zu pflegen, kündigten die Linux-Entwickler im September dieses Jahres an, wieder auf den alten Zwei-Jahres-Zyklus beim LTS-Kernel zurückzukehren.

Linux 6.6 unterliegt mit dem Wechsel vom CFS- zum EEVDF-Scheduler einem wesentlichen Umbau. Es findet der Tausch einer zentralen Komponente statt, die jetzt in der Praxis zeigen kann, was in ihr steckt.

Die infrastrukturelle Dynamik bei Rust ist enorm. Für Kernel-Verhältnisse ist diese gar extrem. Es sind dort noch viele Weichen zu stellen, bis die ersten echten Treiber und Kernel-Module als Rust-Code vom Stapel laufen werden.

Der Kernel 6.6 ist eine signifikante Weiterentwicklung und sicherlich kein simples Wartungs-Release. Als LTS-Kernel-Kandidat stellt er sicherlich eine gute Wahl dar.

Der Kernel steht auf kernel.org zum Download bereit. Alle Änderungen finden sich detailliert im Kernel-Changelog.

(dmk)