Die Neuerungen von Linux 4.9

Das XFS-Dateisystem kann jetzt doppelt gespeicherte Daten zusammenführen und große Dateien in Sekundenbruchteilen kopieren. Linux 4.9 verbessert zudem die Sicherheit. Neue Möglichkeiten zur Performance-Analyse erleichtern System- und Programmoptimierung.

In Pocket speichern vorlesen Druckansicht 19 Kommentare lesen
Linux-Kernel 4.9
Lesezeit: 25 Min.
Von
  • Thorsten Leemhuis
Inhaltsverzeichnis

Nach zehn Entwicklungswochen hat Linus Torvalds nun Linux 4.9 veröffentlicht. Diese Version wird aller Wahrscheinlichkeit nach ein Longterm-Kernel. Solche werden nicht nur rund drei Monate gepflegt, sondern mindestens zwei Jahre mit Korrekturen versorgt. Vermutlich wird das Debian-Team diese Kernel-Version bei Debian 9 (Stretch) einsetzen und dann noch drei weitere Jahre pflegen.

Mehr Infos

Dies war ein laufend aktualisierter Artikel

Dieser Text wurde mehrfach erweitert, um vorab schrittweise alle wesentlichen Änderungen von Linux 4.9 zu beschreiben. Zur Freigabe dieser Kernel-Version haben wir die Reihenfolge umgestellt und Absätze zu den wichtigsten Neuerungen nach vorn gestellt. Von nun an soll der Text seine jetzige Form behalten. Details zur Versionshistorie des Artikels finden Sie am Artikelende.

Wie seine Vorgänger wartet auch Linux 4.9 wieder mit einer Vielzahl verschiedener Neuerungen für Heimanwender, Entwickler oder Administratoren auf. Darunter ist etwa eine Erweiterung, durch die das XFS-Dateisystem schneller kopieren kann und Deduplizierung lernt.

Ähnlich wie Btrfs beherrscht XFS nämlich jetzt eine Funktion, über die sich selbst große Dateien in Sekundenbruchteilen kopieren lassen. Das gelingt über den vorerst experimentell eingestuften Support für den Funktionsaufruf reflink, auf den das Werkzeug cp beim Aufruf mit --reflink zurückgreift. Bei einer so ausgeführten und nur innerhalb eines Dateisystems möglichen Kopie kann sich XFS jetzt ein Vervielfältigen der Dateiinhalte sparen; stattdessen braucht es nur einen neuen Dateisystemeintrag in den Metadaten anzulegen, der auf dieselben Speicherbereiche verweist wie der Eintrag der Quelldatei. Änderungen an den Inhalten von Original oder Kopie wirken sich dennoch nicht auf die Inhalte der anderen Datei aus. Das ist der Unterschied zu einem mit ln erzeugten Hardlink, der dieselben Nutzdaten über unterschiedliche Dateinamen ansprechbar macht.

XFS kann jetzt Copy-on-write (CoW) nutzen.

(Bild: Quellcodeverwaltungssystem von Linux )

Dass sich Quelldatei und Kopien unabhängig voneinander verändern lassen, ist der Unterstützung von Copy-on-write (CoW) zu verdanken, die der XFS-Dateisystemcode jetzt bietet. Sie ermöglicht letztendlich die bei Reflink-Kopien verwendeten "Shared Extents"; mit ihnen können externe Programme auch Daten via .dedupe_file_range deduplizieren, um mehrfach gespeicherte Daten zusammenzulegen und so Speicherplatz zu sparen. Die neuen XFS-Features setzen auf den bei Linux 4.8 integrierten Reverse Mapping Code auf. Mit den regulären XFS-Dateisystemwerkzeugen sind die neuen Funktionen aber vorerst nicht nutzbar, denn sie sind derzeit nur für Entwickler und Tester gedacht, die die Verbesserungen fit für den Produktionseinsatz machen wollen.

Hintergründe zu den Verbesserungen liefert ein Blog-Eintrag eines Oracle-Mitarbeiters, der die Änderungen maßgeblich entwickelt hat. Dort gibt er auch einen Ausblick auf zwei Funktionen, die bei Linux 4.10 folgen sollen: Metadaten-Integritätstests mit Scrubbing sowie Verbesserungen zur Reparatur von Inkonsistenzen. Beide Funktionen sollen sich im laufenden Betrieb nutzen lassen, damit man das Dateisystem für diese Aufgaben nicht aushängen muss.

