お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2008-09-30 18:33:07

hippocampus
メンバ
登録日: 2007-07-08

ノートPCバッテリ駆動時間強化のTips

こんにちは。おかげさまで毎日Ubuntuを有効に使っております。ありがとうございます。

ところで、ノートPCユーザのみなさんは、Ubuntuをバッテリーで動かしたとき、どのくらいの時間駆動できていますか?
私はもっぱらノートPCでUbuntuを使っているのせいか、バッテリ駆動時間にかなり関心があります。
とはいえLinuxに詳しいわけではないので、いろいろとネット上の情報を集めて、どうにかバッテリの駆動時間を延ばせないかと試してみています。
ご存じの方も多いとは思いますが、米intelがLessWatts.orgというWebサイトを開いていて、そこに非常にためになるTipsがわかりやすくかかれており、それを実践するためにpowertopというユーティリティを公開しています。Ubuntuでも簡単に導入できます。

コード:

sudo apt-get install powertop

いろいろと省電力のための提案がされて、それをワンキーで即座にシステムに反映させることができるうえ、ACPI経由でその時点でのシステムの消費電力を計ることができるため、ノートPCユーザにはとても有用なツールです。おまけにパームレストが冷え、ファンも回りにくくなるという効果もあり、一石二鳥ですね。

また、使っていないモジュールをこまめに外したり、無線LANやオーディオなどでは省電力を有効にすることで、消費電力を抑えることができます。それらを一つずつターミナルなどから指示してもいいのですが、結構面倒です。私は、簡単なシェルスクリプト(というかバッチファイル)を作って、一括で実行するようにしています。
以下は、PanasonicのLet’sNote R4のための自作省電力スクリプトです。

コード:

#!/bin/sh
# for Panasonic CF-R4

# display brightness
sudo sh -c "echo 4 > /proc/acpi/pcc/brightness"

# enabling usb-autosuspend
echo 'USBのオートサスペンドを有効にしています'
sudo sh -c "echo 1 > /sys/bus/usb/devices/usb1/power/autosuspend"
sudo sh -c "echo 1 > /sys/bus/usb/devices/usb2/power/autosuspend"

# enabling AC'97 power-save
echo 'AC97の省電力を有効にしています'
sudo sh -c "echo 1 > /sys/module/snd_ac97_codec/parameters/power_save"
sudo sh -c "echo 1 > /dev/dsp"

# mixer mute
echo 'MixerをMUTEにしています'
sudo sh -c "echo 1 > /proc/acpi/pcc/mute"

# WiFi power control
echo '無線LANの省電力機能を有効にしています'
sudo iwpriv eth1 set_power 5

#もし 無線LANを停止するのであれば、以下を実行する
#sudo sh -c "echo 1 > /sys/bus/pci/devices/0000:06:04.0/rf_kill"

# Laptop mode
echo 'LAPTOP MODEを有効にしています'
sudo sh -c "echo 5 > /proc/sys/vm/laptop_mode"
sudo sh -c "echo 0 > /proc/sys/kernel/nmi_watchdog"
sudo sh -c "echo conservative > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor"
# powertopの提案はondemandなのですが私の使い方ではconsavativeの方がなんとなく効率がいいみたいです
# sudo sh -c "echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor"

# powersave for MultiCore CPU 
#sudo sh -c "echo 1 > /sys/devices/system/cpu/sched_mc_power_savings"

# HDD Write-Back 1500sec
echo 'HDDの書き込み遅延を1500秒に延長しています'
sudo sh -c "echo 1500 > /proc/sys/vm/dirty_writeback_centisecs"

# Wake-on-Lan disable
echo '有線LANのWAKEUP-ON-LANを無効にしています'
sudo ethtool -s eth0 wol d

芸のないスクリプトですみません。
あとは、バッテリ駆動時に不要と思われるモジュールを外したり、サービスを停止したりすると良いです。
私はバッテリで駆動するときには印刷はしないし、PCカードも使わないことが多いので、それらを外しています。

コード:

#不要なサービスを止める
sudo /etc/init.d/cupsys stop
#PCMCIAカード 有線LANのモジュールを外す
# PCMCIAカード
sudo modprobe -r pcmcia
sudo modprobe -r yenta_socket
sudo modprobe -r rsrc_nonstatic
sudo modprobe -r pcmcia_core
# 有線LAN
sudo modprobe -r 8139too
sudo modprobe -r 8139cp
sudo modprobe -r mii

