Linux 3.13: Kernel-Rückblick des 4. Quartals 2013

Anzeige:

Die letzten drei Monate des Jahres erreichte uns Linux 3.12 und 3.13 erhielt voluminöse Neuheiten. Linux 3.12 besticht mit mehr Effizenz und Leistung für alle Hardware-Komponenten und virtuelle Systemen. Mathias Menzer durchleuchtet die Linux-Updates und -Hintergründe der beiden Sommermonate.

 

Linus Torvalds 2013

Linux-Hauptentwickler Linus Torvalds meinte ironisch, er müsse die Versionsnummern von Linux 3 bereits mit den Füssen abzählen. (pd)

Der Kern der Linux-Distribution wie Red Hat Enterprise Linux, Debian Linux, Ubuntu oder Suse Linux bildet der Linux-Kernel. Der Rückblick auf die Kernel-Entwicklung ist unser Ausblick auf neuen Funktionen und Veränderungen der kommenden Linux-Distributionen.  

Anzeige:

Netzwerk-Update in Linux 3.12

Auch wenn es mit der dritten Entwicklerversion von Linux 3.12, dem Release Candidate (RC) 3, im September nach einer ersten Beruhigung aussah, kam noch etwas Dickeres nach. Die vierte Entwicklerversion hatte wieder mehr Änderungen im Gepäck. Diese fanden sich zum guten Teil in Fehlerkorrekturen im Bereich Netzwerk-Treiber: zum Beispiel für Broadcoms NetXtreme 2 oder Intels kommende Ethernet-Controller-Familie XL710. Die Intel-Chips sind vermutlich 40-Gigabit-Ethernet-Karten und bislang (9. Januar 2013) nicht auf dem Markt. Die Broadcom-NetXtreme-2-Familie mit 1-Gigabit- und 10-Gigabit-Chips sind in Servern weit verbreitet und werden seit Jahren beispielsweise in den Enterprise-Servern von HP, IBM und Dell verbaut.

Die darauf folgenden Entwickler-Versionen RC5 und RC6 fielen dann jedoch bedeutend kleiner aus. Zusammen konnten sie immerhin eine Reihe von Korrekturen an den Treibern für AMD/ATI- und Intel-Grafikchips aufweisen und eine längere Liste an Geräte-IDs zur Unterstützung neuer USB-Geräte von Huawei hinzugewinnen.

Vermutlich war der Grossteil der Linux-Entwickler auch mit Vorbereitungen zum diesjährigen Kernel Summit beschäftigt, denn kurz nach dessen Ende legte Torvalds mit RC7 wieder eine grössere Version vor. Doch trotz der Tatsache, dass sie grösser war als ihre beiden Vorgänger zusammengenommen, wies sie grösstenteils kleinere Fehlerkorrekturen auf, unter anderem für die zuvor bereits erwähnten Netzwerk-Chipsätze Broadcom NetXtreme2. Torvalds kündigte dann auch das baldige Erscheinen der finalen Version an.

Umbau der Linux-Firewall

Noch war im Oktober Linux 3.12 nicht erschienen, doch warf die Linux 3.13 schon die Schatten voraus. Vorausssichtlich könnte mit „nftables“ eine neue Infrastruktur für die Filterung von Netzwerkpaketen in 3.13 aufgenommen werden. Das Netfilter-Projekt entwickelt einen Nachfolger für seinen seit 2000 in Linux verfügbaren Paketfilter.

Dabei soll “nftables” die bislang separaten Werkzeuge “iptables” für IPv4, “ip6tables” für IPv6, „arptables“ für die Behandlung von Paketen des Address Resolution Protocol sowie das weniger bekannte „ebtables“ unter einem Dach vereinen. Für den Administrator ergibt sich dadurch, dass insbesondere die Konfiguration von IPv4- und IPv6-Firewall- Regeln nun mit dem gleichen Werkzeug „nft“ erstellt und verwaltet werden können.

Diese Userspace-Komponente wird jedoch eine neue Syntax aufweisen, die sich von den Vorgängern unterscheidet. nftables wird bereits seit 2009 entwickelt und stellt damit kein ganz frisch geschlüpftes Küken mehr dar, sodass die Bereitschaft zur Annahme-Wahrscheinlichkeit seitens der Kernel-Entwickler recht hoch sein dürfte.

