Die Neuerungen von Linux 4.15

Linux-Kernel 4.15

Trends & News | Kernel-Log

Das im Januar erwartete Linux 4.15 beseitigt ein Performance-Problem schneller Netzwerkverbindungen. Ebenfalls neu: Support für eine von Apple entwickelte Thunderbolt-Vernetzungstechnik.

Der Linux-Kernel 4.15 kann Systeme per Thunderbolt vernetzen. Eine Änderung an Interna des Netzwerksubsystems verspricht ein Performance-Problem zu beseitigen, das mit besonders schneller Netzwerk-Hardware auftritt und offenbar bei Google zu sehen war. Außerdem gab es einige Umbauten am BPF, um die Handhabung von Netzwerkpaketen zu optimieren und so die Performance zu steigern.

Die folgenden Absätze liefern Details zu diesen und weiteren Neuerungen beim Netzwerk-Support, die der am 15. oder 22. Januar erwartete Kernel bringt. Die zweite und dritte Seite dieses Artikels widmen sich den Änderungen, die die Entwickler bei Storage-Support, Dateisystemen und Grafiktreibern vorgenommen haben. In den nächsten Wochen wird der Text noch schrittweise erweitert, um darüber hinaus Neuerungen aus weiteren Bereichen zu beschreiben.

Das Kernel-Log

Die Artikelserie "Die Neuerungen von Linux" beschreibt regelmäßig die Änderungen neuer Linux-Versionen:

Linux bringt jetzt alles mit, um zwei Rechner über ein Thunderbolt-Kabel per Internet Protocol (IP) zu vernetzen. Das gelingt über das von Apple entwickelte Protokoll ThunderboltIP, das den IP-Ethernet-Verkehr über die Thunderbolt-Verbindung tunnelt. Der dafür zuständige Code baut auf einer dazu geschaffenen Infrastruktur auf, die prinzipiell auch andere Protokolle übertragen könnte (u. a. 1, 2).

Beim Verbinden von macOS oder Windows mit Linux wird das für ThunderboltIP zuständige Kernel-Modul automatisch aktiv; zum Verbinden zweier Linux-Systeme muss man das Modul thunderbolt-net auf einem von beiden manuell laden, wie die Dokumentation erläutert. Der Treiber legt automatisch ein Ethernet-Device mit einem Namen wie thunderbolt0 an, das wie eine normale Netzwerkschnittstelle konfiguriert werden will.

git.kernel.org – ca82214144
In einem speziell konstruierten Test konnte die neuen Retransmit-Datentrstuktur den Durchsatz um ein vielfaches steigern. (Bild:  git.kernel.org – ca82214144)

Geringere Latenzen und höherer Datendurchsatz bei Verbindungen mit hohen Verlustraten – das ist ein Ziel der neuen Datenstruktur für TCP-Pakete, die der Kernel bei Verlust abermals versenden muss. Für diese Retransmit Queue nutzt Linux jetzt einen Red-black Tree. Aufgrund seiner Komplexität hatten die Entwickler einen solchen bislang zu vermeiden versucht. Durch die immer schneller werdenden Netzwerkschnittstellen und somit größer gewordenen Warteschlangen wiegen die Vorteile einer solchen Datenstruktur die Nachteile aber nun eher auf. Das unterstreicht der Entwickler mit Testergebnissen im Commit-Kommentar, laut denen der Datendurchsatz von 284 auf 1805 Mbit/s steige – das Testszenario hatte er aber auch konstruiert, um die Vorteile des Verfahrens zu demonstrieren. Der bei Google arbeitende Entwickler erwähnte die konkrete Motivation für die Umbauten jüngst auf einer Konferenz: Bei 100-Gigabit-Netzen mit großen Round Trip Times (RTT) würden sie schwere Skalierbarkeitsprobleme im TCP-Stack sehen.

Ähnlich wie der Kernel von FreeBSD kann nun auch Linux die Sendereihenfolge der Daten verändern, die zum Verschicken per Stream Control Transmission Protocol (SCTP) bereitliegen. Das gelingt über eine neue Infrastruktur für SCTP Stream Scheduler, die ein IETF-Entwurf definiert, der unter Beteiligung deutscher Entwickler entstand. Der Kernel erhielt auch gleich drei SCTP-Scheduler, die mit verschiedenen Herangehensweisen arbeiten (u. a. 1, 2, 3, 4, 5).