これで、powertop上では7〜9Wの消費電力に抑えることができています(無線LAN使用でWebブラウズ、文書打ち。イーモバイルのD01HW使用時は+1〜1.5W)。実際のバッテリの消費をみてみました。

コード:

測定時間    バッテリの残容量(mWh)    
開始        27970
25分後        24760
70分後        18490

だいたい7.7〜8.1W/hrで、powertopの測定値とそう誤差はないようです。
ちなみにバッテリの残容量はcat /proc/acpi/battery/BAT*/stateでわかります。

ちなみに、Javaアプリを使ったり、Webの動画を見たりすると消費電力は跳ね上がりますね。特にFlashプレイヤーはあまり省電力を意識してないようで、ばりばり電力を消費します。

よろしければ、是非みなさんのノートPCの稼働時間や、バッテリ駆動時間延長のための工夫を教えてください。

以下一応テンプレ:)

[機種]:Panasonic CF-R4
[CPU/Memory]:超低電圧版PentiumM 1.20GHz/768MB
[Ubuntuバージョン]:Xubuntu 8.04
[駆動時間]:実測4.5〜5時間(ecoモードでバッテリ充電容量は80%に制限中)
[条件]:液晶輝度下から4番目 無線LAN有効
[操作]:Webブラウズ mousepadで文章打ち たまにOOoで書類作成
[工夫]:powertopで指示されたことを有効にし、HPETを有効に、要らないモジュールを外してます

オフライン

 

#2 2008-10-07 03:36:16

hippocampus
メンバ
登録日: 2007-07-08

Re: ノートPCバッテリ駆動時間強化のTips

個人的に非常に興味深い実験結果が出ましたので、報告させていただきます。

最近VAIO VGN-UX50を入手し、Xubuntu8.04.1を導入しました。基本的にはさくっと入り、問題なく使えていたのですが、どうも非常にバッテリーの持ちが悪い。
無線LANや、手持ちのイーモバイルのD01HWでネット接続してWebを見ていると、上述したような省電力対策をして、ぎりぎり1時間もつかどうかってところです。
これはおかしい。そこで実験してみました。バッテリの残容量は/proc/acpi/battery/*/stateを見てます。
ちなみに、消費電力を抑えるスクリプトは以下のようなもの。

コード:

#!/bin/sh
# enabling usb-autosuspend
sudo sh -c "echo 1 > /sys/bus/usb/devices/usb1/power/autosuspend"

# enabling HDA_intel audio power-suspend
sudo sh -c "echo 10 > /sys/module/snd_hda_intel/parameters/power_save"
sudo sh -c "echo 1 > /dev/dsp"

# WiFi power saving
sudo sh -c "echo 5 > /sys/bus/pci/drivers/iwl3945/0000\:02\:00.0/power_level"
# BT off
sudo /etc/init.d/bluetooth stop
sudo hciconfig hci0 down
sudo rmmod hci_usb

# enabling Laptop mode
sudo sh -c "echo 5 > /proc/sys/vm/laptop_mode"
sudo sh -c "echo 0 > /proc/sys/kernel/nmi_watchdog"
sudo sh -c "echo conservative > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor"
sudo sh -c "echo 1 > /sys/class/backlight/sony/brightness"

# Write-Back configure to late-write-back(500sec)
sudo sh -c "echo 1500 > /proc/sys/vm/dirty_writeback_centisecs"

sudo ifconfig eth0 down
sudo modprobe -r sky2
sudo modprobe -r ohci1394
sudo modprobe -r sbp2
sudo modprobe -r ieee1394
sudo modprobe -r pcmcia
sudo modprobe -r yenta_socket
sudo modprobe -r rsrc_nonstatic
sudo modprobe -r pcmcia_core 

sudo /etc/init.d/cupsys stop
sudo /etc/init.d/ssh stop

実験および結果:

パターンA:無線LANオフ/USBには何も繋がない
(((16 160 - 14 950) / (12 + (22 / 60))) * 60) / 1 000 = 5.87061995
12分22秒でバッテリ容量が16160mAhから14950mAhに減少。
つまり、消費電力は約5.87W/h。

パターンB:無線LANオフ/USBにD01HWを接続して通信開始。
(((14 610 - 11 970) / (7 + (32 / 60))) * 60) / 1 000 = 21.0265487
7分32秒でバッテリ容量が14610mAhから11970mAhに減少。
つまり、消費電力は一気に跳ね上がり約21.03W/h。

パターンC:無線LANオフ/USBにD01HWを接続したままで、通信切断。
(((11 710 - 9 920) / (5 + (16 / 60))) * 60) / 1 000 = 20.3924051
5分16秒でバッテリ容量が11710mAhから9920mAhに減少。
通信はしてないにも関わらず消費電力はやはり高く約20.39W/h。

パターンD:無線LANオフ/USBからD01HWを外す(接続機器としてはパターンAと同じ状態)
(((6 100 - 3 750) / (6 + (43 / 60))) * 60) / 1 000 = 20.9925558
6分43秒でバッテリ容量が6100mAhから3750mAhに減少。
意外なことに、パターンAと同じ状態なのに約20.99W/hの消費。

考察:

こうしてみると、以下の仮説が浮かび上がる。
1. パターンAとBを比較すると、USBに接続された機器が消費する消費電力以上にバッテリ容量が減る
  →USBが接続された時点で、消費電力を抑える機構が無効になっていて、USB以外の部分での消費電力が上がる?
   USBの管理をするために、チップセットが休みなく活動してしまう?

2. パターンAとDを比較すると、全く同じ状況にも関わらず一旦USBが使われると消費電力が増大したままである
  →一旦USBが使われると、それを抜いても、それ以降は仮説1.で増大したUSB以外の部分の活性化?は戻らない

そこでさらに追加で実験。

追加実験:

パターンE:パターンDのまま、省電力用スクリプトを再度実行。
(((1 750 - 980) / (9 + (12 / 60))) * 60) / 1 000 = 5.02173913
9分12秒でバッテリ容量が1750mAhから980mAhに減少。
消費電力が5.02W/hに。

ほぼパターンAと同じ消費電力に戻った。
ということはもしかして、USBを挿した時点で省電力に関する設定のどこかがリセットされ、無効になるのでは?

そこで、ちょっと充電してもうひとつ追加実験。
パターンF:パターンEのまま、D01HWを接続し通信開始(パターンBと同じ)。その後、省電力用スクリプトを再度実行。
(((4 240 - 4 240) / (7 + (40 / 60))) * 60) / 1 000 = 0
・・・。
・・・あれれ?/proc/acpi/battery/*/stateで取得できるはずのバッテリ容量に変化がなくなってしまいました。
いくらなんでも、全く消費してないわけがないので、どっかがおかしいのでしょう。
USB周りと電源の管理は、ちょっと不具合がありそうな印象があります。

