Kernel-Log – Was 3.10 bringt (3): Infrastruktur

Die Kernel-Entwickler haben den übereifrigen Samsung-UEFI-Schutz gezähmt und eine Funktion eingebaut, um den Overhead des Timer-Interrupt zu reduzieren. Verbessert wurden auch Hyper-V-Unterstützung und die Anleitung zum Melden von Fehlern.

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

Die Kernel-Entwickler haben für Linux 3.10 den Code umgebaut, der Samsung-Notebooks vor Defekten bewahren soll, die durch ein Problem der Garbage Collection in der UEFI-Firmware dieser Geräte entstehen. Durch die Änderungen soll der Schutzmechanismus nun seltener aktiv werden, denn bislang ist er gelegentlich übereifrig und verhindert auf Geräten anderer Hersteller immer mal wieder das Anlegen oder Modifizieren von UEFI-Variablen. So etwa bei mehreren PCs in einem kürzlich durchgeführten Test der c't, wo es nach der UEFI-Installation von Linux-Distributionen keinen UEFI-Eintrag zum Booten des aufgespielten Linux gab, weil der Schutzmechanismus das Anlegen des Boot-Eintrags unterbunden hatte. Einige Hinweise, um sich in solch einer Situation zu behelfen, liefert die ab Montag am Kiosk erhältliche c't 15/13. Details zum Ansatz der überarbeiteten Schutzfunktion erläutert der Kernel-Entwickler Matthew Garrett in einem Blog-Eintrag.

