Die Neuerungen von Linux 3.14

Der Netzwerkcode kann kleine Datenhäppchen jetzt bündeln und dicke Downloads drosseln. Neben einem weiteren Prozess-Scheduler bringt der neue Kernel eine Reihe von Performance-Optimierungen. Ferner unterstützt Linux jetzt eine dritte Xen-Betriebsart sowie einige kürzlich vorgestellte Grafikkerne.

In Pocket speichern vorlesen Druckansicht 10 Kommentare lesen
Lesezeit: 12 Min.
Von
  • Thorsten Leemhuis
Inhaltsverzeichnis

Zehn Wochen nach der Veröffentlichung von Linux 3.13 hat Linus Torvalds jetzt den Kernel 3.14 freigegeben. Dessen Radeon-Grafiktreiber unterstützt AMDs Dynamic Power Management (DPM) jetzt auch bei den neuesten Radeon-Grafikkernen vollständig und aktiviert die Stromspartechnik dort auch gleich automatisch (1, 2). Ferner kann der Treiber nun auch den Video-Decoder der Oland-GPUs nutzen, die auf den Radeon-HD-Modellen 8570 und 8670 stecken.

Der Intel-Grafiktreiber von 3.14 nutzt die zur Laufzeit verwendbaren Stromsparfunktionen von Grafikkernen stärker, die die Core-i-4000er-CPUs und andere Haswell-Prozessoren beherrschen (1, 2). Zudem ist die Unterstützung für den Grafikkern von Broadwell-CPUs jetzt standardmäßig aktiv; diesen Haswell-Nachfolger will Intel offenbar im Sommer einführen. Die Unterstützung für UMS (Userspace Mode Setting) in Intels Kernel-Treiber gilt ab Linux 3.14 als "deprecated" und soll im Verlauf der nächsten zwölf Monate nach und nach entfernt werden, wenn sich niemand beschwert. Betroffen sind davon nur Anwender mit sehr alten Linux-Distributionen, denn die DDX-Treiber für den X-Server beherrschen UMS schon seit ungefähr vier Jahren nicht mehr.

Der Nouveau-Treiber für Nvidia-GPUs bringt nun alles mit, um die 3D-Beschleunigung des GK208 zu verwenden – ein Grafikchip, der unter anderem auf den GeForce-GT-Modelle 630, 635 und 640 eingesetzt wird (1, 2). Neu in 3.14 ist auch die Unterstützung für den GK110 der GeForce GTX 780.

Zum Kernel stieß ferner ein Treiber für das Bochs Dispi Interface, das Qemu beim Aktivieren der VGA-Unterstützung standardmäßig emuliert. Einige weitere Änderungen an diesen und anderen Grafiktreibern listet der Haupt-Git-Pull-Request für den Direct Rendering Manager (DRM) des Kernels auf.

Der Prozess-Scheduler von 3.14 kann Teile der Prozessorzeit nach dem Schema Earliest Deadline First (EDF) verteilen (u. a. 1, 2, 3, 4, Dokumentation). Bei diesem vorwiegend für Echtzeit-Aufgaben interessanten Verfahren stellt der Kernel zuverlässig sicher, dass Anwendungen immer früh genug an die Reihe kommen, um ihre Arbeit fristgerecht zur gesetzten Deadline erledigen zu können. Dazu müssen die Tasks dem Scheduler aber auch mehr Informationen liefern als gewohnt: Aufruffrequenz, die maximale für die Aufgabe benötigte Laufzeit sowie den Zeitpunkt, bis zu dem die Aufgabe auf jeden Fall erledigt sein muss.

Bereitgestellt wird das Verteilverfahren durch die neue Deadline-Klasse im Completely Fair Scheduler (CFS) des Kernels. Sie darf maximal 95 Prozent der verfügbaren Rechenzeit in Anspruch nehmen, damit der CFS noch Prozessorzeit an reguläre Tasks verteilen kann. Obwohl die Entwicklung der Deadline-Scheduling-Patches über fünf Jahre in Anspruch genommen hat, stehen noch allerlei Dinge auf der To-do-Liste; darunter ein besseres Zusammenspiel mit der Realtime-Scheduling-Klasse des CFS und Erweiterungen, damit nicht nur privilegierte Anwender das neue Verfahren nutzen können.

