cpufreq-selectorはLinuxのCPU周波数制御をコントロールするユーティリティ。ノートPC必須のユーティリティなのですがあまり使い方がわかってなかったから個人的なメモ。
cpufreqというのはカーネルモジュールとして読み込まれるCPU周波数/電圧制御機能。ディストリビューションによってはデフォルトで読み込まれているかもしれません。cpufreq-selectorはその動作を制御、変更するためのユーティリティです。
cpufreq-selector のオプションは-cと-f と-g。-cはCPU指定、-fは周波数指定。-gは以下の指定。
- performance -- 最高のCPUクロックで動作
- powersave --最低のCPUクロックで動作
- ondemand -- 動的クロック(AMD64,Centrino等の機能を使う)
- userspace -- 動的クロック(cpuspeedデーモンなどで制御)
- conservative -- 動的クロック(ondemandと似ているがよりクロック変更頻度が低い)
最初はondemandかuserspaceで動作していて動的に速度が変わる設定。利用可能なgovernorは/sys/devices/system/cpu/cpu0/scaling_available_governorで確認できます。また同じディレクトリのscaling_cur_freqか/proc/cpuinfoで現在の周波数を確認できます。
Ubuntuでは普通に設定変更可能でしたがCentOSではモジュールをロードしておかないと変更できませんでした。また/etc/sysconfig/cpuspeedに設定ファイルがあるので、サーバ等でクロックを固定したい場合はそちらで設定するのがいいと思います。
/sbin/modprobe cpufreq_powersave
/usr/sbin/cpufreq-selector -g powersave
最近暑いのでノートでもサーバでもpowersaveを設定してみました。LinuxはUbuntu/CentOSで試して問題なく動作中。正直うち程度のサーバでは常時powersaveでも問題なさそうです。
ondemandの替わりにconservativeも悪くありません。使ってみた感じでは複数段の周波数切り替えをサポートするCPUの場合、中間の周波数の頻度が増える感じです。
ちなみにこのサーバはAthlon64でpowersave設定だとクロックが1Ghz程度に落ちてピーク時の約半分固定になるはずです。使ってみると少し遅くなった感じで、MovableTypeのリビルドをしてみるとondemand: 30秒, powersave: 45秒となりました。
ノートPCだと多少セキュリティリスクは増えますがユーザで変更しやすいようにchmod +s /usr/sbin/cpufreq-selectorとしておいてもいいかもしれません。
なかなか便利ですが、私的にはさらに省電力化したいのでWindowsのCrystalCPUIDのように電圧の変更が出来たらうれしいです。 (カーネルパッチを当てるといけるようですが)