Die Neuerungen von Linux 2.6.33

Seite 3: ATA Trim, DRBD, Block Layer, Virtualisierung und Tracing

Inhaltsverzeichnis

Einige Teile des Kernels bieten schon seit einigen Monaten eine rudimentäre "Discard"-Infrastruktur, über die Treiber für Massenspeicheradapter erfahren können, wenn Speicherbereiche eines Datenträgers freigegeben werden – etwa durch Löschen einer Datei oder Formatieren einer Partition. Die Infrastruktur wurde bei 2.6.33 überarbeitetet und ausgebaut; dadurch unterstützt nun auch das Libata-Subsystem Discard und kann Informationen über freigegeben Speicherbereite über das ATA-Kommando "Trim" an Massenspeicher weiterleiten. Das ist insbesondere für SSDs (Solid-State Disks) wichtig, denn die erfahren auf diese Weise von freigegebenen Speicherbereichen und können so die SSD-eigene Garbage Collection optimieren – das steigert Performance und Lebensdauer von SSDs.

Damit die Discard-Infrastruktur voll zum Zuge kommt, müssen andere Teile des Kernels das Storage-Subsystem aber auch über freigegebene Bereiche informieren. Das Dateisystem Btrfs beherrscht das schon bei Linux 2.6.32, für Ext4 stieß entsprechender Code nun hinzu – da der aber noch nicht ausgiebig getestet wurde, ist die Funktion in der Standardkonfiguration vorerst inaktiv. Auch die neue Discard-Unterstützung im Code des FAT-Dateisystems ist optional.

Mehr Infos

Informationsquelle Quellcodeverwaltung

Viele der Links im Artikel verweisen auf den für die Neuerung jeweils relevanten Commit im Web-Frontend des von Linus Torvalds mit Git verwalteten Linux-Quellcodezweigs auf kernel.org. Dort finden sich viele weitere Informationen zur jeweiligen Änderungen – speziell der Commit-Kommentar im oberen Bereich der vom Git-Web-Frontend angezeigten Webseite ist häufig eine überaus ergiebige Quelle für weitere Informationen, denn dort erklärt der Autor des Patches normalerweise die Hintergründe der Änderungen und deren (erhoffte) Auswirkung. Gelegentlich finden sich dort auch Benchmark-Ergebnisse oder Verweise auf weitere Informationsquellen.

Auf den Commit-Kommentar folgt eine Auflistung der durch den Patch veränderten Dateien. Über den hinter dem Dateinamen zu findenden Link "patch" kann man sich anzeigen lassen, wie der Commit die jeweilige Datei verändert; "history" zeigt frühere Änderungen der Datei an. Weiter unten finden sich alle im Rahmen des Commits durchgeführten Änderungen im Unified-Diff-Format. Dabei handelt es sich Größtenteils um Modifikationen am Quellcode des Linux-Kernels – es sind aber nicht selten auch Anpassungen an Dokumentation oder Code-Kommentaren darunter, daher finden dort auch Anwender ohne Programmierkenntnisse viele hilfreiche Informationen.

Nachdem DRBD (Distributed Replicated Block Device) bei 2.6.32 noch außen vor blieb, nahmen die Kernel-Hacker die vor allem im High-Availability-Umfeld eingesetzte Replikationslösung für 2.6.33 schließlich in Linux auf. DRBD lässt sich grob als "RAID-1-Gerät übers Netz" klassifizieren: Der oder die Datenträger eines als Master bezeichneten Systems werden in Echtzeit auf einem anderen ("Slave") gespiegelt – beim Ausfall des Masters übernimmt der Slave die Arbeit, ohne dass Ausfallzeiten entstehen. Damit die Daten immer synchron sind, betrachtet der Master Schreibzugriffe erst als beendet, wenn auch der Slave das Schreiben abgeschlossen hat. Detaillierte Erklärungen zu DRBD liefern ein LWN.net-Artikel sowie die ausführliche Dokumentation auf der DRBD-Homepage. Den praktischen Einsatz zusammen mit Xen zum Aufbau einer Hochverfügbarkeitslösung beschreibt ein Artikel in c't 6/09 (ab 1.3. am Kiosk).

Entfernt haben die Entwickler den Anticipatory I/O Scheduler (AS), der laut Commit-Kommentar nur eine Untermenge der Funktionen des CFQ-Schedulers bietet. Letzterer ist laut Beschreibung jetzt für Desktop und Server geeignet – und bei vielen Distributionen ohnehin schon lange Standard.

Verbessert wurde der Code zur Migration von mit mdadm verwalteten Software-RAIDs eines Levels in andere Level. Das MD-Subsystem unterstützt nun auch Schreibbarrieren – dadurch werden etwa Daten und Dateisystem-Journal in der von anderen Teilen des Kernels erwarteten Reihenfolge geschrieben. Das soll bei Abstürzen die Integrität der Dateisysteme sicherstellen, kann den Durchsatz aber spürbar schmälern, wie MD-Verwalter Neil Brown in seinem Haupt-Git-Pull-Request anmerkt. Weiter ausgebaut wurde auch die Unterstützung für Write Barriers im Device Mapper (DM) (Git-Pull-Request). Der bietet nun außerdem ein "Merge Target" (u. a. 1, 2), mit dessen Hilfe man zu einem Snapshot zurück wechseln kann – etwa nach einem Systemupdate, das Probleme verursacht (LWN.net-Artikel).

Zahlreiche Verbesserungen gab es an der maßgeblich von Red Hat vorangetriebenen Virtualisierungslösung KVM (Kernel-based Virtual Machine). Einige Änderungen an KVM und dem X86-Code sollen etwa den Verwaltungsaufwand beim Context Switch reduzieren und dadurch die Performance verbessern (1, 2). KVM blockiert die Virtualisierungsfunktionen moderner CPUs außerdem jetzt nur noch, wenn sie auch gebraucht werden. Speicherbereiche, die das bei Linux 2.6.32 eingeführte und im Umfeld von KVM entstandene KSM (Kernel Shared Memory) zusammengelegt hat, kann der Kernel jetzt in den Swap-Speicher verlagern.

Abermals stark erweitert und überarbeitet haben die Entwickler die Tracing-Infrastruktur rund um Ftrace und die früher Performance Counter genannten Performance Events (1, 2, 3). Über die neuen "kprobe-based event tracer" lassen sich Tracepoints zur Laufzeit an nahezu beliebige Stellen des Kernels einfügen (Dokumentation); nutzen können Anwender diese Infrastruktur mit dem Linux beiliegenden Programm "perf" und dessen neuem Unterkommando "probe". Durch einige andere Änderungen am Kernel lassen sich nun mehrere Prozesse gleichzeitig observieren oder die Nutzung des Big Kernel Lock (BKL) besser diagnostizieren. Die Analysedaten kann man in Zukunft über reguläre Ausdrücke filtern; ausgebaut haben die Kernel-Entwickler auch die Unterstützung für Perl-Skripte beim Perf-Kommando (u. a. 1, 2, 3, Dokumentation). Dessen mit 2.6.33 neues Unterkommando "bench" bietet einige Funktionen zur Geschwindigkeitsmessung (u. a. 1, 2, 3, 4, Dokumentation).