Noch vor dem Release des ersten Linux-Kernels im neuen Jahr ließ Entwickler Ingo Molnar eine Bombe platzen: Fast Kernel Header. Doch auch der frisch gebackene Kernel 5.16 hat einiges zu bieten.
Wie der ungarische Kernel-Entwickler Ingo Molnar am 2. Januar 2022 auf der Kernel-Mailing-Liste [1] schrieb, arbeitet er bereits seit Ende 2020 an einer Reorganisation der Linux-Kernel-Header. Zu seinem als “Fast Kernel Headers” bezeichneten Projekt gehören über 2000 Patches. Es sei “wahrscheinlich die größte Single-Feature-Ankündigung in der Geschichte der Kernel-Mailing-Liste”, gab Molar zu Protokoll. Er betrachte seinen Code dennoch als unverzichtbar, um der historisch entstandenen Abhängigkeitshölle im Kernel zu entkommen und kürzere Übersetzungszeiten zu erreichen.
Konkret konnte der langjährige Kernel-Kontributor nach eigenen Angaben den Build von Kernel 5.16-rc7 um 78 Prozent beschleunigen. Das Ergebnis beeindruckte mit Greg Kroah-Hartman auch einen der wichtigsten Kernel-Lieutenants, der Molnars Bestrebungen einen Daumen nach oben gab. Einen Tag vor dem Release des fertigen Kernels legte Molnar dann schon eine zweite Runde an Patches nach [2]. Das Jahr 2022 fängt also spannend an.
Bau(m)meister
XFS-Maintainer Darrick Wong berichtete von der Integration eines Slab-Cache in das Dateisystem. Der sorgt dafür, dass XFS beim Umgang mit bestimmten regelmäßig genutzten Elementen heute und künftig weniger Speicher benötigt. Zu diesen Elementen zählen beispielsweise sogenannte B-Tree-Cursors.
Der B-Baum, wie er im Deutschen heißt, spielt auch bei den Änderungen an Btrfs eine tragende Rolle: Das massenhafte Einfügen von Elementen in einen B-Baum klappt hier neuerdings schneller. Auf die Performance zielen laut Entwickler David Sterba [3] auch weitere Änderungen an Btrfs ab. So arbeiten das Verzeichnis-Logging und einige Sync-Prozesse effizienter. Daneben bauen die Btrfs-Entwickler den Subpage-Support in den Bereichen Defragmentierung und Kompression weiter aus und ergänzen Zoned Namespaces.
Für das vor allem von Samsung vorangetriebene F2FS gibt es eine neue Mount-Option, die es Entwicklern erlaubt, eine Festplatte explizit für Performance-Tests zu fragmentieren. Neu an Bord ist zudem der Support für einheitliche direkte I/O-Zugriffe im Umgang mit mehreren Laufwerken [4].
Für das von Huawei entwickelte und eher unbekannte Read-only-Dateisystem EROFS (Enhanced Read-Only File System) kündigte Gao Xiang Neuerungen an. EROFS bietet einen angepassten LZMA-Algorithmus namens MicroLZMA für Embedded-Geräte, Live-CDs oder als Alternative neben dem primären Kompressionsalgorithmus für eine Datei an. Zudem unterstützt es nun auch mehrere Devices sowie Container-Images mit mehreren Layern. Das ermöglicht laut Xiang den Einsatz des Dateisystems als Lösung für hochperformante Container-Images [5].
Wer auch die Dateien auf den jeweiligen Dateisystemen überwachen möchte, kommt mit Fsnotify ans Ziel. Für das gibt es jetzt einen neuen Event Type namens »FAN_FS_ERROR« in Fanotify. Dank diesem erfahren System-Health-Monitoring-Dienste von Dateisystemfehlern, ohne dass sie dafür mühselig die entsprechenden Meldungen aus den Logfiles zusammenkratzen müssen [6].
Im Device-Mapper-Bereich verbessert sich laut Mike Snitzer der Umgang mit der Sicherheit. Es ist seit Kernel 5.16 möglich, Audit-Ereignisse über das Audit-Subsystem zu verschicken. Damit das gelingt, haben die Entwickler auch an der Integrität und an den Verschlüsselungs-Targets gefeilt.
Netzstruktur
Bei den Netzwerkdateisystemen tut sich NFS mit Optimierungen für »READDIR« hervor. Das Network File System überprüft die Server-Verbindungen erneut, wenn der User ein »mount -o remount« angibt [7]. Zudem gibt es Verbesserungen am Zugriffsmodus und beim Tracing.
Das unter Windows und Linux gleichermaßen nutzbare Common Internet File System, besser bekannt als CIFS, wartet außer mit Performance-Verbesserungen auch mit Optimierungen im Umgang mit Reconnects und beim Multichannel-Support auf.
Die aktuellen Updates für die verteilte Storage-Lösung Ceph, die mit Vorliebe in Cloud-Umgebungen zum Einsatz kommt, machen das asynchrone Entfernen und Erzeugen von Dateien zum Standardverhalten. Das beschleunigt laut Ilya Dryomov bestimmte Aktionen wie das Entfernen und Synchronisieren von Dateien [8].
Datenstraßen
Jakub Kicinski schickte derweil gleich einen ganzen Schwung an Netzwerkcode an den Kernel-Chef [9]. Die Änderungen betreffen ganz unterschiedliche Bereiche, stellen sich aber auch für normale Linux-Anwender als durchaus nützlich heraus.
Fällt zum Beispiel eine drahtlose Netzwerkverbindung aufgrund von schlechten Roaming-Implementierungen immer wieder aus, kann ein User neuerdings die Neighbor Eviction beeinflussen. Dabei geht es darum, bei sogenannten »NOCARRIER«-Events den Neighbor-Discovery-Cache automatisch zu leeren. Das bisher übliche Verhalten, diesen Cache beim Wechseln zwischen mehreren Access Points intakt zu lassen, war offenbar nicht immer eine hilfreiche Strategie.
Weiterhin gibt es einen neuen WiFi-Treiber (»rtw89«) für 8852AE-802.11ax-Hardware von Realtek mit über 90 000 Codezeilen sowie einen Ethernet-Treiber für das AX88796C-SPI von Asix (»x88796c«). 150 Patches flossen in den Treiber »mt76« ein, zudem gibt es ein paar neue Features für den Wireless-Treiber »ath9k«. So lässt sich der Chip etwa über DebugFS resetten. Für den Treiber »mac80211« liefert Entwickler Johannes Berg Update-Informationen: Hier wurden der Multi-BSSID-Support ausgebaut und an der 6-GHz-Unterstützung geschraubt.
Sicherer Hafen
Im Bereich der Sicherheit wartet auf Kernel-Nutzer ein neuer ECC-Treiber für Intels Vision Processing Unit (VPU) Movidius, die den Codenamen “Keem Bay” trägt. Die Blockchiffre AES-256-XTS darf laut Eric Biggers nun auch 256 Bit lange Master-Keys verwenden. Zudem wurde die Dokumentation im Crypto-Subsystem verbessert.
Die SELinux-Maintainer mussten zwei frisch hinzugefügte Patches für das Linux-Security-Modules-Framework (LSM) gleich wieder zurücknehmen, da diese den eigenen Review-Prozess nicht ordentlich durchlaufen hatten. Man arbeite daran, die Probleme mit den Patches zu beheben, wisse aber noch nicht, wann diese letztlich im Mainline-Kernel landen [10].
Ansonsten verwendet Apparmor nun dateibasierte Locks für Transaktionsanfragen, zudem haben die Entwickler den Support für LSM-Stacking optimiert. Der Audit-Bereich unterstützt den neuen Systemaufruf »openat2()« besser.
Unterbauten
Bei den x86-artigen Plattformen gibt es Support für Vortex-CPUs sowie für Intels Advanced Matrix Extensions (AMX). Letztere kommen auf Xeon-Prozessoren (Abbildung 1) zum Einsatz, die üblicherweise auf Server- und Workstation-Hardware laufen.

