Original-URL des Artikels: https://www.golem.de/news/betriebssysteme-linux-5-1-optimiert-asynchrone-zugriffe-1905-141049.html    Veröffentlicht: 06.05.2019 09:12    Kurz-URL: https://glm.io/141049

Betriebssysteme

Linux 5.1 optimiert asynchrone Zugriffe

Die Optimierungen in Linux 5.1 sind ziemlich zahlreich: verbesserte asynchrone Operationen, ein ausgemustertes Dateiformat, eine Abschirmung für externe USB-Datenträger, beschleunigtes WLAN und optimiertes Live-Patching.

Linus Torvalds hat die Version 5.1 des Linux-Kernels freigegeben. Seit der letzten Vorabversion habe es zwar wenige Änderungen gegeben, einige seien allerdings erst in letzter Minute eingereicht worden. Er selbst ist an der Ausmusterung des alten Dateiformats a.out beteiligt. Eine neue Variante für asynchrone Operationen verspricht Beschleunigung und soll vor allem für Entwickler einfacher zu handhaben sein.

Die Aktualisierung des Systems im laufenden Betrieb kann künftig kumulative Patches abarbeiten. Externe USB-Datenträger können gesondert deaktiviert werden. Es gibt auch wieder Arbeiten, die die Leistungseinbußen auffangen, die durch die Patches gegen die Sicherheitslücken Spectre verursacht wurden. Außerdem gibt es neue Funktionen in Treibern für Grafikchips der Hersteller AMD, Intel und Nvidia.

Optimiertes Asynchronous I/O und DM ohne Initramfs

Um Betriebssysteme zu beschleunigen, gibt es sogenannte asynchrone Ein- und Ausgaben (Asynchronous I/O). Damit können Anwendungen zwischenzeitlich andere Aufgaben erledigen, bis etwa eine Schreibfunktion im Hintergrund ihre Arbeit beendet hat. Der Kernel kümmert sich um die Benachrichtigung der Anwendung. Asynchronous I/O gibt es zwar bereits seit Linux 2.5, allerdings sei die bisherige Implementation ineffizient und schwierig zu verwenden, kritisieren viele. Vom Kernel-Entwickler Jens Axboe kommt jetzt eine neue Variante mit dem Namen io_uring, die vor allem die Geschwindigkeit asynchroner Lese- und Schreibaufgaben erhöhen und sich zudem besser skalieren lassen soll. Außerdem gibt es eine Userspace-Bibliothek, über die Entwickler die wichtigsten Funktionen von io_uring ansprechen können.

Künftig können über den Device Mapper (DM) angesprochene virtuelle blockorientierte Geräte auch außerhalb eines Initramfs-Archivs beim Systemstart angesprochen werden. In Initramfs werden für gewöhnlich die für den Start benötigten Dateien, etwa Basistreiber gelagert. Über einen neuen Kernel-Parameter lässt sich stattdessen ein DM-Dateisystem direkt starten, beispielsweise ein RAID-Verbund.

Mit Fanotify wurde bereits in Linux 2.6.36 eine Schnittstelle zur Überwachung von Änderungen an Dateisystemen eingeführt, das als Ersatz für Inotify dienen sollte. Inotify gilt als veraltet und funktioniert nur schlecht auf großen Dateisystemen. Jetzt wurde die Arbeit an Fanotify - nach einigen Anpassungen in Linux 4.20 - erneut aufgenommen und für die inzwischen immer größer werdenden Datenträger und die darauf eingesetzten Dateisysteme mit der Funktion Super Block Root Watch angepasst.

Ausgemustertes Dateiformat und optimiertes Live-Patching

Die Unterstützung für das ausführbare Dateiformat a.out (Assembler Output) wird ab dem aktuellen Kernel 5.1 beendet. Längst wurde das Dateiformat durch das flexiblere ELF (Executable and Linking Format) und COFF (Common Object File Format) abgelöst. Moderne Compiler unterstützten das Format ohnehin nicht mehr, schreibt Torvalds und entfernte kurzerhand den entsprechenden Code aus Core Dump, mit dem Speicherauszüge im Falle eines Absturzes des Linux-Kernels generiert werden. Der Code sei kaum gepflegt und voller Bugs. Ganz entfernt wird die Unterstützung von a.out aber nicht, im unwahrscheinlichen Fall, dass es Entwickler gibt, die das Dateiformat noch benötigen, kann es wieder aktiviert werden, notfalls auch im User-Space, wie Entwickler Alan Cox vorschlägt.

