There's been many individuals asking how the work is going in tracking down the major Linux kernel power regression I brought to light late last month (actually, there's at least two power regressions in the kernel). Not much progress has been made since then as I've been out of the office (and country) so I've been preoccupied with other matters, but I do happen to have another power test today to satisfy other reader requests.
While this isn't the cause of either of the two major Linux kernel power regressions (it's not a CPU or GPU specific regression but has impacted a wide range of hardware occurring on at least hundreds of systems), in this article is a comparison of the NVIDIA and Nouveau drivers in how much power is consumed.
This testing is quite simple while I'm away, but it's a straight-forward comparison of a NVIDIA Quadro FX 880M 1GB graphics processor on a Lenovo ThinkPad W410 notebook with an Intel Core i7 Q720 CPU, 4GB of system memory, and a 160GB Intel SSD. The base operating system was Ubuntu 10.10 (x86_64) with the Linux 2.6.39 development kernel, GNOME 2.32 desktop, X.Org Server 1.9.0, NVIDIA 270.41.06 display driver, GCC 4.4.5, xf86-video-nouveau Git as of 8 May, Mesa 7.11-devel / Gallium 0.4 Git master as of 8 May, and on an EXT4 file-system.
With the proprietary NVIDIA 270.41.06 controlling the Quadro FX 880M it was tested with its default PowerMizer option of "adaptive" clocking whereby the GPU clock speeds are dynamically adjusted based upon load. The other option is to run the driver for "maximum performance" where the GPU is continuously operating in its highest performance state regardless of load.
The three performance levels for the NVIDIA Quadro FX 880M included:
- 135 MHz Graphics Clock / 135 MHz Memory Clock / 270 MHz Processor Clock
- 405 MHz Graphics Clock / 324 MHz Memory Clock / 810 MHz Processor Clock
- 550 MHz Graphics Clock / 790 MHz Memory Clock / 1210 MHz Processor Clock
The Nouveau driver tested (Linux 2.6.39 DRM) successfully detected the three performance levels. The actual level of Nouveau power management support varies depending upon the GPU family, etc. For more information about the current state of Nouveau's power management, see this Wiki page.
When testing the NVIDIA binary driver in its default mode (with adaptive PowerMizer), in the maximum performance mode (no clock switching), and then the Nouveau driver in its default configuration, the battery power consumption was monitored along with the real-time GPU core frequency and GPU temperature. All of this was done automatically by the Phoronix Test Suite. The workloads included idling, video playback, and OpenGL gaming.