Aus Linux-Magazin 03/2019

Kernel 4.20: Spectre-Nachbeben, P2P für PCI, Adiantum

© tomertu, 123RF

Spectre 2 macht als Wiedergänger weiter die Welt der Kernelentwickler unsicher. Außerdem muss der Speck-Algorithmus der NSA Googles Adiantum weichen, und PCI-Geräte reden künftig auf Peer-to-Peer-Basis direkt miteinander. Das sind nur einige der Updates für den Ende 2018 veröffentlichten Kernel 4.20.

In diesem Jahr spielte Linus Torvalds nicht die Rolle von Knecht Ruprecht, sondern das Christkind. Anstatt die Entwickler mit der verbalen Rute zu knechten, übergab er einen Tag vor Weihnachten den fertigen Linux-Kernel 4.20 an die Community. Version 5.0 spart er sich für die erste Kernelrelease 2019 auf, Geschenke bringt aber auch Kernel 4.20.

Speck ist weg

Eine überraschende Wendung gab es zum Beispiel im Streit um den Krypto-Algorithmus Speck, der ursprünglich vom amerikanischen Geheimdienst NSA stammt. Er landete erst kürzlich im Kernel, um auf IoT- und Low-End-Geräten mit Googles Android zu laufen, die keine native Hardware-gestützte Verschlüsselung beherrschen.

Doch es gab bereits länger schwerwiegende technische Kritik an Speck. Ein Vorwurf lautet, dass die NSA falsche und irreführende technische Informationen zum Algorithmus geliefert habe [1]. Diese Probleme trugen dazu bei, dass die Software keinen ISO-Status erhielt. Mit dem Argument, dass eine schlechte Verschlüsselung für solche Low-End-Geräte besser sei als gar keine, schaffte es der Algorithmus dennoch kurzzeitig in den Linux-Kernel.

Googles Eric Biggers hatte Speck zunächst unterstützt, ruderte aber später zurück und schlug am Ende einen neuen Algorithmus vor. Adiantum [2] stammt von Biggers’ Kollegen Paul Crowley, basiert auf Xchacha 12 und einer Hashfunktion von Poly1305. Er verschlüsselt etwa 20 Prozent schneller als der ursprünglich angepeilte Verschlüsselungsmodus Hpolyc und 30 Prozent schneller als Speck128/256-XTS und landet aller Voraussicht nach in Kernel 5.0.

Im Verzeichnis für Kryptotools findet sich neuerdings ein sparsam dokumentiertes Programm namens »getstat.c«. Es lässt sich im Userspace starten und sammelt Statistiken über das Kernel-Krypto-API und die verfügbaren Krypto-Algorithmen.

PSI

Von den Facebook-Entwicklern stammt Code, der herauszufinden hilft, warum ein System langsamer läuft als gewohnt. Die so genannten Pressure Stall Informations (PSI) landen in Form dreier Dateien im Ordner »/proc/pressure/«. Sie halten fest, wie lange CPU, Arbeitsspeicher und I/O-Subsystem überlastet waren. Außerdem liefert sie Informationen zu den Tasks der Control Groups. Facebook konnte auf diesem Weg nach eigener Angabe die Effizienz seiner Server steigern, weil Admins Performance-Engpässe so früher erkannten [3].

X-Array und RCU

Der als X-Array (Extensible Array) betitelte Nachfolger der Datenstruktur Radix-Tree ist nach langer Entwicklungszeit im Kernel gelandet. Im Gegensatz zu seinem Vorgänger bietet er einen verbesserten Cache und braucht keinen Zwischenstopp im Hauptspeicher. Den Pagecache haben die Entwickler schon so angepasst, dass er X-Array verwenden kann.

Auch das Subsystem Read-Copy-Update (RCU) haben sie überarbeitet. Statt einer Vielzahl von Parametern gibt es jetzt nur noch zwei Basisoptionen, eine für Echtzeit-Kernel, eine für präemptive Kernel.

Schutz on Demand

Die Patches für Spectre und Meltdown wirken sich negativ auf die Leistung des Linux-Kernels aus. Die für Spectres Version 2 hatten in den ersten Vorabversionen von Linux 4.20 und bei den stabilen Kernelversionen 4.19.2, 4.14.81 und 4.9.137 zu so massiven Leistungseinbrüchen geführt, dass die Entwickler sie rasch wieder entfernten. Der überarbeitete Ersatzcode bietet weniger Schutz, verursacht aber kaum noch Geschwindigkeitseinbußen. Wer dennoch zugunsten starker Sicherheit mit den Leistungseinbußen leben kann, darf den ursprünglichen Schutzmechanismus über den Parameter »spectre_v2_user=« aktivieren.