Abbildung 1: Intels Xeon-Prozessoren kommen vor allem im Server- und Workstation-Bereich zum Einsatz. Quelle: Jud McCranie, CC BY-SA 4.0, Wikipedia
Linux unterstützt nun laut Maintainer Hans de Goede zudem verschiedene Melanox-Plattformen. HPs “Omen”-Laptops, die sich speziell an Gamer richten, erhalten Support für Windows Management Instrumentation (WMI). Ein neuer Treiber redet über das ISH Transport Protocol (ISHTP) mit Intels EC-Lite-Firmware, die auf Intels Integrated Sensor Hubs (ISH) läuft. System76-Laptops profitieren von Updates im ACPI-Bereich und im Umgang mit der Bildschirmhelligkeit. Nicht zuletzt unterstützt Kernel 5.16 das Surface Laptop Studio von Microsoft und – in ersten Ansätzen – das Surface Pro 8 [11].
Änderungen im ARM-Bereich betreffen unter anderem die ARM64-Plattform, die Support für ARMv8.6-Timer-Extensions erhält. Sie erweitern die generische Timer-Architektur, die mit ARMv7 eingeführt wurde, und lassen sich jetzt auch unter Linux verwenden. Dank einer Änderung am Qualcomm-Code unterstützt der Kernel die schon etwas angestaubte Samsung Galaxy S4 Mini Value Edition und kann diesen Geräten so eine erweiterte Lebensspanne spendieren. Weiterhin liefert Linux ersten Support für das neue Fairphone 4.
Auch auf Apple-M1-Nutzer warten Neuigkeiten [12]: Der Kernel 5.16 bringt Treiber für den PCI-Express-Controller, für den Pin-Controller von M1-Laptops sowie für GPIO, für I2C und für USB-PD mit. Der Code der Asahi-Linux-Entwickler unterstützt mittlerweile auch den M1 Pro und M1 Max, dieser wird aber wohl erst in Kernel 5.17 landen.
Innere Werte
Apropos System Calls: Neu an Bord ist der Systemaufruf »futex_waitv()«, der es Locking-Bibliotheken erlaubt, zeitgleich auf mehrere Locks zu warten. Das spielt insbesondere im Windows-Kontext eine Rolle, speziell bei Wine. Valve, der Anbieter der Spieleplattform Steam, setzt in seiner Wine-Variante namens Proton den Systemaufruf bereits seit einiger Zeit erfolgreich ein. Nun steckt er also auch nativ im Linux-Kernel.
Memory Folios gelten ebenfalls als Innovation für den Kernel 5.16 und sollen es Dateisystemen und dem Page Cache in bestimmten Fällen erlauben, Speicher in größeren Portionen zu verwalten als bisher [13]. Das kann sich beim Memory Management in bestimmten Einsatzszenarien lohnen und Performance-Gewinne einfahren. Im nächsten Kernel sollen dann neben den bereits unterstützten Dateisystemen XFS und AFS einige weitere Support für die Folios erhalten.
Ein Update für den Kompressionsalgorithmus Zstandard hält der Entwickler Nick Terrell für nötig. Die Version im Kernel sei veraltet, erklärte er seinen Pull Request; die neue Version bringe verschiedene Vorteile mit sich. Dazu zählen Leistungsgewinne etwa für F2FS und Btrfs sowie generell für im Kernel gängige Dekompressionsaufgaben. Ausführliche Infos dazu und einige Messwerte liefert die Commit-Nachricht zum Pull Request [14].
Mit der Bloom-Filter-Map erhält BPF eine neue Map, die schnelle Peek- und Push-Operationen unterstützt und in der Lage ist, langsamere Hashmap-Suchen zu ergänzen. Zugleich bringt Linux auf der Kernel-Seite frischen Code mit, der es BPF-Programmen erlaubt, bestimmte Funktionen von Kernel-Modulen zu verwenden.
Neu an Bord sind auch das »BTF_KIND_TAG« und die Funktion »bpf_get_branch_snapshot()«. Letztere holt eine sogenannte Branch Trace von Hardware-Engines wie Intels Last Branch Record (LBR). In der Datei »Kconfig« ist nicht-privilegiertes BPF aufgrund von Sicherheitsbedenken im Zusammenhang mit spekulativen Side-Channel-Angriffen neuerdings standardmäßig deaktiviert.
Virtuelle Realität
Auch in Sachen Hypervisor können Gast-Systeme in VMs nun über Virtio-GPUs Grafikkommandos an Vulkan-fähige Anwendungen senden. Das Ganze klappe über Qemu und einen experimentellen Vulkan-Treiber für Virtio-GPUs, der den Namen Venus trägt, heißt es im Collabora-Blog [15].
KVM lasse sich nun über die Kommandozeile zur Laufzeit abschalten, wofür es laut den KVM-Entwicklern aber keine echten Gründe gebe [16]. Hyper-V bringt ersten Support für isolierte VMs mit, bei Xen booten dank neuer Patches paravirtualisierte Gäste schneller.
Eingabe, Ausgabe
Für einige der Änderungen am Kernel dürften sich wiederum Linux-Gamer und Konsolen-Hacker interessieren. So bietet der Kernel 5.16 Support für die Pro-Controller und Joy-Cons der Nintendo Switch sowie die neueste Revision der Nitrokey-U2F-Firmware. Playstation-5-Besitzer könnte der bessere Umgang mit LEDs der Controller erfreuen.
Schwung in die Grafik
Auch beim Grafik-Support von Linux tut sich wieder einiges. Für AMD berichtet Phoronix von messbaren Leistungssteigerungen Vega-basierter Grafikkarten auf Ryzen-7-Laptops [17]. Weiterhin finden sich im Kernel erster AMD-Code für DisplayPort 2.0 und USB4-DisplayPort-Tunneling sowie Updates für “Yellow Carp” und “Cyan Skillfish”, zwei neue AMD-GPUs.
Der Intel-Treiber »i915« aktiviert standardmäßig die Unterstützung für Intels “Alder Lake S” und für die diskrete Xe-GPU DG1. Zugleich bringt er ersten Code für DG2-GPUs mit. Weiterhin arbeiten auch hier die Entwickler fleißig an DisplayPort 2.0. Nicht zuletzt kommt der freie Nouveau-Treiber für Nvidia-Grafikkarten jetzt mit der GA106-GPU der Geforce RTX 3060 zurecht.
Sämtliche Neuerungen lassen sich wie immer im Github-Repository von Linus Torvalds nachlesen [18], der fertige Kernel wartet auf Kernel.org [19].
Infos
- Ingo Molnar über Fast Kernel Header: https://lkml.org/lkml/2022/1/2/187
- Fast Kernel Header, Teil 2: https://lkml.org/lkml/2022/1/8/170
- Btrfs-Updates: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=037c50bfbeb33b4c74e120eef5b8b99d8f025418
- F2FS: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5664896ba29e6d8c60b6a73564d0a97d380c0f92
- EROFS: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=67a135b80eb75b62d92a809b0246e70524f69b89
- Änderungen an Fsnotify: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2acda7549e7081f75bac6e1e51518eb8a3bf5d5d
- Neuerungen von NFS: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2ec20f489591962db8ff1718aa6055c08d88d0cc
- Ceph-Updates: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0ecca62beb12eeb13965ed602905c8bf53ac93d0
- Netzwerk in Kernel 5.16: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=fc02cb2b37fe2cbf1d3334b9f0f0eab9431766c4
- Zurückgezogene SELinux-Patches: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=0a90729278ae7b31084d2d436b0eee4d83b11506
- Surface-Support: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6ab1d4839a486727fdd412bd8bab27417388d381
- Asahi-Linux: https://asahilinux.org/2021/12/progress-report-oct-nov-2021/
- Memory Folios: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=49f8275c7d9247cf1dd4440fc8162f784252c849
- Zstandard: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=c8c109546a19613d323a319d0c921cb1f317e629
- Collabora über Venus: https://www.collabora.com/news-and-blog/blog/2021/11/26/venus-on-qemu-enabling-new-virtual-vulkan-driver/
- KVM-Updates: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b6a68b97af23cc75781bed38221ce73144ac2e39
- Phoronix zu AMDs Performance-Gewinnen: https://www.phoronix.com/scan.php?page=article&item=linux-516-vega&num=1
- Linus Torvalds Github-Repository: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/
- Kernel.org: https://www.kernel.org






