Linux: Kernel 3.3 bekämpft aufgeblähte Puffer
Der Schwerpunkt der Entwicklung im Linux-Kernel 3.3(öffnet im neuen Fenster) ist die Bekämpfung des sogenannten Bufferbloat, der übermäßigen Nutzung des Puffers im Netzwerkstack. Mit den Byte Queue Limits (BQL) und dem TCP Buffer Size Controller lässt sich die Nutzung des Zwischenspeichers besser kontrollieren und sorgt so für geringere Latenzzeiten im Netzwerkstack. Außerdem gibt es erste zaghafte Versuche, den Code des Android-Kernels wieder mit seinem Ursprung zu vereinen.
Schwerpunkt Netzwerk
Viel Arbeit haben die Entwickler in Linux 3.3 in den Netzwerkstack investiert, vor allem, um die übermäßige Nutzung des Puffers zu reduzieren, das zu hohen Latenzzeiten führen kann. Google-Entwickler haben die Dynamic Queue Limits(öffnet im neuen Fenster) beigesteuert, aus denen die Byte Queue Limits entstanden. Statt wie bisher die Anzahl der Pakete im Zwischenspeicher als Grundlage für die Berechnung durch die Dynamic-Queue-Limits-Bibliothek zu nutzen, wird die Paketgröße verwendet. Wird eine bestimmte Byte-Zahl erreicht, schickt der Kernel keine Pakete mehr an den Netzwerkkartentreiber. Die Paketgröße bietet eine genauere Berechnungsgrundlage für die benötigte Zeit, bis der Zwischenspeicher wieder leer ist. Damit können Pakete mit hoher Priorität bevorzugt behandelt und die Latenzzeiten verringert werden. Die Treiberstacks Bnx2 und Bnx2x für Netzwerkkarten von Broadcom, Forcedeth für Nvidias Chipsätze oder E1000e für Intel-Chipsätze können bereits mit BQL gesteuert werden.
Im Kampf gegen den Bufferbloat soll auch der TCP Buffer Size Controller helfen, über den die Speicherverwaltung des Kernels den von TCP-Paketen belegten Speicher begrenzen kann. Das soll Engpässe auf Systemen mit knappem Arbeitsspeicher vermeiden(öffnet im neuen Fenster). Mit der Network Priority Cgroup Infrastructure können die Ressourcen der Netzwerkinfrastruktur besser verwaltet werden. Dazu werden Prozesse in Control Groups (Cgroups) zusammengefasst, die auf die Netzwerkinfrastruktur zugreifen können. Dadurch lassen sich Ressourcen besser verwalten.
Linux 3.3 erhält auch einen sogenannten Team-Netzwerktreiber, der mit wenig Overhead den Zusammenschluss mehrerer Netzwerkgeräte ermöglicht. Dazu gibt es bereits die entsprechende Userspace-Bibliothek Libteam. Der Netzwerktreiber ist als Alternative zum bestehenden Bonding-Treiber gedacht und lässt sich besser skalieren. Beispielsweise kann eine Netzwerkkarte als Backup definiert werden, die die Kommunikation dann übernimmt, wenn die übergeordnete Netzwerkkarte nicht funktioniert.
Mit einem virtuellen Switch (Open vSwitch(öffnet im neuen Fenster)) lassen sich Netzwerke zwischen virtuellen Maschinen besser verwalten. Im Unterschied zu der bestehenden Linux bridge lassen sich ständig wechselnde Netzwerkkonfigurationen in virtuellen Umgebungen, etwa bei einem Umzug auf andere Hardware, einfacher erneut zuordnen.
Dateisysteme
Die Kernel-Hacker haben das Umverteilen der Daten auf Btrfs-Dateisystemen überarbeitet und so erweitert, dass sich Raid-Systeme zuverlässiger umbauen und auch bei Unterbrechungen wieder problemlos fortsetzen oder ganz abbrechen lassen. Noch als noch nicht für den Produktivbetrieb geeignet bezeichnen die Entwickler die neue Integritätsprüfung für das weiterhin als experimentell eingestufte Btrfs, die während des laufenden Betriebs durchgeführt werden kann.
Um Größenveränderungen an Ext4-Dateisystemen kümmert sich fortan der Kernel selbst statt wie bisher die Userpace-Anwendung. Dadurch soll sich die für das Vergrößern des Dateisystems von 20 auf 230 GByte benötigte Zeit von fünf Minuten auf 3,5 Sekunden reduzieren, schreiben die Entwickler(öffnet im neuen Fenster). Noch funktioniert das nicht, wenn beispielsweise das Dateisystem mit Big Allocations verwendet wird, die es seit Linux 3.2 gibt.
Der MD-Treiber für die sogenannten Software-Raids kann während des laufenden Betriebs Daten von einem Datenträger auf den anderen verschieben, ohne dabei redundante Daten auf einem neuen Datenträger neu zu generieren. Die als "Hot Replace" bezeichnete Funktion lässt sich mit den Raid-Level 1, 4, 5, 6 und 10 nutzen. Allerdings wird Hot Replace noch nicht vom dazugehörigen Verwaltungswerkzeug Mdadm unterstützt(öffnet im neuen Fenster).
Die Kernel-Hacker haben sich auch einem Problem gewidmet, bei dem es im Zusammenhang mit den Transparent Huge Pages zu Verzögerungen beim Schreiben auf langsame externe Speichermedien, etwa USB-Sticks, kam. Außerdem wurde ein Problem beim Readahead beseitigt, bei dem es zu Leistungseinbrüchen kam, wenn zu große Dateneinheiten von schnellen Datenträgern ausgelesen wurden, etwa von SSDs(öffnet im neuen Fenster).
Grafikkarten
Zudem soll Linux 3.3 den virtuellen Speicher in den HD-7000-Chipsätzen von Radeon unterstützen. Die dafür benötigten Codeänderungen sind umfangreich. Allerdings sind noch rechtliche Fragen zu klären, bevor Anwender den Code nutzen dürfen. Der Evergreen-Chipsatz von AMD und der Nouveau-Treiber für Nvidia-Chipsätze können Audio über den HDMI-Port ausgeben und die Chipsatzreihe NDV0(öffnet im neuen Fenster) alias Fermi verwendet Page-Flipping. Noch nicht ganz umgesetzt ist die Unterstützung für die aktuellen Grafikchips Geforce 410M, GT (520, 520M, 520MX) und 610M Quadro NVS 4200M alias NDV9(öffnet im neuen Fenster).
Der Grafiktreiber für die Intel-Chipsätze Sandy und Ivy Bridge wurde aktualisiert und auch mit zahlreichen Bugfixes versehen. In dem Poulsbo-Treiber für Intels GMA500-Chipsätze wurden ebenfalls zahlreiche Fehler behoben, er verlässt den Staging-Bereich und ist nun fester Bestandteil des Kernels.
Virtualisierung
Gastsysteme der Kernel Virtual Machine (KVM) können künftig über die Virtual Performance Monitoring Unit (PMU) Leistungsmessungen vornehmen. Microsofts virtueller Netzwerktreiber für Hyper-V wurde aus dem Staging-Bereich in den offiziellen Kernel-Code übernommen. Die Treiber Balloon, Blk, Console und Net der Virtio-Schnittstelle wurden um die Unterstützung für den Ruhezustand S4 erweitert.
Infrastruktur und Architektur
Erste Teile des Codes des Android-Kernels sind wieder in den Staging-Bereich des Kernels aufgenommen worden. Die bislang bescheidenen Codeteile behandeln die Speicherverwaltung in Pstores (Persistent Storage) und der Ram-Console. Die bei Android verwendeten Wakelocks, über die der Kernel daran gehindert werden kann, in den Schlafmodus zu gehen, fehlen aber noch. Die Funktion hatte damals zu Streit zwischen Android- und Linux-Entwicklern geführt. Er sei nicht hinreichend geprüft und schlecht umgesetzt, monierten damals die Kernel-Entwickler. Die Kernel-Entwickler hatten den Android-Code Ende 2009 aus dem Kernel entfernt, weil er veraltet war. Sie warfen Google mangelndes Engagement bei der Code-Pflege vor. Der zurückgeflossene Code soll frühestens in Kernel 3.4 übernommen werden.
Die Prozessoren in Nvidias Tegra30-Chipsätzen werden künftig von Linux 3.3 unterstützt. Ferner wurde die Unterstützung für ACPI 5.0 erweitert. Damit sollen teils auffällige Fehler in der Energieverwaltung behoben und die Unterstützung für neue Chipsätze integriert werden, etwa Intels Ivy Bridge.
Kernel-Images können künftig ohne Bootloader direkt vom EFI-Bios gestartet werden. Das Bzimage wird dabei von EFI als Anwendung erkannt und lässt sich alternativ ohne Änderungen vom Bootloader starten. Mit dem Extended Verification Module kann der Kernel digitale Signaturen nach RSA verifizieren.
Eine Zusammenfassung diverser Änderungen haben die Betreuer der Webseite kernelnewbies.org(öffnet im neuen Fenster) zusammengefasst. Dort gibt es auch eine umfassende Liste neuer Treiber(öffnet im neuen Fenster). Der Sourcecode von Linux 3.3 steht unter kernel.org(öffnet im neuen Fenster) zum Download bereit. Alle Änderungen sind über Gitweb(öffnet im neuen Fenster) abrufbar.
- Anzeige Hier geht es zu NVIDIA-Grafikkarten bei Alternate Wenn Sie auf diesen Link klicken und darüber einkaufen, erhält Golem eine kleine Provision. Dies ändert nichts am Preis der Artikel.



