Die Neuerungen von Linux 3.13 | heise online

Die Neuerungen von Linux 3.13

Der Kernel 3.13 enthält die neue Firewall-Infrastruktur Nftables und ist erheblich besser für besonders flotte Datenträger gerüstet.

vorlesen Druckansicht 22 Kommentare lesen
Lesezeit: 10 Min.
Von
  • Thorsten Leemhuis
Inhaltsverzeichnis

Zwei Wochen länger als gewohnt hat es gedauert, aber jetzt ist der Linux-Kernel 3.13 fertig. Schuld an der längeren Entwicklung sind weder größere Änderungen oder schwerwiegende Bugs, sondern schlicht zwei Reisen von Linus Torvalds, die in die Anfangs- und End-Phase der Linux-3.13-Entwicklung fielen. Neuerungen gibt es daher im gewohnten Maß; darunter allerdings gleich zwei, die erhebliche Bedeutung für die Zukunft haben.

Das neue Netzwerk-Paketfilter-Subsystem Nftables ist die Neuerung von 3.13, die mittelfristig die größten Auswirkungen haben dürfte. Der neue Filter-Mechanismus für Firewalls soll nämlich die existierenden Paketfilter Iptables, Ip6tables, Arptables und Ebtables ablösen, bei denen die Unterstützung für IPv4, IPV6, ARP und Ethernet Bridging direkt im Kernel-Code steckt. Das Nftables-Subsystem hingegen ist protokollunabhängig, denn es ist im wesentlichen eine simple virtuelle Maschine, bei der Bytecode die Filterarbeiten erledigt.

Diesen Bytecode wird durch Userspace-Software wie dem Nftables-Programm Nftables-Tool nft erstellt und über ein Netlink-API in den Kernel geladen. Statt im Kernel steckt die Unterstützung für IPv4 und Co. so im Userspace. Nft weist allerdings eine andere Syntax auf als die vertrauten Werkzeuge iptables und ip6tables, die bislang zur Konfiguration von Linux-Firewalls dienen. Um Abwärtskompatibilität zu bieten und den Übergang auf Nftables zu erleichtern, haben die Nft-Entwickler daher Varianten dieser beiden Programme erstellt, die aus bestehenden Filterregeln Bytecode für das Nftables-Subsystem generieren.

Das Verlagerung von Teilen des Paketfilter-Codes soll die Wartung des Kernels erleichtern und einige Beschränkungen des aktuellen Codes beseitigen. So soll mit Nftables das Ändern von Filter-Regeln im Betrieb nicht nur zuverlässiger, sondern auch erheblich schneller funktionieren; das ist insbesondere für Firewalls mit einem großen Regelsatz von Vorteil.

Im Detail​

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

  1. Dateisysteme & Storage
  2. Netzwerk
  3. Infrastruktur
  4. Treiber
  5. Grafiktreiber

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

Der neue Multi-Queue Block IO Queueing Mechanism soll Linux für besonders schnelle Datenträger fit machen – also PCIe-SSDs, NVMe-Hardware und andere Datenträger, die noch mehr IO-Operationen pro Sekunde (IOPS) ausführen als aktuelle Desktop- und Notebook-SSDs. Dazu stellt das kurz "blk-mq" genannte Framework den Storage-Treibern unter anderem  Grundfunktionen zur Verfügung, um die Arbeit auf mehrere Warteschlangen zu verteilen; anders als bei den Block-Layer-Funktionen, auf die Storage-Treiber bislang zurückgreifen, verteilen sich die Aufgaben so auf mehrere Threads und daher erheblich besser auf die verfügbaren CPU-Kerne. Nur so lässt sich das Potenzial der heute schnellsten Datenträger nutzen, daher lassen einige aktuelle Treiber für flotte Storage-Hardware die vom Block Layer gebotenen Funktionen links liegen und erledigen alles selbst.

Auch Treiber für Allerwelts-Datenträger sollen von der neuen Multiqueue-Infrastruktur profitieren können. Bislang nutzt die allerdings nur der schon länger im Kernel enthaltene Treiber virtio-blk; erst in naher Zukunft wollen die Kernel-Entwickler weitere Treiber konvertieren.

