CPU負荷によってCPUスピードを調整して省電力化

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におさえられています。