Die neue Kernel Address Space Layout Randomization (KASLR) soll Angreifern das Leben erschweren (u. a. 1, 2, 3, 4). Durch die Technik legt der Kernel die Einsprungadressen seiner internen Funktionen bei jedem Start an andere Stellen des eigenen Speicherraums. Das macht es Übeltätern schwerer, beim Ausnutzen von Pufferüberläufen und ähnlichen Sicherheitslücken eine Kernel-Funktion zu finden, die ihnen höhere Rechte verschafft. Zuvor beherrschte der Kernel solches Adress-Zerhacken lediglich für Userspace-Software. Derzeit wird KASLR nur bei 32- und 64-Bit-x86-Prozessoren unterstützt; zudem lässt es sich bei der Kernel-Konfiguration nur aktivieren, wenn man die Unterstützung zum Suspend-to-Disk (Hibernate/Ruhezustand) deaktiviert.

Ceph unterstützt nun erweiterte Attribute. Zahlreiche Eigenschaften von Btrfs-Laufwerken lassen sich jetzt auch via Sysfs abfragen oder, sofern möglich, setzen; darunter die Dateisystembelegung oder die Features, die das Btrfs des jeweiligen Kernels beherrscht (1, 2). Ferner kann das weiterhin experimentelle Btrfs nun Dateisystem-spezifische Dateieigenschaften direkt als Extended Attribute (EA/Xattr) in der Inode speichern; etwa die Information, ob Btrfs eine Datei oder alle Dateien eines Verzeichnisses komprimieren soll. Zudem gab es einige Performance-Optimierungen an Btrfs.

Zum Kernel stößt ein Krypto-Treiber für einen Cryptographic Coprocessor, an dem AMD zu arbeiten scheint (u. a. 1, 2). Die Eingabegerätetreiber unterstützen nun auch Dual Action Gamepads von Logitech sowie Force-Feedback beim Dualshock 4 von Sony. Neu dabei ist auch Unterstützung für den Realtek RTL8153, den einige Gigabit-Netzwerkadapter mit USB-3.0-Schnittstelle einsetzen.

In den Staging-Zweig zog ein Treiber für den WLAN-Chip Realtek RTL8821 ein, der in einer nicht näher spezifizierten Steam Box zum Einsatz kommen soll. In den Spezialbereich für qualitativ unzureichenden Code zog zudem der von Android verwendete ION Memory Allocator ein; der wurde dabei aber auch gleich umgebaut und setzt dadurch jetzt auf Kernel-Techniken wie das Dma-Buf-Interface oder den CMA-Allocator auf, statt die von ihnen gebotenen Funktionen selbst zu implementieren.

Durch das neue TCP Auto Corking wartet der Kernel einen kurzen Moment, bevor er kleinere Datenmengen über das Netzwerk versendet. Falls in der Wartezeit weitere Daten auflaufen, legt es diese mit den zuvor aufgelaufenen Daten zusammen und versendet sie in einem größeren Netzwerkpaket. Das reduziert Overhead für das System und die Netzwerk-Infrastruktur, daher kann die Technik den Durchsatz trotz Wartepause steigern. TCP Auto Corking ist standardmäßig aktiv und lässt sich via /proc/sys/net/ipv4/tcp_autocorking deaktivieren.

Linux 3.14 bringt auch eine Reihe von Verbesserungen und Fehlerkorrekturen am erst mit 3.13 eingeführten Paket-Filter-Subsystem Nftables. Unter ihnen die Filtertabelle "inet", deren Regeln für IPv4- und IPv6-Übertragungen gleichermaßen gelten; das soll die Firewall-Konfiguration bei Systemen mit Dual-Stack erleichtern. Zum Kernel stieß zudem der "Proportional Integral controller Enhanced" (PIE) genannte Netzwerk-Paket-Scheduler; er vermeidet Probleme, mit denen traditionelle Scheduler gelegentlich zu den als Bufferbloat bekannten Netzwerk-Übertragungsproblemen beitragen. Ebenfalls neu: Eine Netfilter-Funktion, bei der einzelne Anwendungen oder einer Gruppe von ihnen einen eigenen Satz von Firewall-Regeln erhalten.

Neu dabei ist auch der Qdisc-Scheduler Heavy-Hitter Filter (HHF). Er analysiert den Netzwerkverkehr beim Versenden und versucht, kleine Übertragungen von größeren zu unterscheiden. Den größeren weist er eine geringere Priorität zu, damit diese die Leitung nicht mehr so leicht verstopfen; kleinere Übertragungen sollten dadurch eine geringere Verarbeitungslatenz erhalten, was die "gefühlte" Performance verbessern kann.

Den Sperr-Mechanismus Futex (Fast Userspace Mutex), auf den Userspace-Programme zum Locking zurückgreifen können, soll dank Optimierungen nun erheblich besser skalieren. Kexec arbeitet jetzt auch auf EFI-Systemen; diese bei klassisch bootenden Systemen schon länger unterstützte Technik umgeht beim Start eines neuen Kernels die Firmware; das beschleunigt den Neustart und kann zusammen mit Kdump die Ursachenforschung bei Systemabstürzen erleichtern.

