Aus Linux-Magazin 07/2023

Kernel 6.3: Mehr Rust, bessere KI-Chips, Steam-Deck-Controller

© liudmilachernetska / 123RF.com

Die Entwicklung des Kernels 6.3 ging zur Freude von Linus Torvalds ruhig vonstatten. Linux unterstützt nun einige moderne Chips besser, vor allem für den KI-Bereich, und lässt auch Gamer und Freunde der Programmiersprache Rust nicht im Stich.

Offenbar trugen Linus Torvalds Ermahnungen der Vergangenheit im aktuellen Merge Window Früchte: In den zwei Wochen, in denen Entwickler gewöhnlich ihre neuen Features für den nächsten Linux-Kernel schicken, trudelte die Mehrzahl gleich zu Beginn ein, sehr zur Freude des Chefentwicklers [1]. Die mehr als 12 500 Commits bestünden aus der üblichen Mischung, so Torvalds: rund 55 Prozent an Treibern, 20 Prozent Architektur-Updates und dann der ganze Rest.

Zu den Highlights von Linux 6.3 gehört der weiter verbesserte Rust-Support, auch wenn die Integration von Rust-Modulen noch auf sich warten lässt. Für Gamer dürften die von Vicky Pfau beigesteuerten Änderungen am HID-Treiber-Code für den Steam-Deck-Controller von Interesse sein (Abbildung 1). Noch unterstützt Linux die Controller nicht in vollem Umfang, aber Support für Force Feedback sowie verkabelte und drahtlose Interfaces ist bereits integriert. Auch erster Code für Intels “Meteor Lake” trudelte im Kernel ein. Ob Intel diese CPU-Reihe noch 2023 oder erst 2024 veröffentlicht, darüber gab es zu Redaktionsschluss nur Gerüchte.

Abbildung 1: Das HID-Subsystem von Kernel 6.3 bringt ersten Code für die nativen Controller des Steam Decks mit. Quelle: Valve

Abbildung 1: Das HID-Subsystem von Kernel 6.3 bringt ersten Code für die nativen Controller des Steam Decks mit. Quelle: Valve

Datenschleudern

Die dem Dateisystem XFS gewidmete Entwicklungszeit entfiel im aktuellen Entwicklungszyklus vorwiegend auf Aufräumarbeiten, etwa unter den Log-Item-Parametern und Variablennamen [2]. Auf den Code für die Lebenszeit von Allocation Groups und eine Reihe verwirrender indirekter Calls will Darrick Wong noch ein prüfendes Auge werfen. Für Ext4 haben die Entwickler um Ted Ts’o die Performance verbessert [3]: Weil sie nun ein geteiltes Inode-Lock verwenden und kein exklusives mehr, dürfen mehrere Prozesse direkt in vorab zugewiesene Blöcke schreiben. Jaegeuk Kim und seine F2FS-Mitentwickler haben den Code für das Flash-Dateisystem lesbarer gemacht, den »iostat«-Support verbessert und »flush«-Befehle ergänzt.

Als grundsätzliche Änderung für das von Facebook und Oracle geförderte Btrfs betrachtet David Sterba [4] den vereinfachten Umgang mit prüfsummenbasierten Verifizierungen, die jetzt auf einer tieferen Ebene stattfinden. Kleinere Änderungen gab es auch im »iomap«-Code und im Block Layer. So komprimiert Btrfs Dateien neuerdings geordnet nach ihrer Größe, um Fragmentierung von Blockgruppen zu vermeiden. Das basiert auf der Annahme, dass die Größe und die Lebenszeit von Dateien zusammenhängen.

Neuer Netzteil

Über Errungenschaften beim NFS Server Daemon (Nfsd [5]) berichtet Chuck Lever. Das Encoding und Decoding von RPC-Headern arbeitet speichersicherer. Client und Server erhalten zudem Support für die von Kerberos verwendeten AES-SHA2-basierten Verschlüsselungstypen. Weil AES-SHA2 FIPS-140-kompatibel ist, lässt sich NFS auch in Umgebungen betreiben, die aus Sicherheitsgründen FIPS-konforme kryptografische Module einsetzen wollen oder müssen. So schreiben zum Beispiel US- und kanadische Behörden FIPS-zertifizierte Geräte vor.

Nicht zuletzt funktionieren beim NFS-Daemon die RPC-Metriken nun per CPU, was Traffic zwischen CPUs und Nodes einspart, insbesondere beim Einsatz des Kernel Concurrency Sanitizers KCSAN.

Viel Neues liefert auch der Netzwerkbereich [6]. Neben Updates im Kernbereich (verbesserte Speichernutzung, neue Konfigurationsmöglichkeiten) betrifft das auch Protokolle: Dank Support für IPv4-basiertes Big TCP kann der Kernel jetzt TSO-Frames verwenden, die größer als 64 KByte sind. TSO steht für TCP Segmentation Offload und reduziert die Belastung der CPUs durch TCP/IP in datenintensiven Netzwerken. Unterstützt von TSO übernehmen Netzwerkkarten die aufwendige TCP-Segmentierung.

