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 - [
   Â] crypto: twofish: Rename twofish to twofish_generic and add an alias - [
   1] n2_crypto: Add HMAC support. - [
   Â] padata: Added sysfs primitives to padata subsystem - [
   3] padata: Make two separate cpumasks - [
 D Â] padata: update API documentation - [
 D Â] padata: update documentation - [
   Â] pcrypt: Added sysfs interface to pcrypt - [
  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
- [
   Â] fb: add hooks to handle KDB enter/exit - [
  NÂ] ftrace,kdb: Extend kdb to be able to dump the ftrace buffer - [
   Â] kgdb,kdb: individual register set and and get API - [
   Â] kgdb,mips: Individual register get/set for mips - [
   Â] kgdboc: Add call backs to allow kernel mode switching - [
   Â] kgdb,x86: Individual register get/set for x86 - [
CDN2]Â lockup_detector: Combine nmi_watchdog and softlockup detector - [
   Â] lockup_detector: Remove nmi_watchdog.c file - [
   Â] lockup_detector: Remove old softlockup code - [
  N1] nmi_watchdog: Add new, generic implementation, using perf events - [
   Â] nmi_watchdog: support for oprofile - [
   Â] oprofile: Add Support for Intel CPU Family 6 / Model 22 (Intel Celeron 540) - [
   Â] oprofile: add support for Intel processor model 30 - [
   Â] Oprofile: Change CPUIDS from decimal to hex, and add some comments - [
   Â] perf: Add non-exec mmap() tracking - [
   Â] perf: Add perf_event::child_count - [
   Â] perf: Add perf_event_count() - [
   Â] perf annotate: Sort by hottest lines in the TUI - [
   1] perf buildid: add perfconfig option to specify buildid cache dir - [
   Â] perf man pages: Fix cut'n'paste error - [
  N1] perf: New migration tool overview - [
   Â] perf probe: Add kernel source path option - [
   Â] perf probe: Support comp_dir to find an absolute source path - [
   Â] perf probe: Support static and global variables - [
   Â] perf probe: Support "string" type - [
   Â] perf probe: Support tracing an entry of array - [
   Â] perf record: Add option to avoid updating buildid cache - [
   Â] perf report: Implement --sort cpu - [
   Â] perf report: Make -D print sampled CPU - [
   Â] perf, sched migration: Make it vertically scrollable - [
   Â] perf, sched migration: Parameterize cpu height and spacing - [
   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 - [
   Â] perf ui: Add a map browser - [
   Â] perf ui: Add search by name/addr to the map__browser - [
  NÂ] perf ui: Complete the breakdown of util/newt.c - [
   Â] perf ui: Introduce ui_browser->seek to support multiple list structures - [
   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 - [
   Â] x86 cpufreq, perf: Make trace_power_frequency cpufreq driver independent
Memory Management
- [
   1] hugetlb, rmap: add reverse mapping for hugepage - [
   Â] HWPOISON, hugetlb: enable error handling path for hugepage - [
   Â] HWPOISON, hugetlb: support hwpoison injection for hugepage - [
   Â] memcg: add mm_vmscan_memcg_isolate tracepoint - [
   Â] memcg, vmscan: add memcg reclaim tracepoint - [
   Â] mm: fix up some user-visible effects of the stack guard page - [
   Â] mm: implement writeback livelock avoidance using page tagging - [
   Â] vmap: add flag to allow lazy unmap to be disabled at runtime - [
   1] vmscan: kill prev_priority completely - [
   Â] vmscan: tracing: add trace events for LRU page isolation - [
   Â] vmscan: tracing: add trace event when a page is written - 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
- [
   Â] Add a dummy printk function for the maintenance of unused printks - [
   Â] Add support for the C variable in the coccicheck script - [
   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 - [
   Â] cgroups: Add an API to attach a task to current task's cgroup - [
   Â] checkpatch: add more exceptions to 80 char lines - [
   Â] clockevents: Remove the per cpu tick skew - [
   Â] clocksource: Add __clocksource_updatefreq_hz/khz methods - [
 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 - [
   Â] drm: add KGDB/KDB support - [
 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 - [
   Â] ibft: For UEFI machines actually do scan ACPI for iBFT. - [
   Â] ibft: Update iBFT handling for v1.03 of the spec. - [
CDÂ 4]Â inotify: remove inotify in kernel interface - [
   Â] irq: Add new IRQ flag IRQF_NO_SUSPEND - [
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 - [
   Â] kbuild: Warn on selecting symbols with unmet direct dependencies - [
 D Â] kconfig: add alldefconfig - [
   Â] kconfig: add savedefconfig - [
   Â] kconfig: fix make oldconfig - [
   Â] kconfig: fix MODULES-related bug in case of no .config - [
   Â] kconfig: fix tristate choice with minimal config - [
   Â] kconfig: introduce nonint_oldconfig and loose_nonint_oldconfig - [
   Â] kconfig: print more info when we see a recursive dependency - [
   Â] kconfig: print symbol type in help text - [
   Â] kconfig: print the range of integer/hex symbol in help text - [
   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 - [
   Â] kthread: implement kthread_data() - [
   Â] kthread: implement kthread_worker - [
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 - [
   Â] Makefile: "make kernelrelease" should show the correct full kernel version - [
CÂ Â Â]Â memcg: remove experimental from swap account config - [
   Â] menuconfig: improive help text a bit - [
   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 - [
   Â] param: add kerneldoc to moduleparam.h - [
   Â] param: locking for kernel parameters - [
   2] partitions: fix sometimes unreadable partition strings - [
   Â] rlimits: implement prlimit64 syscall - [
   Â] rtc: rp5c01: add NVRAM support - [
   Â] serial: add support for OX16PCI958 card - [
   Â] serial: add UART_CAP_EFR and UART_CAP_SLEEP flags to 16C950 UARTs definition - [
 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 - [
   Â] timer: Added usleep_range timer - [
   Â] timer: add on-stack deferrable timer interfaces - [
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 - [
   Â] vt/console: try harder to print output when panicing - [
   Â] workqueue: fix incorrect cpu number BUG_ON() in get_work_gcwq() - [
   1] workqueue: implement unbound workqueue - [
   Â] xconfig: add support to show hidden options which have prompts