Das Live Patching, also die Aktualisierung des Kernels im laufenden Betrieb ohne Neustart, unterstützt jetzt kumulative Patches. Dafür wurde das sogenannte Atomic Replace umgesetzt, das die Aktualisierung einzelner Komponenten erlaubt. Damit lassen sich mehrere Updates in einem Rutsch installieren, auch ältere Aktualisierungen in Abhängigkeit zu neueren. Auch können einzelne Komponenten ausgewählt oder wieder entfernt werden. Administrator und Benutzer dürften mit dem neuen Zusatz zum Live Patching nicht nur mehr Optionen beim Einspielen von Aktualisierungen bekommen, sondern auch klar erkennen können, welcher Code gerade in Gebrauch ist.

NVDIMMs als Arbeitsspeicher und verbesserter Spectre-Schutz

Künftig wird es möglich, NVDIMMs als Arbeitsspeicher in das System einzubinden. Zwar sind die Zugriffe auf solche Laufwerke mit ihrem nichtflüchtigen Speicher nicht so schnell wie solche auf dem flüchtigen Arbeitsspeicher, aber dennoch schnell genug, um in einigen Szenarien als Speichererweiterung infrage zu kommen, etwa auf Datenbankservern oder als günstigere Alternative in virtuellen Servern.

Auch in Linux 5.1 gibt es Patches, die Leistungsverluste verringern, die durch Maßnahmen gegen die Sicherheitslücke in CPUs, Spectre, verursacht wurden. Eine neue Funktion deaktiviert in einigen Fällen den Schutz Speculative Store Bypass Disable (SSBD), der Angriffe über Spectre v4 abfangen soll. Das soll besonders bei Code, der von Java Virtual Machines (JVM) ausgeführt wird, eine Rolle spielen, denn SSBD kann bei neuen Prozessen ausgeschaltet werden, die die JVM im User-Space startet. Der Schutz Retpoline für Spectre v2 erhielt ebenfalls einige Optimierungen, die die Leistung von einigen Treibern verbessern soll.

Mehr Schutz und neue Funktionen für Grafikkarten

Gegen Angriffe, die die Schutzmechanismen SMEP (Supervisor Mode Execution Protection), SMAP (Supervisor Mode Access Prevention) sowie UMIP (User-Mode Instruction Prevention) in CPUs ungewollt deaktivieren können, gibt es einen Patch, der die Schreibfunktionen auf die CPU-Schalter CR0 und CR4 deaktiviert.

Über einen neuen Schalter können künftig alle externen USB-Laufwerke deaktiviert werden, während interne weiterhin aktiviert bleiben. Dafür gibt es den Eintrag usbcore.authorized_default=2 im Verwaltungsdateisystem Sysfs. Alternativ kann die Option auch über die Anwendung USBguard aktiviert werden. Bislang gab es den Schalter nur für USB-Laufwerke, die drahtlos in das System eingebunden werden.

Verbesserte Treiber für Grafikchips von AMD, Intel und Nvidia

Der Direct-Rendering-Management-Treiber (DRM) aktiviert die sogenannte Fastboot-Option jetzt standardmäßig für Grafikeinheiten von Intel. Er sorgt für einen flackerfreien Start bei integrierten Grafikchips in den neueren Prozessoren ab der Skylake-Reihe und einigen Atom-SoCs. Die Grafikchips in Coffee-Lake-CPUs von Intel werden durch Graphics Virtualization Technology (GVT) unterstützt, was eine Beschleunigung von solchen Grafikeinheiten in virtualisierten Umgebungen wie Xen und der Kernel Virtual Machine (KVM) mit sich bringt. Zudem lassen sich auch mit HDCP 2.2 (High-bandwidth Digital Content Protection 2.2) verschlüsselte Inhalte mit Grafikchips von Intel ausgeben, sofern diese es unterstützen.

Der freie Treiber Nouveau für Grafikchips von Nvidia dürfte mit dem jetzt eingeführten Shared Virtual Memory (SVM) einen weiteren Leistungsschub erfahren. SVM ist eine der vielen Funktionen des Heterogenous Memory Management (HMM), das für Nouveau schrittweise ausgebaut wird und die Speicherverwaltung des Treibers deutlich modernisiert und verbessert. Dazu gehört auch die Unterstützung für Huge Pages durch Hugetkbfs sowie DAX-Mirroring. Diese Funktionen dienen als Basis für RDMA ODP (Remote Direct Memory Access On-Demand Paging), bei dem sich der Treiber einfacher genügend Teile des Arbeitsspeichers für einen selbst bestimmten Zeitraum sichern kann. RDMA ODP für Nouveau soll allerdings erst in der nächsten oder übernächsten Kernel-Version eingebaut werden.

