linuxにはcpuspeedというものがあり、centosには標準で入っているので、chkconfigでonにしてあげれば動きます(/sbin/chkconfig cpuspeed on)
これは、CPU負荷が低い時には、CPUスピード(クロック数 Hz)を低くして、アイドル状態の消費電力を低くしてくれます。
またCPU負荷が高くなったときでも、3GHzのCPUで、2GHzまでしか使わないように抑制して負荷が高いときの電力消費も抑えることができます。
この設定ファイルはcentosの場合下記の場所にあります。
/etc/sysconfig/cpuspeed
このファイルの中のMAX_SPEEDやMIN_SPEEDに値を入れれば、その値のクロック数で動くようになります。
ただし、CPUに合った値を指定しないとうまく動かないので、
cat //sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
として出てきた数値の中から選択する必要があります。
うちのAMD 4850eでは
2500000 2400000 2200000 2000000 1800000 1000000
と出てきたので、1GHzから2.5GHzまで指定可能となります。
これで/etc/sysconfig/cpuspeedに下記の箇所を書き換えれば
MAX_SPEED=2000000
負荷が上がっても2GHzまでしかCPUを上げません。MIN_SPEEDの方はデフォルトで最低値(うちの環境なら1000000)になっているので特に値は変えてません。
自宅のファイルサーバは常時稼動ですが、カーネルコンパイルとかそいう時のみに負荷がMAXまで上がります。でも別に数分ぐらいの差であればコンパイルも待ってて問題ないので、省電力の方に倒して最大2GHzとしてます。
それで、負荷が高い場合と低い場合でCPUの状態を見ると、
負荷が低い場合 cat /proc/cpuinfo | grep Hz cpu MHz : 1000.000 cpu MHz : 1000.000
負荷が高い場合 cat /proc/cpuinfo | grep Hz cpu MHz : 2000.000 cpu MHz : 2000.000
見事、最大2GHzにおさえられています。