Mit von der Partie sind einmal mehr neue Features für Extremely High Throughput (Wi-Fi 7), nämlich ein rudimentäres Rate Reporting (das die Entwickler in den Intel-Treiber »iwlwifi« implementiert haben) sowie Channel Puncturing auf Client- und Access-Point-Seite.

Für die Speicherverwaltung von Container-Umgebungen lässt sich BPF über den Kernel-Parameter »cgroup.memory=nobpf« jetzt deaktivieren. Neu ist eine Capability, um XDP-Funktionen zu exportieren, die eine Netzwerkkarte unterstützt. Der »destroy«-Befehl für »nf_tables« ist identisch mit dem »delete«-Kommando, gibt aber keinen Fehler zurück, wenn das referenzierte Objekt nicht existiert.

Kernel 6.3 bringt zudem Unterstützung für Physical Layer Collision Avoidance Reconciliation Sublayer (PLCA RS) mit, eine moderne Version von Shared-Medium-Ethernet. Die Technologie soll Kollisionen verhindern, wenn mehrere Stationen gleichzeitig Daten senden. Warnungen gibt es neuerdings, wenn moderne »cfg80211«- oder »mac80211«-Treiber versuchen, die steinalten Wireless Extensions zu verwenden. Wi-Fi-7-Geräten ist das sogar komplett untersagt. Ziel ist es, dass alle Geräte auf das jüngere »nl80211«-Interface umschwenken.

Auch bei den neu unterstützten Treibern herrscht Zuwachs: So laufen jetzt die BlueField-3-Data-Processing-Units von Nvidia [7] auf Linux, die sich laut Eigenwerbung in modernen Rechenzentren und Supercomputer-Clustern zu Hause fühlen. Dort erledigen sie genretypische Aufgaben wie Datenverarbeitung, Netzwerk- und Speicherbeschleunigung, Kryptografie und Sicherheit. Der »ath12k«-Treiber deckt jetzt EHT-Geräte von Qualcomm ab, der »mt7996«-Mediatek-Treiber kommt neuerdings mit Wi-Fi 7 zurecht.

Größere Updates gab es im Bereich der Eingabegeräte [8]. Zum einen steht nun laut Benjamin Tissoires die komplette Infrastruktur, dank derer Entwickler HID BPF verwenden können. Allerdings gibt es einen Wermutstropfen: Entsprechende Programme lassen sich noch nicht über den Kernel-Tree ausliefern. Das aber sei für die Zukunft geplant. Zum anderen gehören zu den neu unterstützten Eingabegeräten neben den erwähnten Steam-Deck-Controllern ein Steuerrad von Logitech in der Xbox-Edition.

Für die x86-Plattform liefern die Entwickler um Hans de Goede Code für das Power Management des Kamerasensors INT3472. Der weist die Privacy LED als eigenständige LED-Klasse aus, was sich einige Entwickler gewünscht hatten. Für den Dell Data Vault Collector unterstützt der »dell-wmi-ddv«-Treiber jetzt die Möglichkeit, Sensorwerte über ein Standard-Hwmon-Interface abzuholen. Zu den Updates für die RISC-V-Plattform gehören der Support für selbst konfigurierte Perf-und Firmware-Events sowie eine vergrößerte »COMMAND_LINE_SIZE«.

Aber was ist mit Rust?

Aktuell ist der Fortschritt beim Rust-Support bei jeder neu veröffentlichten Kernel-Version ein Thema. Das gilt auch diesmal. Laut Miguel Ojeda [9] sind die Rust-Entwickler dem Punkt ein wenig näher gekommen, an dem sie Rust-Module upstreamen können. So warten im »sync«-Verzeichnis die neuen Typen »Arc«, »ArcBorrow« und »UniqueArc«. In der »types.rs« stecken der neue Trait »ForeignOwnable« und der neue Type »ScopeGuard«, die es einem Rust-Objekt ermöglichen, den Besitzer zu wechseln. Sie machen ein Rust- zu einem C-Objekt und umgekehrt. Daneben entfernten die Entwickler einigen Code.

Eine ganze Menge Updates gibt es für EFI [10]: Bessere Performance in bestimmten Fällen, Anpassungen an spezielle Architekturen, Hardware (ARM64-Laptops, Lenovo Ideapad), Security-Features (TEE) sowie verschiedene Cleanups prägen das Bild. TEE, das Trusted Execution Environment, spielt in einem Update von Jens Wiklander eine Rolle: Die Funktion »get_-Kernel_pages()« wurde entfernt, um “historisch gewachsene Verwirrungen” zu vermeiden.

Von Christian Brauner kommen Patches [11], die es ermöglichen, ID-mapped Mounts für »tmpfs« zu verwenden. Das temporäre Dateisystem erlaubt es, Arbeitsspeicher wie eine Festplatte in Linux-Systeme einzubinden. Die Nachfrage nach dem Feature sei bereits länger vorhanden. Dank ihm lassen sich zum Beispiel die Tmpfs-Mounts eines Hosts zwischen verschiedenen Sandboxes teilen – ein möglicher Use Case für den Einsatz mit Kubernetes. Auch Systemd könne die neue Funktion nutzen, um bestimmte Dienste besser zu isolieren.

