Die Neuerungen von Linux 4.6

Der Linux-Kernel 4.6 unterstützt das Cluster-Dateisystem Orangefs und nutzt die Stromspartechniken moderner Hardware jetzt stärker. Eine Palette neuer und überarbeiteter Treiber verbessert die Hardware-Unterstützung.

In Pocket speichern vorlesen Druckansicht 15 Kommentare lesen
Kernel-Log-Logo
Lesezeit: 14 Min.
Von
  • Thorsten Leemhuis
Inhaltsverzeichnis

63 Tage nach der Freigabe von Linux 4.5 hat Linus Torvalds jetzt den Linux-Kernel 4.6 veröffentlicht. Durch ihn werden Linux-Distributionen bald besser mit GeForce-Modellen der 900er-Reihe zurechtkommen, denn der Nouveau-Treiber des Kernels unterstützt deren Grafikprozessoren jetzt deutlich besser (u. a. 1, 2). Er bietet dabei sogar Schnittstellen, über die der Nouveau-Treiber von Mesa 11.2 die 3D-Beschleunigung der GeForce-900er-GPUs nutzen kann.

Bei diesen seit Herbst 2014 verkauften Maxwell-v2-GPUs war das zuvor nicht möglich: Nvidia hat bei ihnen eine Sicherheitstechnik eingeführt, bei der sich Funktionen wie die 3D-Beschleunigung nur mit einer von Nvidia signierten GPU-Firmware nutzen lassen. Nach langem Warten hat Nvidia im Februar eine solche Firmware veröffentlicht. Diese steht unter einer Lizenz, die es vielen Linux-Distributionen ermöglicht, die Firmware in die Installationsmedien oder Live-Linux zu integrieren.

Der in Linux 4.6 enthaltene Treiber kann die Maxwell-v2-GPUs allerdings nicht in ihre schnellsten Betriebsmodi schalten. Die Nouveau-Treiberfamilie liefert daher nur einen Bruchteil der 3D-Performance, die Nvidias proprietäre Grafiktreiber erzielen.

Linux 4.6 kann auf das Orange File System (Orangefs) zugreifen (u. a. 1, 2, 3, 4, 5, 6, 7, 8, 9, Dokumentation). Bei diesem Nachfolger des Parallel Virtual File System (PVFS) handelt es sich um ein Cluster-Dateisystem. Orangefs ist speziell für Umgebungen ausgelegt, bei denen der Rechnerverbund große Datenmengen verarbeitet und viele parallele Zugriffe auslöst; es kommt deshalb unter anderem in Wissenschaft und Forschung zum Einsatz.

Die Kernel-Entwickler haben einige größere Umbauarbeiten an der Cpufreq-Infrastruktur vorgenommen – dem Code also, der darüber entscheidet, mit welcher Geschwindigkeit der Hauptprozessor läuft. Dadurch ist der Prozess-Scheduler jetzt stärker involviert, was Overhead vermeidet und bessere Entscheidungen ermöglicht; Details liefern ein Merge-Commit-Kommentar und ein Artikel bei LWN.net.

Bei Speed Shift hat der Prozessor mehr Kontrolle über die Wahl der Taktfrequenz.

(Bild: Intel / IDF15)

Bei den Umbauten wurde auch der Pstate-Treiber angepasst, der bei vielen Distributionen die Taktfrequenzwahl neuerer Intel-Prozessoren regelt. Durch diese Anpassungen nutzt der Treiber jetzt standardmäßig die Hardware-Coordinated P-State Selection (HWP), sofern der Prozessor diese beherrscht. Bei dieser aus "SpeedStep" hervorgegangenen und als "Speed Shift" vermarkteten Technik liegt die Verantwortung zur Wahl der Taktfrequenz viel stärker beim Prozessor, was Overhead vermeidet und einen effizienteren Betrieb verspricht.

