As I already mentioned earlier, my Asus 1215N netbook has a battery runtime of 6 hours under Windows and of 4 hours under Linux. I thought this had something to do with ACPI — well, not directly, as I now learned. The cause was the Nvidia ION2 GPU.
The 1215N contains the notorious Nvidia Optimus technology, sometimes called “hybrid graphics”, which enables the operating system to enable the 3D GPU only when it is needed. This is different from GPU switching. GPU switching means to hardly switch between two GPUs in your system, i.e. activating GPU A and deactivating GPU B by a hardware switch (multiplexer). With Optimus, there is no such switch: The first (2D) GPU is always active, and the second (3D) gets additionally activated when needed.
The only operating system supporting this is currently Windows 7. As an Nvidia whitepaper states, the Windows Optimus driver uses certain features of Windows 7:
From relying on standard Microsoft APIs when communicating with the Intel IGP driver, to utilizing the PCI-Express bus to transfer the GPU’s output to the Intel IGP, there are no proprietary hoops to jump through. [...] Optimus technology leverages Windows 7′s ability to allow two independent graphics drivers to be active at the same time.
This could explain why there is no Optimus driver for Linux yet: it appears to require much more effort to write one, since an equivalent to the Windows API calls have to be implemented in addition to the Optimus code.
So, currently, it is not possible to use an Nvidia GPU under Linux when the system contains Optimus — the GPU is “hidden”. That’s ok, if you don’t need 3D. The problem: the GPU still consumes much power. I was very surprised when I discovered that the active Nvidia GPU, despite being idle, lowered the battery runtime up to 25%.
How could I see this? I discovered a kernel module written by Michal Kottman (sic) that enables me to deactivate the Nvidia GPU. And the wonder happens: suddenly, the battery runtime under Linux skyrockets from a maximum of 4 hours to a maximum of 5 1/2 hours. Well, this is an achievement.
Disclosure: All numbers in this post are subjective estimations. I didn’t exactly measure runtime or power consumption.