Beim Code zur Arbeitsspeicherverwaltung gab es einige Optimierungen, die die Effizienz der Defragmentierungstechnik Memory Compaction bei Verwendung großer Speicherseiten verbessert. Das kann die Performance mancher Workloads deutlich steigern, wie eine lange Reihe von Messwerten in einem Commit-Kommentar zeigt.

Zram konnte den Staging-Bereich für qualitativ schlechten Code verlassen. Diese Kernel-Funktion kann ein virtuelles Device zum Speichern von Daten bereitstellen, die der Kernel komprimiert im Arbeitsspeicher ablegt. Zram ist dadurch etwa für Auslagerungsspeicher oder das Tmp-Verzeichnis interessant. Eine Reihe von Embedded-Systemen und Live-Medien nutzen Zram schon länger, um knappen Arbeitsspeicher effizienter zu nutzen.

Der Kernel bringt jetzt ein Diagnoseprogramm mit, das beim Optimieren der Suspend- und Resume-Zeiten helfen kann. Neu dabei ist auch das Userspace-Werkzeug lockdep. Es kann andere Userspace-Anwendungen im Betrieb beobachten und dabei Code-Pfade ausweisen, die zu Deadlocks führen könnten – also Situationen, in denen sich zwei Tasks beim Anfordern mehrschichtiger Sperren gegenseitig blockieren. Innerhalb des Kernels haben die Entwickler solche Probleme mit Hilfe der schon viele Jahre alten Lockdep-Infrastruktur weitgehend ausgemerzt; das neue Programm baut auf dem dabei verwendeten Quellcode auf.

Der Xen-Code unterstützt die Paravirtualized Hardware Extensions (PVH), die der Hypervisor des kürzlich vorgestellten Xen 4.4 ermöglicht. Diese Betriebsart funktioniert nur mit darauf abgestimmten Gastsystemen, da diese wie bei normaler Paravirtualisierung (PV) direkt mit dem Xen-Hypervisor kommunizieren. Für die Speicherverwaltung und einige andere Aufgaben greift Xen im PVH-Betrieb allerdings auf die Techniken moderner Prozessoren zurück, die für Xen Full Virtualization (HVM/Hardware Virtual Machine) oder KVM erforderlich sind. Dadurch soll PVH die Vorteile beider Virtualisierungsansätze vereinen und Gäste effizienter betreiben.

Unter den Änderungen an der Performance-Monitoring-Infrastruktur Perf ist Unterstützung für Intels RAPL (Running Average Power Limit); dadurch lassen sich bei der Laufzeitanalyse mit perf nun auch Daten zur Leistungsaufnahme von CPU-Kernen, Prozessor-Infrastruktur und Arbeitsspeicher abrufen, sofern der Prozessor denn RAPL unterstützt (u. a. 1, 2).

Anders als Linux 3.13 ist 3.14 kein Release, das grundlegende Änderungen bringt, die viele Anwender spüren oder Linux deutlich nach vorn bringen. Wie jede neue Kernel-Version ist aber auch die neueste wieder ein Entwicklungsschritt mit vielen positiven Auswirkungen, wie etwa die zahlreichen Verbesserungen bei den Grafiktreibern zeigen; von Bedeutung sind auch das Speicheradress-Zerhacken oder die Performance-Optimierungen beim Locking, der Speicherverwaltung oder dem Netzwerkstack, machen sie Linux doch wieder ein klein wenig schneller und sicherer. Hinzu kommt mit dem Deadline-Scheduling ein Feature, das vielleicht für Desktop-Anwendungen nicht sonderlich relevant ist, für Embedded/Realtime-Linux dafür aber um so mehr.

Direkt nach der Freigabe von Linux 3.14 beginnt nun das typischerweise zwei Wochen lange Merge Window, in dem die Kernel-Entwickler das Gros der Änderungen für die darauf folgende Linux-Version in den Hauptentwicklungszweig von Linux integrieren.

Zur Aufnahme vorgesehen sind Patches, die den H264-Video-Encoder von Radeon-Grafikkernen der CIK-Generation verfügbar machen; also den VCE2 genannten Encoder in Grafikkernen wie Bonaire, Kabini, Kaveri und Hawaii, die in einigen der neuesten AMD-Prozessoren oder auf den Sea-Islands-Grafikkarten Radeon HD 7790, R7 260 und R9 290 sitzen. Auf diesen Kernel-Treiber baut ein Encoder-Treiber auf, der im Entwicklerzweig von Mesa 3D steckt und Bestandteil von Mesa 3D 10.2 werden soll; Anwendungen können diesen Video-Encoder über das OpenMAX API verwenden, das wie OpenGL von der Khronos Group vorangetrieben wird. Unterstützung für den VCE1-Encoder von Trinity-Prozessoren und Southern-Islands-Grafikkarten fehlt, soll aber möglicherweise noch folgen.