Radeon-Grafikchips seit der Southern Island-Generation (Radeon 7750 und neuer) liefern mit den Open-Source-Treibern von Mesa 3D nun bis zum Sechsfachen an 3D-Leistung. Das ist einer wenige Codezeilen kleinen Änderung in Linux 3.13 zu verdanken, die einen Programmierfehler beseitigt, durch den der Linux-Kernel bislang nur einen Teil der GPU-Rechenwerke aktiviert hat.

Bei den meisten modernen Radeon-Grafikkernen verwendet der Kernel jetzt standardmäßig Dynamic Power Management (DPM) (1, 2, 3, 4, 5, 6). Diese Radeon-spezifische Stromspartechnik kann die Leistungsaufnahme erheblich reduzieren und wird seit 3.11 unterstützt, musste aber bislang manuell aktiviert werden. Der HDMI-Audio-Support des Radeon-Treibers arbeitet jetzt standardmäßig und beherrscht nun Multi-Channel Audio.

Der Intel-Grafiktreiber stellt jetzt Grundlagen zur Ansteuerung von 3D-Bildschirmen via HDMI bereit. Zudem unterstützt der Treiber auch die GPU der Broadwell-Prozessoren, die Intel in einigen Monaten einführen will. Der Nouveau-Treiber aktiviert nun standardmäßig die automatische Lüfterregelung. Der Treiber für Nvidias SoCs der Tegra-Reihe bietet in Linux 3.13 erstmals Schnittstellen, über die Userspace-Treiber 3D-Beschleunigung nutzen können.

Squashfs, das viele Linux-Distributionen zur Kompression des Root-Dateisystems ihrer Live-Medien nutzen, schreibt dekomprimierte Dateien jetzt direkt in den Page Cache; wie der Entwickler im Commit-Kommentar erläutert, konnte das den Durchsatz in einem Test von 13,7 auf 67,6 MByte/s steigern. Eine weitere Geschwindigkeitsverbesserung verspricht das Dekomprimieren mit mehreren Threads, was die Laufzeit eines Testszenarios mit vier Threads von 99 auf 9 Sekunden verkürzte (1, 2).

Btrfs gilt weiterhin als experimentell; durch eine Anpassung am Kernel-Konfigurations-Hilfetext ist nun aber der in fetten Lettern geschriebene Hinweis verschwunden, das On-Disk-Format des Dateisystems könne sich noch ändern. Stattdessen heißt es jetzt, das Datenträgerformat solle sich nur ändern, wenn es dafür gute Gründe gibt; wenn es solche gäbe, dann sollen auch neue Kernel Datenträger mit dem alten Format weiter unterstützen. So handhaben es die Entwickler der Ext-Dateisysteme, bei denen es diesmal nur kleinere Änderungen gab, schon seit langem.

Die Kernel-Entwickler haben die bei 3.8 eingeführten und bislang nur rudimentären Funktionen erheblich ausgebaut, um Prozesse und die von ihnen verwendeten Arbeitsspeicherbereiche automatisch zusammenzuhalten (u. a. 1, 2). Das ist für die im Server-Umfeld häufig anzutreffenden Multiprozessor-Systeme mit NUMA (Non-Uniform Memory Access) wichtig, denn auf lokal angebundenen Arbeitsspeicher greift ein Prozess schneller zu als auf Speicherbereiche von RAM-Modulen, die anderen Prozessoren zugeordnet sind.

Zudem soll Linux 3.13 durch Änderungen am Memory-Management-Code etwas schneller auf Systemen arbeiten, die verstärkt große Speicherseiten (Huge Pages) nutzen (u. a. 1, 2). Auch einige Verbesserungen am SLAB Allocator versprechen einen kleinen Performance-Gewinn.

Beim Random-Subsystem gab es zahlreiche Änderungen, die Zuverlässigkeit, Geschwindigkeit und Qualität der vom Kernel gelieferten Zufallszahlen steigern sollen (u. a. 1, 2, 3). Es lassen sich nun Kernel kompilieren, die bis zu 8192 CPU-Kerne unterstützen; bislang waren es halb so viele. Über neue Treiber kann der Kernel Rechenaufgaben an PCIe-Steckkarten mit Intels Xeon Phi übergeben (u. a. 1, 2, 3, 4, 5).

