Kernel-Log – Was 3.3 bringt (3): Architektur und Infrastruktur

Änderungen am Code zur Speicherverwaltung sollen Ruckler während des Schreibens auf langsame Datenträger beseitigen und die Performance verbessern. Der Kernel bootet auf X86-EFI-Systemen ohne Boot-Loader direkt aus der Firmware; der ARM-Port unterstützt nun die Large Physical Address Extension (LPAE).

In Pocket speichern vorlesen Druckansicht 13 Kommentare lesen
Lesezeit: 32 Min.
Von
  • Thorsten Leemhuis
Inhaltsverzeichnis

Einige für Linux 3.3 vorgenommene Anpassungen sollen verschiedene Probleme aus der Welt schaffen, durch die Systeme in bestimmten Situationen ins Stocken geraten, während der Kernel große Datenmengen auf einen langsamen Datenträger (etwa einen USB-Stick) schreibt. Bereits 3.2 hatte Probleme dieser Art beseitigt, bei denen der Writeback-Code das Ruckeln verursachte – jetzt betreffen die Änderungen den Memory-Compaction-Code und beseitigen Probleme, die mit Transparent Huge Pages (THP) in Verbindung stehen.

LWN.net hat im November die Hintergründe in dem Artikel "Huge pages, slow drives, and long delays" thematisiert; das dort angesprochene Deaktivieren von "Synchronous Compaction" konnten die Entwickler durch einen Ansatz umgehen, den sie nach Erscheinen des Artikels entwickelt haben. Details und Messwerte zu den Auswirkungen liefert ein fast vierhundert Zeilen langer Kommentar eines Commits, der lediglich drei Zeilen entfernt, aber nur eine von mehreren Änderungen am Compaction-Code ist (u. a. 1, 2, 3, 4, 5, 6).

Eine andere Änderung am Memory-Management-Code soll eine weitere Ursache für Ruckler vermeiden helfen, die sich ebenfalls gerne beim Schreiben auf langsame Datenträger zeigte und mit der Writeback-Infrastuktur in Zusammenhang steht. Nebenbei kann sie beim Einsatz des Fuse-Treibers ntfs-3g die Schreib-Performance unter gewissen Bedingungen um zirka fünfzig Prozent steigern, wie Messwerte im Commit-Kommentar zeigen.

Mehr Infos

Entwicklungsstand

In der Nacht vom Samstag auf Sonntag hat Linus Torvalds die sechste Vorabversion von Linux 3.3 veröffentlicht. In der Freigabe-Mail erklärt er, der RC6 bringe lediglich kleine Korrekturen und Aufräumarbeiten; es sei so ruhig gewesen, dass dies die letzte Vorabversion sein könnte. Das hänge aber vom Verlauf der nächsten Woche ab; wenn es so ruhig bleibe, gebe es keinen besonderen Grund, den aktuellen Entwicklungszyklus nicht abzuschließen. Wahrscheinlich dürfte Linux 3.3 daher zum Anfang der nächsten Woche oder dem Beginn der Folgewoche erscheinen, sofern nicht noch größere Probleme auftauchen

Die Kernel-Entwickler haben für Linux 3.3 einige Änderungen ("Memory Control Group Naturalization Patches") aufgenommen, die den Verwaltungsaufwand des Cgroup-Controllers "memory" erheblich reduzieren sollen; das soll die Performance des Controllers zum Regulieren des Arbeitsspeicherkonsums verbessern, den einige Distributionen standardmäßig einsetzen (u. .a 1, 2, 3). Einige Hintergründe zu einem früheren Entwicklungsstand hat LWN.net im Mai letzten Jahres im Artikel "Integrating memory control groups" zusammengefasst.

Der Memory-Controller der Control Groups bietet bei Linux 3.3 Basis-Funktionen, um die Menge des Arbeitsspeichers zu begrenzen, den der Kernel selbst zur Verwaltung und Betrieb von Prozessen alloziert (1, 2); der im ersten Teil dieser Artikelserie erwähnte "TCP buffer size controller" nutzt diese Funktionen, um die Menge des Arbeitsspeichers zu begrenzen, den die bei der TCP-Kommunikation verwendeten Puffer belegen dürfen. Eine andere Anpassung beseitigt ein Performance-Problem im Readahead-Code, das sich zeigte, wenn ein Programm große Einheiten von schnellen Datenträger (etwa einer SSD) abforderte. Die Ursache war ein unerwünschter Nebeneffekt von Änderungen bei Linux 2.6.39; Hintergründe erläutert der LWN.net-Artikel "What happened to disk performance in 2.6.39".

Zum KVM-Code stieß unter anderem Code zum Bereitstellen einer Virtual Performance Monitoring Unit (PMU), die Gastsysteme für Performance-Analysen oder andere Tracing-Aufgaben nutzen können (u. a. 1, 2). Die Discard-Unterstützung im Xen-Code bietet nun eine optionale Funktion, um Daten in freigegebenen Bereichen zu zerstören ("discard support with secure erasing support"); einige weitere Xen-spezifische Änderungen erwähnt ein Git-Pull-Request von Oracle-Mitarbeiter Konrad Rzeszutek Wilk. Die Virtio-Treiber balloon, blk, console und net bringen nun alles für ACPI S4 Nötige mit; das ermöglicht einen Wechsel in den Ruhezustand (Hibernate) bei Gästen, die diese Datenaustausch-Schnittstellen verwenden.