Die Neuerungen von Linux 3.9 | heise online

Die Neuerungen von Linux 3.9

Der Kernel kann SSDs als Festplatten-Cache einbinden und Netzwerkverkehr besser auf mehrere CPU-Kerne verteilen. KVM virtualisiert jetzt auch auf der ARM-Prozessoren. Hinzu kommen neue Treiber unter anderem für neue Grafikchips von AMD und kommende WLAN-Chips von Intel.

vorlesen Druckansicht 98 Kommentare lesen
Lesezeit: 11 Min.
Von
  • Thorsten Leemhuis
Inhaltsverzeichnis

Zehn Wochen nach Linux 3.8 hat Linus Torvalds nun den Kernel 3.9 freigegeben. Damit bleiben der Linux-Erfinder und seine Mitstreiter im gewohnten Rhythmus, denn auch bei den vorangegangenen Kernel-Versionen hat die Entwicklung jeweils rund 70 Tage gedauert.

Eine Neuerung in Linux 3.9 ist das Cache Target "dm-cache", mit dem sich ein Datenträger als Cache für andere Datenträger einrichten lässt – etwa eine schnelle SSD als Schreib-Cache für eine langsamere Festplatte (1, 2, 3). Das Cache-Target kann auf der SSD auch häufig genutzte Daten von der Festplatte bereithalten, um den Zugriff darauf zu beschleunigen. Die als experimentell eingestufte Funktion ist eine Neuentwicklung, die mit einem anderen Ansatzpunkt im Kernel ähnliches leistet wie die älteren, aber unabhängig vom Kernel gewarteten Caching-Lösungen Flashcache und Bcache; letztere wird aber wahrscheinlich in Linux 3.10 einfließen.

Mehr Infos

Im Detail

Bereits in den vergangenen Wochen hat das Kernel-Log in der Serie "Was 3.9 bringt" detailliert über die Neuerungen von Linux 3.9 berichtet:

  1. Dateisysteme und Storage
  2. Infrastruktur
  3. Treiber & Netzwerk

Der nebenstehende Text fasst die wichtigsten Neuerungen dieser Artikel zusammen und gibt einen Ausblick auf Linux 3.10.

Dank der neuen Option SO_REUSEPORT können jetzt mehrere TCP- oder UDP-Sockets auf demselben Port lauschen. Verschiedene Threads eines Webservers können dadurch jeweils einen eigenen Socket öffnen, der auf Port 80 lauscht; dort eingehende Verbindungen verteilt der Kernel gleichmäßig auf die Sockets. Das soll zu einer gleichmäßigen Verteilung der Arbeit auf die Threads und die von ihnen verwendeten Prozessor-Kerne führen.

Laut dem Google-Entwickler Tom Herbert, der diese Erweiterung programmiert hat, kann der neue Ansatz einen bislang in bestimmten Situationen entstehenden Flaschenhals vermeiden, wenn lediglich ein Thread die neuen Verbindungen annimmt und dann an andere Threads verteilt. Der neue Ansatz soll zudem eine stark ungleichmäßige Verteilung der Arbeit auf Prozessorkerne verhindern, die laut Herbert entstehen kann, wenn mehrere Threads auf einem einzelnen Socket lauschen. Details zu diesen Problemen und anderen Aspekten des Ansatzes liefern der Merge-Kommentar zu SO_REUSEPORT und ein LWN.net-Artikel.

Das Btrfs-Dateisystem beherrscht nun nicht mehr nur die RAID-Level 0 und 1, sondern enthält auch die Anfang Februar vorgestellte und als experimentell eingestufte Unterstützung für RAID 5 und 6. RAID-Fähigkeiten direkt im Dateisystem zu implementieren ermöglicht Funktionen, die nur umständlich mit dem klassischen Schichtmodell zu realisieren sind, wo das Dateisystem und das RAID kaum etwas über die Interna des jeweils anderen wissen. Durch die integrierte RAID-Funktionen braucht Btrfs beispielsweise nach dem Ausfall und dem Austausch eines Datenträgers im Btrfs-RAIDs nur die belegten Bereiche zu restaurieren, weil Btrfs diese anhand der Dateisysteminformationen erkennen kann; ein mit Mdadm administriertes Linux-Software-RAID kommt durch die Abstraktion an diese Informationen nicht ran und muss daher das komplette RAID-Volume restaurieren, was länger dauert.

Die Ext-Dateisystementwickler sind ein bei Linux 3.0 entstandenes Performance-Problem im von Ext4 verwendeten Journaling-Layer JBD2 angegangen. CIFS, NFS und eine Reihe weiterer Dateisysteme erhielten Unterstützung für User Namespaces. XFS wurde noch nicht angepasst, daher lassen sich die für Container interessanten User Namespaces bei der Kernel-Konfiguration weiterhin nur aktivieren, wenn XFS deaktiviert ist.

