First, check whether you already have cpu frequency scaling enabled by running cpufreq-info:

`

cpufreq-info

cpufrequtils 004: cpufreq-info (C) Dominik Brodowski 2004-2006
Report errors and bugs to cpufreq@lists.linux.org.uk, please.
analyzing CPU 0:
driver: acpi-cpufreq
CPUs which need to switch frequency at the same time: 0
hardware limits: 600 MHz - 1.70 GHz
available frequency steps: 1.70 GHz, 1.40 GHz, 1.20 GHz, 1000 MHz, 800 MHz, 600 MHz
available cpufreq governors: conservative, userspace, powersave, ondemand, performance
current policy: frequency should be within 600 MHz and 1.70 GHz.
The governor "ondemand" may decide which speed to use
within this range.
current CPU frequency is 600 MHz (asserted by call to hardware).
cpufreq stats: 1.70 GHz:4.56%, 1.40 GHz:0.18%, 1.20 GHz:0.00%, 1000 MHz:0.21%, 800 MHz:0.18%, 600 MHz:94.86% (10)
`

If you do not have an output like the one above, you need to configure your cpufreq-stuff. If you do not have cpufreq-info installed, run

apt-get install cpufrequtils sysfsutils

Afterwards, you have to load your cpu scaling manager. I usually use acpi_cpufreq:

modprobe acpi_cpufreq

Afterwards, you need to decided the policy manager. See this previous entry for more information.

You can use cpufreq_ondemand for example:

modprobe cpufreq_ondemand

Finally, you have to enable the frequency scaling by enabling the governor:

echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

To make things permanent, you can run:

echo acpi_cpufreq >> /etc/modules
echo cpufreq_ondemand >> /etc/modules
echo "devices/system/cpu/cpu0/cpufreq/scaling_governor = ondemand" >> /etc/sysfs