I'd struggled with this problem during two weeks. I'm using desktop and ati 5770.

Opensource 'radeon' driver has some power management feature via adjusting gpu clock, but it didn't works very well.

Here is good article about radeon and fglrx power management.

The Current State Of Radeon Power Management

This is my alias for opensource radeon power management.

# radeon gpu power management
alias profilepm='sudo bash -c "echo profile > /sys/class/drm/card0/device/power_method"'
alias auto='profilepm && sudo bash -c "echo auto > /sys/class/drm/card0/device/power_profile"'
alias low='profilepm && sudo bash -c "echo low > /sys/class/drm/card0/device/power_profile"'
alias mid='profilepm && sudo bash -c "echo mid > /sys/class/drm/card0/device/power_profile"'
alias high='profilepm && sudo bash -c "echo high > /sys/class/drm/card0/device/power_profile"'
alias dynpm='sudo bash -c "echo dynpm > /sys/class/drm/card0/device/power_method"'
alias gpu="sudo cat /sys/kernel/debug/dri/0/radeon_pm_info /sys/class/drm/card0/device/power_method"

First select default method.

  • profilepm for manual clock setting
  • dynpm for ondemand clock setting. But it just change between mid and high. Never going to low. At least to me.

If you select profilepm, select clock manually.

  • low
  • mid
  • high
  • auto

I never tried auto. But sounds like good for laptop.

Quote from X.org radeon wiki article,

"auto" selects between "mid" and "high" power states based on the whether the system is on battery power or not. The "low" power state are selected when the monitors are in the dpms off state.

Use 'gpu' command show current method and clock.

All about these settings are from here,

KMS Power Management Options

I used to 'low' in 11.10 but little bit sluggish when many firefox tabs and windows open. After jump to 12.04, I'm using unity and 'fglrx-updates' driver. It works quite well.

If you good with these settings, save them for reboot.

Install sysfsutils package then add rule to /etc/sysfs.conf file.

class/drm/card0/device/power_method = (profile or dynpm)
class/drm/card0/device/power_profile = (select between auto, low, mid, high if u choose 'profile' method)

You can remove second line If u select 'dynpm'