Der Linux-Kernel, auf den alle zukünftigen GNU/Linux-Distributionen wie Suse, Debian, Ubuntu und Red Hat Enterprise Linux aufsetzen, ist in der Version 4.4 erschienen. Gastautor Mathias Menzer durchleuchtet die Linux-Updates von Dezembers 2015 bis Januar 2016.
Zum Nikolaustag wurde die vierte Entwicklerversion (RC4) von Linux 4.4 vorgelegt. Der Löwenanteil des eingebrachten Codes entfiel auf den Bereich Netzwerk: einen neuen Ethernet-Treiber steuert den NB8800-Controller von Aurora VLSI an. Er wurde auf Basis der Treiber für ähnliche Embedded-Prozessoren der Firma Sigma Designs entwickelt, die ebenso über einen eingebauten Netzwerk-Controller verfügen.
Linux 4.4-RC5 kam wieder mit etwas weniger Änderungen, von denen das Meiste auf Korrekturen entfiel. Davon konnte unter anderem der «dwc2»-Treiber profitieren, dem ein «Kernel Oops» behoben wurde – das ist ein Fehler des Kernels, der nicht zum vollständigen Systemabsturz führt. Dieser Treiber unterstützt einen USB-On-the-Go-Controller und ermöglicht es, dass USB-Geräte sich untereinander ansteuern können: beispielsweise kann man so eine Tastatur an ein Smartphone anschliessen, dies funktioniert nun über einen Anschluss, der das gängige Protokoll USB-OTG (für USB-on-the-Go) unterstützt.
Auch die kurz vor Weihnachten erschienene sechste Entwicklerversion (Linux 4.4-RC6) wies keine grösseren Änderungen auf, auch wenn deren Gesamtzahl wieder ein wenig angestiegen war. Am Treiber für die Netzwerk-Virtualisierung VXLAN wurde die Berechnung von Netzwerk-Routen für IPv6-Pakete in eine eigene Funktion verlagert, wodurch künftige Optimierungen einfacher umsetzbar sind. Unter den Korrekturen fand sich auch eine, die das Verhalten der WLAN-Infrastruktur beim Aufwachen aus dem Suspend korrigiert. War das System beim «Einschlafen» gerade mit der Suche nach neuen WLAN-Netzen beschäftigt, so brach dieser ab und das System wartete vergeblich auf dessen Vollendung. Künftig wird nun geprüft, ob ein solcher Zustand vorliegt und der Scan-Auftrag dann gegebenenfalls gelöscht.
Die beiden folgenden Entwicklerversion fielen dann ziemlich klein (RC7) und extra klein (RC8) aus – kein Wunder, denn auch manche Kernel-Entwickler machen über Weihnachten und den Jahreswechsel Urlaub. So hielten sich auch die Korrekturen in einem sehr überschaubaren Rahmen. Ein Fehler für die Sparc64-Architektur wurde korrigiert bei der Speicher-Behandlung der Prozessor-eigenen Funktionen, indem der Kernel neue Funktionen erhielt, um diese Fehler erkennen und umgehen zu können.
Die Veröffentlichung von Linux 4.4
Linux 4.4 wurde eine Woche später freigegeben. Auch hier hielten sich die Änderungen gegenüber der letzten Entwicklerversion in Grenzen. Nutzer künftiger Android-Versionen können sich über die Korrektur eines Fehlers im Umgang mit «SYSENTER» freuen. Diese Funktion dient bei 32-Bit-Systemen dazu, Funktionsaufrufe in einem geschützten Betriebsmodus (Protected Mode) ohne aufwändige Prüfungen der Rechte des aufrufenden Prozesses durchzuführen und kann somit schneller erfolgen als ein direkter Funktionsaufruf. Ob die korrekte Nutzung von «SYSENTER» die gefühlte Geschwindigkeit auf Systemen mit beschränkter Leistung wie Tablets und Smartphones dann tatsächlich spürbar erhöht, ist allerdings fraglich.
Seit Veröffentlichung von Linux 4.3 Anfang November waren 69 Tage vergangen und knapp über 14’000 Änderungen haben die Linux-Entwickler beigesteuert. Damit zählt der neue Kernel zu den grösseren der letzten fünf Jahre. Die meisten der eingebrachten Änderungen zielen auch diesmal wieder darauf, Fehler zu beheben und doch sind ein paar bemerkenswerte Neuerungen mit dabei, wenn auch die meisten davon für den Nutzer eher verborgen bleiben.
SSD-Speicher werden Controller-frei
So wurde nun mit «LightNVM» die Unterstützung für Open-Channel SSDs aufgenommen. Diese verfügen über keinen vollwertigen Controller für die enthaltenen Flash-Speicherchips, sondern überlassen die Speicherzuweisung dem Betriebssystem. Dadurch lassen sich zum einen generische Treiber entwickeln, die nicht auf unterschiedliche Controller Rücksicht nehmen müssen, aber es sind auch Optimierungen der Schreib- und Lesevorgänge möglich und letztlich könnten hier solche Dinge wie «Direct Access», kurz DAX, einfacher umgesetzt werden, die direkten Zugriff auf den Flash-Speicher des Datenträgers erwarten. Letztlich ist es auch nicht allzu weit hergeholt, die Verwaltung von Flash-Speichern dem Betriebssystem zu überlassen, haben dessen Entwickler mit Arbeitsspeicher doch schon Erfahrung.
Netzwerk-Systeme sind schneller aufgebaut
Verbesserungen am Netzwerk-Bereich hatten direkte Auswirkungen auf den Aufbau von Netzwerk-Verbindungen. Die Umsetzung des TCP-Protokolls kommt nun ohne Locking für die Bearbeitung eingehender Verbindungen aus. Das bedeutet, dass keine Sperren auf Ressourcen des Kernels gesetzt werden müssen, wobei gegebenenfalls auf die Freigabe einer zuvor von einem anderen Prozess gesetzten Sperren gewartet werden muss. Diese Wartezyklen fallen nun weg, wodurch sich die Menge der Verbindungsanfragen, die nun verarbeitet werden kann, erheblich angestiegen ist. Davon profitieren in erster Linie die Betreiber von Server-Diensten, da nun Verbindungen etwas schneller und mit weniger Belastung des Systems aufgebaut werden können. Ob dann natürlich die dahinterstehende Anwendung die Anfragen ebenso schnell bedienen kann, ist eine andere Geschichte.
Erweiterer Packetfilter eBPF greift tiefer
Unter Paketfilter verstehen zumindest netzwerkaffine Menschen eine der Kernkompetenzen von Firewalls. Im Gegensatz dazu stellt der Berkeley Paket Filter (BPF) dar, beziehungsweise dessen Linux-Umsetzung eBPF. Dieser bietet eine Möglichkeit zur Fehlersuche innerhalb eines Systems. eBPF erlaubt es in den Netzwerk-Stack eines Linux-Systems zu greifen und dort Datenpakete zu analysieren. Um nicht allen Netzwerkverkehr an die anfordernde Anwendung zurückliefern zu müssen, bietet eBPF umfangreiche Filterfunktionen, die als Programme geschrieben und mittels eines eigenen Interpreters ausgeführt werden.
Unter Linux 4.4 wurden nun zwei grosse Verbesserungen eingeführt. Zum einen können nun auch Programme, die im Benutzerkontext laufen, auf eBPF zugreifen. Und zum anderen können nun in eBPF erzeugte Filter dauerhaft abgelegt werden und bleiben damit auch nach Beendigung des zugehörigen Prozesses verfügbar.
Und auch die Betreuer anderer Komponenten des Kernels haben eBPF als nützliches Tool erkannt. Deshalb haben die Entwickler der Messwerkzeug-Sammlung «perf» nun Unterstützung für eBPF eingebaut. Wird «perf» künftig eine C-Quellcode-Datei übergeben, die eBPF-Programmcode enthält, so wird dieser automatisch geprüft.
Grafik-Treiber für virtuelle Systeme und Raspberry-Pi sind integriert
Die Kernel-eigene Infrastruktur für den Betrieb virtueller Systeme wurde um die Unterstützung für 3-D-Beschleunigung erweitert. Dadurch können nun mittels QEMU virtualisierte Systeme ebenfalls in den Genuss eventuell vorhandener 3-D-Kapazitäten der Grafikhardware des Host-Systems kommen. Nutzer, die beispielsweise ISO-Dateien mittels Ubuntu Testdrive ausprobieren, könnten hiervon in Zukunft profitieren.
Nicht vergessen werden sollte der neue Broadcom VC4-Treiber, welcher nun von Haus aus die Grafikeinheit der BCM2835-Prozessoren unterstützt. Den meisten Bastlern dürften diese ARM-Prozessoren aus dem Raspberry Pi 1 und Raspberry Pi Zero sowie dem Compute Module geläufig sein. VC4 erlaubt jedoch nur die Grundfunktionen, 3-D-Beschleunigung ist aussen vor. Dennoch werden Systeme auf entsprechenden Prozessoren davon profitieren, da auf zusätzlich einzubindende Treiber verzichtet werden kann. Eine Erweiterung um 3-D-Unterstützung war für Linux 4.5 vorgesehen, wurde aber bis zum jetzigen Zeitpunkt noch nicht aufgenommen.
Die Entwicklung von Linux 4.5 startet
Mit der Freigabe von Linux 4.4 startete auch wieder der Entwicklungszyklus des Nachfolgers mit dem «Merge Window». In diesem Zeitraum nimmt Linux-Erfinder Linus Torvalds Änderungen in seinen Entwicklungszweig auf, die ihm Entwickler oder die Betreuer der verschiedenen Bereich des Kernels vorlegen. Einige Entwickler hatten bereits im Vorfeld ihre «Merge Requests» gestellt, sodass die Zahl der eingebrachten Änderungen rasch anwuchs. Mit Freigabe der ersten Entwicklerversion RC1 nach 14 Tagen kamen so 11’000 Änderungen zusammen und platzierte Linux 4.5 damit im Mittelfeld.
Anders sieht es bei den dadurch geänderten Quelltext-Zeilen aus. Nur wenige Kernel-Versionen der letzten Zeit überschritten einen Wert von 1 Million geänderter Zeilen, 4.5-RC1 erreicht sogar 1,9 Millionen. Allerdings liegt der Hauptgrund hierfür wieder einmal im Bestreben der Entwickler, Ordnung in die Struktur des Kernel-Codes zu bringen und diesmal waren die Netzwerk-Treiber dran. Es wurden sehr viele Codezeilen angefasst, doch mit verhältnismässig wenig Wirkung dahinter. Ein grosser Teil der WLAN-Treiber wurde umsortiert, sodass die einzelnen Treiber sich nun einfacher dem jeweiligen Hersteller zuordnen lassen. Innerhalb der Versionsverwaltung Git lässt sich dies bequem mittels «rename», also einer Umbenennung der Datei und des Dateipfades abbilden, sobald allerdings ein Patch erstellt wird, wie dies auf Kernel.org geschieht, werden diese Dateien zuerst an einer Stelle entfernt und danach an anderer Stelle eingefügt. Sie schlagen sich somit sowohl in der Zahl der gelöschten als auch der aufgenommenen Codezeilen nieder und landen damit gleich zweimal im Patch, was diesen dann entsprechend aufbläht.
AMD-Grafik wird effizienter
Linux 4.5-RC2 liegt ein wenig über dem Durchschnitt, was die Zahl der Änderungen eines RC2 betrifft. Immerhin lief der grösste Teil unter der Kategorie Korrekturen, wobei insbesondere die Kernel-eigenen Werkzeuge für die Leistungsmessung profitieren konnten. Diese «perf-tools» können Kernel- und Anwendungsentwicklern bei der Optimierung ihres Codes dienen, indem sie die Auswirkungen von Modulen und Funktionen auf den Ressourcen-Bedarf des Kernels messen. Hinzugekommen sind dagegen ein paar Test-Werkzeuge für «virtio», einen Treiber aus dem Virtualisierungsumfeld um QEMU und KVM.
Dieses Werk bzw. Inhalt steht unter einer Creative Commons Namensnennung-Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.
Weitere Themen:
Neueste Artikel von Mathias Menzer (alle ansehen)
- Fortschritte von Linux 4.5: Februar im Kernelrückblick - 29. März 2016
- Linux 4.4 ist da: Jahreswechsel im Kernel-Rückblick - 8. Februar 2016
- Grossumbau für Linux 4.2: Juli im Kernel-Rückblick - 18. August 2015