Der Kernel beherrscht jetzt den Congestion-Control-Algorithmus BBR (Bottleneck Bandwidth and RTT). Er verspricht, die maximale Datenübertragungsrate von Netzwerkverbindungen effizienter auszuschöpfen; zugleich soll der neue Ansatz auch Latenzen und Staus besser vermeiden.

BBR wurde maßgeblich von Google-Mitarbeitern entwickelt. Ähnlich wie traditionelle Algorithmen beginnt es die Übertragung langsam und steigert dann die Geschwindigkeit schnell; dabei lotet es über die von der Gegenseite zurückgesendeten ACK-Pakete aus, wie viel Bandbreite zwischen Sender und Empfänger zur Verfügung steht. Paket-Verluste haben in der Berechnung nur einen geringen Einfluss. Das ist ein großer Unterschied zu traditionellen Congestion-Control-Algorithmen, die die Datenübertragungsrate regelmäßig bis zum Auftreten von Paketverlusten erhöhen und dann wieder deutlich zurückfallen, um die maximale Bandbreite ständig neu auszuloten.

BBR soll Internetanbindungen schneller machen.

(Bild: Quellcodeverwaltungssystem von Linux )

Letztlich will Google das Internet so reaktionsschneller und robuster machen. Das zeigen einige Messwerte im Commit-Kommentar zu BBR: In einer Simulation einer typischen Anbindung auf der letzten Meile sei die mittlere Round-trip Time (RTT) mit BBR im Mittel um den Faktor 25 niedriger als beim CUBIC-Algorithmus, den die Entwickler zum Vergleich herangezogen haben. Ein zweiter Test zeigt, dass Verbindungen deutlich schneller und robuster arbeiten, falls zufällige Paketverluste auftreten. Weitere Details zum Ansatz erläutern der Commit-Kommentar und ein LWN.net-Artikel.

Linux hat jetzt grundlegende Analysefähigkeiten, die mit jenen von Dtrace vergleichbar sind – so umschreibt es zumindest Brendan Gregg, der bei Netflix an Performance-Optimierungen arbeitet und einen ganzen Satz von Werkzeugen und Tipps zur Performance-Analyse pflegt.

Flame Graph einer Analyse von MySQL.

(Bild: Brendan Gregg )

Dieser Meilenstein ist unter anderem Fortschritten zu verdanken, die es in den letzten Jahren beim Perf-Subsystem und dem Berkeley Packet Filter (BPF) gab. Der letzte Baustein, der zu Greggs enthusiastischer Aussage geführt hat, waren die in 4.9 eingeflossenen Änderungen. Durch sie können mit dem BPF ausgeführte Performance-Analyse-Programme nun autark regelmäßige Messungen durchführen (Timed Sampling) und die erfassten Daten auch gleich zusammenfassen (u.a. 1, 2, 3, 4). Analyseprogramme können dadurch direkt Flammengrafiken erzeugen, an denen sich leicht erkennen lässt, in welchen Code-Abschnitten ein Programm viel Zeit verbringt.

Die Analysewerkzeuge der Bcc-Tools können an zahlreichen Stellen ansetzen.

(Bild: Brendan Gregg )

Details zu den neuen Möglichkeiten mit 4.9 erläutert Gregg in einem Blog-Post. In einem wenig später veröffentlichten und sehr lesenswerten Blog-Eintrag liefert er einen ausführlichen Überblick über den Stand der Performance-Analyse mit Linux. Dort beschreibt er unter anderem, warum es so lange gedauert hat, bis Linux mit Dtrace vergleichbare Analysefunktionen erhalten hat. Er erläutert aber auch Bereiche, wo der Kernel nach wie vor hinterherhinkt; insbesondere bei der Benutzbarkeit gibt es noch viel zu verbessern, denn die Analysemöglichkeiten sind alles andere als leicht zu nutzen. Gregg verweist auch auf Ansätze, die Programmierung von Analyse-Skripten mit einer vom Systemtap abgeleiteten Hochsprache zu vereinfachen. Ferner erläutert er eine Reihe der Werkzeuge aus den Bcc-Tools, mit denen sich einige gängige Analyseaufgaben leicht ausführen lassen.

In das Staging-Subsystem sind Greybus-Infrastruktur und Treiber eingezogen. Sie unterstützen das Interconnect-Protokoll UniPro in der Form, wie es Google beim Project ARA nutzen wollte. Obwohl Google die Entwicklung dieses modularen Smartphones beendet hat, floss der Code in den Kernel ein, weil Motorola den Code in einem Gerät einsetzt. Außerdem sei die Entwicklung von Technik und Code laut Greg Kroah-Hartman noch nicht aufgegeben; Toshiba arbeitet an einem Produkt und auch andere Programmierer beschäftigen sich nach wie vor mit dem Ansatz und seinen praktischen Möglichkeiten. Details hierzu liefert der Kommentar eines Git-Merge des Staging-Subsystems. Dort wird minderwertiger, die Qualitätsstandards des Kernel nicht erfüllende Treibercode akzeptiert, um ihn im Rahmen der Kernel-Entwicklung auf Vordermann zu bringen.

