Linux 5.1: Performance-Verbesserungen und neue Speichertechnik

Linux Kernel 5.1

Trends & News | Kernel-Log

Der bisher stiefmütterlich behandelte Datenträgerzugriff mit asynchronem I/O (AIO) wird deutlich attraktiver. Einem in der Anfangszeit von Linux zentralen Dateiformat geht es jetzt an den Kragen. Die Entwickler verbessern zudem die Unterstützung für Grafikkerne von ARM.

Nach neun Entwicklungswochen hat Linus Torvalds zum Wochenstart die Version 5.1 des von ihm gestarteten Kernels freigegeben. Wie üblich enthält auch er wieder eine Fülle neuer Features sowie viele neue oder signifikant verbesserte Treiber:

  • Mit dem neuen Linux-Kernel wird es deutlich attraktiver, Datenträger mittels asynchronem I/O (AIO) anzusprechen, wie es in der Windows-Welt schon lange üblich ist.
  • Linus Torvalds hat eigenhändig Vorbereitungen getroffen, um die Unterstützung für das Dateiformat a.out (Assembler Output) vollständig zu entfernen – das Objektformat also, das in den Anfangstagen von Linux typischerweise für ausführbare Dateien genutzt wurde.
  • Einen Meilenstein gab es bei den Umbauten zur Beseitigung des Jahr-2038-Problems.
  • Die für Prozessorkern-Designs bekannte Firma ARM hat einen Grafiktreiber beigesteuert. Zwei weitere Treiber für leistungsfähigere Grafikerne von ARM stehen dank der Open-Source-Community bereits in den Startlöchern.
  • Geringeren Stromverbrauch und zugleich bessere Performance verspricht der "Timer Events Oriented (TEO)" genannte CPUIdle-Governor.
  • Große Fortschritte gab es bei den seit über fünfzehn Jahren vorangetriebenen Bemühungen, Linux Security Modules (LSMs) wie SELinux, AppArmor, Smack durch "Stacking" parallel zu nutzen.
  • Linux 5.1 bringt einen ganzen Schwung kleinerer Performance-Optimierungen. Darunter "Airtime Fairness", mit dem sich das Funkspektrum von WLANs besser ausnutzen lässt.

Die folgenden Abschnitte und Artikelseiten liefern zahlreiche Details zu diesen und zahlreichen weiteren Neuerungen von Linux 5.1.

Linux 5.1 geht eine altbekannte Schwachstelle des Kernels an, denn die neue Version bringt endlich eine zeitgemäße Infrastruktur, um Daten asynchron zu lesen oder zu schreiben. Bei diesem "Asynchronous I/O" (AIO) können Programme eine Übertragung initiieren und dann andere Dinge erledigen, während der Kernel die I/O-Operation ausführt. Unter Windows arbeiten Programme häufig auf diese Weise, weil sie Performance und Reaktionsfreude verbessern kann. Die meiste Linux-Software macht sich AIO hingegen nicht zunutze; das liegt zum Teil an historischen Gründen, vor allem aber an der bisherigen AIO-Infrastruktur des Kernels, die allerlei Tücken birgt; sie steht daher seit Langem in der Kritik, wie die Anfänge der Artikel "Toward non-blocking asynchronous I/O" und "Fixing asynchronous I/O, again)" zeigen, die das angesehene Linux-Online-Magazin LWN.net vor zwei respektive drei Jahren publiziert hat.

Das weitgehend von Facebook-Mitarbeiter Jens Axboe geschriebene "io_uring" soll Linux hier endlich nach vorne bringen. Der Austausch von I/O-Operationen und -Daten mit dem Userspace erfolgt dabei über separate Ringbuffer. Um Latenzen auf ein Minimum zu reduzieren und das Performance-Potenzial moderner Hardware voll ausschöpfen, können Userspace-Anwendung dabei Polling anfordern; durch dieses ständige Abfragen gelangen Programme beispielsweise schneller an gelesene Daten, die der Kernel normalerweise erst zu größeren Bündeln sammeln würde, weil die sonst meist effizienter sind. Bei Facebook-Servern konnte der Entwickler damit einen Leistungszuwachs von 25 bis 33 Prozent messen.

Ein Dokument zu io_uring erläuter die Schwächen des bisherigen AIO-Interface. (Bild: Screeshot aus dem Paper)

Damit Anwendungsentwickler die neue I/O-Infrastruktur leicht verwenden können, hat Axboe die Userspace-Bibliothek liburing und ein Programmierbeispiel veröffentlicht. Außerdem hat der Entwickler ein Dokument publiziert, in dem er unter anderem Motivation, Design-Ziele, Arbeitsweise und Nutzungsszenarien von io_uring näher erläutert. Einen alternativen Einblick in die Technik liefert die LWN.net-Artikel "Ringing in a new asynchronous I/O API" und "io_uring, SCM_RIGHTS, and reference-count cycles"

Mit dem Gesamtpaket positioniert sich der Kernel letztlich gegen Lösungen wie das Storage Performance Development Kit (SPDK), die den Kernel bei I/O-Operationen umgeht – ähnlich, wie das bekanntere Data Plane Development Kit (DPDK) bislang meist den Netzwerkstack des Kernels ausbootet und daher in Kernel-Kreisen kritisch beäugt wird.

Kommentare

Kommentare lesen (57 Beiträge)

Anzeige