というわけで、とりあえずの実験と結果は以上です。
もし、この実験や結果について、なにかアドバイスがあれば、ぜひお願いします。現象は把握したのですが、linuxの知識は初心者なので・・・。よろしくお願いします。

最後の編集者: hippocampus (2008-10-09 10:42:01)

オフライン

 

#3 2008-10-09 10:47:12

hippocampus
メンバ
登録日: 2007-07-08

Re: ノートPCバッテリ駆動時間強化のTips

どうもです。

実はあれから、Windowsでも同様の調査をしてみました。
D01HWでインターネットに接続し時間を計ったところ、バッテリのフル充電から1時間程度で4%以下になりました。
つまり、18W/h程度の消費電力であり、Ubuntuの方が若干消費電力が大きいようものの、そんなに大きな差があるとはいえない結果となりました。
つまり、D01HWでのネット接続自体が、VAIO VGN-UX50には厳しいということなんですね。
ちなみに、WindowsではDOSプロンプトでACPIの情報を拾う方法がわからなくて、Ybinfoというアプリケーションを用いました。

それにしても、パターンAとパターンEの差と、パターンFでバッテリの充電容量が取得できなくなったのが気になります。
引き続き、アドバイスやつっこみをお待ちしてます。

オフライン

 

#4 2008-11-18 08:21:31

bezelplat
新しいメンバ
登録日: 2008-11-16

Re: ノートPCバッテリ駆動時間強化のTips

こんにちは。

私も最近 VGN-UX90S を入手し、Ubuntu 8.04 をインストールして使っていますが、
同様に Windows xp で使っていた時とバッテリ消費にかなり差を感じています。(ファンが回っている時間が圧倒的に長い)
L バッテリを使っていて acpi コマンドでの表示は満充電で 5 時間以上の表示なんですが、
hippocampus さんも実施されている内容のうち wlan、bluetooth、dirty_writeback_centisecs の対応を
入れた状態で 2 時間ちょいしか持ちません。
(ただし Windows ではほとんど使っていないので、ほんとに 5 時間持つかどうかは確かではないです)

