c't 1/2019
S. 60
Kernel-Log
Linux 4.20
Aufmacherbild

Kernel-Log

Linux 4.20: Bessere Auslastungsanzeige und verschachteltes Virtualisieren

Die neue Linux-Version 4.20 bringt eine Reihe von Performance-Verbesserungen und wirft den umstrittenen NSA-Algorithmus Speck wieder raus. Unter zahlreichen neuen und verbesserten Treibern sind welche für 2.5-GBit-Ethernet-Chips von Intel und das Magic Trackpad 2 von Apple.

Linus Torvalds dürfte den Linux-Kernel 4.20 freigeben, während diese c’t am Kiosk liegt. Eines seiner Highlights ist das PSI (Pressure-stall Information) genannte Feature, mit dem Administratoren leichter eingrenzen können, warum ein System plötzlich langsamer als gewohnt arbeitet; die von PSI aufbereiteten Informationen sollen Admins von Rechenzentren zudem helfen, die verfügbaren Systemressourcen besser auszuschöpfen. Dazu hat Facebook die Technik entwickelt, in seinen Rechenzentren bereits eingesetzt und nun zu Linux beigesteuert. Die Entwickler von Android wollen die Technik aber auch aufgreifen, damit ihr Betriebssystem unter Last besser reagiert.

PSI (Pressure-stall Information) hilft bei der Ursachenforschung, wenn ein System plötzlich lahmt.

Durch PSI stellt der Kernel das Verzeichnis /proc/pressure/ mit drei Dateien bereit, die an /proc/loadavg erinnern. Sie liefern die Summe der Zeit, die Prozessor, Arbeitsspeicher und I/O-Subsystem in den letzten 10, 60 und 300 Sekunden überlastet waren. Die Angaben in der „some“-Zeile von /proc/pressure/io zeigen beispielsweise den Zeitraum, den Programme im Beobachtungszeitraum nicht voran kamen, weil sie auf Schreib- oder Leseoperationen gewartet haben. Die „full“-Zeile summiert Zeiten, in denen das alle aktiven Tasks betraf. Wenn das über einen längeren Zeitraum häufig vorkommt, fährt das System am Anschlag; es verrichtet die ihm zugeteilten Aufgaben nur noch ineffizient und fährt sich womöglich bald fest.

Zum Kasten: Performance-Problem behoben

Direktkommunikation

PCIe-Geräte können jetzt Daten direkt austauschen. Die P2PDMA (Peer-To-Peer Direct Memory Access) genannte Funktion entlastet so Prozessor und Hauptspeicher, was die Systemperformance steigert. Die Technik ist etwa zur Kopplung von Grafikkarten interessant. Linux beherrscht P2PDMA aber vorerst nur in einigen Treibern. Einer davon ist der NVMe-Treiber, damit NVMe-SSDs von Servern die Daten direkt an den Netzwerkchip übergeben können, die Clients per Remote DMA (RDMA) anfordern.

Sicherheit

Die Entwickler haben die Unterstützung für den Crypto-Algorithmus Speck wieder rausgeworfen, die Google-Entwickler erst vor einem halben Jahr in Linux 4.18 eingebracht hatten. Speck war schon damals umstritten, weil es von der amerikanischen Sicherheitsbehörde NSA stammt. Das ist ein Grund für den Rauswurf, der aber durch etwas anderes in Gang kam: Google hat zwischenzeitlich die Pläne verworfen, Speck bei günstigen Android-Geräten einzusetzen. Die Linux-Entwickler haben den Algorithmus daher auch aus Linux 4.18.19 und 4.19.2 entfernt.

Prozessoren

Linux 4.20 unterstützt die für den chinesischen Markt produzierte Prozessorserie Dhyana. Deren Hersteller Hygon hat diese nicht von Grund auf neu entwickelt, sondern AMDs Zen-Technik lizenziert. Die unter anderem in chinesischen Supercomputern verwendenden CPUs sind daher enge Verwandte des AMD Epyc.

Ebenfalls neu ist Support für die zwei ABI-Varianten der 32-Bit-Prozessor-Architektur C-Sky. Diese ist von einem alten Motorola-Kern abgeleitet und steckt etwa im SoC des 5-Euro-Bastlerboard C-Sky GX6605S. Das hat allerdings nur 64 MByte DDR2-RAM und 4 MByte Flash-Speicher, daher eignet es sich nicht für Desktop-PCs, sondern konkurriert eher mit der Arduino-Klasse.

Das Unternehmen C-Sky macht auch bei der quelloffenen Architektur RISC-V mit. Support für diese wurde bei 4.20 weiter verbessert, daher beherrscht ein für diesen Befehlssatz übersetztes Linux jetzt auch den Fast Userspace Mutex (Futex), der die Performance verbessert.

Verschachtelt virtualisieren

Bei der KVM-Virtualisierung mit Intel-Prozessoren gelingt es nun von Haus aus, innerhalb einer Virtual Machine (VM) eine weitere zu starten. Durch diese „Nested Virtualization“ kann man mit einem Linux-Host beispielsweise ein Windows 10 mit KVM betreiben, in der sich mit Hyper-V arbeitende Container oder VMs ganz normal verwenden lassen.

Diese Funktion ist auch für Cloud-Anbieter interessant, die ihren Kunden typischerweise VMs stellen, in denen man bislang oft nicht virtualisieren kann. Diese Funktion ist auch in älteren Linux-Versionen enthalten, dort aber noch nicht so ausgereift. Man muss sie daher explizit aktivieren, indem man beim Laden von kvm_intel den Parameter nested=1 setzt.