Die Umbauten haben zudem Schnittstellen zum Scheduler geschaffen; diese soll ein neuer Cpufreq-Governor nutzen, damit der Kernel in Zukunft noch besser entscheiden kann, ob sich der Wechsel in einem sparsameren oder schnelleren Betriebszustand lohnt. Diesen schedutil genannten Governor wollen die Entwickler in Linux 4.7 integrieren.

Zum Einbinden eines Btrfs-Volumes mit beschädigtem Wurzelknoten ist jetzt die neue Mount-Option usebackuproot gedacht, die recovery ersetzt. Wie Ext4, XFS und einige andere Dateisysteme unterstützt Btrfs nun auch die Option norecovery_blank, die eine automatische Fehlerreparatur beim schreibgeschützten Einbinden unterbindet; diese Mount-Option ist letztlich aber nur ein Alias für die neue eingeführte Mount-Option nologreplay.

Bei pNFS können die Client direkt auf die via NFS freigegeben Datenträger zugreifen.

(Bild: pnfs.com )

Der NFS-Server-Daemon des Kernels beherrscht jetzt das "pNFS SCSI Layout". Durch diese mit NFS 4.1 spezifizierte Technik brauchen NFS-Clients nur noch die Metadaten vom NFS-Server zu holen. Die Nutzdaten können sie anschließend direkt per pNFS (Parallel NFS) von den für die NFS-Freigaben verwendeten Datenträgern beziehen. Diese kann der Client parallel ansprechen und so die Geschwindigkeit steigern; zudem sinkt die Gefahr, dass der NFS-Server zum Flaschenhals wird.

Damit der Kernel auch den Netzwerkverkehr von 40- und 100-Gigabit-Ethernet zeitnah verarbeiten kann, haben die Entwickler neue Möglichkeiten geschaffen, über die Treiber den Overhead bei der Speicherverwaltung von Netzwerkpaketen zu reduzieren (u. a. 1, 2, 3, 4, 5). Dieser Verarbeitungsschritt sollte so nicht mehr so leicht zum Flaschenhals werden, der den Durchsatz schmälert oder Latenzen verlängert.

"Local Checksum Offload" verspricht, die Performance beim Tunneln des Netzwerkverkehrs zu verbessern, indem es Overhead bei der Prüfsummenerzeugung reduziert, wenn der Kernel die Pakete kapselt. Erstmals dabei ist auch der Kernel Connection Multiplexor (KCM), der es Anwendungsentwicklern erleichtern soll, Nachrichten per TCP zu verschicken; Details erläutern die Dokumentation und ein LWN.net-Artikel.

Unter den wie immer umfangreichen Änderungen am Netzwerk-Code war ferner Unterstützung für die in IEEE 802.1AE definierte MAC-level Encryption (MACsec). Dabei handelt es sich um eine Verschlüsselungstechnik zum Schutz vor Angreifern, die sich als Man in the Middle in die Netzwerkverkabelung einklinken.

Bei Notebooks mit Intel-Prozessoren der Haswell- und Broadwell-Generation sollte der Akku mit Linux 4.6 ein wenig länger halten, denn bei deren GPUs aktiviert der zuständige Treiber nun Framebuffer Compression (FBC) und Panel Self Refresh (PSR) (u.a. 1, 2). Parallel haben die Entwickler die Unterstützung für Stromspartechniken ein klein wenig verbessert, die gerade nicht benötigte GPU-Funktionsbereiche vorübergehend schlafen legen. Diese Möglichkeiten werden aber bislang standardmäßig nicht verwendet; weitere Änderungen in diesem Bereich sollen bereits bei der nächsten Kernel-Versionen folgen.

Der Intel-Treiber unterstützt jetzt auch die Iris-550-Grafik, die aktuellen Linux-Distributionen größere Schwierigkeiten bereitet. Der Kernel erhielt zudem weitere Grundlagen, damit virtuelle Maschinen mittelfristig auf Teilfunktionen eines im Host verbauten Grafikprozessors von Intel zugreifen zu können, um so dessen 3D-Beschleunigung zu verwenden.