Greybus ist der Hauptgrund, warum Linux 4.9 zur Kernel-Version wird, die mehr Änderungen bringt als je zuvor – zumindest wenn man nach der Zahl der Änderungen im Quellcodeverwaltungssystem geht. Greybus wurde mit seiner gesamten Entwicklungshistorie integriert, die über 2300 Commits umfasst. Zusammen mit den anderen Änderungen hat sich das auf 17.392 Commits summiert. Damit überholt 4.9 den bisherigen Rekordhalter 3.15 locker, denn zwischen den Versionen 3.14 und 3.15 gab es letztlich 14.871 Commits.

Zugleich zeigt das Ganze aber auch, dass bei solchen Auswertungen sehr viel von der Art abhängt, wie einzelne Entwickler arbeiten und Code einbringen. Andere Programmierer hätten Greybus vielleicht als eine große Änderung oder mit einem Commit pro Greybus-Treiber angeliefert; in beiden Fällen wäre Linux 4.9 dann ein Kernel, bei dem die Zahl der Änderungen auf dem Niveau des bisherigen Rekordhalters läge. Ferner zeigt das Ganze auch, dass auch die Art der Auswertung entscheidend ist. Nimmt man nämlich die Zahl der neuen oder entfernten Codezeilen als Maßstab, dann ist 4.9 ein ganz typisches Release: Der Umfang der in 4.9 eingeflossenen Änderungen liegt zwar durchaus auf einem vergleichsweise hohen Niveau, bleibt zugleich aber weit hinter den bisherigen Rekordhaltern zurück. Details hierzu finden sich in der Tabelle am Artikelende; noch mehr Zahlen liefert eine ausführlichere Tabelle an anderer Stelle.


Mehr Infos

Die folgenden Absätze wurden am 01.12.16 publiziert.

Durch die "Virtually Mapped Kernel Stacks" alloziert Linux 4.9 auf x86-Systemen jetzt den Speicher des Call Stack anders (u. a. 1, 2, 3). Durch die Umbauten kann der Kernel nun Stack-Overflows besser erkennen und abfangen. Angreifer lösen solche manchmal gezielt aus, um den Code-Pfad zu verändern und sich so höhere Rechte zu verschaffen. Die Änderung fängt aber auch durch nachlässige Programmierung entstehende Stack-Overflows ab und liefert dabei mehr Informationen, um die Ursache beseitigen zu können. Details zum Ganzen erläutert ein LWN.net-Artikel

Das neue "latent_entropy plugin" hilft, früh im Startprozess mehr Entropie zu sammeln, um die Erzeugung von Zufallsdaten zu verbessern (u.a. 1, 2, 3). Das soll fehlende oder schlechte Zufallsdaten vermeiden, die immer mal wieder zu größeren Sicherheitslücken bei Verschlüsselung oder Schlüsselerzeugung führen. Das GCC-Plug-in wurde ursprünglich vom Grsecurity/PaX-Projekt entwickelt und jetzt von einem unabhängig arbeitenden Entwickler überarbeitet, damit es den Qualitätsansprüchen der Kernel-Entwickler genügt und aufgenommen werden konnte. Der Code klinkt sich in die GCC-Plug-in-Infrastruktur ein, die in Linux 4.8 integriert wurde.

Bei Intels Server-Prozessoren der Skylake-Generation können Anwendungen in Zukunft "Memory Protection Keys for Userspace" nutzen (u.a. 1, 2, 3). Mit dieser als MPK oder Pkeys abgekürzten Funktion können Prozesse die im Arbeitsspeicher hinterlegten Daten effizienter vor Zugriffen schützen, damit beispielsweise nur ein Thread eines Verschlüsselungsprogramms den Chiffrierungsschlüssel lesen kann. Basis-Support für diese in der Kernel-Dokumentation oder bei LWN.net näher erläuterte Funktion bietet schon Linux 4.6.

Über neue Dateien im Procfs lässt sich jetzt begrenzen, wie viele Namespaces ein Anwender innerhalb der ihm zugeteilten Namespace anlegen darf. Das soll das System vor Ausfällen durch Überlastung schützen – etwa falls eine Software innerhalb eines Containers versehentlich oder bewusst so viel Dateisysteme mountet, dass das System in die Knie geht.

