Radeon Driver Power Management Has Room For Improvement

Today on Phoronix are not only new benchmarks of the proprietary
Catalyst graphics driver compared to the open-source Radeon Linux driver alternative
when looking at the OpenGL frame-rates, but also metrics on a number of other
fronts. In this article is a graphics driver comparison when looking at the system
power consumption, GPU operating temperature, and CPU usage too. The results are
quite interesting and not commonly looked at on Phoronix or by users.

Now that the
Linux 2.6.38 kernel power regression has been figured out and there's the
USB-based AC power meter around, the intent of this article is to compare the
system power consumption for the open and closed-source ATI/AMD Radeon Linux drivers
for a variety of graphics cards. The graphics cards that ended up being used were
an ATI Radeon HD 2400PRO, ATI Radeon HD 4550, ATI Radeon HD 4870, and ATI Radeon
HD 5750.

Not only was the system power consumption measured in front of
the power supply, but also looked at was the GPU core temperature and CPU usage.
All of these sensors, including the AC power meter, were automatically polled
by the Phoronix Test Suite software
when running each test and on the graphs included in this article, the average
values are provided.

Tests in this article included the metrics when idling at the
desktop, running the OpenArena game, and then running the more demanding Nexuiz
game. Another article coming up in the future will also include similar information
during video playback and light desktop usage, but this article at least covers
both ends of the spectrum with idling and then OpenGL.

The Catalyst 11.4 driver (fglrx 8.84.60 / OpenGL 4.1.10665) was
tested as found in Ubuntu Natty while the open-source driver was the latest development
Git from the 24th of June, including the Linux 3.0 kernel, xf86-video-ati 6.14.99,
and Mesa 7.11-devel Gallium 0.4 (R600g driver). Ubuntu 11.04 (x86_64) was the
base operating system with Unity desktop, EXT4 file-system, GCC 4.5.2, and X.Org
Server 1.10.1.

The Catalyst driver was tested in its default configuration, which
enables PowerPlay (and on newer hardware, PowerTune) for dynamically adjusting
the clock frequencies and voltages based upon load. It is a seamless experience
to the end-user. Alternatively, via the aticonfig utility, the power-states can
be listed and they can be manually forced to other power states as well.

With the open-source Radeon driver, there is no power management
by default. The driver simply sets the hardware to run in its default mode at
its stock frequencies. The Radeon KMS driver though does support manually forcing
other power management modes. Writing "dynpm" to /sys/class/drm/card0/device/power_method
causes the Radeon DRM driver to work in its dynamic power management mode, which
is supposed to similarly adjust the power management dynamically. There are also
"profile" modes whereby writing profile to /sys/class/drm/card0/device/power_method
allows writing low, med, or high to /sys/class/drm/card0/device/power_profile.
The low, medium, and high power values correlate to their respective power-state
and cause the driver to always function in that power mode regardless of OpenGL
workload or other tasks.

See this
Phoronix news posting, among other Phoronix articles, for more information
on the open-source Radeon driver power management. It is not streamlined like
the Catalyst driver and its full PowerPlay support, but it has matured a bit over
the past year. When this support was first introduced there were issues with corruption,
blanking on clock changes, and other issues, but they are mostly worked out at
this point.