The proprietary graphics driver
ATI Catalyst Linux (also known as
fglrx) supports GPU frequency scaling (
ATI Overdrive). You can alter the frequencies via
aticonfig command, e.g:
aticonfig --help or visit this page for the complete documentation.
Also, note that
there is no guarantee that the attempted clock values will succeed
even if they lay inside the theoretical range.
Another tool that works with the proprietary driver is AMDOverdriveCtrl:
The proprietary graphics driver has limited1 support for GPU frequency scaling via
Coolbits options. Add
Option "CoolBits" "1"
or, for Fermi and newer cards (see this article)
Option "CoolBits" "8"
to the nVidia device section in
xorg.conf (detailed description for each option in the oficial nVidia driver documentation). This practically "unlocks" the
Clock Frequencies page in
NVIDIA X Server Settings where you can enable overclocking/downclocking:
Alternatively, you can use
nvidia-settings in terminal, e.g.
nvidia-settings --assign "[gpu:0]/GPUOverclockingState=1" --assign "[gpu:0]/GPU2DClockFreqs=350,550" --assign="[gpu:0]/GPU3DClockFreqs=500,800"
to enable frequency scaling and set core and memory frequencies for 2D & 3D profiles. Or
nvidia-settings --assign "[gpu:0]/GPUOverclockingState=0"
to revert to default frequencies. Run
nvidia-settings --query all to get a list of all the attributes (like this one here).
Another tool that works with the official driver is nvclock:
1. On mobile GPUs, limited clock manipulation support is available when "1" is set in the "Coolbits" option value: clocks can be lowered relative to the default settings, but overclocking is not supported due to the thermal constraints of notebook designs.
Those who have an Intel Sandybridge/Ivybridge GPU and the right hardware should be able to manipulate clock speeds via
/sys/class/drm/card0/gt_*_freq_mhz files. Details on Daniel Vetter's page.