Durch einige Erweiterungen am EFI-Code soll es möglich werden, einen 64-Bit-Kernel auf x86-Systemen zu nutzen, deren Firmware und Bootloader im 32-Bit-Modus arbeiten. Das ist zum Einsatz von x86-64-Distributionen auf Notebooks und Tablets wie dem Packard Bell EasyNote ME69 BMP interessant, die Bay-Trail-Prozessoren nutzen und aufgrund von Versorgungsproblemen mit Windows-Treibern eine 32-Bit-UEFI-Firmware verwenden. Da diese Systeme teilweise kein Compatibility Support Module (CSM) zum klassischen Start von Betriebssystemen mitbringen, kann man manchmal nur eine der raren Distributionen installieren, die 32-Bit-UEFI-Unterstützung bieten.

Sofern Linus Torvalds und seine Mitstreiter bei der Entwicklung von 3.15 das gewohnten Tempo an den Tag legen, dürfte der Nachfolger von 3.14 Ende Mai erscheinen. Ein heise open-Artikel wie dieser wird dann wieder einen Überblick über die wichtigsten Neuerungen dieser Version liefern.

Linux-
Version
Anzahl
Dateien¹
Zeilen
Quelltext
(Ohne
Doku)²
Entwick-
lungs-
zeitraum
Anzahl
Commits³
Diffstat⁴
3.7 40905 16191690
(15108939)
71 Tage 11990 15886 files changed,
 1567749 insertions(+),
 1244085 deletions(-)
3.8 41520 16416874
(15310436)
70 Tage 12394 11701 files changed,
 577188 insertions(+),
 352003 deletions(-)
3.9 42423 16686879
(15563152)
69 Tage 11910 11120 files changed,
 608436 insertions(+),
 338439 deletions(-)
3.10 43016 16955489
(15803499)
63 Tage 13637
10471 files changed,
 660572 insertions(+),
 391966 deletions(-)
3.11 44002 17403279
(16225814)
63 Tage 10893 9692 files changed,
 788982 insertions(+),
 341196 deletions(-)
3.12 44586
17726872
(16529850)
62 Tage 10927 8636 files changed,
 587004 insertions(+),
 263408 deletions(-)
3.13 44970 17930916
(16703764)
77 Tage 12127 9843 files changed,
 441474 insertions(+),
 237428 deletions(-)
3.14 45935 18271989(17002462) 70 Tage 12311 10601  files changed,
 605655 insertions(+),
 264576 deletions(-)
¹ find . -type f -not -regex '\./\.git/.*' | 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 --no-merges --pretty=oneline v3.(x-1)..v3.(x) | wc -l
⁴ git diff --shortstat v3.(x-1)..v3.(x)
Mehr Infos

Linux herunterladen

Die neue Linux-Version steht über Kernel.org zum Download bereit; bereits kurz nach der Veröffentlichung liefern auch viele Spiegelserver den neuen Kernel aus.

Den Quellcode von Linux gibt es in Tar-Archiven, die mit Gzip und Xz komprimiert wurden. Die folgenden Befehle zeigen am Beispiel von Linux 3.1, wie Sie die Quellen herunterladen, entpacken und auf Unversehrtheit prüfen:

[thl@thl tmp]$ export linux_version=3.1
[thl@thl tmp]$ wget --quiet http://www.kernel.org/pub/linux/kernel/v3.0/linux-${
linux_version}.tar.sign \
http://www.kernel.org/pub/linux/kernel/v3.0/linux-${linux_version}.tar.xz
[thl@thl tmp]$ xz -d linux-
${linux_version}.tar.xz
[thl@thl tmp]$ gpg --verify linux-
${linux_version}.tar.sign
gpg: Unterschrift vom Mo 24 Okt 2011 09:17:58 CEST mittels RSA-Schlüssel ID 00411886
gpg: Korrekte Unterschrift von "Linus Torvalds <torvalds@linux-foundation.org>"
gpg: WARNUNG: Dieser Schlüssel trägt keine vertrauenswürdige Signatur!
gpg: Es gibt keinen Hinweis, daß die Signatur wirklich dem vorgeblichen Besitzer gehört.
Haupt-Fingerabdruck = ABAF 11C6 5A29 70B1 30AB E3C4 79BE 3E43 0041 1886

Einige Hinweise zur Einrichtung eines neuen Kernels finden Sie im Artikel "Linux-Kernel maßgeschneidert", der die Einrichtung eines Kernels mit Hilfe des Make-Targets "localmodconfig" beschreibt.

(thl) (thl)