Linux 3.12 im November veröffentlicht

Auf eine achte Entwicklerversion von Linux 3.12 hatte Torvalds verzichtet. Am ersten November-Wochenende wurde die Kernel-Version 3.12 offiziell veröffentlicht. Sie hatte 62 Tage zum Reifen und stellt damit eine der schnellsten Entwicklungen dar, insbesondere wenn man berücksichtigt, dass das diesjährige Kernel Summit in den Entwicklungszeitraum fiel. Trotzdem rangiert sie mit fast 12’000 Änderungen immerhin im Mittelfeld und braucht sich auch nicht hinsichtlich der Neuerungen zu verstecken.

Grafik-Effizienz steigt

Der neue Linux-Kernel ermittelt die richtige Taktfrequenz für die jeweilige Situation nun mittels einer neuen Methode. Sie verhindert unter anderem, dass die Ergebnisse innerhalb kleiner Zeiträume stark variieren. Dies beschleunigt die Leistung der Radeon-Grafikchips von AMD. Wie das Linux-Anwender-Portal Phoronix.com zuvor feststellte, reduzieren stark schwankende Taktraten die Leistung der AMD-Radeon-Chips erheblich. Weitere Kernel-Änderungen für die Radeon-Chipsätze erweitern das mit Linux 3.11 eingeführte dynamischen Energiemanagements (DPM). Es unterstützt nun weitere Chipsätze, ist jedoch immer noch nicht in der Standard-Konfiguration aktiviert. Zum Strom sparen muss man als Nutzer immer noch selbst aktiv werden.

Systeme mit mehreren Grafikprozessoren (GPU) können ab Linux 3.12 zwischen den verschiedenen GPU ohne zusätzliche Treiber umschalten. Die kann viel Strom sparen. Speziell Notebooks profitieren, die neben einer sparsamen Grafikeinheit (die seit wenigen Jahren schon im CPU verpackt ist) auch eine dedizierte GPU verfügen zur Leistungsstärke – deren Betrieb geht immer auf Kosten der Akku-Lebenszeit und des ansonsten sehr tiefen Stromkonsums aller anderen Komponenten von Notebooks. Je nach Anwendungsfall kann nun mit Linux-Bordmittel zwischen den beiden gewechselt werden, um nur die GPU zu nutzen.

Die Grafik-Prozesse von ARM-Komponenten sind für Linux 3.12 ebenfalls verbessert. Das Rendern der Bildschirm-Anzeige ist nun getrennt vom Umschalten der Grafik- und Displaymodi. Damit wird der Entwicklung Rechnung getragen, dass speziell im ARM-Bereich die beiden Aufgaben von unterschiedlichen Geräten wahr genommen werden. Somit kann künftig ein Device Controller auch mit mehreren Grafikprozessoren zusammenarbeiten. Solche Komponenten sind speziell in aktuellen Smartphones und Tablets verbreitet.

Mehr Effizienz für Speicher und Rechner

Tickless Multitasking, dessen Funktionsweise wie in früheren Kernel-Rückblicken erklärten, wurde nochmals weiterentwickelt. Seit Linux 3.10 können dadurch alle Prozessoren eines Systems ohne die Timeticks, zeitgesteuerte Interrupts, arbeiten bis auf einen. Dieser stellt quasi den Zeitgeber für die anderen Prozessoren dar und sendet mindestens einmal pro Sekunde ein Signal. Mit dem aktuellen Linux-Kernel ist die Aufgabe nun überflüssig und auch die letzte CPU kann in Zeiten, in denen das System nicht zu tun hat, schlafen gehen, ohne ständig auf die Uhr schauen zu müssen.

KVM und Xen arbeiten mit Linux 3.12 effizienter. Locking ist ein Schlagwort, mit dem das Sperren von Ressourcen zum Schutz vor konkurrierenden Zugriffen beschrieben wird. Bei virtualisierten Systemen und ihren Gastgebern (Host genannt) mutiert Locking bisweilen zum Leistungs-Alptraum, da sowohl Gastgeber als auch die Gast-Systeme Locks – also Sperren – einsetzen. Zumindest paravirtualisierte Systeme [4] wie KVM oder Xen können nun eine angepasste Locking-Methode nutzen, die in diesem Umfeld bessere Leistungen erzielt und weniger Prozessorzeit der Host-CPU vergeudet.