Einen ganzen Schwung von Verbesserungen gab es wieder rund um BPF. Dabei handelt es sich um einen auch eBPF (Enhanced BPF) genannten und aus dem Berkeley Packet Filter (BPF; dieser Tage oft auch als Classic BPF/cBPF bezeichnet) hervorgegangene Virtual Machine, die Programme im Kernel-Kontext ausführen kann. Zahlreiche Subsysteme nutzen BPF mittlerweile für die verschiedensten Aufgaben, etwa um Daten zu filtern, Berechtigungen zu regeln oder größere Datenströme zu analysieren.

Programme, die mit dem auf BPF zurückgreifenden XDP (eXpress Data Path) laufen, können Dank des neuen "Meta Pointer For Direct Access" nun Metadaten im Socket Buffer (SKB) ablegen. Das beschleunigt die weitere Verarbeitung des Pakets, weil eine weitere Paketanalyse an andere Stelle entfallen kann. BPF-Programme zum Ingress Filtering können dadurch beispielsweise effizienter arbeiten. Einige Hardware-Hersteller arbeiten wohl schon daran, die Metadaten gleich von der Netzwerk-Hardware für XDP bereit zu legen, um den Verarbeitungsweg noch weiter zu optimieren.

Das Netzwerk-Subsystem bringt jetzt eine Userspace-API mit, über die sich die Ausführung von BPF-Programmen an darauf ausgelegte Netzwerkchips delegieren lässt. Letzteres gelang schon vorher – die Programmierschnittstelle vereinfacht aber Verwendung und Fehlerhandhabung.

Einige Design-Aspekte von BPF erläutert jetzt eine FAQ in der Dokumentation von Linux. Zu den im Rahmen des Kernels entwickelten Userspace-Werkzeugen stieß das simple bpftool, mit dem sich BPF-Objekte abfragen und aktualisieren lassen. Das ist etwa für Debugging und Introspektion von BPF-Programmen und Maps gedacht.

git.kernel.org – 5bbcc0f595
19 von rund 2400 Änderungen am Netzwerksubsystem fand dessen Betreuer hervorhebenswert. (Bild:  git.kernel.org – 5bbcc0f595)

Der Kommentar zum Merge-Commit mit den wesentlichsten Änderungen am Netzwerk-Subsystem nennt noch einige weitere Neuerungen. Darunter etwa den neuen Qdisc-Scheduler Credit Based Shaper (CBS) oder Feintuning & Dokumentation für Identifier-locator addressing (ILA) mit IPv6. Außerdem bietet Open vSwitch jetzt Meter Support und unterstützt Network Service Headers (NSH). Darüber hinaus gab es Optimierungen an zahlreichen Stellen des Netzwerk-Subsystems, um die Netzwerk-Performance zu verbessern (u. a. 1, 2, 3, 4, 5).

Die vielen Änderungen unterstreichen, dass sich beim Netzwerk-Support in Linux nach wie vor viel wandelt. Einen tieferen Einblick in diesen Aspekt geben bei LWN.net verfügbare Berichte und Notizen von zwei Konferenzen, auf der zahlreiche Entwickler des Linux-Netzwerk-Codes jüngst zusammengekommen sind. In mehreren Vorträgen und Diskussionen ging es etwa um aktuelle oder in Entwicklung befindliche Einsatzmöglichkeiten von BPF und XDP. Außerdem haben die Entwickler über die Entschlackung einiger Strukturen im Netzwerk-Subsystem von Linux gesprochen, um Overhead zu reduzieren und Performance zu steigern. Das sind aber nur einige von mehreren Dutzend Themen, die in den fünf Tagen auf der Netconf 2017 (Part 2) und Netdev 2.2 zur Sprache kamen. Viele der Präsentationsfolien von der Netdev 2.2 finden sich über die Programmseite der Konferenz.

Schrittweise aktualisierter Text zu Linux 4.15

Am 27. November hat Linus Torvalds die erste Vorabversion von Linux 4.15 freigegeben. Damit hat er die "Merge Window" genannte Phase des Entwicklungszyklus abgeschlossen, in der er alle wesentlichen Umbauten für eine neue Kernel-Version vornimmt; größere, erwähnenswerte Änderungen passieren danach nur noch in Ausnahmefällen.

Das Kernel-Log kann daher schon jetzt die Neuerungen der am 15. oder 22. Januar erwarteten Kernel-Version beschreiben. Das erfolgt wie immer schrittweise. Dieser Text wird daher zwischen Erstpublikation und der Fertigstellung des neuen Kernels mehrfach erweitert, um nach und nach die wesentlichen Änderungen von Linux 4.14 zu beschreiben.

Im neuesten Text-Update kamen die Abschnitte auf der ersten Artikelseite hinzu. Ältere Textpassagen finden Sie auf den folgenden Seiten. Details zur Versionshistorie des Artikels finden Sie am Artikelende.

Kommentare

Anzeige