Linux 5.5 freigegeben: Wireguard-Fundament und Performance-Verbesserungen

Seite 4: Multichannel-Support bei CIFS und NVMe-SSD-Temperaturen

Inhaltsverzeichnis

Das CIFS-Dateisystem, mit dem sich Verzeichnisfreigaben von Samba- und Windows-Servern einbinden lassen, kann dank Multichannel-Support jetzt mehrere Verbindungen parallel zu Servern aufbauen, um so Performance und/oder Ausfallsicherheit zu verbessern (u. a. 1, 2, 3). Unter den anderen Änderungen am CIFS war Support für den Syscall flock(), mit dem man Advisory Locks bei Dateien setzen kann.

In den Anpassungen am NFS-Client-Code steckt Code, um Kopien von einem NFS-Server auf einen anderen zu veranlassen, bei dem die Server die Daten direkt austauschen (u. a. 1, 2); das entlastet Client-System und Netzwerk, weil es die Übertragung vom Quellserver über den Client zum Zielserver vermeidet. Eigentlich hätte der im Kernel enthaltene NFS-Server-Code (NFSd) erweitert werden sollen, um diese auch "Inter SSC Copy" oder "Server-to-Server Copy Offload" genannte Funktion ebenfalls zu unterstützen – aufgrund eines Missverständnisses blieb der Code allerdings außen vor und soll erst bei 5.6 folgen.

Um Zuverlässigkeit, Performance und Wartbarkeit zu verbessern, nutzt Ext4 jetzt für Direct I/O die bei XFS bereits bewährte Iomap-Infrastruktur, wenn Anwendungen den Datenträger unter Umgehung des Page Cache ansprechen wollen. Die Verwendung des XFS-Codes ist jetzt möglich, denn die XFS-Entwickler haben ihren Iomap-Code separiert, damit andere Dateisysteme diese nutzen können und vergleichbaren Code nicht selbst entwickeln müssen.

Unter den weiteren Änderungen am Ext4-Dateisystem ist die Möglichkeit, die dateisystemeigene Verschlüsselung auch bei Blockgrößen verwenden zu können, die kleiner als eine Arbeitsspeicherseite (Page) sind.

Im bei Linux 5.4 integrierten exFAT-Code gab es einige Aufräumarbeiten; parallel schreitet die Entwicklung und Begutachtung einer neueren Code-Basis zur Unterstützung des Dateisystems von Microsoft weiter voran.

Einige weitere Neuerungen rund um vom Linux-Kernel unterstützte Dateisysteme nennen die Merge-Commits von EROFS, F2FS, Fsverity, GFS2, XFS sowie Ext2/Quota/Reiserfs.

Linux 5.5 bringt einen weiteren Weg, um Intels Optane DC Persistent Memory einzubinden.

Der neue Hmem-Treiber bringt einen weiteren Weg, nicht-flüchtige Arbeitsspeichermodule wie Intels Optane DC Persistent Memory zu verwenden. Über den Treiber lassen sich die Speicherbereiche solcher Module ansprechen, wenn das System diese als "High Bandwidth Memory Pool" konfiguriert, wie es bei EFI 2.8 in der ACPI-Spezifikation definiert wurde. Linux nutzt diesen Bereiche dann nicht als RAM, kann sie über den Hmem-Treiber aber gezielt einzelnen Anwendungen zur Verfügung stellen, die sie via DAX (Direct Access) explizit einbinden müssen.

Der Kernel liest jetzt die Temperatur von NVMe-Datenträgern aus und stellt sie so bereit, dass Programme wie sensors den Wert ausgeben.

IO-Uring erhielt allerlei Feinschliff, um die Performance des jüngst bei Linux 5.1 integrierten IO-Interface für asynchrone Datenträgerzugriffe (AIO) zu verbessern (u. a. 1, 2). Einige der Änderungen rüsten auch weitere Funktionen nach, etwa die Unterstützung des vor allem für Netzwerkübertragungen verwendeten Syscall accept().

Linux 5.5 beseitigt die Ursache für einen I/O-Fehler, durch den bei einigen modernen SSDs der Trim-Vorgang misslingt, der auch als Discard bekannt ist; das war eines der Probleme, die jüngst bei Linux-Experimenten auf dem optimalen PC 2020 der c't aufgetreten sind.

Unter den Umbauten am Btrfs-Code war eine Optimierung am Llseek-Code von Btrfs. Sie verspricht deutliche Performance-Zuwächse in Situationen, wo mehrerer Programme parallel in einer Datei lesen oder schreiben und dabei ständig die Position in der Datei per Fseek anpassen. Ein spezieller Test, mit dem der Entwickler explizit den Gewinn durch den Umbau zeigen will, lief dadurch rund achtzig Prozent schneller ab.

Einige weitere Neuerungen rund um den Storage-Support nennen die Kommentare der wichtigsten Git-Merges bei Ceph, NVDIMM, NFSd, SCSI und UBI/UBIFS/JFFS2.