Kernel Log: Coming in 2.6.35 (Part 4) - Architecture and infrastructure
by Thorsten Leemhuis
Measures to optimise the power management code and fully support the Turbo Core function of recent AMD six-core processors increase the data throughput and processing speed of Linux 2.6.35. Further kernel additions include tracing interfaces for KVM, another kernel configuration program, and functions for de-fragmenting the working memory.
On Thursday evening, Linus Torvalds announced the sixth release candidate of kernel version 2.6.35. In his release email, Torvalds indicated that this could be the last RC before Linux 2.6.35 is finalised.
In Part 4, the Kernel Log continues its "Coming in 2.6.35" mini series and describes the kernel's advancements in terms of architecture and infrastructure code. Part 1 described the changes in the graphics hardware area, Part 2 dealt with storage aspects and file systems and Part 3 with the network code and drivers. Part 5 about audio hardware drivers as well as USB, FireWire and V4L / DVB etc drivers will complete our mini series in a few days.
The cpuidle code now logs a processor's recent idle phases and tries to detect repetitive patterns – such as repeatedly waking up shortly after going into standby. The code uses this data to make a more informed decision about whether and how deeply to put the processor into standby in the next idle phase. The ondemand governor of the cpufreq code now regards the time some processors spend waiting for the completion of I/O tasks as normal CPU loads, unless configured differently. These two changes are to considerably increase the data throughput with partial system loads on some systems, because the kernel previously used the CPU power saving modes too aggressively with some systems and access patterns. Ingo Molnar in his Git-Pull request for the changes to the process scheduler explained that as a result, the time required by the CPU to go to sleep or wake up substantially slowed down the data flow – for instance on Andrew Morton's laptop, where a task became 30 to 40 per-cent slower.
The developers have substantially updated and extended the documentation concerning the kernel's PCI power management as well as that of the device power management features, which were recently given a major overhaul (1, 2, edition after second update); a further few corrections were added to the device power management features. The PM QOS (Power Management Quality of Service) code was also improved in various places, as pointed out by subsystem maintainer Rafael J. Wysocki in his Git-Pull request.
ACPI and PCI
The kernel now includes the experimental intel_idle driver, which directly controls various power saving mechanisms of Intel CPUs instead of leaving this task to a sometimes badly programmed ACPI BIOS – background information on this can be found in the commit comment as well as an article on LWN.net. 2.6.35 will also support "timer slacks" on systems without high resolution timer. This means that processors can occasionally sleep longer, because the kernel can process several tasks in one go while they are due within a predefined time frame rather than at a specific time.
Various patches submitted by Dominik Brodowski fix some inconsistencies in the PCMCIA code and introduce minor improvements; background information can be found in the slides and the text versionof a presentation Brodowski gave at this year's LinuxTag conference.