Kernel-Log – Was 2.6.36 bringt (3): Infrastruktur
Seite 3: Verschiedenes, kleine Perlen
Verschiedenes
- Die Kernel-Hacker haben die Nutzung des Big Kernel Lock (BKL) im Infrastruktur-Code und zahlreichen Treibern weiter reduziert – unter anderem auch im TTY-Subsystem, was selbst einige der erfahrensten Kernel-Hacker vor Schwierigkeiten gestellt hat. Damit nähern sich die Entwickler weiter dem Ziel, dass der Kernel auf Standard-Systemen ohne diesen sperrigen Locking-Mechanismus arbeitet, der die Skalierbarkeit und die System-Performance verschlechtert.
- Der x86-Code unterstützt nun die Power Limit Notifications von Intels Sandy-Bridge-Prozessoren, die Anfang nächsten Jahres erwartet werden (1, 2, 3). Der neue Hwmonitor-Treiber pkgtemp baut darauf auf kann unter anderem die Temperatur des Prozessors auslesen (1, Dokumentation)
- Der Prozess-Scheduler reduziert in bestimmten Situation nun den Wettbewerb zwischen Kernel-Threads, die eine exklusive Kontrolle über eine belegte Ressource erlangen wollen. Dadurch kann der aktive Prozess ungestörter arbeiten, was den Datendurchsatz teilweise erheblich steigert (Commit, LWN.net-Artikel).
- Wie bei seine Vorgänger bringt auch 2.6.36 zahlreiche Änderungen am Debugging-, Performance-Monitoring- und Tracing-Code. Das Ftrace-Plugin kmemtrace etwa haben die Kernel-Hacker entfernt, da sich die Funktionen nun über die Trace-Events von Typ "kmem" sowie "perf kmem" erledigen lassen. Wie bereits im ersten Teil der "Was 2.6.36 bringt"-Serie näher beschrieben, bietet der Kernel auf Systemen mit Intel-KMS-Untersütztung nun eine KDB-Debugger-Shell, um dort etwa die Ursache für einen Absturz des X-Servers analysieren zu können, wenn der Wechsel auf eine Textkonsole nicht mehr möglich ist und keine serielle Konsole konfiguriert ist.
- Fast einen Monat nach dem Ende des Merge Window haben die Kernel-Hacker eine Änderung am Prozess-Scheduler vorgenommen, durch den der Scheduler die maximalen Wartezeiten insbesondere auf Desktop-Systemen reduzieren soll, wenn parallel andere Prozesse CPU-Zeit fordern – das verspricht eine bessere Reaktionsgeschwindigkeit, wodurch sich das System flotter anfühlen soll. Die der Änderung vorausgegangene Diskussion und der Commit-Kommentar erläutern Hintergründe und liefern Messwerte, laut denen sich die maximale Latenz im Test-Szenario beinahe halbiert hat.
- Die Kernel-Hacker wollen mit 2.6.36 das Problem beseitigt haben, durch das sich Systeme mit 2.6.35 und einigen früheren Kernelversionen unter bestimmten Bedingungen extrem langsam anfühlten oder zeitweise gar nicht mehr reagierten, während der Kernel größere Datenmengen auf ein langsames Medium (etwa einen USB-Stick) schrieb (u. a. 1).
- Die Sicherheitserweiterung Tomoyo bietet nun einen "Interactive Enforcing Mode", mit dessen Hilfe Administratoren im Betrieb entscheiden können, ob sie eine Verletzung der Policy ignorieren wollen. Ein Youtube-Video illustriert die Funktionsweise.
- Stefani Seibold hat das bei 2.6.32 bereits erheblich überarbeite Kfifo-API ein weiteres mal verändert, um Performance zu verbessern und ein besseres API zur Verfügung zu stellen (u. a. 1, 2). Die alten API-Calls werden aber weiter unterstützt, die neuen Möglichkeiten erläutern einige Beispiele.
- Über das Make-Target "coccicheck" lässt sich nun Coccinelle aufrufen – ein Programm zur semantischen Code-Analyse, das Programmierern beim Refaktorieren von Code Arbeit abnehmen kann. Details zu den Möglichkeiten liefern die Kernel-Dokumentation und ein im Frühjahr letzten Jahres erschienener Artikel bei LWN.net.
Die kleinen Perlen
Viele kleinere, aber keineswegs unbedeutende Neuerungen finden sich in der folgenden Liste mit den englischen Commit-Überschriften der jeweiligen Änderung. Die Einträge verlinken genau wie viele der Verweise im vorangegangenen Text auf das Webfrontend des von Linus Torvalds gepflegten Git-Zweigs mit den "offiziellen" Kernel-Quellen auf Kernel.org. Der über diese Links angezeigten Commit-Kommentar und der darunter ausgegebene Patch liefern zahlreiche weitere Informationen zur jeweiligen Änderungen.
Vor jedem Link finden sich in eckigen Klammern einige Buchstaben und Zahlen. Ein "C" kennzeichnet Patches mit Änderungen an Kconfig-Dateien, welche die Hilfetexte und Konfigurationsoptionen enthalten, die bei der Kernel-Konfiguration über "make menuconfig", "make xconfig" und ähnliche Werkzeuge angezeigt werden. Ein "D" steht bei Patches, die die Dokumentation verändern, die im Kernel-Zweig unterhalb von Documentation/ liegt. Ein "N" weist Änderungen aus, die eine neue Datei anlegen. Die Zahl vermittelt einen groben Eindruck zur Größe des Patches: eine "1" steht für Änderungen, die inklusive Kommentar zwischen 10 und 20 KByte groß sind, eine "2" für solche, die zwischen 20 und 30 KByte Umfang haben; Änderungen ohne Zahl sind kleiner als 10 KByte, Patches mit einer "9" hingegen 90 KByte oder größer.
Crypto & Security
- [
C
] async_tx: Move ASYNC_RAID6_TEST option to crypto/async_tx/, fix dependencies - [
C
] crypto: testmgr - add an option to disable cryptoalgos' self-tests - [
C
] crypto: testmgr - Default to no tests - [
C
] crypto: testmgr - Fix test disabling option - [
- [
1
] n2_crypto: Add HMAC support. - [
- [
3
] padata: Make two separate cpumasks - [
D
] padata: update API documentation - [
D
] padata: update documentation - [
- [
N2
] TOMOYO: Add mount restriction. - [
N2
] TOMOYO: Add numeric values grouping support. - [
1
] TOMOYO: Add pathname aggregation support. - [
1
] TOMOYO: Allow wildcard for execute permission. - [
1
] TOMOYO: Remove alias keyword. - [
2
] TOMOYO: Support longer pathname. - [
D
] TOMOYO: Update version to 2.3.0
Debugging-, Performance-Monitoring- und Tracing-Code
- [
- [
N
] ftrace,kdb: Extend kdb to be able to dump the ftrace buffer - [
- [
- [
- [
- [
CDN2
] lockup_detector: Combine nmi_watchdog and softlockup detector - [
- [
- [
N1
] nmi_watchdog: Add new, generic implementation, using perf events - [
- [
- [
- [
- [
- [
- [
- [
- [
1
] perf buildid: add perfconfig option to specify buildid cache dir - [
- [
N1
] perf: New migration tool overview - [
- [
- [
- [
- [
- [
- [
- [
- [
- [
- [
1
] perf sort: Make column width code per hists instance - [
1
] perf tools: Add the ability to specify list of cpus to monitor - [
N
] perf tools: Make target to generate self contained source tarball - [
N1
] perf tools: Reorganize the Makefile feature tests - [
- [
- [
N
] perf ui: Complete the breakdown of util/newt.c - [
- [
3
] perf ui: New hists tree widget - [
D
] tracing/documentation: Document dynamic ftracer internals - [
D 2
] tracing/kprobes: Support "string" type - [
C 1
] tracing: Remove boot tracer - [
1
] tracing: Remove ftrace_preempt_disable/enable - [
C 1
] tracing: Remove ksym tracer - [
C 1
] tracing: Remove sysprof ftrace plugin - [
DN4
] vmscan: tracing: add a postprocessing script for reclaim-related ftrace events - [
N
] vmscan: tracing: add trace events for kswapd wakeup, sleeping and direct reclaim - [
Memory Management
- [
1
] hugetlb, rmap: add reverse mapping for hugepage - [
- [
- [
- [
- [
- [
- [
- [
1
] vmscan: kill prev_priority completely - [
- [
- Scheduler
- [
1
] sched: Add asymmetric group packing option for sibling domain - [
N
] sched: add hooks for workqueue - [
2
] sched: Change nohz idle load balancing logic to push model - [
1
] sched_clock: Add local_clock() API and improve documentation
Various Infrastructure
- [
- [
- [
1
] audit: convert audit watches to use fsnotify instead of inotify - [
C 1
] audit: reimplement audit_trees using fsnotify rather than inotify - [
C
] Audit: split audit watch Kconfig - [
- [
- [
- [
- [
D
] dma-mapping: add DMA_xxBIT_MASK to feature-removal-schedule.txt - [
D 1
] dma-mapping: remove dma_is_consistent API - [
DN
] Documentation: Add timers/timers-howto.txt - [
D
] Documentation: DMA-API-HOWTO.txt: add multiple types of IOMMUs support - [
D
] Documentation: DMA-API-HOWTO.txt: rename ARCH_KMALLOC_MINALIGN to ARCH_DMA_MINALIGN - [
D
] Documentation: kernel-locking: mutex_trylock cannot be used in interrupt context - [
D 9
] Documentation: update broken web addresses. - [
D
] Documentation: update kbuild loadable modules goals & examples - [
D
] Documentation: update kbuild make examples#2 to reflect changes - [
- [
D
] firmware: Update hotplug script - [
D 1
] fscache: convert object to use workqueue instead of slow-work - [
1
] fsnotify: mount point listeners list and global mask - [
N3
] fsnotify: split generic and inode specific mark code - [
N
] fsnotify: vfsmount marks generic functions - [
D
] gpio: doc updates - [
- [
- [
CD 4
] inotify: remove inotify in kernel interface - [
- [
C
] Kbuild: Add option to set -femit-struct-debug-baseonly - [
D
] kbuild: allow assignment to {A,C}FLAGS_KERNEL on the command line - [
D 1
] kbuild: allow assignment to {A,C,LD}FLAGS_MODULE on the command line - [
D
] kbuild: drop unifdef-y support - [
- [
D
] kconfig: add alldefconfig - [
- [
- [
- [
- [
- [
- [
- [
- [
1
] kconfig: use long options in conf - [
D
] kgdb,docs: Update the kgdb docs to include kms - [
1
] kmap_atomic: make kunmap_atomic() harder to misuse - [
C
] kmemleak: Introduce a default off mode for kmemleak - [
- [
- [
C
] lockup_detector: Adapt CONFIG_PERF_EVENT_NMI to other archs - [
C
] lockup_detector: Don't enable the lockup detector by default - [
C
] lockup_detector: Introduce CONFIG_HARDLOCKUP_DETECTOR - [
C
] lockup_detector: Make BOOTPARAM_SOFTLOCKUP_PANIC depend on LOCKUP_DETECTOR - [
C
] lockup_detector: Update some config - [
- [
C
] memcg: remove experimental from swap account config - [
- [
1
] modpost: support objects with more than 64k sections - [
1
] module: add load_info - [
D
] mutex: Fix annotations to include it in kernel-locking docbook - [
D
] panic: keep blinking in spite of long spin timer mode - [
- [
- [
2
] partitions: fix sometimes unreadable partition strings - [
- [
- [
- [
- [
D
] SubmittingPatches: add more about patch descriptions - [
D
] sysfs: fix discrepancies between implementation and documentation - [
D
] sysfs: Fix one more signature discrepancy between sysfs implementation and docs. - [
D
] timekeeping: Make xtime and wall_to_monotonic static - [
CD 1
] time: Kill off CONFIG_GENERIC_TIME - [
- [
- [
C 1
] tree/tiny rcu: Add debug RCU head objects - [
2
] tty: Add EXTPROC support for LINEMODE - [
2
] tty: replace BKL with a new tty_lock - [
- [
- [
1
] workqueue: implement unbound workqueue - [