P2P für PCI

Künftig dürfen mit P2P-DMA (Peer-to-Peer Direct Memory Access) PCI-Geräte Daten direkt untereinander austauschen. Wovon auf den ersten Blick vor allem Grafikkarten-Verbünde profitieren, kann auch in anderen Szenarien von Nutzen sein. Vorerst funktioniert P2P-DMA mit dem NVMe-Treiber, der Daten von solchen Datenträgern per Remote DMA direkt an den Netzwerkstack übergeben kann und so Prozessor- und RAM-Zugriffe verringert.

Zahlreiche Dateisystem-Treiber verwenden jetzt das neue Block-Subsystem Blk-MQ samt dem Multiqueue-Block-API, das unter anderem Zugriffe dank mehrfacher Warteschleifen beschleunigt. Damit lassen sich auch die Energiesparmodi der Datenträger verwenden. Aufgrund des Umstiegs dürfen die Kernelhacker jetzt das alte Block-Subsystem entfernen. Diese Arbeit ist für die nächste Kernel-Ausgabe geplant.

Einige Patches erhielt auch SMB 3 (Server Messaging Block) des Common Internet File Systems (Cifs). Sie beschleunigen die Zugriffe auf Samba-Freigaben und Windows-Dateiserver. Das Netzwerk-Dateisystem NFS erhält die Möglichkeit, Daten asynchron zu kopieren.

Beschleunigtes Btr-FS

Verbesserungen warten auch im Bereich der Datenträgerverwaltung und Dateisysteme – wenn auch eher bescheidene. Das Raid-Subsystem hat insbesondere bei der Unterstützung von Raid 10 einige Bugfixes erhalten, die in Zukunft Speicherlecks und Hänger verhindern sollen. Überschattet werden die Fortschritte am Raid-System allerdings von der Nachricht, dass »md«-Treiber-Maintainer Shaohua Li um Weihnachten herum einem Krebsleiden erlag. Jens Axboe übernimmt provisorisch die Maintainer-Rolle für diesen Bereich.

Bei Btr-FS soll neu eingeführter Code die Leistung erhöhen. Gleiches gilt für Fuse (File System in Userspace), das in der Lage ist, zahlreiche Dateisysteme mit einfachen Benutzerrechten ins System einzubinden (Abbildung 1).

Abbildung 1: Fuse soll im neuen Kernel 4.20 performanter arbeiten.

Abbildung 1: Fuse soll im neuen Kernel 4.20 performanter arbeiten.

Das »af_xdp«-Subsystem (Express Data Path) ist schon seit Linux 4.18 an Bord. Neuerdings kann es den Zero-Copy-Mechanismus im Netzwerk-Stack verwenden. Damit entfällt bei hochperformanten Netzwerk-Frameworks der aufwändige Zwischenschritt des Kopierens von Dateien in den RAM, was die ganze Netzwerk-Infrastruktur beschleunigt.

Der Fair-Queue-Scheduler erhält einen überarbeiteten Algorithmus, der das Versenden von TCP-Paketen besser koordiniert. Das Earliest Departure Time genannte Verfahren kalkuliert Roundtrip-Zeiten zuverlässiger und beschleunigt damit den Takt der zu sendenden Netzwerkpakete.

Grafik reloaded

Die Entwickler der AMDGPU-Treiber für Grafikkarten von AMD haben in diesem Entwicklungszyklus vor allem den Support für neuere Grafikchips ausgebaut. Dazu gehören beispielsweise die Raven-Ridge-APU alias Raven 2 sowie der Raven-Ridge-Nachfolger Picasso. Lediglich in einigen wenigen Details weichen die neuen Generationen von den bekannten Raven-Ridge-Prozessoren ab. Aus diesem Grund haben die Entwickler den Code für alle drei APUs auch weitgehend zusammengeführt.

Auch mit AMDs Vega-20-Chips kommt der aktuelle Linux-Kernel jetzt besser zurecht. Die genannten Chips verfügen über zwei UVD-Units, die Videos dekodieren, und sind speziell auf Machine-Learning-Einsätze ausgelegt.

Der freie Nouveau-Treiber für Nvidia-Grafikchips bringt eine erste und allenfalls rudimentäre Unterstützung für HDMI 2.0 mit, was die Ausgabe auf hochauflösenden Monitoren verbessern soll. Nicht zuletzt gab es am Intel-Treiber kleine Verbesserungen, etwa für den künftigen Chip Icelake Gen 11.

Wie gewohnt wartet der Quellcode von Linux 4.20 auf http://kernel.org.

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 2 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