Der Radeon-Grafiktreiber des Kernel unterstützt nun die Oland-Grafikchips, die auf Radeon-HD-Karten der Serien 8500 und 8600 sitzen (u. a. 1, 2, 3). Auch Unterstützung für AMDs in Kürze erwarteten APUs der Richland-Generation stieß zum Kernel (1, 2). Der Nouveau-Treiber erhielt einige experimentelle Funktionen zur automatischen oder manuellen Lüfterregelung bei den GPUs NV40 und NV50, die auf den GeForce-Grafikchips 6xxx bis 9xxx und 1xx bis 3xx sitzen (u. a. 1, 2, 3, 4). Nvidia-Entwickler Aaron Plattner hat die "prime helpers" eingebracht, mit deren Hilfe die Beta eines neuen Grafiktreibers von Nvidia Optimus-Unterstützung implementiert. Der Grafiktreiber für Intels kommende Haswell-Prozessoren soll deren Grafikkern nun stromsparender konfigurieren, wenn nur eine Display-Pipe mit dem Embedded-DisplayPort (EDP) verwendet wird, wie es bei Notebook manchmal der Fall ist.

Linux 3.9 wird einen Treiber für Intels WLAN-Bausteine der 7000er-Serie mitbringen, die offenbar die schnellen Übertragungsmodi von IEEE 802.11ac unterstützen (1, 2). Das Unternehmen scheint sie in einigen Monaten einführen zu wollen – vermutlich im Paket mit Haswell-basierten Notebook-Prozessoren, die im Sommer auf den Markt kommen dürften.

Größere Umbauarbeiten sollen den Treibercode zur Konfiguration der in vielen modernen Desktop-PCs und Notebook verwendeten HD-Audio-Codecs schlanker und robuster machen. Die Libata-Treiber unterstützten nun Zero-Power Optical Device Drives (ZPODD) – optische Laufwerke, die das System zu Stromsparzwecken nahezu komplett ausschalten kann, wenn keine beispielsweise keine DVD im Laufwerk liegt (u. a. 1, 2).

Mit den Änderungen an den Platform-Treibern stieß ein Treiber zum Kernel, der Chromebooks verschiedener Hersteller unterstützt; darunter auch das Chromebook Pixel (1, 2, 3). Ebenfalls neu ist ein Treiber für APA-I2C-Trackpads von Cypress; ein solches steckt in Samsungs ARM Series 3 Chromebook, das derzeit ein beliebtes Testobjekt bei Linux-Entwicklern mit Interesse an ARM ist. Neu ist auch ein Treiber für das Cypress PS/2 Trackpad, das Dell in seinem Ultrabook mit Ubuntu 12.04 verbaut.

Die Entwickler haben wie geplant die Kernel-Konfigurations-Option CONFIG_EXPERIMENTAL entfernt (u. a. 1, 2). Ursprünglich sollten sich experimentelle Funktionen bei der Kernel-Erstellung nur aktivieren lassen, wenn diese Option gesetzt war. Da die Kernel-Entwickler aber oftmals vergessen haben, bei ausgereiften Funktionen die Abhängigkeit von CONFIG_EXPERIMENTAL zu entfernen, musste man die Option fast immer aktivieren, um einen Kernel für moderne Hardware und Distributionen zu bauen. Das ist auch den Kernel-Entwicklern aufgefallen, daher lassen sie den Ansatz jetzt fallen. Auf tatsächlich experimentelle Funktionen weisen jetzt nur noch die bei der Konfiguration angezeigten Hilfetexte oder Angaben wie "(EXPERIMENTAL)" in der Kurzbeschreibung hin;.

Die Liste der von Linux unterstützten CPU-Architekturen ist wieder um zwei Einträge länger geworden: Linux läuft läuft jetzt auch auf den ARC-Prozessoren von Synopsys sowie den Prozessorkernen Meta ATP (Meta 1) und HTP (Meta 2) von Imagination. Der Code für das Komprimieren und Dekomprimieren von LZO wurde aktualisiert und soll dadurch deutlich schneller arbeiten; auf manchen Prozessoren sogar doppelt so schnell.

Der Kernel-eigene Hypervisor KVM unterstützt in Linux 3.9 erstmals die Virtualisierungsfunktionen einiger Cortex-A15-Prozessoren. Der Xen-Code im Kernel funktioniert mit ARM bereits seit dem Kernel 3.7, wenn man eine Entwicklerversion der kommenden Version 4.3 des Xen-Hypervisors verwendet. Neu im ARM-Code ist auch die Unterstützung für eine "Dummy Virtual Machine Platform", die für Kernel gedacht ist, die als Gast unter KVM oder Xen laufen sollen.