バッテリ容量が減らないように見える現象ですが、当方でも発生しています。どうも電源 off で充電していると、ある程度以上は増えていないように見えることがあるようです。しばらく使用してその容量を下回ると減少が見えてくるような動きをします。

ちょっと時間経ってしまいましたがまだ使われているでしょうか?
今後も情報交換させていただけたらありがたいです!

当方環境: VGN-UX90S Celeron M 1.06GHz/ Memory 512MB/ SSD 16GB/ L Battery

オフライン

 

#5 2008-11-23 16:29:46

hippocampus
メンバ
登録日: 2007-07-08

Re: ノートPCバッテリ駆動時間強化のTips

bezelplatさん、こんにちは。

UX50はまだ使っています。

>L バッテリを使っていて acpi コマンドでの表示は満充電で 5 時間以上の表示なんですが、
>hippocampus さんも実施されている内容のうち wlan、bluetooth、dirty_writeback_centisecs の対応を
>入れた状態で 2 時間ちょいしか持ちません。

バッテリ駆動可能な時間は、powertopで表示される時間とacpiで表示される時間と、GNOMEなどのアプレットで表示される時間とでそれぞれ違うようです。
UXで使う限り、一番信頼できないのはpowertopですね。単純にその時点の消費電力でバッテリ残容量を割ってるだけのようですが、消費電力についても実際のものと異なっているらしく、バッテリ容量が減ってくると加速度的にに時間が短くなります。個人的には一番実際の感覚にあってるのはGNOMEなどのバッテリアプレットによる表示のように思います。

で、実際の駆動時間ですが、USB経由でイー・モバイルのD01HWを使っていると、やはりせいぜい1時間といった所です。無線LANでは、省電力モードで1時間20〜40分程度ですね。
大容量バッテリの容量は5200mAhで標準バッテリが2600mAhなので、通信時なら大容量バッテリで2時間〜3時間しか使えなくても不自然ではありませんね。しかし、通信をしなければ(文章打ちなど)、標準バッテリで2時間は持つようです。

>当方環境: VGN-UX90S Celeron M 1.06GHz/ Memory 512MB/ SSD 16GB/ L Battery
こちらはPentiumM1.06GHz/RAM 512MB/CF換装した擬似SSD16GHz(Transcend300x)/標準バッテリ です。

今度、残してあるXPでbbenchをしてみようと思います。

------------
実際に無線LANでインターネット接続した状況で比較してみました。
画面の輝度は最低、どちらも省電力設定で、Bluetoothは切っており、20%バッテリーを消費するまでにどれくらい時間がかかったかを計測しています。

・WindowsXP SP2(スーパースタミナ設定)+bbench(Webページを5つを1分ごとに順番に巡回)
 3487秒で20%消費→すなわちフル充電で286.4分持つことになります

・Xubutnu8.04+バッテリー残容量記録スクリプト+Firefox+TabMixPlus(5つのページを開き、1分ずらして順番にそれぞれ5分おきにリロード)
 1904秒で20%消費→フル充電で158.7分もつことになります

というわけで、無線LANを使ったWeb巡回では、倍近い差が出てきています。
XPの方は嘘くさい(そんなに持ったかな?)ですが、実際bbenchで計測するとそうなっているし、Webも巡回していました。
厳密には同じ負荷をかけているわけではありませんが、どちらにしてもWindwosXPの方が優秀なのは間違いなさそうです。
デバイスドライバのカスタマイズなどがよし積極的に行われているからでしょうね。
残念ながら、私にはUbuntuをこれ以上省電力にするやり方がわからないです。うーん。

最後の編集者: hippocampus (2008-11-24 03:23:56)

オフライン

 

#6 2008-12-03 09:12:40

bezelplat
新しいメンバ
登録日: 2008-11-16

Re: ノートPCバッテリ駆動時間強化のTips

こんにちは、ちょっと間があいてしまいました。

貴重なデータ、ありがとうございます!
やはり Windows での動作と比べるとかなり差がありそうですね。数値で見えると説得力あります。
私は最近視覚効果をいちばん少ない状態にして使っています。(以前は全開でした) でもあんまり変わらないような...
当方でも powertop と gnome applet で同じような印象を持っています。
また何か気づいたら報告しますね。

情報無くて恐縮ですがまずはお礼まで...

オフライン

 

Board footer

Powered by FluxBB