Linux 5.0 ist da: Geschwindigkeit zurückerobern und moderner speichern

Seite 4: Schneller netzwerken, Sicherheitsentscheidungen auslagern,Support für neue Boards und SoCs

Inhaltsverzeichnis

Der Kernel kann per UDP eingehende Pakete jetzt sammeln und in größeren Bündeln an die Zielapplikation übergeben, was den Durchsatz steigert und zugleich den Prozessor entlastet. Durch dieses "Generic Receive Offload (GRO) für Plain UDP Sockets" legte der Durchsatz bei einem Test des Entwicklers von 1079 auf 1466 MByte/s zu (u. a. 1, 2).

Linux kann ferner im Speicherbereich von Programmen liegende Daten jetzt via UDP versenden, ohne sie zuerst im Arbeitsspeicher duplizieren zu müssen. Dieser Zerocopy-Ansatz reduziert den Overhead und verspricht, die Performance zu steigern; TCP unterstützt Ähnliches bereits seit Linux 4.14.

Einige weitere Neuerungen im Netzwerkbereich nennt ein Git-Merge-Kommentar des Netzwerksubsystems; darunter etwa sind etwa zahlreiche Verbesserungen an BPF (1, 2, 3, 4, 5), VRF Support im VXLAN Underlay, ICMP-Error-Handling für UDP-Tunnel und verschiedene Neuerungen beim Netfilter. Ebenfalls neu ist eine Extension-Infrastruktur für sk_buff, um diese zentrale und viel genutzte Datenstruktur kleiner machen zu können und so Overhead zu vermeiden. Virtio hat zudem Support für den Datenaustausch mit einem "packed ring" erhalten, was den Netzwerkverkehr zwischen Host- und Gastsystemen beschleunigen kann. Das neue Coalescing der TCP-Backlog-Queue soll zudem die Latenzen in manchen Situationen deutlich reduzieren und zugleich den Durchsatz steigern.

Die Sicherheitsfunktion Seccomp (Secure Computing) kann jetzt ein Userspace-Programm zurate ziehen, um zu entscheiden, ob eine Tätigkeit eines anderen Programms erlaubt oder verboten wird. Container-Managementprogramme sollen diese Funktion nutzen können, um Containern etwa das Anlegen grundlegender und ungefährlicher Gerätedateien (etwa /dev/zero oder /dev/null) zu erlauben, das Erstellen anderer jedoch zu unterbinden. So ein Managementprogramm könnte auch Kernelmodule auf dem Host nachladen, wenn Software in Containern diese legitimerweise anfordert. Dabei geht es somit um Regeln, die sich mit einem Userspace-Programm einfacher und flexibler programmieren lassen als im Kernel. Hintergründe dazu finden sich in einem LWN-net-Artikel und der Videoaufzeichnung eines Vortrages, der kürzlich auf der angesehenen Konferenz linux.conf.au 2019 gehalten wurde:

Empfohlener redaktioneller Inhalt

Mit Ihrer Zustimmmung wird hier ein externes YouTube-Video (Google Ireland Limited) geladen.

Ich bin damit einverstanden, dass mir externe Inhalte angezeigt werden. Damit können personenbezogene Daten an Drittplattformen (Google Ireland Limited) übermittelt werden. Mehr dazu in unserer Datenschutzerklärung.

Auch die modernere Variante der Control Cgroups (Cgroups v2) bringt jetzt einen Cpuset Controller mit. Mit solchen lässt sich steuern, welche Prozessorkerne oder Speicherbereiche die Prozesse nutzen, die der Control Group (Cgroup) zugeordnet werden. Das ist etwa für besonders leistungsstarke NUMA-Systeme interessant, damit Prozesse (und somit auch Container oder VMs) dort nach Möglichkeit lokalen Arbeitsspeicher verwenden.

Intels Ablaufverfolgungs- und Performance-Monitoring-Technik Processor Trace (PT) lässt sich jetzt auch in mit KVM laufenden VMs nutzen (u. a. 1, 2). Außerdem hat KVM eine neue, von Xen bereits länger unterstützte Betriebsart gelernt, um Gastsysteme ohne BIOS zu booten und so den Start zu beschleunigen.

Einige Optimierungen reduzieren die Fragmentation des Arbeitsspeichers und versprechen so die Performance zu steigern (u. a. 1, 2). Allerlei weitere Neuerungen rund um Infrastruktur des Kernels nennen Git-Merges für ARM64, ACPI, Cgroup, Char, Core RCU, Device Tree, Devprop, DMA Mapping, IOMMU, IRQ Core, KBuild (1, 2), KConfig, KVM, PCI, Perf, Power Management, RISC-V, Scheduler, Trace, Thermal Management, UML, x86 (AMD northbridge updates, Cache, CPU, Microcode, MM), Xen und Y2038. Darunter ist etwa das "Unified Dynamic Event Framework", über das sich Kprobes, Uprobes und Synthetic Events via Ftrace anlegen oder entfernen lassen. Zwischen diesen Änderungen steckt zudem ein ausführliches Dokument, das detailliert erklärt, unter welchen Bedingungen der Prozessor von Cpuidle schlafen geschickt wird.

Linux 5.0 bringt Support für eine Reihe von Single-Board-Computern (SBCs) und den darauf verwendenten System-on-a-Chips (SoCs).

(Bild: git.kernel.org – b7badd1d7aa6 )

Linux 5.0 unterstützt Nvidias als Tegra194 oder Xavier bekannte ARM-Prozessoren (u. a. 1, 2). Ebenfalls neu ist Basissupport für die von Freescale Semiconductor/NXP gefertigten Prozessoren der i.MX8-Familie. Zu der gehört auch der SoC, den Purism beim Linux-Smartphone Librem 5 einsetzen will; Support für dessen Entwicklerboard oder das Smartphone selbst enthält Linux 5.0 aber nicht.

Das sind nur einige der ab 5.0 erstmals unterstützten SoCs und Platformen mit ARM-Prozessoren; einige weitere Änderungen dieses Bereichs wie die verbesserte Unterstützung für verschiedene OrangePi-Boards nennen die Kommentare einiger Git-Merges (1, 2, 3, 4). Entwickler von ARM-Systemen dürfte zudem interessieren, dass die Linux-Macher nach langem Ringen jetzt eine Infrastruktur eingebaut haben, um Device Tree Bindings in JSON-Schema schreiben zu können, die der Kernel beim Bauprozess automatisch verifizieren kann.

Linux unterstützt jetzt das Bussystem MIPI I3C, das auch als SenseWire bekannt ist; es soll das weit verbreitete I2C beerben, um Sensoren oder andere Prozessoren anzubinden (u. a. 1, 2, 3, 4, 5, 6).