Sandboxen und VMs

Für die Kernel-interne Sandbox BPF hat Yafang Shao die Möglichkeit geschaffen [12], über den Kernel-Parameter »cgroup.memory=nobpf« das Speicher-Accounting für BPF in Container-Umgebungen zu deaktivieren. Entwickler Anton Protopopov erweiterte die BPF Selbsttests um einen Benchmark für Hashmap Lookups. Pu Lehui spendierte dem RV64-JIT-Compiler ein BPF-Trampoline, eine Art Helfer für Funktionsaufrufe.

Das Virtualisierungsprojekt Xen schickt derweilen die »/proc/xen«-Dateien in Rente, indem es die darin enthaltenen Informationen über Sysfs verfügbar macht. Die KVM-Updates für die ARM-Plattform bringen unter anderem eine virtuelle Cache-Topologie an den Start, um “Inkonsistenzen bei Migrationen auf heterogenen Systemen” zu vermeiden. Zudem gibt es ersten Code, um Nested Virtualization zu unterstützen.

Die Krypto-Updates von Herbert Xu [13] umfassen die Möglichkeit, den FIPS-140-Status eines Linux-Systems in den von »/proc/crypto« zurückgelieferten Textausgaben nachzulesen, sofern dieses aktiviert ist. Neu ist auch ein True Random Number Generator für die RISC-V-basierten StarFive-SOCs, während die x86-Plattform Support für ARIA-AVX2/512-Chiffren erhält. Letztere wurden kurz nach der Jahrtausendwende von Forschern in Südkorea entwickelt und dort auch als kryptografischer Standard zertifiziert.

Grafikbeschleunigung

Dave Airlie hebt für den Grafikkartenbereich wieder eine Reihe von Highlights [14] hervor. So finden sich die Habanalabs-Treiber nicht mehr im Verzeichnis »misc/«, sondern unter »accel/«. Daneben gibt es einen ersten Treiber für die Hardwarebeschleunigung für die Inferenz-Engine von Intel-VPUs (Versatile Processing Units). Auf diesen Engines lassen sich trainierte neuronale Netze ausführen, um ihre Vorhersagen auf Basis neuer Daten zu treffen. Auch die Optimierungen für den Etnaviv-Treiber betreffen solche neuronalen Netze: Der quelloffene Treiber für Vivante-Prozessoren unterstützt nun auch Versilicon-NPUs, die für Inferenzoperationen von neuronalen Netzen ausgelegt sind.

Für Intels neue Highend-Grafikkartengeneration DG2, die Nvidia und AMD Konkurrenz machen soll, landete ebenfalls neuer Code im Kernel. DG2 steht für Discrete Graphics 2, die Karten sind auch unter dem Codename “Alchemist” bekannt.

Daneben warfen die Entwickler alte DRI1-Treiber über Bord (zum Beispiel »i810«, »r128«, »savage« und »via«), da kaum noch Grafikkarten existieren, die diese verwenden. Wer solche altertümlichen Boards weiter betreiben möchte, muss künftig wohl den Kernel patchen oder auf ältere Linux-Versionen ausweichen.

Wenn Sie den neuen Kernel testen möchten, finden Sie ihn wie gewohnt auf Kernel.org [15] oder warten, bis er in der Distribution Ihrer Wahl landet. (uba)

Infos

  1. Ankündigung zum Kernel 6.3: https://lkml.org/lkml/2023/3/5/308
  2. XFS-Updates: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=28e335208ce90c2cca9990543983b97ccc66f302
  3. Ext4-Optimierungen: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b07ce43db665a6b5a622d5bb1447950d7e1e3fb1
  4. Btrfs wird performanter: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=885ce48739189fac6645ff42d736ee0de0b5917d
  5. Updates für NFS: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=9fc2f99030b55027d84723b0dcbbe9f7e21b9c6c
  6. Netzwerk-News für Kernel 6.3: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5b7c4cabbb65f5c469464da6c5f614cbd7f730f2
  7. BlueField 3 von Nvidia: https://www.nvidia.com/en-us/networking/products/data-processing-unit/
  8. Input-Neuerungen: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=6c71297eaf713ece684a367ce9aff06069d715b9
  9. Neues in Rust: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=69adb0bcb833963050d82e645b6a1a0747662490
  10. EFI-Updates: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=06e1a81c4806d0b7f75f9d742ebf410718244e03
  11. ID-mapped Mounts: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=05e6295f7b5e05f09e369a3eb2882ec5b40fff20
  12. BPF-Neuerungen: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=ee8d72a157ebb4b8c4b8b664f5a78a341fede2ef
  13. Kryptografie-Updates: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=36289a03bcd3aabdf66de75cb6d1b4ee15726438
  14. Highlights im Grafikbereich: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a5c95ca18a98d742d0a4a04063c32556b5b66378
  15. Kernel.org: https://www.kernel.org
DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 3 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben