Mit Linux 6.6 löst nach 15 Jahren der EEVDF-Scheduler den CFS-Scheduler als Taktgeber im Kernel ab, während Intels Shadow Stack für mehr Sicherheit sorgen soll.
Mit Linux 6.6 veröffentlicht Linus Torvalds, der Herr der Pinguine, am 29. Oktober den letzten Kernel des zur Neige gehenden Jahres 2023. Den hat Greg Kroah-Hartman Linux 6.6 erwartungsgemäß zum nächsten Kernel mit Langzeitunterstützung (LTS) erklärt. Er erhält also drei Jahre Unterstützung in Form von Fehlerbereinigungen und Sicherheitsaktualisierungen. Zum Stichwort LTS gab es in letzter Zeit zudem zwei richtungsweisende Nachrichten.
Beginnen wir mit der vermeintlich weniger guten News: Die 2017 von zwei auf sechs Jahre ausgedehnte LTS-Unterstützung, damals hauptsächlich für Android und Embedded Devices eingeführt, schrumpft wieder auf rund zwei Jahre [1]. Der Langzeit-Support macht angesichts chronisch zu weniger Kernel-Maintainer zu viel Arbeit und kommt nicht häufig genug zum Einsatz, um den Aufwand zu rechtfertigen. Das verkündete zumindest Kernel-Entwickler Jonathan Corbet auf dem Open Source Summit Europe in Bilbao im September.
Ein kürzlich erschienener Artikel von Steven Vaughan-Nichols beleuchtet die Arbeit der Kernel-Maintainer und stellt fest, dass Burnout ein in dieser Berufsgruppe zunehmend häufig anzutreffendes Krankheitsbild ist [2]. Die gute Nachricht: Die Civil Infrastructure Platform (CIP) dehnt für den dennoch bestehenden Bedarf das SLTS-Programm (Super-Long-Term Stable) auf Linux 6.1 LTS aus. Dieser Kernel erhält damit mindestens 10 Jahre Unterstützung [3].
Was bringt Linux 6.6?
Was hat Linux 6.6 zu bieten? Neben den üblichen Aktualisierungen in den einzelnen Komponenten löst der EEVDF-Scheduler nach 15 Jahren den bisher genutzten Standard-Scheduler CFS ab. In Sachen Sicherheit soll Shadow Stack im Rahmen von Intels Control-Flow Enforcement Technology (CET) Angriffe per Return Oriented Programming (ROP) unterbinden. Ferner verlässt der von Samsung entwickelte und mit Linux 6.5 eingeführte SMB3-Server KSMBD den experimentellen Status.
Neuer Taktgeber
Linux 6.6 tauscht nach 15 Jahren den Scheduler im Kernel aus. Statt des 2007 mit Linux 2.6.23 eingeführten, von Ingo Molnár geschriebenen CFS v2 (Completely Fair Scheduler [4]) kommt nun der von Peter Zijlstra verfasste EEVDF (Earliest Eligible Virtual Deadline First) zum Zug [5]. Scheduler haben die Aufgabe, die Zuteilung von CPU-Zeit für die Prozesse zu verwalten, die auf Linux-Systemen laufen.
Wie der Name andeutet, zielt CFS darauf ab, die CPU-Zeit möglichst fair zu verteilen – was überwiegend gut gelingt. Dabei kontrolliert der Scheduler, wie viel Zeit jeder Prozess bekommt, und führt diejenigen Prozesse priorisiert aus, die weniger CPU-Zeit erhalten haben als die anderen. Dabei ist die Laufzeit jedes Prozesses nach seiner Nice-Priorität gestaffelt. Es spielen unter anderem Elemente wie die optimale Ausnutzung der Memory Caches und möglichst aller Rechenkerne, die Energieverwaltung und die Latenz eine Rolle. Aus heutiger Sicht berücksichtigt CFS diese Elemente nicht immer ausreichend, auch wenn kürzlich die Latency-nice-Patches für CFS in dieser Hinsicht eine Verbesserung brachten [6].
Auch der 1995 erstmals beschriebene EEVDF-Scheduler teilt die vorhandene Zeit fair auf und berücksichtigt die Nice-Vorgaben. Da die Aufteilung einer gegebenen Zeitspanne aus verschiedenen Gründen nie ganz gerecht ablaufen kann, misst EEVDF zusätzlich den positiven oder negativen Lag, also die Zeit, die ein Prozess zu viel oder zu wenig erhalten hat, und berücksichtigt ihn bei der folgenden Zuteilung.
Gestapelte Schatten
Nach Jahren in der Entwicklung sollte Intels Hardware-Shadow-Stack eigentlich schon in Linux 6.4 zum Zug kommen. Nach einigen Diskussionen und anschließenden Verbesserungen hat es die Sicherheitsfunktion nun in den Mainline-Kernel geschafft.
Der sogenannte Schattenstapel ist ein Teil von Intels Control Flow Enforcement Technology CET und soll auf unterstützten Intel-Prozessoren ROP-Attacken verhindern. Die Angriffstechnik manipuliert den Call-Stack so, dass nach dem nächsten Rücksprungbefehl Maschinencode ausgeführt wird, der an dieser Stelle im Programm nicht vorgesehen war. Das lässt sich verhindern, indem die Rücksprungadressen nicht nur auf dem Call Stack landen, sondern zusätzlich auf einem geschützten Schattenstapel. Die Rücksprungadresse wird dann aus beiden Stapeln ausgelesen. Stimmen die Adressen nicht überein, gilt der Call Stack als korrupt.
SMB3-Server KSMBD
Beim Kernel-Modul KSMBD handelt es sich um einen Linux-Kernel-Server, der das SMB3-Protokoll für die gemeinsame Nutzung von Dateien über das Netzwerk im Kernel-Space implementiert [7]. Erstmals mit Linux 5.15 eingeführt, brachte die Implementierung einige hochkritische Sicherheitslücken mit, die nun geschlossen sind [8].
Der Sinn eines eigenen SMB-Servers im Kernel besteht in der Trennung von Userspace-Funktionen und solchen, die besser im Kernel aufgehoben sind. Dazu zählen unter anderem Dateioperationen, die mit der Leistung zusammenhängen, wie Öffnen, Lesen, Schreiben und Schließen. Hier halbierte KSMBD bei Tests die Zugriffszeiten im Vergleich zu Samba [9].
Aktualisierungen
Bei den gewohnten Aktualisierungen der Treiber für CPU und Grafik geht es beim neuen Kernel vergleichsweise ruhig zu. Einige nicht weiter spezifizierte AMD-SoCs profitieren von der neu eingeführten AMD Dynamic Boost Control. Diese Funktion einiger Ryzen-SoCs justiert den Prozessor für optimale Leistung [10]. Für AMD werden zudem im Modul cpupower neue P-States aktiviert. Serverseitig profitieren AMD-Epyc-Server von den Patches für Linux 6.6 [11].
Intel bereitet den Kernel auf die Verwendung seiner Neural Processing Unit vor, die mit der noch im Dezember erwarteten “Meteor-Lake”-Architektur für Spracherkennung, Bildverarbeitung und maschinelles Lernen bei KI-Workloads bereitstehen soll. Damit erhalten Programme wie Stable Diffusion oder ChatGPT mit Intels 14. CPU-Generation zwei dedizierte KI-Chips auf der CPU. Weitere Patches für Intels “Arrow Lake” und “Lunar Lake” ermöglichen eine initiale Integration dieser kommenden Architekturen.
Gaming auf Notebooks soll dank AMD FreeSync Panel Replay effizienter mit den Ressourcen umgehen. Der Energieverbrauch von Grafikkarten und Displays dürfte damit im Vergleich mit dem bisher zu diesem Zweck eingesetzten Panel Self Refresh (PSR [12]) deutlich sinken. Voraussetzung für die Nutzung der neuen Technik ist der in Ryzen-APUs und CPUs der Baureihe Ryzen 7000 mit RDNA-2-GPU verbaute AMD Display Core Next (DCN) in Version 3.1.4 oder neuer.
Dateisysteme
Bei Ext4 gab es neben einer Codebereinigung auch eine Beschleunigung bei bestimmten Aktionen. Dabei geht es um das Anhängen an eine Datei mit verzögerter Zuweisung, im Kernel als Delayed Allocation oder kurz als Dealloc bezeichnet. Dealloc verschiebt das Zuordnen von neu geschriebenen Dateidatenblöcken zu Festplattenblöcken im Dateisystem auf den Zeitpunkt des Zurückschreibens. Entwickler Liu Song konnte mit seinem Patch bei diesen Aktionen eine Beschleunigung von bis zu 34 Prozent messen [13].
XFS bekommt einen neuen Release-Manager, nachdem Darrick J. Wong wegen Überlastung nach sechs Jahren von diesem Posten zurückgetreten war. Mit seinem letzten Patchset stellt er auch seine Kritik am bisherigen Maintainer-Modell zur Diskussion [14]. Linux 6.6 enthält zudem erste Arbeiten zur Zusammenführung der Online-Reparaturfunktion von XFS [15]. ReiserFS ist im neuen Kernel als “überflüssig” markiert, nachdem das Dateisystem bereits mit Linux 5.18 als “veraltet” gekennzeichnet wurde. Der ReiserFS-Code wird also in den nächsten zwei oder drei Jahren entfernt.
Sonst noch?
Mit der Einführung der nötigen Infrastruktur zog Rust als zweite Programmiersprache in Linux 6.1 ein. Mit Linux 6.5 kam das erste Update für den Unterbau von Rust in Form von Version 1.68.2. Miguel Ojeda, der die Rust-Integration in den Linux-Kernel leitet, hat für Linux 6.6 ein weiteres Update auf Rust 1.17.1 eingereicht, also auf einen recht aktuellen Stand. Erste Patches zum Update auf die aktuelle Version 1.73 wurden bereits gesichtet [16].
Bereits seit Linux 2.6.x ist die Sicherheitsarchitektur Security Enhanced Linux oder kurz SELinux Teil des Kernels. Die quelloffene Software setzt sich aus einem Kernel-Patch und aus zahlreichen Erweiterungen für Systemprogramme zusammen. Entwickelt haben sie maßgeblich Red Hat und der amerikanische Geheimdienst NSA. Da seit Jahren viele weitere Entwickler Code und Pflege zu SELinux beitragen, entfallen mit Linux 6.6 die bisher verwendeten NSA-Referenzen bei der Benennung von Funktionen.
Fazit und Ausblick
Linux 6.6 ist mit 14 069 Änderungen von 1978 Entwicklern ein vom Umfang her durchschnittlicher Kernel, nimmt man die Veröffentlichungen der letzten Zeit als Maßstab. Ebenfalls im Schnitt lag mit 249 die Zahl der Entwickler, die erstmals einen Beitrag zum Mainline-Kernel leisteten.
Linux 6.7 fällt um einiges größer aus und ist bei der Anzahl der Einreichungen das größte Merge-Fenster aller Zeiten. Wegen des Umfangs und den anstehenden Feiertagen erscheint Linux 6.7 vermutlich erst im neuen Jahr. Höhepunkte sind neben der Stabilisierung der Grafikfunktionen für “Meteor Lake” die Aufnahme des Next-Gen-Dateisystems Bcachefs und die Unterstützung für die optionale Deaktivierung des 32-Bit-x86-Programm-Supports beim Booten. (uba)
Infos
- Zwei Jahre LTS: https://www.linux-magazin.de/news/nur-noch-zwei-jahre-unterstuetzung-fuer-lts-kernel/
- Burnout: https://www.zdnet.com/article/what-linux-kernel-maintainers-do-and-why-they-need-your-help/
- Zehn Jahre LTS: https://linuxnews.de/linux-6-1-lts-erhaelt-10-jahre-unterstuetzung/
- CFS: https://lwn.net/Articles/230574/
- EEVDF: https://lwn.net/Articles/925371/
- Latency: https://lwn.net/ml/linux-kernel/20220311161406.23497-1-vincent.guittot@linaro.org/
- KSMBD: https://docs.kernel.org/next/filesystems/cifs/ksmbd.html
- Sicherheitslücken: https://lwn.net/Articles/871866/
- Tests: https://samba.plus/de/blog/detail/ksmbd-ein-neuer-smb-server-im-kernel
- Dynamic Boost Control: https://lore.kernel.org/lkml/1eb283a5-4b4d-216e-0c02-413c94ae9eb5@amd.com/T/
- Cpupower: https://lore.kernel.org/linux-pm/bcce80ed-f2ef-a92f-f7b5-0b14f498d653@linuxfoundation.org/
- Freesync Panel Replay: https://lists.freedesktop.org/archives/amd-gfx/2023-June/094605.html
- Ext4-Patch: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=03de20bed203b0819225d4de98353c1f8755a1dd
- XFS: https://lore.kernel.org/linux-xfs/169091989589.112530.11294854598557805230.stgit@frogsfrogsfrogs/T/#m6c9b740f7841a77e077a9fe9f96bb8818f2403bd
- Online Repair: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=53ea7f624fb91074c2f9458832ed74975ee5d64c
- Rust: https://lore.kernel.org/lkml/20230824214024.608618-1-ojeda@kernel.org/