Der Grafiktreiber für die verschiedenen Rasbperry-Pi-Modelle soll dank einer Änderung nun "signifikant mehr 3D-Performance liefern". Unter den Änderungen am wichtigsten Grafiktreiber-Subsystem waren ferner einige, durch die der Kernel jetzt bei MacBook-Pro-Modellen der Baujahre 2008 bis 2013 den Wechsel zwischen den beiden Grafikprozessoren beherrscht (u. a. 1 2). An Support für neuere Modelle – das sind jene mit Retina-Displays – wird noch gearbeitet.

Ohne es groß zu erwähnen haben die Patches am USB-Subsystem Unterstützung für die mit USB 3.1 definierten Übertragungsmodus "SuperSpeedPlus" gebracht, der eine Brutto-Transferraten von 10 GBit/s ermöglicht (1, 2, 3); doppelt so viel also wie beim mit USB 3.0 eingeführten "SuperSpeed". Der Kernel bringt jetzt einen Treiber für den Audio-Prozessor mit, den AMD in einigen seiner SoCs verbaut. Neu dabei ist auch ein Treiber für die in manchen Notebooks verbauten Synatics-Touchpads, die über das RMI4-Protokoll kommunizieren (1, 2); er ersetzt einen Staging-Treiber, der Qualitätsmängel aufwies und in manchen Distributionen daher außen vor bleib.

Beim erst jüngst integrierten Netzwerktreiber Rtl8xxxu gab es eine Reihe von Detailverbesserungen, durch den der für USB-WLAN-Chips von Realtek zuständige Treiber nun auch den Realtek-Baustein 8723BU unterstützt. Mit Linux 4.6 lässt sich nun auch die Force-Feedback-Funktion des von Logitech vertriebenen Racing-Lenkrads G920 verwenden. Das sind nur einige Beispiele aus einer Reihe von Treibern, die neu sind oder für 4.6 verbessert wurden. Zusammen mit den eingangs erwähnten Verbesserungen für GeForce-GPUs werden Linux-Distributionen und Live-Linuxe so deutlich besser auf moderner Hardware laufen.

Unabhängig von den bereits erwähnten Umbauten am Cpufreq-Code haben die Kernel-Hacker einen Workaround für einen Firmware-Fehler eingebaut, durch den die Prozessoren einiger Notebooks derzeit nicht mehr in die schnellsten Betriebsmodi wechseln. Betroffen sind unter anderem das HP ProBook 4410s und eine größere Zahl von Lenovo-Geräten, darunter offenbar die Modelle G510, G550, Y50-70 und Y580.

Über neue Dateien im Procfs können Performance- und Powermanagement-Tools jetzt festlegen, wie viel früher oder später der Kernel einen Prozess aufrufen darf, der zu einer bestimmten Zeit wieder aufgeweckt werden will. Größere Werte verschaffen dem Kernel im Leerlauf mehr Spielraum: So führt er möglichst viele Aufgaben in einem Rutsch aus, damit der Prozessor länger und tiefer schlafen kann.

Um Strom zu sparen, kann Linux jetzt einen AHCI-Controller ausschalten, wenn alle von ihm versorgten SATA-Verbindungen gerade schlafen. Wie viele andere vom Kernel unterstützte Stromspartechniken muss man auch diese Möglichkeit manuell via Sysfs aktivieren, weil sie auf einigen Systemen womöglich nicht korrekt arbeitet.

Um das Ausnutzen von Sicherheitslücken im Kernel-Code zu erschweren, markiert der Kernel jetzt eigene Datenstrukturen als schreibgeschützt, die sich nach der Initialisierung nicht mehr verändern; Details hierzu liefert LWN.net. Beim Ausführen von 32-Bit-x86-Programmen verwendet der Kernel die Möglichkeiten der Speicheradressen-Verwürfelung (ALSR/Address Space Layout Randomization) deutlich stärker, um Schadsoftware den Angriff zu erschweren. Auch auf ARM64 wird Kernel ASLR unterstützt, bei der der Kernel seine eigenen Speicheradressen verwürfelt. Ferner beherrscht Linux mit der neuen Version auch das in ARM 8.2 definierte User Access Override, mit dem sich der Zugriff auf fremde Speicherbereiche erschweren lässt.