Die Git-Pull-Requests für die Subsysteme Crypto und Security nennen einige weitere Verbesserungen für die Sicherheit. Darunter Support für Erweiterte Attribute (EAs/xattrs) im Overlay-Dateisystem; das ist etwa bei der Nutzung von SELinux bei Docker & Co. wichtig, denn die setzen Overlays häufig ein (u.a. 1, 2, 3).

Unter den Änderungen am Perf-Subsystem (u.a. 1, 2) waren Patches, die Kommentare in die Assembler-Ausgaben von perf annotate --stdio einfügen. Diese zeigen an, wie oft eine Verzweigung im Code ("Branch") genommen und dabei von der Sprungvorhersage (Branch prediction) korrekt prognostiziert wurde.

Durch Erweiterungen am Tracing-Subsystem enthält dieses nun einen Hardware Latency Tracer (u. a. 1, 2). Mit ihm lässt sich erkennen, wie oft und wie lange das System mit der Abarbeitung von Non-maskable Interrupts (NMIs) und den damit verwandten System Management Interrupts (SMIs) beschäftigt war. Solche stören vor allem auf Realtime-Systemen, weil sie das Betriebssystem und die darunter laufenden Anwendungen für eine kurze Zeit unterbrechen, während Firmware oder Management Engine diese nicht unterdrückbaren Interrupts abarbeiten. Details zum Einsatz erläutert die Dokumentation des hwlat_detector.

Durch Fortschritte bei der grundlegenden Überarbeitung der Kernel-Dokumentation liegen nun noch mehr Dateien im Format reStructuredText (RST) vor – darunter Stable API Nonsens, Development Process, Management Style und Submitting Patches. Ferner lassen sich solche Dateien jetzt auch zu PDFs aufbereiten (u.a. 1, 2, 3). Außerdem bündeln zwei neue Bücher jetzt Informationen zu Werkzeugen für Kernel-Entwickler sowie Hinweise zur Treiber-Programmierung.

Der Kernel enthält jetzt einen bei der Firmware Test Suite (FWTS) eingesetzten Treiber, über den sich die standardkonforme Interaktion zwischen UEFI-Firmware und Betriebssystemen testen lässt.

Die Änderungen am IRQ-Code enthielten Patches, durch die sich die IRQ-Distribution jetzt auch via Sysfs auslesen lässt. Ferner verteilt der Kernel jetzt Interrupts besser auf die verfügbaren CPU-Kerne, sofern die IRQs von Bausteinen stammen, die mit mehreren Verarbeitungsschlangen arbeiten (Multiqueue).

Linus Torvalds trägt gar nicht mehr sonderlich viel Code zum Kernel bei, weil er vornehmlich die Kernel-Entwicklung managt. Ab und zu greift er aber doch ein – manchmal auch ganz spontan, weil ihn etwas nervt. So war es diesmal, weil ihn gestört hat, wie unzuverlässig Linux mit in mehreren Teilen angelieferten Abschnitten für eine Zeile im Log umgeht. Durch die daraufhin von ihm vorgenommenen Umbauten soll das Ganze in Zukunft robuster werden. Anfangs gab der Kernel dadurch aber einige Log-Abschnitte in einzelnen Zeilen aus, statt sie in einer Zeile zusammenzufassen. Viele solcher in den Dmesg-Ausgaben sichtbaren Probleme wurden beseitigt, einige schlummern aber wahrscheinlich noch unentdeckt im Kernel.

Eine Reihe weiterer Änderungen an der Infrastruktur finden sich in den Kommentaren der wichtigsten Git-Merges der Subsysteme ACPI (1, 2), Cgroup, EFI, IOMMU, KVM, Kbuild, Locking, PCI (1, 2), Percpu, Power Management (1, 2), RAD, Scheduling, VFIO, Xen und Thermal Managament

Linux kennt jetzt die Features AVX512_4VNNIW und AVX512_4FMAPS, die neue Generationen von Intels Xeon- und Xeon-Phi-Prozessoren bieten. Neu dabei ist auch Support für eine Reihe von Mellanox-Plattformen mit x86-64-Prozessoren.

Der ARM-Code unterstützt jetzt den Broadcom BCM53573 SoCs und kann Sunxi-Prozessoren im Big-Endian-Modus betreiben.

Der Linux-Kernel enthält jetzt Basis-Unterstützung für ein Board mit der 1C-Variante des MIPS-Prozessors Loongson.

