[memo] サーバのCPU動作周波数を下げる

はてなブックマーク - [memo] サーバのCPU動作周波数を下げる

CPUに関する情報は/sys/devices/system/cpu/cpu0/cpufreq/で次のファイルをcatする。まぁファイル名のまんまだが。

  • affected_cpus : 影響する他のCPU。俺の場合はデュアルコアなので当然0と1
  • cpuinfo_cur_freq : 現在の動作周波数
  • cpuinfo_max_freq : 最大周波数。AMD64X2 3800+の場合は2000000
  • cpuinfo_min_freq : 最低周波数。AMD64X2 3800+の場合は1000000
  • scaling_available_freqyencies : 設定可能な周波数。AMD64X2 3800+の場合は2000000/1800000/1000000しかない。intelだともっと多いらしい
  • scaling_available_governors : 設定可能な動作モード。Gentooのデフォルトではperformanceのみ
  • scaling_cur_freq : 現在の動作周波数
  • scaling_driver : 周波数コントロールのための仕組みの名前
  • scaling_governor : 動作モード。scaling_available_governorsのどれか
  • scaling_max_freq : cpuinfo_max_freqと何が違うのかわからん
  • scaling_min_freq : cpuinfo_min_freqと何が違うのかわからん

普段は高周波数で動いてくれなくていいというか、その方が電気代が安くなって地球に優しいためいい感じ。そんなわけで以下の手順を踏んで周波数を下げてみた。

(今の周波数を確認)

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq

(どんなdriverがあるか探す)

find /lib/modules/2.6.17-gentoo-r7/ -name '*.ko'|grep cpu

(明らかにそれっぽい奴を見つけたので読み込む)

sudo modprobe cpufreq_powersave

(動作モードが増えたことを確認)

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors

(動作モードを上で確認したやつに変更)

su - ; echo "powersave" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor 
exit

(周波数が下がったことを確認)

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq

これだと確かに周波数は下がるが下がりっぱなしだ。Gentooだと最新を追っかけたい人はコンパイルをしょっちゅうするので、そういうときにいちいち戻すのが面倒だ。そこでcpufreq_ondeamndというdriverを使うと、なんかいい感じに自動化できそうな予感がする。が、もうちょっと調べて、しっかり設定しないと下がりっぱなしとか上がりっぱなしになりそうな予感がするのでとりあえずスルー。


comments powered by Disqus