Linux kann den bei der Arbeit normalerweise 100, 250 oder 1000 Mal pro Sekunde feuernden Timer-Interrupt einzelner CPU-Kerne nun auf einen Interrupt pro Sekunde drosseln; das soll auf Realtime-Systemen Schwankungen bei der Reaktionszeit vermeiden und beim High Performance Computing (HPC) die Performance ein klein wenig verbessern (u. a. 1, 2, 3, 4, 5). Das Drosseln des Timer-Interrupts gelingt allerdings nicht auf dem beim Booten zuerst in Betrieb genommenen CPU-Kern (Boot Strap Processor/BSP/CPU#0). Es funktioniert zudem nur bei Kernen, wo der Administrator durch Konfigurationsmaßnahmen sicherstellt, dass dort nur ein einzelner Prozess läuft. Die über Jahre entwickelte Technik soll mittelfristig verbessert werden, um den Zeitgeber komplett ausschalten zu können; durch diese und andere angedachte Ausbauarbeiten sollen dann auch Desktop-Systeme von dem Code profitieren, der unter den Schlagwörtern"Full Dynamic Ticks" und "nohz" entwickelt wurde. Weitere Hintergründe erläutern die Dokumentation und ein LWN.net-Artikel.

Das Cpufreq-Subsystem, das Taktwechsel von Prozessoren regelt, erhielt Basisunterstützung für ARMs Big-Little-Konzept; dabei enthält ein Prozessor neben leistungsfähigen Kernen ebenso viele langsamere Kerne, die stromsparender arbeiten. Hintergründe zum Ansatz hat c’t 8/13 erläutert. Weitere Details zur Linux-Unterstützung dieser Technik finden Sie in drei Artikeln bei LWN.net (1, 2, 3). Vollwertige Unterstützung für big.LITTLE erfordert größere Umbauarbeiten – unter anderem am Prozess-Scheduler des Kernels. Die soll der noch in Entwicklung befindliche In-Kernel Switcher (IKS) bringen, an dem Linaro-Entwickler arbeiten.

Mehr Infos

Entwicklungsstand

Am Wochenende hat Linus Torvalds Linux 3.10-rc7 freigegeben. Dabei zeigte er sich zuversichtlich, dass die siebte Vorabversion die letzte sein könnte; vermutlich erscheint Linux 3.10 daher zum Monatswechsel – es passiert aber recht häufig, dass nach solch einer Aussagen doch noch größere Probleme auftauchen, die zu einem weiteren RC und somit einer weiteren Entwicklungswoche führen.

Linux enthält jetzt einen Framebuffer-Grafiktreiber für die "Hyper-V Synthetic Video"-Grafik, die Virtualisierungslösungen in Microsofts Windows Server emulieren. Die im Kernel enthaltenen Gasttreiber für Microsofts Hypervisor Hyper-V unterstützten jetzt erstmals das Vergrößern des Arbeitsspeichers zur Laufzeit ("memory hot-add"). Über einen neuen Treiber können Windows-Hosts einen Linux-Gast dazu auffordern, alle Dateisysteme kurzzeitig in einen konsistenten Zustand zu bringen, damit der Host einen Snapshot der vom Gast verwendeten Datenträger erstellen kann ("Host Initiated Backup").

KVM erhielt unter anderem Verbesserungen zum Betrieb einer virtuellen Maschine innerhalb einer anderen VM (Nested Virtualization) mit Intel-Prozessoren (u. a. 1, 2, 3). Unterstützung für Intels APIC-Virtualisierung und Posted Interrupts soll den Overhead bei der Verarbeitung von Interrupts reduzieren, die für Gastsysteme bestimmt sind (1, 2, 3, 4, 5, 6). Mit KVM lässt sich nun auch auf manchen MIPS32-Prozessoren virtualisieren (u. a. 1, 2, 3). Die Unterstützung für Xen auf ARM beherrscht jetzt SMP. Über den neuen Treiber pvpanic kann das bei der KVM- und Xen-Virtualisierung genutzte Qemu dem Host mitteilen, wenn ein Gast abgestürzt ist.

Die Änderungen am Perf-Subsystem haben Uretprobes gebracht, durch die der Kernel Breakpoints in den Return-Pfad von Userspace-Code einfügen kann (1, 2, 3, 4, 5, Dokumentation); dadurch kann perf besser feststellen, wann eine bestimmte Programmfunktion wieder verlassen wurde. Das neue perf-Subkommando "mem" und passende Unterstützung für "perf record" und "perf report" ermöglicht eine Analyse der Speicherzugriffe (access profiling) bei Prozessoren mit PEBS (Precise Event Based Sampling) (u. a. 1, 2, 3, 4, 5).

Der Function Tracer (Ftrace) unterstützt jetzt mehrere Puffer; das lässt sich in Situationen nutzen, wo sonst seltener auftretende Events möglicherweise in der Flut eines häufiger feuernden Events untergehen. Verbessert wurden auch die Tracer Triggers, die nun ein Trace-Event ein- und ausschalten können, wenn eine bestimmte Funktion ausgeführt wird. Details zu diesen und weiteren Änderungen liefert die aktualisierte Dokumentation.

In seinem Bestreben, mittelfristig einige bekannte Probleme des Codes für Control Groups (Cgroups) aus der Welt zu schaffen, haben einige Entwickler weitere Aufäumarbeiten und Umbauten an Cgroups-Code vorgenommen. Mit ihnen kam eine neue Mount-Option, über die man den Cgroups-Code zu einem Verhalten auffordern kann, das mittelfristig zum Normalfall werden soll. Im Fahrwasser dieser Änderungen erhält auch die Cgroup-Unterstützung in Systemd zahlreiche Umbauten, die das Init-System zur regelnden Instanz für Cgroups machen sollen; über ein Systemd-API sollen andere Programme die Konfiguration beeinflussen können.

Über die neuen "memory.pressure_level events" des Cgroup-Controllers memcg können Anwendungen nun erfahren, wenn der Arbeitsspeicher knapp wird; Details erläutert die zugehörige Dokumentation und ein LWN.net-Artikel.

Sarah Sharp hat das lange weitgehend unangetastete Dokument "REPORTING-BUGS", das Hinweise zum Melden von Fehlern von Kernel-Fehlern liefert, erheblich umgebaut; dadurch enthält die Textdatei nun auch einen Schritt-für-Schritt-Anleitung und erklärt, wie man die richtigen Ansprechpartner findet.

Umbauarbeiten am Locking-Mechanismen rwsem (reader-writer semaphore) sollen dessen Performance in bestimmten Fällen verbessern (u. a. 1, 2, 3, 4, 5); in einer Testkonstellation soll der PostgreSQL-Benchmark Pgbench dadurch doppelt so hohe Werte erzielen. Auch am Mutex-Code gab es Änderungen, die Performance oder Skalierbarkeit in bestimmten Fällen deutlich verbessern sollen (1, 2).

Die ARM-Platformen bcm2835, cns3xxx, sirf, nomadik, msx, spear, tegra und ux500 werden nun über Multiplatform-Kernel unterstützt. Der Code fürs Samsungs Exynos soll bei 3.11 konvertiert werden; einige weitere Planungen zur Multiplattform-Unterstützung erwähnt ARM-Maintainer Arnd Bergmann in einem Kommentar bei LWN.net. Einen Übersicht weiterer Änderungen am Code für ARM-SOCs liefern die LKML-Threads mit dem ersten, zweiten und dritten Schwung der in diesem Bereich vorgenommenen Änderungen.

Der Kernel lässt sich nun für die microMIPS Instruction Set Architecture (ISA) übersetzen; das so erzeugte Kernel-Image soll mindestens 20 Prozent kleiner sein als ein Image für die MIPS32R2 ISA.

Für Tilera-Prozessoren übersetzte Kernel können nun im Privilege Level 2 unter einem im Level 1 laufenden Tilera Hypervisor arbeiten.