Kernel-Log – Was 2.6.35 bringt (4): Architektur- und Infrastruktur-Code

Seite 3: Turbo Core, Tracing und Virtualisierung

Inhaltsverzeichnis

Intel-Entwickler Venkatesh Pallipadi hat einige bei LWN.net kurz erläuterte und später von Peter Zijlstra nochmal überarbeitete Verbesserungen für Red-Black Trees (rbtrees) ausgearbeitet, um den PAT-Code (Page Attribute Table) des Kernels zu optimieren (1, 2, 3, 4). Eine Überarbeitung am Microcode-Intel-Treiber soll die zum Laden von Microcode-Updates benötigte Zeit auf einem System mit 1024 Prozessorkernen von 80 auf 1 bis 2 Sekunden reduzieren. Über die zuvor cpuhog genannte Funktion cpu_stop kann der Kernel vorübergehend Prozessorkerne für sich beanspruchen, was den Kernel-Code an einigen Stellen vereinfacht und manche Kernel-interne Aufgaben beschleunigt – Details dazu liefert ein Artikel bei LWN.net. CTR-Support im Treiber aesni-intel soll die Latenzzeiten bei Nutzung der AES-NI-Unterstützung neuerer Intel-Prozessoren verringern.

Linux 2.6.35 bringt zudem volle Unterstützung für die Turbo Core genannte Funktion, durch die einige vor einigen Wochen eingeführte Sechskernprozessoren von AMD den Takt einzelner Kerne steigern, wenn mindestens drei Kerne schlafen. Über Procfs kann man das Vorhandensein von Turbo-Core-CPUs erkennen; via Sysfs lässt sich die Taktsteigerung auf Wunsch deaktivieren. Damit geht die Geschichte um die Performance-Probleme der Turbo-Core-Prozessoren bald zu Ende, nachdem bereits die Stable-Kernel 2.6.32.13, 2.6.33.4 und 2.6.34 Korrekturen brachten, durch die AMDs Sechskerner wenigstens den Nominaltakt erreichten.

Die größten Neuerungen der Virtualisierungslösung KVM erwähnt Avi Kivity in seinem Git-Pull-Request: Ein Port auf PPC64, Verbesserung für den Timercode, viel Arbeit am Emulator-Code sowie Fähigkeiten, um KVM-Gastsysteme vom Host aus mit "perf" zu zu analysieren. An der Tracing- und Performance-Monitoring-Infrastuktur gab es zudem haufenweise weitere Änderungen, wie etwa die Unterstützung für die Monitoring-Funktionen älterer Pentium-4-CPUs (1, 2) sowie Intels "Precise Event Based Sampling" (PEBS), mit dem sich Informationen über einzelne Speicherabschnitte beschaffen lassen. Neue Text-User-Interfaces für "perf report" (u. a. 1, 2) und "perf annotate" (u. a. 1, 2, 3, 4) sollen die Analyse der gesammelten Daten erleichtern.

Bei der Fehleranalyse kann Entwicklern der neue Treiber ramoops helfen, der Informationen über Fehler auf nichtflüchtigen Speicher sichert. Nach mehreren Anläufen stieß zudem der Kdb genannte Kernel-Debugger zum Kernel (1, 2, Dokumentation). Dessen Code basiert auf der Version 4.4 des Kdb von SGI und besitzt etwas andere Fähigkeiten als die schon länger im Kernel enthaltenen und auf ein zweites System angewiesenen Debugging mit Kgdb, dessen Code an einigen Stellen mit dem von Kdb verflochten wurde. Weitere Details zu Kdb finden sich in einem Artikel bei LWN.net, der vom Entwickler auf Kernel.org bereitgestellten Dokumentation und den beiden Git-Pull-Request (1, 2); im ersten der beiden hofft der Entwickler noch auf die Aufnahme der KMS-Kdb-Patches für 2.6.35, die jedoch nicht erfolgte.