How Ubuntu 12.04 Is Trying To Drop Power Usage
After illustrating Linux power regressions and other problems for months, with Ubuntu 12.04 LTS developers at Canonical are finally taking a serious look at Linux power management and how it can be bettered.
Going back to the last Ubuntu Developer Summit they began working out ways to improve the energy efficiency of Ubuntu Linux. They're work isn't really about contributing upstream improvements and optimizations to better the Linux power management situation, but determining what options can be safely enabled or better tuned to drop the Ubuntu power usage for primarily mobile systems. (Separately, they're finally getting back to looking at the regressing boot performance state.)
On Launchpad is their specification for improving the Linux kernel power management for Ubuntu 12.04 LTS. Below is a brief summary at what the Canonical kernel developers have been investigating -- but not necessarily implementing in upstream Ubuntu by default -- as means of bettering the Linux power usage.
- The impact on power consumption from mouse/touch-pad events was examined. Mouse movement impacted the power consumption by less than 1% on some systems, but for some this led to nearly 8% greater power being consumed over idle. However, reducing the mouse poll rate by half didn't lead to any significant advantages in this scenario. They're still not sure why some hardware is going through a significant amount of power on mouse movements.
- A simple black background within Ubuntu will increase the power consumption by about 2%. However, if enabling Intel frame-buffer compression the black background only causes the power consumption to go up by just over one percent. Enabling frame-buffer compression usually just saves a small amount of power. In fact, the savings are so minimal that some Intel developers haven't been sure whether to bother enabling it by default as it could cause problems in some niche scenarios. Those wishing to try out Intel FBC can boot their system with the i915.i915_enable_fbc=1 kernel module parameter.
- The impact of the energy performance bias for newer generations of Intel hardware was looked at (MSR_IA32_ENERGY_PERF_BIAS), but they couldn't come to any conclusions. However, you can see my Linux power performance testing with commenting on the Intel energy performance bias in this article.
- They're looking at pm-utils power.d scripts for automatically putting any webcam, audio, DRAM, Ethernet, WiFi, Bluetooth, SATA link, and MMC/SD devices into their low-power states automatically. This information comes from PowerTop recommendations. Basically Canonical would just be taking the logic from PowerTop and put it in a power.d script for automatically applying the changes that this Intel open-source program recommends.
- The power consumption on identical hardware was looked at when using a legacy BIOS and UEFI firmware. No major power differences were found between using the legacy/compatible BIOS and the UEFI alternative, but the boot performance was found to be faster for Ubuntu when using the old BIOS technology.
- Some of the default Ubuntu applications/services are waking up excessively. In particular, by forcing gwibber-service, ubuntuone-syncd, and syndaemon to only wake once per second resulted in one of the test systems waking up 20% less. The notify-osd process was also waking up a lot.
- Idling within the default Unity desktop (OpenGL version) consumes just shy of 2% more power than the Qt-based Unity 2D desktop. The Unity 2D mode also consumes 6% less power than the standard Unity desktop when using the Ctrl-Alt-Left/Ctrl-Alt-Right commands. However, the Unity 2D Super-S expo goes through more than 10% more power than the OpenGL version.
- The sync daemon for Canonical's UbuntuOne cloud service (ubuntuone-syncdaemon) is doing useless I/O writes causing an idle system to have its HDD wake-up more often than is really needed.
- The PCI Express ASPM regression was well-tested and confirmed. The fix that made its way into the upstream Linux 3.3 kernel by Red Hat's Matthew Garrett has already been back-ported into the Linux 3.2 kernel used by Ubuntu 12.04 LTS.
- Power consumption on newer releases has increased with the use of compositing and Unity with busy applications. (They're still investigating.)
- When running graphics-intensive applications like video playback or OpenGL, using the Unity desktop is causing more power to be consumed than the GNOME desktop. Simply running glxgears under Unity causes the power consumption to go up by more than 10% over GNOME.
- The top 1/3 of the brightness scale for notebook LVDS panels tends to impact the power consumption disproportionately, so they found it best to remain on the lower 2/3 of the back-light panel brightness.
- Ubuntu consumed more power than Windows 7 during the following separate workload tests: idling, having a web browser open, playing an MP3, running Mozilla Thunderbird, using BBC's iPlayer, and suspending. The areas where Ubuntu Precise did the worst against Windows 7 was with Thunderbird and the BBC web player. However, the web browsing and MP3 playback difference was measurably worse as well under Ubuntu.
- If Intel RC6 support works for your system, you should enable this feature. Intel RC6 for Sandy Bridge can reduce power consumption and boost performance, as has been covered by many Phoronix articles. It's not the default though since it still causes problems for a few systems.
- Enabling the Linux DRM vBlank off delay was found to save a minor amount of power, but not enough for Canonical to worry about for Precise. This can be toggled via the drm.vblankoffdelay=1 kernel module parameter.
- LVDS down-clocking can cause a small amount of power. However, the performance savings is marginal and can result in flickering for some systems, so it's not going to be enabled by default.
The results in full for the kernel power management investigation so far for Ubuntu 12.04 "Precise Pangolin" can be found on Launchpad.
Once Ubuntu 12.04 Alpha 2 is out in early February I will be out with a fresh look at the Ubuntu Linux power situation, with more comparative tests across a spectrum of systems and hopefully will be able to comment on some of the other currently undocumented power regressions I previously uncovered.
As always, discuss your power results and power tweaks you would like to share within the forums.