2013年11月24日日曜日

PowerTOPでラップトップのバッテリー持ちを良くしたい! その2

前回はPowerTOPでおすすめされたスクリプトを起動時に実行するようにしました。でも、私の場合はこれでは十分ではありませんでした。


何が十分じゃなかったかって言うと、一度でもACアダプタを挿すと、一部のパラメータが元に戻ってしまうことです。

こにゃこにゃ調べてみたんですけど、丁度いい資料がありましたよ。

Gentoo Linux ドキュメント -- 電力管理ガイド

これを読むとACPIイベント(蓋を閉じたり、電源ボタンを押したり)をacpidがキャッチするたびに何らかの動作を行っているみたいですね。何のACPIイベントで動作を行うかは/etc/acpi/events/に、実際に行われる動作は/etc/acpi/に書かれているみたいです。

一部のパラメータが元に戻ってしまう現象も、ACアダプタを挿す、というACPIイベントをacpidがキャッチして、何らかの動作をしているんでしょう。

問題はまたACアダプタを抜いた時に、パラメータがACアダプタを挿す前の状態に戻ってくれないところなので、抜いた時に再度スクリプトを実行してくれれば良いわけです。それでは、私の場合に沿って書いていきます。

私の場合、/sys/class/scsi_host/host*/link_power_management_policyの値が"min_power"になるようにしたのに、"max_performance"になっていました。他には変化はありませんでした。(host*はhost0、host1、などのことを指しています)

また値が"min_power"になるよう/etc/acpi/にスクリプトを書きました。

/etc/acpi/powertop.sh

#!/bin/sh

echo 'min_power' > '/sys/class/scsi_host/host0/link_power_management_policy'
echo 'min_power' > '/sys/class/scsi_host/host1/link_power_management_policy'
echo 'min_power' > '/sys/class/scsi_host/host2/link_power_management_policy
echo 'min_power' > '/sys/class/scsi_host/host3/link_power_management_policy'
echo 'min_power' > '/sys/class/scsi_host/host4/link_power_management_policy'
echo 'min_power' > '/sys/class/scsi_host/host5/link_power_management_policy'

あと、この/etc/acpi/powertop.shがACアダプタを抜いた時に実行されるように、/etc/acpi/events/に書きました。

/etc/acpi/events/powertop

event=battery.*
action=/etc/acpi/powertop.sh

あとはacpidを再起動すると反映されているはずです。

# /etc/init.d/acpid restart

ACアダプタを挿して、抜いてから、ちゃんと動いてくれているかpowertopコマンドで確かめてみて下さい。律儀に切り替わってくれているはずです。

もうひとつ付け加えておくと、VM writeback timeoutだけは、SSDを積んでいる人はBadのままの方が良いと思います。/proc/sys/vm/dirty_writeback_centisecsの値が1500より大きかったら、そのままで良いと思います。


肝心の駆動時間はどうなったか、ですか?1時間くらい伸びたかなぁ。では。