Kernel-Log – Was 3.6 bringt (5): Infrastruktur
Ähnlich wie aktuelle Versionen von Mac OS X und Windows beherrscht Linux jetzt einen hybriden Schlaf. Kernel 3.6 liefert zudem bessere Zufallsdaten und nimmt EFI-Boot-Loadern Arbeit ab.
- Thorsten Leemhuis
Bei der Freigabe der sechsten Vorabversion von Linux 3.6 hat Linus Torvalds zum Testen aufgefordert und erklärt, er würde den Kernel 3.6 gerne bald veröffentlichen. Es ist daher nicht auszuschließen, dass dies bereits die letzte Vorabversion war und der neue Kernel in Kürze erscheint; so manches Mal hat Torvalds nach solch einem Statement dann aber doch noch einen weiteren RC veröffentlicht, daher erscheint Linux 3.6 vielleicht auch erst zum Monatswechsel.
Aufgrund der sich nähernden Fertigstellung schließt dieser Artikel zu den Änderungen an der Infrastruktur von Linux 3.6 daher nun die Kernel-Log-Mini-Serie "Was 3.6 bringt" ab. Die ersten vier Teile der Serie hatten sich bereits den Neuerungen in den Bereichen Dateisystemen und Storage, Netzwerk, Architektur-Code sowie Treibern gewidmet.
Doppelspeicherung
Durch das neue Suspend to Both wird der Linux-Kernel 3.6 hybrides Standby beherrschen. Mac OS X und Windows bieten solch eine Funktion schon länger, bei der Rechner den Speicherinhalt während des Schlafs sowohl im Arbeitsspeicher als auch auf dem Systemdatenträger vorhält. Normalerweise wacht ein so schlafendes System dann wie aus dem Suspend-to-RAM (Bereitschaftsmodus/ ACPI S3) innerhalb von Sekunden auf; wurde während des Rechnerschlafs jedoch die Stromversorgung unterbrochen, etwa weil der Notebook-Akku zur Neige ging, restauriert das System den Hauptspeicherinhalt wie nach einem Suspend-to-Disk (Hibernate/Ruhezustand) vom Datenträger.
Der neue Schlafmodus lässt sich über den folgenden Befehl manuell ansteuern:
echo suspend > /sys/power/disk; echo disk > /sys/power/state
Auf einem etwas älteren Testsystem mit 250-GByte-Festplatte arbeitete Suspend-to-Both im Kurztest wie gedacht; es benötigte zum Schlafenlegen rund 16 Sekunden – viermal so lange wie der Wechsel in den Suspend-to-RAM und ähnlich lange wie beim Ansteuern von Suspend-to-Disk.
Zufallszahlen
Linux 3.6 wird beim Sammeln von Daten zum Bereitstellen von Zufallsdaten für /dev/random und /dev/urandom bislang ungenutzte Entropiequellen einbeziehen; darunter MAC-Adressen, DMI-Daten und Informationen zur USB-Hardware. Das soll unter anderem die Arbeit von Kryptografie-Software verbessern, denn Sicherheitsspezialisten war kürzlich aufgefallen, dass knapp sechs Prozent der untersuchten TLS- und knapp zehn Prozent der SSH-Host-Schlüssel Ähnlichkeiten aufweisen. Daran sollen unzureichende Zufallsdaten Mitschuld haben, die der Kernel zur Schlüsselerzeugung beigesteuert hat; das Problem soll sich speziell bei Embedded Devices häufiger gezeigt haben. Weitere Hintergründe erläutert ein LWN.net-Artikel. Viele der Änderungen zur besseren Entropie-Erzeugung sind auch in die neuesten Stable- und Longterm-Kernel der 3er-Serie eingezogen, damit auch diese bessere Zufallsdaten liefern und das Problem so schneller aus der Welt verschwindet.
Verschiedenes
Die Kernel-Entwickler haben das Protokoll zum Handover von Boot-Loader zum Linux-Kernel erweitert, damit sich der Kernel beim Start von x86-Systemen per EFI um einige Initialisierungsaufgaben selbst kümmern kann; die erledigte bislang der Boot-Loader, wenn Linux nicht durch die bei Version 3.3 aufgenommene EFI-Stub-Funktion startete. Die jetzt integrierten Änderungen vereinfachen die Arbeit für EFI-Boot-Manager, da sie nun nur mehr die Darstellung eines Boot-Menüs und das Laden von Kernel und Initrd erledigen müssen; der neue Ansatz kann zudem den Boot-Vorgang beschleunigen.
Einige Änderungen sollen die Zahl der Module erheblich reduzieren, die das Make-Target localmodconfig aktiviert lässt (u. a. 1, 2); mit ihm lässt sich auf die Schnelle eine Kernel-Konfiguration erzeugen, die halbwegs zum System passen sollte und idealerweise keine Funktionen kompiliert, die nicht benötigt werden.
Über den neuen Cgroup-Controller HugeTLB können Administratoren nun die Verwendung von großen Speicherseiten (Huges Pages) regulieren.
Die kleinen Perlen, Nachzügler
Die kleinen Perlen
Die folgenden Links führen zu einigen kleineren, aber keineswegs unbedeutenden Änderungen:
Memory Management
- [
D] documentation: update how page-cluster affects swap I/O - [
] memcg: further prevent OOM with too many dirty pages - [
] memcg: prevent OOM with too many dirty pages - [
D 1] mm: add support for a filesystem to activate swap files and use direct_IO for writing swap pages - [
1] mm: compaction: Abort async compaction if locks are contended or taking too long - [
C 1] mm: factor out memory isolate functions - [
D] mm/frontswap: cleanup doc and comment error - [
D] mm/memcg: complete documentation for tcp memcg files - [
D] mm, oom: replace some information in tasklist dump - [
DN] mm: prepare for removal of obsolete /proc/sys/vm/nr_pdflush_threads - [
N] mm, sl[aou]b: Common definition for boot state of the slab allocators - [
N] mm, sl[aou]b: Extract common code for kmem_cache_create() - [
3] mm, sl[aou]b: Extract common fields from struct kmem_cache - [
1] mm, sl[aou]b: Use a common mutex definition - [
2] mm: sl[au]b: add knowledge of PFMEMALLOC reserve pages - [
] mm: slub: optimise the SLUB fast path to avoid pfmemalloc checks - [
] netvm: prevent a stream-specific deadlock - [
] slub: refactoring unfreeze_partials()
Various
- [
D] cgroup: remove hierarchy_mutex - [
D] cgroup: Remove populate() documentation - [
D] cgroup: Update remount documentation - [
C] cpu: rewrite cpu-notifier-error-inject module - [
] deb-pkg: Add all Makefiles to header package - [
] deb-pkg: Install linux-firmware-image in versioned dir - [
N1] fault-injection: add selftests for cpu and memory hotplug - [
DN] fault-injection: add tool to run command with failslab or fail_page_alloc - [
C DN1] fault-injection: notifier error injection - [
D] feature-removal-schedule.txt: remove kmap_atomic(page, km_type) - [
D] irq_domain: Standardise legacy/linear domain selection - [
] kconfig: Document oldnoconfig to what it really does - [
D] kmsg - export "continuation record" flag to /dev/kmsg - [
] ktest: Add check for bug or panic during reboot - [
] ktest: Add CONFIG_BISECT_CHECK option - [
] ktest: Add MAX_MONITOR_WAIT option - [
] ktest: Add PRE_INSTALL option - [
] ktest: Add PRE/POST_KTEST and TEST options - [
] localmodconfig: Add debug environment variable LOCALMODCONFIG_DEBUG - [
C D 2] memcg: rename config variables - [
C N] memory: memory notifier error injection module - [
] menuconfig: add u, d, q command keys in text boxes - [
] nconf: add u, d command keys in scroll windows - [
C N] of/lib: Allow scripts/dtc/libfdt to be used from kernel code - [
D 1] rcu: Control RCU_FANOUT_LEAF from boot-time parameter - [
] rcu: Four-level hierarchy is no longer experimental - [
D] rcu: Update documentation to cover call_srcu() and srcu_barrier(). - [
] sched: Improve balance_cpu() to consider other cpus in its group as target of (pinned) task - [
N] scripts/coccinelle: Find threaded IRQs requests which are missing IRQF_ONESHOT - [
N] scripts/coccinelle: list iterator variable semantic patch - [
] scripts/config: add option to undef a symbol - [
D] stable: update references to older 2.6 versions for 3.x - [
N] string: introduce memweight() - [
D] vsprintf: add %pMR for Bluetooth MAC address - [
D] vsprintf: add support of '%*ph[CDN]' - [
D 1] workqueue: reimplement WQ_HIGHPRI using a separate worker_pool
Nachzügler
Das Gros der Änderungen für eine neue Kernel-Version pflegen die Kernel-Entwickler im Merge Window am Anfang des Entwicklungszyklus ein; gelegentlich integrieren Sie in der darauf folgenden Stabilisierungsphase aber noch einige kleinere, zumeist nicht ganz so wichtige Änderungen der Kategorie "Die kleinen Perlen" – teilweise, nachdem das Kernel-Log über die entsprechenden Subsysteme des Kernels bereits berichtet hat. Auch diesmal gab es einige solche Nachzügler:
- [
I] ahci: Add Device IDs for Intel Lynx Point-LP PCH - [
I] ahci: Add identifiers for ASM106x devices - [
I] ahci: Add JMicron 362 device IDs - [
] ata_piix: Add Device IDs for Intel Lynx Point-LP PCH - [
I] Bluetooth: Add support for Sony Vaio T-Series - [
D] Documentation: update mount option in filesystem/vfat.txt - [
D] Documentation: update tunable options in block/cfq-iosched.txt - [
D] Documentation: update tunable options in block/cfq-iosched.txt - [
] NFS: Alias the nfs module to nfs4 - [
] perf/x86: Enable Intel Cedarview Atom suppport - [
I] rt2x00: Identify ASUS USB-N53 device.
Ein "C" im Bereich "[ ]" kennzeichnet Commits mit Änderungen an Kconfig-Dateien, welche die Konfigurationsoptionen samt der zugehörigen Hilfetexte enthalten. Mit "I" ausgezeichneten Patches rüsten neue PCI- oder USB-IDs nach; jene mit "D" verändern die dem Kernel beiliegende Dokumentation; Commits mit "N" legen neue Dateien an. Die Zahl vermittelt einen groben Eindruck zur Größe des Patches: Eine "1" kennzeichnet Patches, die inklusive Kommentar zwischen 10 und 20 KByte groß sind; Patches mit einer "9" sind 90 KByte oder größer.
Weitere Hintergründe und Informationen rund um Entwicklungen im Linux-Kernel und dessen Umfeld finden sich in den vorangegangenen Kernel-Logs auf heise open. Neue Ausgaben des Kernel-Logs werden auf den Identi.ca- und Twitter-Konten "@kernellog" erwähnt; die englischen, bei den Kollegen von "The H" erscheinenden Übersetzungen auf den Identi.ca- und Twitter-Konten "@kernellog2". Gelegentlich zwitschert der Autor des Kernel-Logs unabhängig davon über einige Kernel-Log-Themen bei Identi.ca und Twitter als "@kernellogauthor". (thl) (thl)