Weitere Details zu Änderungen am Support für Prozessorarchitekturen finden sich in den Git-Merge-Kommentaren von Subsystemen wie ARM (SoC-Cleanup, SoC, Defconfig, Driver, DT, Late), ARM64 (ARM64, SoC, DT64), m68knommu, MIPS, PPC (1, 2), s390 und Xtensa.


Mehr Infos

Die folgenden Absätze wurden am 25.11.16 publiziert.

Das Dateisysteminterface FUSE (Filesystem in Userspace) unterstützt (u. a. 1, 2) nun auch Posix ACLs (Access Control Lists). Dadurch können nun auch unabhängig vom Kernel als normale Userspace-Anwendungen programmierte FUSE-Dateisysteme die Zugriffsrechte feiner regeln, als es die normalen Dateizugriffsrechte von Unix-artigen Betriebssystemen erlauben.

Der im Kernel enthaltene NFS-Server (NFSd) beherrscht nun die bei NFS 4.2 definierte COPY-Funktion. Mit dieser Fähigkeit ausgestattete NFS-Clients können so Dateien Server-seitig kopieren, um ein zeitaufwendiges Übertragen der Daten vom Server zum Client und wieder zurück zu vermeiden. Zusammen mit der Reflink-Unterstützung von Btrfs und XFS lässt sich das Duplizieren der Dateiinhalte sogar komplett vermeiden.

Die Änderungen an CIFS haben die neue Mount-Option idsfromsid gebracht. Sie kann bessere Posix-Kompatiblität bei Setups ohne Winbind bringen, indem sie User- und Gruppen-IDs aus den ACLs bezieht (1, 2)

Die Kernel-Entwickler haben weiteren Änderungen vorgenommen, das auf 32-Bit-Systemen auftretende Jahr-2038-Problem aus der Welt zu schaffen: Das Virtual File System (VFS), auf dem der Code der Kernel-eigenen Dateisysteme aufbaut, bietet eine neue Schnittstelle zur Datumsabfrage, die auch in 22 Jahren noch korrekte Werte liefert.

Bei den anderen Dateisystemen gab es vornehmlich Detailverbesserungen; näheres hierzu findet sich in den Haupt-Merge-Requests für den Dateisystemcode von Btrfs (1, 2), Ext4, F2FS, NFS, NFSD, Orangefs, Ubifs und XFS.

Unter den Änderungen am von LVM verwendeten Device Mapper waren einige am Dm-Cache. Sie sollen die Performance des Targets verbessern, mit dem sich ein SSD-Cache für Festplatten einrichten lässt.

Bei den verschiedenen Subsystemen zum Zugriff, Managen oder Exportieren von Storage-Hardware gab es vornehmlich kleine Verbesserungen. Details finden sich in den Haupt-Merge-Request für Block-Layer (1, 2, 3), Ceph, Libata, MD, MMC MTD, NVDIMM, Pstore und SCSI (1, 2).

Admins oder Netzwerk-Management-Programme können jetzt auch UDP-Sockets per SOCK_DESTROY beenden, damit Anwendungen möglichst schnell mitbekommen, wenn Netzwerkanbindungen nicht mehr bestehen; ohne solch einen expliziten Hinweis würden sie das erst nach Timeouts bemerken, was schon mal ein Weilchen dauern kann. SOCK_DESTROY wurde bei Linux 4.5 geschaffen, konnte bislang aber nur TCP-Sockets beenden. Solche abzuschießen ist etwa für Video-Streaming-Anwendungen auf Mobilgeräten interessant, damit diese beim Wechsel von WLAN ins Mobilfunknetz sofort eine neue Verbindung zum Streaming-Server aufbauen können, bevor ihr Puffer leer läuft und das Bild stockt.

Der Linux-Kernel bringt jetzt einen Treiber für Amazons Elastic Network Adapters (ENA) mit – das sind Netzwerkkarten, die Amazon seit dem Sommer in seiner Elastic Compute Cloud (EC2) bei bestimmten Konfigurationen zur Kommunikation zwischen mehreren EC2-Instanzen anbietet.

Der für Firewalls eingesetzte Netfilter bietet jetzt eine Quota-Expression, mit dem sich die Menge der übertragenen Daten limitieren lässt. Neu ist auch eine Expression für Zufallszahlen, um Pakete etwa per Round-Robin zu verteilen.

Der Kernel kann nun BPF-Programme zur Daten-Einstufung (TC classifiers) via cls_bpf an Intelligent Server Adapter/SmartNICs von Netronome auslagern, um dem Hauptprozessor diese Arbeit abzunehmen.