Wenn der Speicher knapp wird, also der Arbeitsspeicher (RAM) und der Auslagerungsspeicher auf der Festplatte voll sind, zieht Linux die Notbremse und beendet einen Prozess (beispielsweise ein Browser-Fenster oder ein Programmteil).  Dadurch wird wieder Speicher frei. Wartet dabei ein aktiver Prozess, neuen Speicher zugewiesen zu bekommen, kann er Sperren auf Ressourcen gelegt haben (sogenannnte „Deadlocks“), die der zum Abschuss ausgewählte Prozess benötigen würde, um sich sauber zu beenden und wieder Speicher frei zu machen. Dadurch bläht sich der Speicherbedarf mit dieser Art von Wartezimmer unnötig auf. Verbesserungen am sogenannten „Out-of-Memory-Killer“ sollen solchen Situationen vorbeugen. Systemaufrufe, denen nicht genug Speicher zur Verfügung gestellt werden kann, erhalten künftig einen Fehler gemeldet, statt ins Wartezimmer geschickt zu werden – ein Verhalten, das Entwickler berücksichtigen müssen, da der Systemaufruf ebenfalls einen Fehler an die auslösende Anwendung zurückgibt. Zum zweiten hebt der Kernel nun alle Sperren auf, wenn der „Out-of-Memory-Killer“ aktiv wird, um die oben beschriebenen „Deadlocks“ zu vermeiden.

Dateisystem BTRFS dedupliziert

Im Bereich der Dateisysteme hat man Btrfs die Unterstützung für Deduplizierung spendiert. Das bedeutet, dass doppelt oder mehrfach vorkommende Daten innerhalb des Dateisystems entfernt werden und somit der tatsächlich benötigte Speicherplatz reduziert wird. Insbesondere im Zusammenhang mit Virtualisierung lässt sich damit viel Platz sparen, da Teile virtueller Maschinen auf den Datenträgern des Host-Systems gleich sind. Damit handelt es sich um die „Offline“-Deduplizierung, die nicht automatisch, sondern nur auf Anforderung durchgeführt wird.

Die Fähigkeit, die Arbeit auf mehrere Prozessoren zu verteilen, soll einen Leistungszuwachs für RAID-5, einer Methode zur Zusammenfassung mehrerer physikalischer Datenträger, bringen. Hierbei können mehr Ein-/Ausgabe-Operationen pro Sekunde erfolgen, wovon insbesondere SSD-Laufwerke profitieren können.

Entwicklung von Linux 3.13 startet

Fast drei Wochen hatten die Linux-Entwickler im November Zeit, um ihre Zweige für den Entwicklungszyklus des kommenden Kernels einzureichen, bevor Torvalds das Merge-Window schloss und die erste Entwicklerversion von Linux 3.13 veröffentlichte. Der vollständig überarbeitete Paketfilter nftables ist wie bereits erwähnt mit dabei. Eine weitere Neuerung betrifft die blockorientierten Geräte. Hier wird den Treibern für Massenspeicher künftig ein Modus bereitgestellt, der mehrere Warteschlangen zur Behandlung von Abfragen ermöglicht. Jedem Prozessor des Systems wird eine eigene Warteschlange zugewiesen, sodass sich deren Zugriffe auf den Datenträger nicht überschneiden.

Diskussion eröffnet um Linux 4  

