« Bootchartを用いて起動スクリプトの影響を評価する | トップページ | Arch Linux with E17(9/7追記) »

2011/08/30

Jupiterのスクリプトを整理してより省電力化を図ってみる

(10/31 追記)最近Bodhi使っていなかったのですが、Bodhiでも現在の最新Intelドライバだとxbacklightは使えないみたいです。なので、acpiを使う方法に書き換えました。

以前にGRUB2の変更とConky、Jupiter *11/8/8追記でJupiterのインストールについて書いて、更にlid close → suspend が正常になった、Bodhiでの電源管理、ConkyでBodhiの電源管理はダメダメなので、gnome-power-managerを使う方法について書きました。

で、これで大体は良かったのですが、/var/log/pm-powersave.log を見てみるとエラーが何個か出ています。出ているエラー自体はしょうがないというか無害なものですが、Jupiterのスクリプトを見直すことでより省電力につながる可能性も出て来たので、整理してみました。
ついでにgnome-power-managerは不要になってしまったので、サヨナラすることにしました。

そもそもgnome-power-managerを自分が使用していた理由は、

  1. AC有効時とバッテリ動作時で画面輝度を自動的に変えてくれる
  2. 画面をスリープするといった動作もAC有効時とバッテリ動作時で異なる設定が出来る

ということでした。これらをあくまで自動的に変えてくれるということがポイントな訳ですね。逆に言えばこれらが自動的に切り替わればgnome-power-managerなんて要りません。バッテリ管理だけなら、Bodhiにはバッテリモジュールがあるのですから。

で、これらを行うため&更なる省電力化のためにJupiterのスクリプトを使うことにします。
とりあえずスクリプトを2つ開いて変更です。

sudo cp /usr/lib/jupiter/kernel/power /usr/lib/jupiter/kernel/power_old
sudo cp /usr/lib/jupiter/kernel/battery /usr/lib/jupiter/kernel/battery_old
gksu leafpad /usr/lib/jupiter/kernel/power &
gksu leafpad /usr/lib/jupiter/kernel/battery &

まずはAC電源が有効になった時に実行されるpowerスクリプトからです。

echo 1 > /proc/sys/kernel/nmi_watchdog

はコメントアウトします。EeePC1002HAだと、nmi_watchdogは使えないです。エラーが出ても気にしないなら、コメントアウトの必要はないですが。

for fdevice in /sys/bus/{pci,spi,i2c}/devices/*; do

をコメントアウトし、以下の2行を次のように変更します。

for fdevice in /sys/bus/pci/devices/*; do
  echo on > $fdevice/power/control
done
for fdevice in /sys/bus/i2c/devices/*; do
  echo on > $fdevice/power/control
done

次の3行は以下のようにコメントアウトします。EeePCはSATA1.5なインターフェイスしか持っていないので、SATA2.0以上を必要とする、SATAな省電力機能は使えません。

#for sdevice in /sys/class/scsi_host/host*/link_power_management_policy; do
#  echo max_performance > $sdevice
#done

そしてファイルの最後に以下の行を加えます。

# for Intel HD Audio
echo N > /sys/module/snd_hda_intel/parameters/power_save_controller
# LCD backlight and DMPS
DISPLAY=:0.0
xbacklight -display $DISPLAY -set 90
echo 13 > /sys/class/backlight/eeepc/brightness
xset -display $DISPLAY dpms 0 0 1800

コマンドの意味ですが、xbacklight行はディスプレイ輝度を90%にしています。100%にしたければ、90を100に変えれば良いです。echo行は、ディスプレイ輝度をフルスケール15の約90%の13に設定しています。xset行は、dpmsというvesa規格の省電力機能を動作させるまでの時間を設定しています。
0 0 1800 は、順にスタンバイ、サスペンド、オフの時間(単位:秒)です。
自分は画面消去さえしてくれれば良いので、オフの時間だけを設定しています。1800だと30分ですね。


さて、次は本命のbatteryスクリプトです。まず、以下の2行は意味がないのでコメントアウトします。

echo 1 > /sys/devices/system/cpu/sched_mc_power_savings
echo 0 > /proc/sys/kernel/nmi_watchdog

次にpowerの時と同様に

for fdevice in /sys/bus/{pci,spi,i2c}/devices/*; do

をコメントアウトし、以下の2行を次のように変更します。

for fdevice in /sys/bus/pci/devices/*/power/control; do
  echo auto > $fdevice
done
for fdevice in /sys/bus/i2c/devices/*/power/control; do
  echo auto > $fdevice
done

powerの時と同様に

for sdevice in /sys/class/scsi_host/host*/link_power_management_policy; do
  echo min_power > $sdevice
done

はコメントアウトして下さい。次に以下の行をを末尾に加えます。

for usb in /sys/bus/usb/devices/*/power/level; do
  echo auto > $usb;
done
# for Intel HD Audio
echo Y > /sys/module/snd_hda_intel/parameters/power_save_controller
# LCD backlight and DMPS
DISPLAY=:0.0
xbacklight -display $DISPLAY -set 50
echo 7 > /sys/class/backlight/eeepc/brightness
xset -display $DISPLAY dpms 0 0 300

見てのとおり、バッテリ時のディスプレイ輝度を約50%にして、ブラックアウトまでの時間を300秒(5分)にしています。この辺りは好みですね。
USBについて省電力スクリプトを追加していますが、USB1.1なデバイスを繋がないこと一番省電力になるという話もあります。USB1.1なデバイスを絶滅出来る人はバッテリライフ的には幸せになれるかもです。ちなみにbluetoothはUSB1.1接続みたいですよ。自分は使っていませんが。

« Bootchartを用いて起動スクリプトの影響を評価する | トップページ | Arch Linux with E17(9/7追記) »

Bodhi Linux」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/28800/52605573

この記事へのトラックバック一覧です: Jupiterのスクリプトを整理してより省電力化を図ってみる:

« Bootchartを用いて起動スクリプトの影響を評価する | トップページ | Arch Linux with E17(9/7追記) »