Der neue Kernel bringt ersten Support der "Memory Protection Keys for Userspace" (u. a. 1, 2, 3). Mit dieser als MPK oder Pkeys abgekürzten Funktion von Intels Server-Prozessoren der Skylake-Generation kann ein Prozess die im Arbeitsspeicher hinterlegten Daten mit sechzehn verschiedenen Zugriffsrechten schützen, deren Einhaltung der Prozessor ohne Geschwindigkeitseinbußen sicherstellt. Ein Prozess kann so beispielsweise ohne Geschwindigkeitseinbußen sicherstellen, dass die von einem seiner Threads angelegten Speicherinhalte für andere Threads des Programms nicht erreichbar sind – etwa damit nur ein Thread eines Verschlüsselungsprogramms den im Arbeitsspeicher hinterlegten Schlüssel lesen kann. Vorerst wird die Funktion aber nur genutzt, um das Auslesen von Code zu unterbinden, den der Prozessor aber dennoch ausführen kann. Weitere Hintergründe liefert ein Artikel bei LWN.net

Über Kcov und Syzkaller haben die Entwickler in den Letzten Monaten über 170 Fehler gefunden und behoben.

Um den Kernel-Code robuster zu machen, wurde Kcov integriert. Dabei handelt es sich um eine Infrastruktur, die es Fehler-Suchwerkzeugen erleichtert, mehr Code-Pfade zu testen. Das nutzt das Fuzzing-Tool Syzkaller, ein eigens entwickeltes Programm zum Testen von Syscalls. Mit ihm haben die Entwickler in den vergangenen Monaten bereits über 170 Fehler im Kernel-Code aufgespürt, von denen sich einige als Sicherheitslücken entpuppten. Weitere Hintergründe finden sich in der Kcov-Dokumentation und einem LWN.net-Artikel.

Neu ist auch die "Compile-time stack metadata verification". Fürs Erste verbessert diese Infrastruktur lediglich die Fehleranalyse, denn durch sie zeigt ein Stacktrace jetzt die Funktions-Aufruffolge zuverlässig an, die zum Fehler geführt hat. Bislang fehlten in Assembler geschriebene Funktionen dort häufiger, weil dazu eine explizite Auszeichnung im Code nötig ist, die Entwickler gelegentlich vergessen. Die Kernel-Hacker haben die neue Infrastruktur aber aus einem anderen Grund entwickelt: Sie schafft Grundlagen, über die sich in Zukunft mehr Kernel-Fehler via Kernel Live Patching (KLP) beheben lassen sollen, ohne das System neu starten zu müssen. Weitere Details liefern Dokumentation und LWN.net

Container-Hosts nutzen typischerweise Control Groups (Cgroups), um den Ressourcenverbrauch eines Containers zu begrenzen, damit die darin laufende Software nicht sämtliche CPU-Zeit oder den ganzen Arbeitsspeicher an sich reißt. Durch die neuen "Cgroup Namespaces" kann der Container die ihm gewährten Ressourcen jetzt selbst mit Cgroups regeln (u. a. 1, 2). Das ist wichtig für Betriebssystem-Container, damit die Cgroup-Werkzeuge von Linux-Distributionen im Container genauso schalten und walten können wie beim direkten Betrieb auf der Hardware.

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 heise open-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, Gentoo und OpenSuse Tumbleweed dürften die neue Kernel-Version in den nächsten Wochen als reguläres Update erhalten. Bei OpenSuse Leap, Ubuntu und vielen anderen klassisch gewarteten Distributionen wird das nicht passieren, denn dort macht der Kernel nur beim Upgrade auf eine neue Distributionsversion einen Sprung.