Einige weitere Neuerungen zur Netzwerk-Unterstützung nennt der Haupt-Pull-Request für das Netzwerk-Subsystem. Durch eine von ihnen handhabt der Kernel nun die beim Datenempfang genutzten Soft-IRQs anders. Das verspricht, den Netzwerkdurchsatz gerade auf schwachbrüstigen Prozessoren in bestimmten Konstellationen deutlich zu steigern; bei einem Test des zuständigen Entwicklers stieg die Zahl der pro Sekunde angenommenen UDP-Pakete von 2000 auf 900.000, was die Abwehr von DOS-Attacken verbessert. Details zum Ganzen erläutern der Kommentar zur Änderung und ein Artikel bei LWN.net.


Mehr Infos

Die folgenden Absätze wurden am 17.10.16 publiziert.

Der Kernel-Treiber Amdgpu kann durch größere Erweiterungen (u. a. 1, 2, 3) nun auch Grafikprozessoren der Southern-Islands-/GCN-1.0-Generation ansprechen. Solche sitzen beispielsweise auf den Radeon-Grafikkarten HD7750 - HD7970, R9 270, R9 280, R7 240 und R7 250. Durch diese Erweiterung sollten die proprietären Treiber der Grafiktreiberfamilie AMD GPU-Pro (Nachfolger der Fglrx/Catalyst-Treiberfamilie) mit den GCN-1.0-Prozessoren zusammenarbeiten, denn diese Treiber sind auf Amdgpu als Kernel-Treiber angewiesen; dasselbe gilt für den von AMD in Aussicht gestellte Vulkan-Treiber. Ferner lassen sich mit den alten GPUs nun auch quelloffene Treiber einsetzen, die Amdgpu erfordern; in diese Klasse fällt der von der Open-Source-Community entwickelte Vulkan-Treiber Radv, die das Anfang November erschienen Grafiktreibersammlung Mesa 13.0 enthält.

Southern-Islands-GPUs spricht der Kernel bislang mit seinem Treiber Radeon an. Dieser ist so gut wie immer auch für Sea-Islands/GCN-1.1-Chips (HD7790, R7 260, R9 390 …) zuständig, die Amdgpu von Beginn an zu Testzwecken unterstützt. Amdgpu kommt derzeit vornehmlich für Chips der Volcanic-Islands-/GCN-1.2-Generation (R9 380, R9 Fury …) und den neuen Polaris/GCN-1.3-GPUs (Radeon Rx 4xx) zum Einsatz

Wahrscheinlich dürfte es aber aufwendig werden, Amdgpu für GCN-1.0/1.1-GPUs einzusetzen, denn den dazu jetzt eingepflegten Code muss man bei der Kernel-Konfiguration explizit aktivieren. Linux-Distributoren werden das bei ihren Kerneln aber womöglich nicht machen: Ein Umstieg von einem seit Jahren bewährten auf einen jüngeren Treiber könnte Stabilitätsprobleme nach sich ziehen, weil die Codepfade zum Support der alten GPUs bislang keinen Feldtest absolviert haben. Auch ein optionales Mitliefern der GCN-1.0/1.1-Unterstützung in Amdgpu lässt sich nicht so einfach realisieren.

Die Kernel-Entwickler haben erste Teile einer "Explicit Fencing" genannten Infrastruktur integriert. Durch sie können Desktop-Oberflächen und Programme den Aufbau ihrer Bedienoberfläche besser koordinieren; ferner setzt auch die 3D-Programmierschnittstelle Vulkan die Technik voraus. Durch sie können Anwendungen letztlich das Zusammensetzen von verschiedenen unabhängig voneinander berechneten Bildpuffern mit Hilfe von Barrieren selbst synchronisieren (u. a. 1, 2, 3).

Das kann etwa bei der Darstellung eines Video-Players relevant sein, wenn sich der Buffer mit dem dargestellten Fensterinhalt dort aus einem Buffer mit der Bedienoberfläche und einem mit dem Videobild zusammensetzt. Bislang kann die Bedienoberfläche bei unabhängiger Berechnung der beiden Buffer komplett ins Stocken geraten, wenn auf den Buffer mit dem Videobild gewartet werden muss, weil der noch nicht vollständig gefüllt wurde. Android bietet mit dem Synchronization Framework schon länger eine ähnliche Funktion; das Explicit Fencing, das wohl mit 4.10 komplett und nutzbar werden dürfte, baut auf dem Code des Android-Ansatzes auf. Weitere Details zur neuen Technik erläutert ein Blog-Beitrag eines der Entwickler und ein Artikel bei LWN.net; Letzterer bezieht sich auf einen Vortrag zur Explicit Fencing, von dem die Videoaufzeichnung und die Präsentationsfolien im Netz stehen.