In der Freigabe-Mail zu Linux 3.12 dachte Torvalds wieder über die Versionsnummern des Kernels nach. Mittlerweile müsse er die Socken ausziehen, um bis zur aktuellen Version zu zählen, was Linux 4 als Nachfolger für zum Beispiel Linux 3.19 ins Spiel bringt. Zudem regte der Entwickler Dirk Hohndel während des Kernel Summit an, bei Gelegenheit mal eine Bugfix-Version einzuschieben, die keine Neuerungen sondern ausschliesslich Fehlerkorrekturen und Verbesserungen in der Stabilität ausweisen solle. Diesem Vorschlag stand Torvalds zuerst ablehnend gegenüber, kann sich zwischenzeitlich mit dem Gedanken anfreunden. Eine Version 4 könnte dann eine Gelegenheit für einen solche Bugfix-Version darstellen. Doch bis dem Linux-Hauptentwickler die Finger und Zehen ausgehen und Linux 4 in greifbare Nähe rückt, dürfte es noch bis mindestens Anfang 2015 dauern. Zeit genug für weitere Überlegungen …

Umfangreiche Fortschritte des Kernels 3.13 im Dezember

Im Dezember mit der zweiten Entwicklerversion (RC2) des Linux-Kernels 3.13 legte Torvalds wieder das Sieben-Tage-Intervall für die RC-Versionen fest, auch wenn dies eine Veröffentlichung an einem Freitag bedeutete. Er stellte jedoch klar, dass er die Rückkehr zu den sonntäglichen Veröffentlichungen plane. Die Änderungen betrafen in erster Linie die Treiber, die vor allem mit Korrekturen bedacht wurden, aber auch Ergänzungen. Insbesondere die Plattform-spezifischen Treiber für Dell-Laptops und der Umzug eines ChromeOS-Treibers in einen eigenen Bereich schlugen sich spürbar in der Grösse des Patches nieder.

Linux 3.13-RC3. Wieder an einem Freitag veröffentlicht, fiel die Kernel-Grösse bereits erheblich kleiner aus. Zumindest, wenn die Zahl der geänderten Dateien oder Quelltextzeilen betrachtet wird. Denn diese Version hatte wieder mehr Commits als der Vorgänger, was Torvalds sofort bemängelte. Einer der Hauptgründe lag hier in grösseren Änderungen im ARM-Bereich, insbesondere an der Device-Tree-Unterstützung.

An einem Sonntag wurde wieder der vierte Entwickler-Kernel freigegeben. Doch selbst die zwei zusätzlichen Tage konnten das Bild für Torvalds nicht beschönigen: RC4 war gross genug, um auch als RC2 durchgehen zu können. Dabei handelte es sich zum guten Teil um relativ kleine Änderungen, wenn man von einigen Ausreissern bei den Netzwerktreibern und dem Nouveau-Grafiktreiber mal absieht. Die meisten Commits trugen auch schon das Wörtchen „fix“ (korrigiert) oder ähnliche Begriffe in der Beschreibung, doch die schiere Anzahl liess den Patch wiederum so aufquellen, wie es die beiden Nachfolgeversionen nicht mehr schafften. 

Kurz vor Weihnachten wurde RC5 veröffentlicht, dessen voluminöseste Änderung die Aufnahme einer Dokumentation zum Signieren von Kernel-Modulen war. Weiterhin stechen Korrekturen für Intel- Grafiktreiber, QLogic-Netzwerkhardware und die PowerPC-Architektur aus den kleinen Commits ein wenig heraus.

Die sechste Entwicklerversion kurz vor dem Jahreswechsel war dann erwartungsgemäss nochmals kleiner und konnte als Highlight höchstens einige Änderungen am neuen Null-Block-Device sowie eine Dokumentation dazu aufweisen. Dieses Block-Gerät ist für Test- und Benchmarking-Szenarien gedacht und beendet eingehende Ein-/Ausgabe-Anfragen ohne wirklich Daten zu übertragen.

Torvalds kündigte an, die Veröffentlichung des neuen Linux-Kernels noch etwas hinauszuschieben und auch ohne Not noch bis zum RC8 zu gehen. Der Grund hierfür liegt in der am 6. Januar 2014 beginnenden Australischen Linux-Konferenz, in deren zeitlicher Nähe er kein Merge-Window haben möchte.

 (Mathias Menzer)

The following two tabs change content below.
Mathias Menzer
Mathias Menzer behält die Entwicklung des Linux- Kernels im Blick, um über kommende Funktionen von Linux auf dem Laufenden zu bleiben und immer mit interessanten Abkürzungen und komplizierten Begriffen dienen zu können.