Der neue In Kernel Switcher (IKS) verbessert die Unterstützung für ARM-SoCs mit Big-Little-Architektur (u. a. 1, 2). Beim IKS bilden je ein schneller, aber stromhungriger, und ein langsamer, aber sparsamer ARM-Kern einen Verbund, bei der je nach Systemlast der eine oder andere Kern arbeitet. Eine viel flexiblere Ansteuerung und größeres Stromsparpotenzial verspricht Heterogeneous Multi-Processing (HMP), bei dem der Linux-Kernel die CPU-Kerne nicht paarweise, sondern alle separat anspricht; der dafür benötigte Kernel-Code hat aber noch einiges an Entwicklungsarbeit vor sich.

Bei demTreiber hid_apple  für Apple-Tastaturen kann man nun über den Parameter swap_opt_cmd=1 die Belegung von Option- und Command-Taste tauschen, damit sich eine Apple-Tastatur schon während des Starts ähnlich bedienen lässt wie moderne PC-Tastaturen. Zu den Media-Treibern stieß ein Treiber für den  DVB-S/S2-tauglichen Tuner CX24117 von Conexant. Neu dabei ist auch Unterstützung für die Tastatur Roccat Ryos MK und den Touchscreen des als Microsoft Surface 2.0 beziehungsweise Pixelsense verkauften dSamsung SUR40.

Der Netzwerk-Stack von Linux 3.13 nutzt nun standardmäßig TCP Fast Open (TFO). Die TCP-Erweiterung, die den HTTP-Verbindungsaufbau beschleunigen kann und beim IETF noch Draft-Status hat, wird Client-seitig seit Linux 3.6 unterstützt; der Server-Code folgte bei 3.7.

Das Nftables-Subsystem und das Multiqueue-Storage-Interface sind zwei Bausteine, die für die weitere Entwicklung von Linux sehr wichtig sind. Beide Techniken bringen nämlich Verbesserungen in Bereichen, wo Linux nicht mehr ganz auf der Höhe der Zeit war. Wichtig sind auch die Fehlerkorrektur am Radeon-Treiber. Doch trotz der großen Performance-Steigerung: AMD proprietäre Grafiktreiber  entlocken den neuesten Radeon-GPUs noch um einiges mehr 3D-Leistung.

Direkt nach der Freigabe von Linux 3.13 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 unter anderem Änderungen, durch die nun auch viele der neuesten Radeon-Grafikkerne die Stromspartechnik DPM standardmäßig aktivieren. Auch die Entwickler der Intel-Grafiktreibers wollen die Stromsparfunktionen ihrer GPUs besser nutzen. Zur Aufnahme vorgesehen ist ferner ein Kernel-Grafiktreiber für das Bochs Dispi Interface, das Qemu beim Aktivieren der VGA-Unterstützung standardmäßig emuliert.

Der Prozess-Scheduler soll Deadline-Scheduling lernen. Bei dieser Betriebsart können Tasks dem Scheduler unter anderem die erwartete Laufzeit sowie einen Zeitpunkt mitteilen, bis zu der ein Task seine Aufgabe erledigt haben muss. Das ist für Systeme mit Echtzeit-Ansprüchen wichtig, denn mit Hilfe dieser Informationen kann der Scheduler zuverlässiger sicherstellen, dass ein Realtime-Task früh genug an die Reihe kommt, um seine Aufgabe rechtzeitig zu erledigen.

Bei Linux 3.14 soll Zram ein vollwertiger Bestandteil werden – ein Treiber, der Datenträger emuliert und die darauf gespeicherten Daten komprimiert im Arbeitsspeicher ablegt. Zram verfügt über ähnliche Funktionen wie das bei 3.11 integrierte Zswap, bietet aber noch weitere Einsatzmöglichkeiten. Einige Embedded-Systeme und Linux-Distributionen nutzen Zram schon länger; es ist auch schon eine Weile Bestandteil der Linux-Quellen, lag aufgrund bekannter Qualitätsmängel jedoch bisher im Staging-Zweig.

Sofern Linus Torvalds und seine Mitstreiter bei der Entwicklung von 3.14 das gewohnten Tempo an den Tag legen, dürfte der Nachfolger von 3.13 bereits Ende März erscheinen.Ein Artikel auf heise open 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.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(-)
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 8636files changed,
 587004 insertions(+),
 263408 deletions(-)
3.13  44970 17930916
(16703764)
77 Tage 12127 9843 files changed,
 441474 insertions(+),
 237428 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)
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)