Einige weitere Änderungen an den Grafiktreibern nennt der Kommentar zum Merge-Commit, der das Gros der Änderungen an den Grafiktreibern gebracht hat. Darunter sind etwa Verbesserungen an Amdgpu, durch die der Treiber die Stromspartechniken einiger moderner Grafikprozessoren stärker nutzt; ferner aktiviert er diese jetzt auch bei den Iceland/Topaz-GPUs, die unter Bezeichnungen wie Radeon R7 M260 oder Radeon R7 M460 vornehmlich in Notebooks zum Einsatz kommen (u. a. 1, 2, 3, 4). Durch Unterstützung für "Virtual Displays" in Amgpu lassen sich Grafikprozessoren nun auch normal verwenden, selbst wenn kein Bildschirm angeschlossen ist; stattdessen kann etwa eine Fernwartungssoftware das normalerweise ausgegebene Bild abgreifen und zur Darstellung woandershin übermitteln (u. a. 1, 2, 3.

Mehr Infos

Den neuen Linux-Kernel herunterladen und einrichten

Die neue Linux-Version steht wie gewohnt über Kernel.org zum Download bereit. Hinweise zur Einrichtung eines eigenen Kernels finden Sie im Artikel "Linux-Kernel maßgeschneidert". Das darin beschriebene Make-Target make localmodconfig erzeugt weitgehend automatisch eine auf Ihr System zugeschnittene Kernel-Konfiguration, mit der Sie in wenigen Minuten eine neue Linux-Version einrichten können.

Fedora und Rolling-Release-Distributionen wie Arch Linux, Gentoo und OpenSuse Tumbleweed dürften die neue Kernel-Version in den nächsten Wochen über die Systemaktualisierung erhalten. Bei OpenSuse Leap, Ubuntu und vielen anderen klassisch gewarteten Distributionen wird das nicht passieren, denn dort macht der Kernel nur beim Wechsel auf eine neue Ausgabe der Distribution einen Versionssprung.

Der zur Grafiktreiberfamilie "intel" gehörenden Treiber i915 erhielt eine Reihe von Detailverbesserungen, darunter Optimierungen beim Locking und Support für Implicit Fencing, das eine Voraussetzung zur Unterstützung des erwähnten Explicit Fencing ist.

Beim VC4-Treiber für die Grafikprozessoren der verschiedenen Raspberry Pi gab es Änderungen, die den Overhead reduzieren sollen. Ferner beherrscht der Treiber nun auch die HDMI-Ausgabe mit Interlaced-Ansteuerung.

Neu in 4.9 ist auch der Support für das Display-Panel des Nexus 7 sowie ein simpler Treiber für RGB-auf-VGA-Bridges, die manchmal auf Embedded-Boards stecken.

Der Nouveau-Treiber für Nvidia-GPUs bleibt weitgehend unverändert, weil dessen Hauptentwickler größeren Umbauten nicht rechtzeitig vor der Hauptentwicklungsphase von 4.9 fertigstellen konnte.

Ähnlich wie bei den vorangegangenen Versionen unterstützt Linux 4.9 knapp fünfhundert Geräte oder Geräteklassen mehr als sein Vorgänger. Das geht aus den Datenbanken der Linux Kernel Driver DataBase (LKDDb) hervor, laut denen der Kernel durch neue und verbesserte Treiber rund 180 weitere PCI/PCIe- und USB-Geräte unterstützt. Darunter finden sich einige neue WLAN-Module von Intel, denn neben weiteren Varianten der Modelle 8265 und 9460 bringt der Kernel nun auch Treiber für die Ausführungen mit den Modellnummern 8275, 9170, 9270, 9460 und 9560 (1, 2) mit.

Neu dabei ist auch ein Treiber für den Intel Sensor Hub (ISH), der den Stromverbrauch neuerer Systems-on-a-Chip (SoC) von Intel reduzieren soll: Der Treiber kann einige Aufgaben an einen autark arbeitenden Coprozessor delegieren, damit andere Teile des SoC öfter und länger schlafen können (1, 2, 3, 4).

Unter den Änderungen am Media-Subsystem war ein Treiber für den Techwell TW5864, der mehr Audio- und Video-Kanäle gleichzeitig aufzeichnen und mit H.264, MJPEG oder ADPCM G.726 kodieren kann.

Der ursprünglich von Realtek entwickelte und im Staging-Subsystem angesiedelte Treiber Rtl8723au wurde rausgeworfen, weil der modernere Treiber Rtl8xxxu ihn mittlerweile ersetzt. Bei Letzterem handelt es sich um einen unabhängig vom Hersteller entstandenen Treiber, der die Qualitätsansprüche der Kernel-Entwickler besser erfüllt und sich deutlich besser in den Kernel einpasst.

Neben den erwähnten Änderungen gab es noch eine Reihe weiterer Treiber, die neu dabei sind oder erheblich verbessert wurden. Details liefern einige Git-Merge-Kommentare der Subsysteme Driver Core, EDAC (Error Detection and Correction, Hardware Monitoring/Hwmon, HID (Human Interface Devices), Input (1, 2), Platform, RDMA (Remote DMA) (1, 2, 3), USB, und Sound.


Mit der Freigabe von Linux 4.9 beginnt jetzt die Phase, in der Linus Torvalds das Gros der Änderungen für Linux 4.10 aufnimmt. Dieses "Merge Window" schließt der Linux-Erfinder typischerweise nach zwei Wochen mit der Veröffentlichung einer ersten Vorabversion. Sofern Torvalds und seine Mitstreiter trotz Weihnachten im gewohnten Tempo arbeiten, sollte der Linux-Kernel 4.10 Mitte oder Ende Februar erscheinen.

Kernel-
Version
Anzahl
Dateien¹
Zeilen
Quelltext
(Ohne Doku)²
Entwick-
lungs-
zeitraum
Anzahl
Commits³
Diffstat⁴
Linux 4.2 50795 20311825
(18755735)
70 Tage 14750 10926 files changed,
 1079245 insertions(+),
 280008 deletions(-)
Linux 4.3 51570 20621444
(19031051)
63 Tage 13282 10385 files changed,
 642760 insertions(+),
 333026 deletions(-)
Linux 4.4 52221 20862229
(19243827)
70 Tage 14082 10604 files changed,
 713754 insertions(+),
 470774 deletions(-)
Linux 4.5 52916 21154659
(19489725)
63 Tage 13173 11590 files changed,
 1146355 insertions(+),
 854286 deletions(-)
Linux 4.6 53660 21422808
(19724413)
63 Tage 14618 10250 files changed,
 606023 insertions(+),
 337875 deletions(-)
Linux 4.7 54400 21720955
(19971725)
70 Tage 13433 9909 files changed,
 575816 insertions(+),
 277305 deletions(-)
Linux 4.8 55503 22071048
(20266168)
70 Tage 14552 11483 files changed,
 662558 insertions(+),
 314177 deletions(-)
Linux 4.9 56223 22348356
(20520460)
70 Tage 17392 11416 files changed,
 713497 insertions(+),
 436209 deletions(-)
¹ git ls-tree -r --name-only HEAD | wc -l
² find . -type f -not -regex '\./\.git/.*' | xargs cat | wc -l; echo "($(find . -name *.[hcS] -not -regex '\./\.git/.*' | xargs cat | wc -l))"
³ git-log --pretty=oneline vx.(y-1)..vx.(y) | wc -l
⁴ git diff --shortstat vx.(y-1)..vx.(y)

Mehr Infos

Versionshistorie dieses Artikels

Dieser Artikel wird zwischen Freigabe der ersten Vorabversion und der Fertigstellung von Linux 4.9 mehrfach erweitert, um schrittweise alle wichtigen Änderungen der neuen Kernel-Version zu erläutern. Einmal publizierte Absätze werden wir nur mehr verändern, wenn triftige Gründe es erfordern.

  • 2016-12-12, 07:00 – v2.0: Die wichtigsten Neuerungen aus den einzelnen Abschnitten an den Textanfang gestellt. Ausblick eingefügt, Tabelle aktualisiert und einige Detailänderungen am Text vorgenommen.
  • 2016-12-05, 07:00 – v1.2.1: Einstieg angepasst, um statt auf die siebte auf die achte Vorabversion Bezug zu nehmen.
  • 2016-12-01, 07:00 – v1.2: Änderungen rund um Sicherheit, Infrastruktur und Prozessor-Support eingefügt.
  • 2016-11-25, 07:00 – v1.1: Beschreibung der Neuerungen bei Netzwerk-Techniken und Dateisystemen integriert. Link zum zwischenzeitlich erschienenen Mesa 13.0 im Abschnitt zu Grafiktreibern eingebaut.
  • 2016-10-17, 11:00 – v1.0: Erste Version, die sich auf die Neuerungen bei Treibern konzentriert.

(thl)