The Leading Cause Of The Recent Linux Kernel Power Problems
Forcing Active-State Power Management should work for many systems, but if your system's BIOS/hardware is in bad shape, you may hit system hangs. ASPM policies can also be set via /sys/module/pcie_aspm/parameters/policy. The above graph is from a Lenovo ThinkPad showing the idle power consumption from battery of the vanilla Linux 2.6.37 and 2.6.38 kernels. The average power consumption for this Intel-powered notebook went up by 10.6% between the two kernel releases, but when forcing PCI Express ASPM on the same 2.6.38 kernel the power consumption rate dropped by nearly 15%.
Here is also the result from an independent Intel Core i7 system with the two kernels and the different changes. The Linux 3.0 development kernel had similar benefits when forcing Active-State Power Management due to the "PCI: Disable ASPM if BIOS asks us to" change. This system and some of the older systems were what is also affected by another kernel power regression still under investigation, but ASPM appears to be the biggest problem.
As not everyone works the weekends, I have not yet been able to reach Jesse Barnes, the maintainer of the PCI subsystem for the Linux kernel (and also a name mentioned on Phoronix recently as one of the Intel Linux graphics driver developers). As some systems have ASPM hardware problems, the commit may possibly not be reverted, but it seems that there's far more systems being negatively affected by this change (with the sharply decreased battery life) than the number of systems it helps -- I've never encountered ASPM problems with it enabled on any of my systems in pre-2.6.38 nor have I seen any reports of such in the Phoronix Forums or elsewhere. It is possible there will not be a proper solution until the Linux 3.1 kernel as the Linux 3.0 merge window is closed and a final release is only a few weeks out. It's also a question for many whether any "fix" will be backported to the stable kernel series or if users will be left to append "pcie_aspm=force" to their GRUB lines.
Again, this is not the only major power regression outstanding. There is still a noticeable power regression back in the Linux 2.6.35 kernel, another 2.6.38-era regression due to a scheduler issue still being investigated, and some other items on my radar. A number of other Linux power article tests are imminent on Phoronix and I also continue to tweet findings via @MichaelLarabel and @Phoronix. If you'd like to see such discoveries continue, please consider subscribing to Phoronix Premium, making a PayPal donation, or at the very least disable AdBlock, join the Phoronix Forums, and when shopping use our NewEgg / Amazon shopping links. There's also enterprise services for the Phoronix Test Suite offered to organizations.
If you enjoyed this article consider joining Phoronix Premium to view this site ad-free, multi-page articles on a single page, and other benefits. PayPal or Stripe tips are also graciously accepted. Thanks for your support.