Dem Treiber Amdgpu für Grafikeinheiten von AMD wurde die Energiesparfunktion Baco (Bus Active, Chip Off) für die aktuell verwendeten Chips Vega 10 und 20 hinzugefügt. AMD selbst nennt die Funktion Zerocore Power Mode. Sie sorgt dafür, dass die Grafikeinheiten weitgehend in den Ruhezustand versetzt werden können und nur noch die notwendigsten Komponenten des Grafikkerns aktiv bleiben.

Im Kern des DRM-Treibers wurde der Code für Multistream über die Displayport-Schnittstelle überarbeitet, er sollte jetzt zuverlässiger funktionieren. Das gilt vor allem für die Treiber Radeon, Amdgpu und Intels 915i-Treiber.

Mehr Unterstützung für ARM und RISC

Für ARMs Mali-Grafikchip arbeitet Arm Holdings bereits seit längerer Zeit an einem passenden Treiber für die Integration im Linux-Kernel. Jetzt ist der Code soweit gereift, dass die Entwickler ihn eingereicht haben. Der als Komeda bezeichnete Treiber bietet freilich nur 2D-Beschleunigung und die Mode-Settings, die automatisch die Auflösungen angeschlossener Monitore ermitteln. Für die 3D-Hardwarebeschleunigung braucht es noch Binär-Blobs. An einer komplett freien Variante arbeitet ein Entwicklerteam von Panfrost.

Zu den neu unterstützten ARM-basierten SoCs (System on a Chip) gehören unter anderem der i.MX8QuadXPlus von NXP, der Socionext Milbeaut SC2000 und der SoC BM1880 von Bitmain, der zwei ARM-A35-Kerne mit einem RISC-V-Kern kombiniert, wobei letzterer noch nicht mit dem neuen Treiber funktioniert. Nebenbei wurde die standardmäßige Anzahl der unterstützten ARM-CPU-Kerne auf 256 erhöht.

Optimierter Tickless Kernel und schnelleres WLAN

Tickless Kernels sind seit einiger Zeit möglich, etwa ab Windows 8, MacOS 10.4 und Linux seit Version 3.10. Seitdem werden Timer-Interrupts nicht mehr regelmäßig aktiviert, sondern durch einen sogenannten Governor verwaltet. Jetzt gibt es einen neuen Governor namens TEO (Timers Events Oriented), der besser mit dem CPUIdle-Framework zusammenarbeitet, der wiederum die verschiedenen Energiesparstufen der Prozessoren verwaltet.

Das Mac80211-Framework für drahtlose Verbindungen erhält eine Erweiterung für multiple BSSIDs (Basic Service Set Identification), über die die Mac-Adresse - die Hardwareadresse - von Access Points gesendet wird. Künftig können Access Points mehrere BSSIDs über eine einzige Funkbake übertragen. Zudem stellt der Mac80211-Treiber jetzt sicher, dass alle mit Access Points verbundenen Clients dieselbe Sendezeit erhalten, unabhängig davon, welche Datenrate die jeweiligen Clients unterstützen. Die Funktion gilt auch für mehrere Access Points in einem Netzwerk.

Im Treiber-Framework Devlink für Netzwerkgeräte gibt es jetzt die Möglichkeit Probleme mit Hardware in Echtzeit zu melden. Zudem lässt sich die Firmware über Devlink aktualisieren. Über eine API lassen sich zudem Informationen der eingesetzten Treiber sammeln. Außerdem wird TLS 1.3 jetzt vom Linux-Kernel unterstützt.

Diese und weitere Änderungen können in Linux 5.1 ausprobiert werden, dessen Quellcode unter kernel.org erhältlich ist.  (jt)


Verwandte Artikel:
Betriebssysteme: Linux 5.1 verbessert Live-Patching   
(18.03.2019, https://glm.io/140064 )
WSL 2: Wie Microsoft den Linux-Kernel auf Windows bringt   
(10.05.2019, https://glm.io/141177 )
Microsoft: Windows bekommt einen Linux-Kernel für WSL 2   
(07.05.2019, https://glm.io/141081 )
Linux-Kernel: Intel verbessert Thunderbolt-Treiber für Apple-Geräte   
(29.04.2019, https://glm.io/140945 )
VR: Nvidia erstellt freien Virtual-Link-Treiber für Linux   
(29.04.2019, https://glm.io/140930 )

© 1997–2020 Golem.de, https://www.golem.de/