ライブCDの部屋さんのところのeeeUbuntuを使わせていただいていて、デバイス周りなどはほとんど動作しており快適なのですが、特にバッテリー動作時のCPUクロックの変動やwritebackの調整方法がよくわからなかったので調べたメモ。
CPUクロック制御 -- cpufreqd
/etc/cpufreqd.confに詳細な設定があります。デフォルトの設定では少し納得いかない感じなので調整。まず、具体的にEeePCで可能なクロック設定は800Mhz、1.07Mhz、1.33Ghz、1.60Ghz、すなわち50%、66.6%、83.3%、100%の4段階。
次に具体的に欲しい性能を考えてみます。cpufreqd.confを見ればわかりますが、プロファイルとして周波数の最低値、最大値の%とポリシーを定義しておき、バッテリー残量とAC状態で切り替えるという設定です。
デフォルトの設定は0%や20%とか80%なんていうのを含む設定となっており、EeePC 901ではあまりいい動きはしてくれません。そこで適当に以下のように定義し直しすることに。
- On Demand High -- 50 - 100 % ondemand
- On Demand Mid -- 50 - 84 % ondemand
- On Demand Low -- 50 - 64 % ondemand
- Conservative High -- 50 - 100 % conservative
- Conservative Mid -- 50 - 84 % conservative
- Conservative Low -- 50 - 64 % conservative
- AC/Batt 70 -100% なら "On Demand High"
- Batt 30 -70% なら "On Demand Mid"
- Batt -30% なら "Conservative Low"
writebackの制御とか -- pm-utils
ACアダプタかバッテリー動作かでダーティバッファの書き出し頻度やメモリ使用量を切り替えて設定してくれるのですが、バッテリー動作時は非常に安全な設定で、データロスを最小にするようになっているようです。具体的には0.3秒周期でwritebackとデータのexpireが発生するようになっています。これでは特にSSDを使用するEeePC等では性能も出ませんし、フラッシュの寿命も気になります。
設定値がスクリプトにハードコードされているので/usr/lib/pm-utils/power.d/laptop-toolsを直接変更。42行目以降からがバッテリー動作、49行目以降がAC動作時の設定値。
SSDなEeePCではガバッと大きな値がいいと思います。私の設定では以下のような感じ。書き込み周期20分、Expireは1時間、メモリは60%まで。
DISK_IDLE_SECS=2
DIRTY_WRITEBACK=120000
DIRTY_EXPIRE=3600000
DIRTY_RATIO=60
DIRTY_BACKGROUND_RATIO=10
書き込み周期を長くとると、メモリの許す限りバッファ出来ていいのですが、バッテリーが少なくなると危険なのでご注意。時間だけではなくアイドル時に書き出すようにするメモを書いてみましたのでそちらもご覧下さいませ。
pm-utilsのsmt対応
対応というほどの修正でもないのですが、cpuの省電力向けスケジューリングを有効にするための設定。mc, smpというのは既にあるのですが、eeepcのatomではsmtとなっているようなのでこれを追加。どうやら動的にコア数を変化させる機能なようです。
/usr/lib/pm-utils/power.d/sched-powersaveに以下のような修正を追加
--- sched-powersave.orig 2008-06-03 19:31:08.000000000 +0900
+++ sched-powersave 2008-10-13 04:31:49.000000000 +0900
@@ -2,6 +2,7 @@
path_mc="/sys/devices/system/cpu/sched_mc_power_savings"
path_smp="/sys/devices/system/cpu/sched_smp_power_savings"
+path_smt="/sys/devices/system/cpu/sched_smt_power_savings"
val=0
case "$1" in
@@ -27,5 +28,8 @@
if [ -w "$path_smp" ] ; then
echo $val > $path_smp
fi
+if [ -w "$path_smt" ] ; then
+ echo $val > $path_smt
+fi
exit 0
以上で個人的にはまあまああいい感じな動作に。
外ではWeb閲覧、メール、テキスト編集、表計算等の軽作業が主なので、cpufreqはもっと遅くしてもいいかも。
少し気になるのは複数の電源管理ソフトが別々に動作していることで、例えばsched_smtの切り替えなんかはどっちかといえばcpufreqdでやってくれた方がありがたい設定だし、バッテリー容量によってwritebackのポリシー切り替えなんかも同時に行いたいところ。設定ファイルが複数になってしまうのもちょっと手間です。
laptop-modeを使うとHDD周りをもっと柔軟にいじれそうなのですが、今回は動いていないようなのでパス。
コメント (2)
手動でcpu周波数を設定するのに便利なツールがあります。
http://eeepc360.web.fc2.com/
atom用に%を調整してあります。
スクリプトを書き変えれば容易にmid設定を追加できます。
投稿者: samy | 2008年10月13日 23:47
日時: 2008年10月13日 23:47
samyさん、こんにちは。
情報ありがとうございます。ご紹介のページは知っていましたがチラ読みでした。
GUIのcpufreqsetいいですね。早速入れてみます。
投稿者: yamap | 2008年10月14日 10:43
日時: 2008年10月14日 10:43