Betriebssysteme: Linux 4.20 beschleunigt Dateizugriffe, verhindert Ausfälle

Auch wenn die letzte Woche etwas unruhig gewesen sei, gebe es keinen Grund. die finale Version von Linux 4.20 zu verzögern, schreibt Linus Torvalds in seiner Freigabe-E-Mail(öffnet im neuen Fenster) . Den Sprung auf die Versionsnummer 5.0 hatte er bereits zu Anfang des Entwicklungszyklus von Linux 4.20 auf später verschoben. Die Sicherheitslücke Spectre v2 bereitet den Linux-Entwicklern weiterhin Kopfzerbrechen, neue Patches sollen die Probleme jedoch in den Griff kriegen. Von Facebook kommt eine Funktion, die zur Früherkennung von Überlastungen dient, und PCI-Geräte können künftig direkt miteinander kommunizieren.
Die negativen Auswirkungen von Spectre und Meltdown auf die Leistung des Linux-Kernels beschäftigen die Kernel-Hacker nach wie vor. Die Patches, die die Spectre v2 genannte Sicherheitslücke schließen sollten, hatten in ersten Vorabversionen von Linux 4.20 und den stabilen Kernel-Versionen 4.19.2, 4.14.81 und 4.9.137 zu so massiven Leistungseinbrüchen geführt, dass sie bald wieder entfernt wurden . Zwischenzeitlich wurden die Reparaturen so verbessert, dass sie kaum noch Geschwindigkeitseinbußen verursachen. Nichtsdestotrotz gibt es den Parameter spectre_v2_user= , mit dem ein erweiterter Schutz aktiviert werden kann(öffnet im neuen Fenster) , der aber mit Leistungseinbußen einhergehen könnte.
Speck fliegt raus, das schnellere Adiatum kommt
Nach einer hitzig geführten Diskussion wurde der Kryptoalgorithmus Speck, der von der NSA beigesteuert wurde, aus dem Linux-Kernel entfernt . Als Ersatz soll der von Google entwickelte Algorithmus Adiantum dienen , der auf XChaCha12, einer εA∆U Hash-Funktion von Poly1305(öffnet im neuen Fenster) aus der NH-Familie(öffnet im neuen Fenster) und AES-256 basiert. Adiantum soll ebenso wie Speck besonders auf weniger leistungsfähigen Systemen laufen und sogar 30 Prozent schneller sein als Speck. Ein neues, aber gänzlich undokumentiertes Programm(öffnet im neuen Fenster) sammelt Statistiken des Crypto-API und lässt sich im Userspace starten.
Facebook hat Code beigesteuert, mit dem sich Informationen sammeln lassen, durch die eingegrenzt werden kann, warum ein System langsamer läuft als gewohnt. Die sogenannten Pressure-stall Informationen - kurz PSI - werden im Verzeichnis /proc/pressure/ in drei Dateien abgelegt. Darin wird festgehalten, wie lange CPU, Arbeitsspeicher und I/O-Subsystem überlastet waren. Außerdem liefert PSI Informationen zu den Tasks der Control Groups. Facebook konnte so nach eigenen Angaben die Effizienz seiner Server steigern, indem Probleme rechtzeitig erkannt wurden, wie ein Artikel bei LWN.net(öffnet im neuen Fenster) erläutert.
Optimierte Dateistrukturen und abgespecktes RCU
Der als eXtensible Array (XArray) betitelte Nachfolger(öffnet im neuen Fenster) der Datenstruktur Radix-Tree ist nach langer Entwicklungszeit im Linux-Kernel aufgenommen worden. XArray bietet im Gegensatz zu seinem Vorgänger einen verbesserten Cache und muss nicht mehr zunächst in den Hauptspeicher kopiert werden. Der Page-Cache wurde bereits so angepasst, dass er XArray nutzen kann. Zudem wurde das Subsystem Read-Copy-Update (RCU) grundlegend überarbeitet. Statt einer Vielzahl von Optionen gibt es jetzt nur noch zwei Basisoptionen, eine für Real-Time-Kernel und eine für präemptive Kernels.
Verbesserte Grafik und schnellere Dateizugriffe
Die Entwickler der Treiber Amdgpu für Grafikkarten von AMD haben in diesem Entwicklungszyklus vor allem die Unterstützung neuer Grafikchips erweitert . Dazu gehören die neue 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 ab. Deshalb wurde der Code für alle drei APUs weitgehend zusammengeführt. Zudem wurde der Code für den Vega-20-Chip verbessert.
Der freie Treiber Nouveau für Grafikchips von Nvidia bringt eine erste und allenfalls rudimentäre Unterstützung für HDMI 2.0 mit, die die Ausgabe auf hochauflösenden Monitoren verbessern soll. Bei dem Intel-Treiber gab es die üblichen kleinen Verbesserungen, etwa für den zukünftigen Chip Icelake Gen 11.
Direkter Kontakt zwischen PCI-Geräten
Künftig können mit P2PDMA (Peer-To-Peer Direct Memory Access) PCI-Geräte Daten direkt untereinander austauschen. Was auf den ersten Blick vor allem bei einem Verbund von Grafikkarten zum Tragen kommt, kann aber auch in anderen Szenarien von Nutzen sein. Vorerst funktioniert P2PDMA 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 der Multiqueue-Block-API, die unter anderem dank mehrfacher Warteschleifen Zugriffe beschleunigt. Damit können auch die Energiesparmodi der Datenträger genutzt werden. Mit dem Wechsel kann das alte Block-Subsystem entfernt werden, was für die nächste Ausgabe des Linux-Kernels auch geplant ist. Auch SMB3 (Server Messaging Block) des Common Internet File Systems erhielt einige Patches, die Zugriffe auf Samba-Freigabe und Windows-Dateiserver beschleunigt. Das Netzwerkdateisystem NFS erhält die Möglichkeit des asynchronen Kopierens.
Beschleunigtes Btrfs und Netzwerkoptimierungen
Verbesserungen gibt es auch im Bereich der Datenträgerverwaltung und Dateisysteme, wenn auch eher bescheidene. Das RAID-Subsystem hat insbesondere bei der Unterstützung von RAID10 einige Bugfixes erhalten, die in Zukunft Speicherlecks und Blockaden verhindern sollen. Bei Btrfs gibt es neuen Code, der die Leistung erhöhen soll. Gleiches gilt für FUSE (File System in User Space), das zahlreiche Dateisysteme mit einfachen Benutzerrechten ins System einbinden kann.
Dem AF_XDP-Subsystem (Express Data Path), das bereits in Linux 4.18 integriert wurde, gelingt es künftig, den damit einhergehenden Zero-Copy-Mechanismus im Netzwerk-Stack zu verwenden. Damit entfällt bei hochperformanten Netzwerk-Frameworks der aufwendige Zwischenschritt des Kopierens von Dateien in den Arbeitsspeicher, wodurch die gesamte Netzwerkinfrastruktur beschleunigt wird. Der Fair-Queue-Scheduler erhält einen überarbeiteten Algorithmus, der das Versenden von TCP-Pakten besser koordiniert. Nach dem Earliest Departure Time genannten Verfahren werden Round-Trip-Zeiten zuverlässiger kalkuliert und damit der Takt der zu sendenden Netzwerkpakete beschleunigt. Der Quellcode von Linux 4.20 ist unter kernel.org(öffnet im neuen Fenster) erhältlich.