Die Xen-Unterstützung erhielt Treiber, um Prozessoren und Speicher im Betrieb hinzuzufügen (1, 2, 3) – ein Entfernen im Betrieb gelingt vorerst nicht. Bessere Unterstützung für VMware verspricht die Aufnahme der Treiber für VMwares VMCI (Virtual Machine Communication Interface) und die darauf aufbauenden VMCI Sockets (u. a. 1, 2, 3); VMware-Produkte nutzen diese Techniken für die Kommunikation und den Datenaustausch zwischen Wirt und Gast.

Linux 3.9 beherrscht einen "Lightweight Suspend" oder "Suspend Freeze" genannten Schlafmodus, bei dem der Kernel alle Hardware-Komponenten in ihren tiefsten Schlafzustand schickt. Anders als bei einem Suspend-to-RAM (ACPI S3) wird die Stromversorgung der Komponenten dabei nicht abgeschaltet, daher sind die Bauteile schneller wieder einsatzbereit. Dadurch ist aber auch die Leistungsaufnahme höher als beim Suspend-to-RAM; sie soll allerdings niedriger liegen als im normalen Leerlauf, weil der Prozessor tiefer und länger schlafen kann.

Für PCs oder Notebooks ist der Freeze-Zustand eher uninteressant, abgesehen von Systemen, die besonders schnell, auf Tastendruck oder Netzwerkverkehr aufwachen sollen oder die Suspend-to-RAM nicht beherrschen. Manche Smartphones und Tablets nehmen bei dieser Schlafmethode aber kaum mehr Leistung auf als bei Suspend-to-RAM, sind jedoch beim Anschalten schneller einsatzbereit.

Nachdem der Einsatz von SSDs als Festplatten-Cache in der Windows-Welt ein alter Hut ist, kann es jetzt endlich auch der Linux-Kernel von Haus aus – es bleibt allerdings noch abzuwarten, ob Anwender das neue Dm-Cache oder das für 3.10 vorgesehen Bcache attraktiver finden. Die neue Socket-Teilungsfunktion im Netzwerk-Stack ist für Server-Betreuer und Software-Entwickler wichtig, damit auf modernen Multicore-Systemen nicht ein CPU-Kern zum Flaschenhals wird.

Durch Intels neue WLAN-Treiber und die Verbesserungen an den AMD-Grafiktreibern ist der Kernel besser für die PCs und Notebooks von morgen gerüstet. Durch die Unterstützung für RAID 5 und 6 kommt Btrfs seinem geplanten Funktionsumfang wieder ein wenig näher – das ist eine Voraussetzung zum Ablegen des Experimentell-Status, wobei nichts darauf hindeutet, dass das in nächster Zeit passiert.

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

Zur Aufnahme liegen unter anderem Patches bereit, mit denen sich der Unified Video Decoder (UVD) von Radeon-Grafikchips seit der HD-4000-Generation nutzen lässt; passende Userspace-Unterstützung, die sich über das von Nvidia initiierte VDPAU (Video Decode and Presentation API for Unix) ansprechen lässt, soll die nächste größere Überarbeitung von Mesa 3D enthalten.

In Linux 3.10 soll auch der Grafiktreiber QXL integriert werden, der den Grafikkern anspricht, den der Spice-Code von Qemu mit Hilfe von Paravirtualisierung emulieren kann; über diesen Kernel-Treiber soll sich mittelfristig auch 3D-Unterstützung verwenden lassen. Zur Aufnahme bereit liegt zudem ein Fabric-Modul für Infiniband-Hardware, das ein Aufsetzen eines LIO-iSCSI-Target für die iSCSI Extensions for RDMA (iSER) ermöglicht. In den Kernel 3.10 soll auch ein Treiber für Realteks 802.11n-PCIe-WLAN-Chip RTL8188EE einfließen.

Sofern Linus Torvalds und seine Mitstreiter im üblichen Tempo arbeiten, dürfte Linux 3.10 in der zweiten Juni-Hälfte erscheinen. Ein Artikel wie dieser wird dann wieder einen Überblick über die wichtigsten Neuerungen liefern.

Linux-
Version
Anzahl
Dateien¹
Zeilen
Quelltext²
(Ohne
Dokum.)
Entwick-
lungs-
zeitraum
Anzahl
Commits³
Diffstat⁴
3.4 38566 15383860
(14370856)
63 Tage 10899 11086 files changed,
 576156 insertions(+),
 358369 deletions(-)
3.5 39096 15596378
(14556354)
62 Tage 10957 9631 files changed,
 623277 insertions(+),
 410757 deletions(-)
3.6 39733 15868036
(14811965)
71 Tage 10247 8296 files changed,
 527247 insertions(+),
 255597 deletions(-)
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(-)
¹ 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 des Kernels gibt es in Tar-Archiven, die mit Gzip, Bzip2 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-3.1.tar.xz
[thl@thl tmp]$ gpg --verify linux-3.1.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

(thl) (thl)