Mit dem neuen Udmabuf (Userspace DMA Buffer) sollen sich Bedienoberflächen von VMs effizienter auf dem Wirt darstellen lassen; außerdem kann die Technik die Weiterverarbeitung durch Remote-Desktop-Lösungen wie Spice erleichtern. Beides gelingt mit Hilfe der DMA-Buffer-Sharing-Technik DMA_Buf, die das bei KVM-Virtualierung genutzte Qemu durch Udmabuf nun nutzen kann. Dadurch kann beispielsweise der Grafikprozessor des Hosts die Bilddaten eines Gasts direkt ansprechen, was das zeitraubende Kopieren der Speicherinhalte effizienter macht und im Idealfall sogar komplett vermeidet.

Mehr Geschwindigkeit

Beim Dateisystem Btrfs gab es eine Reihe von Performance-Verbesserungen. Selbiges gilt für den SMB3-Support von CIFS, das Dateifreigaben von Samba- oder Windows-Servern einbindet. Die neuere und mit mehreren Warteschlangen arbeitende Infrastruktur zum Ansprechen von Datenträgern, Blk-MQ, unterstützt nun auch Stromspartechniken. Die Entwickler haben zudem einige Vorarbeiten erledigt, um die ältere Block-Layer-Infrastruktur bald rauszuwerfen – vermutlich schon beim Nachfolger von Linux 4.20.

Das bei 4.18 integrierte „AF_XDP“ kann Netzwerkpakete jetzt weiterverarbeiten, ohne die Daten erst kopieren zu müssen. Der Zero-Copy-Support des für High Performance Packet Processing gedachten Frameworks legt dadurch an Geschwindigkeit zu. Laut dem zuständigen Entwickler soll AF_XDP dadurch in einigen Anwendungsszenarien jetzt fast das Performance-Niveau erreichen, das das komplett im Userspace arbeitende DPDK (Data Plane Development Kit) erzielt.

Der TCP-Stack und der Fair-Queue-Scheduler verwenden jetzt ein neues Verfahren, um über den Versendezeitpunkt zu entscheiden. Der „Earliest Departure Time“ genannte Ansatz soll dadurch Skalierbarkeit, Kalkulation der Round-Trip-Time (RTT) und damit die Schrittsteuerung (das „Pacing“) verbessern. Der Code ist von einem Vortrag inspiriert, den Netzwerk-Urgestein Van Jacobson vor einigen Monaten auf einer Konferenz der Netzwerkstack-Entwickler von Linux gehalten hatte.

Neue Treiber

Der Linux-Kernel bringt jetzt einen Netzwerktreiber für den Intel I225-LM/I225-V 2.5GBASE-T Ethernet Controller mit. Diese Netzwerkchips, die Daten mit 2.5 GBit/s über die verbreiteten Cat5E/Cat6-Netzwerkkabel übertragen, will Intel offenbar in den nächsten Monaten einführen.

Neu dabei ist auch Support für das Apple Magic Trackpad 2 und die Vibrationsfunktion des Xbox One S Controller. Außerdem unterstützt Linux jetzt die Soundkarten Creative Sound BlasterX AE-5 und ZxR. Zum Kernel stieß ferner der Cedrus VPU Decoder Driver, der für Support die Video Engine einiger Allwinner-Prozessoren sorgt, die sich auf einer Reihe von Bastelboards finden.

Über den neuen „LED pattern driver“ kann der Kernel die vom ihm betreuten LEDs in konfigurierbaren Zyklen heller oder dunkler stellen; das lässt sich mit Dateien innerhalb des Sysfs-Dateisystems festlegen, sodass man für LED-Anzeigen oder Warnleuchten keine zusätzliche Software installieren muss.

Linux 4.20 kann die Prozessortemperatur bei einer Reihe neuerer AMD-Prozessoren auslesen. Neu dabei ist auch Support für Hardware-Monitoring-Chips wie NCT6797D und NCT6798D, die auf einer Reihe neuerer Mainboards sitzen. Linux 4.20 unterstützt nun auch das Raspberry Pi Compute Module 3, das die modifizierten Kernel der Raspberry-Pi-Foundation schon länger verwenden können. Der neue Kernel bringt zudem Support für über ein Dutzend verschiedene Einplatinencomputer mit ARM- oder ARM64-Kern.

Linux 5.0 vertagt

Nachdem Linus Torvalds sich in der zweiten Hälfte der 4.19er-Entwicklung eine Auszeit genommen hatte, lief die Entwicklung von Linux 4.20 weitgehend wie gewohnt. Die Auszeit hatte Linus Torvalds angesetzt, um sein Verhalten und seine Ausdrucksweisen gegenüber anderen Entwicklern zu überdenken. Das und der bei Linux 4.19 eingeführte Verhaltenskodex („Code of Conduct“) machen sich ein klein wenig bemerkbar: Linus Torvalds hielt mit Kritik keineswegs hinterm Berg, äußerte diese aber rücksichtsvoll, wie es moderne Umgangsformen gebieten.

Nachdem auf 3.19 vor einigen Jahren 4.0 folgte, weil Linus Torvalds die zweite Nummer zu groß wurde, hatten viele Beobachter den nächsten Versionssprung beim Nachfolger von 4.19 erwartet. Davon hat Torvalds unter anderem abgesehen, weil er kein Muster etablieren wolle. Er deutete aber an, der Sprung auf 5.0 würde 2019 erfolgen, denn dann „würden ihm endgültig die Finger und Zehen zum Zählen ausgehen“. (thl@ct.de)