Der Kernel bringt jetzt einen "Out of memory reaper" mit, der in der Prozessliste als oom_reaper erscheint und den OOM Killer ergänzt. Letzter schießt bei einem kritischen Mangel an freiem Arbeitsspeicher den wahrscheinlich für die Knappheit verantwortlichen Prozess ab, damit das System sich nicht komplett festfährt. Dies Verfahren kann aber scheitern, wenn sich der Prozess in einem nicht unterbrechbaren Abschnitt findet, den es aufgrund einer Sperre (Lock) nicht verlassen kann, weil ein andere Task diese aufgrund des Speichermangels nicht freigibt. Hier soll der OOM Reaper helfen, der die anonyme Arbeitsspeicher-Bereiche (anonymous memory) des abzuschießenden Prozesses beim Abschuss freigibt, denn die sind in der Situation ohnehin weitgehend irrelevant. Details liefern einer der Commits und LWN.net.

Ein per Hyper-V in einer virtuellen Maschine (VM) laufendes Linux 4.6 kann über einen neuen Treiber auf PCI/PCIe-Geräte zugreifen, die Windows vom Host an den Gast durchreicht; Letzteres gelingt per "Discrete Device Assignment", das der Windows Server seit Version 2016 beherrscht.

Das DM-Cache-Target, mit dem sich ein SSD-Cache für eine Festplatte einrichten lässt, nutzt die jüngst eingeführte SMQ-Policy jetzt auch, falls der Einsatz der älteren MQ-Policy konfiguriert wurde. Letztere wurde vom zuständigen Entwickler entfernt: SMQ liefere in allen Fällen eine bessere Performance und benötige zugleich weniger Arbeitsspeicher.

Wie seit einer Weile üblich gab es auch diesmal wieder zahlreiche Änderungen am Performance-Monitoring-Werkzeug perf und der von ihm verwendeten Infrastruktur. Darunter ist etwa die Möglichkeit für eine hierarchische Ausgabe der Messwerte bei perf top und perf report.

Kernel-
Version
Anzahl
Dateien¹
Zeilen
Quelltext
(Ohne Doku)²
Entwick-
lungs-
zeitraum
Anzahl
Commits³
Diffstat⁴
Linux 3.19 48440 19130604
(17692109)
63 Tage 13652 10739 files changed,
483355 insertions(+),
346843 deletions(-)
Linux 4.0 48957
19312370
(17847304)
63 Tage
11306
9489 files changed,
 508686insertions(+),
 326917 deletions(-)
Linux 4.1 49457 19512485
(18004436)
70 Tage 12965 10094 files changed,
 453375 insertions(+),
 253259 deletions(-)
Linux 4.2 50795 20311717
(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 20862115
(19243827)
70 Tage 14082 10604 files changed,
 713754 insertions(+),
 470774 deletions(-)
Linux 4.5 52916 21154545
(19489725)
63 Tage 13173 11590 files changed,
 1146355 insertions(+),
 854286 deletions(-)
Linux 4.6 53660 21422694
(19724413)
63 Tage 14618 10250 files changed,
 606023 insertions(+),
 337875 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)

Mit der Freigabe von Linux 4.6 beginnt zugleich die Phase, in der Linus Torvalds das Gros der Änderungen für Linux 4.7 aufnimmt; dieses "Merge Window" schließt er typischerweise nach zwei Wochen mit der Veröffentlichung einer erste Vorabversion.

Zahlreiche neue Funktionen liegen zur Aufnahme in Linux 4.7 bereits bereit. Darunter auch Erweiterungen für Amdgpu, durch die der Treiber AMDs neue Polaris-Grafikprozessoren unterstützt. Diese sitzen auf einer neuen Generation von Radeon-Grafikkarten, die AMD offenbar Anfang Juni einführen will.

Sofern Torvalds und seine Mitstreiter im gewohnten Tempo arbeiten, sollte der Linux-Kernel 4.7 Mitte Juli erscheinen.

[Update 18.05.2016-08:00] Im OOM-Reaper-Abschnitt die Beschreibung der Problematik korrigiert, warum der OOM Killer in bestimmten Fällen nicht funktioniert. [/Update] (thl)