|
仕事で使っているThinkPad X60には、Core2Duo T7200が載っていて、何をするにも高速でとても快適です。しかし、標準のバッテリーパックが小さい上に、やはり、2GHz のマルチコアは電気を食うのか、せいぜい2時間くらいしか電池が持ちません。これだと、安心して外で仕事ができません。 そこで、まず、大容量バッテリーパックを購入しました。 標準の4セルバッテリー ThinkPad X60シリーズ 4セル・スリムライン・バッテリー 40Y6999
主な仕様 - 4セルのシステムバッテリー, 14.4V, 2.6Ah
- 平均稼働時間4.0時間 ※1
8セル大容量バッテリー 製品番号(P/N) : 40Y7003 ThinkPad X60シリーズ 8セル大容量バッテリー
主な仕様 - 8セルのシステムバッテリー, 14.4V, 5.2Ah
- 平均稼働時間8.0時間 ※1
このバッテリーに交換したことで、バッテリーが4時間程度、持つようになりました。
さて、これで、外出先でも何とかドキドキせずに、このパソコンを使えるようになったのですが、より長持ちさせるには、省電力設定を行う必要があります。 Enhanced Intel SpeedStep® Technology and Demand-Based Switching on Linux* カーネルコンパイルオプション │ │ [*] CPU Frequency scaling │ │ │ │ [*] Enable CPUfreq debugging │ │ │ │ <*> CPU frequency translation statistics │ │ │ │ [*] CPU frequency translation statistics details │ │ │ │ Default CPUFreq governor (userspace) ---> │ │ │ │ <M> 'performance' governor │ │ │ │ <M> 'powersave' governor │ │ │ │ --- 'userspace' governor for userspace frequency scaling │ │ │ │ <M> 'ondemand' cpufreq policy governor │ │ │ │ <M> 'conservative' cpufreq governor │ │ │ │ --- CPUFreq processor drivers │ │ │ │ <M> ACPI Processor P-States driver │ │ 関連モジュールのロード
x60:~# more /etc/modules battery ibm_acpi acpi-cpufreq
cpufreqdがバッテリー容量や、CPUの使用率に応じて、クロックやLCDの輝度を変更してくれる。
このパソコンのCPUがサポートするクロックは、次の様になっている。
ktaka@x60:~$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies 2000000 1667000 1333000 1000000 また、LCDの輝度は次の8通りに設定できるようである。 ktaka@x60:~$ cat /proc/acpi/ibm/brightness level: 7 commands: up, down commands: level <level> (<level> is 0-7)
以上のことから、次のような cpufreqdの設定ファイルを作成した。
x60:~# more /etc/cpufreqd.conf [General] pidfile=/var/run/cpufreqd.pid poll_interval=2 verbosity=4 enable_remote=1 [/General]
[Profile] name=ondemand_high minfreq=1000000 maxfreq=2000000 up_threshold=50 policy=ondemand [/Profile]
[Profile] name=ondemand_medium minfreq=1000000 maxfreq=1667000 up_threshold=50 policy=ondemand [/Profile]
[Profile] name=ondemand_low minfreq=1000000 maxfreq=1333000 up_threshold=50 policy=ondemand [/Profile]
[Rule] name=AC ac=on exec_post=echo level 7 > /proc/acpi/ibm/brightness profile=ondemand_high [/Rule]
[Rule] name=Performance Battery ac=off battery_interval=0-100 cpu_interval=ANY:80-100 exec_post=echo level 0 > /proc/acpi/ibm/brightness profile=ondemand_high [/Rule]
[Rule] name=High Battery ac=off battery_interval=50-100 cpu_interval=ANY:0-80 exec_post=echo level 2 > /proc/acpi/ibm/brightness profile=ondemand_medium [/Rule]
[Rule] name=Low Battery ac=off battery_interval=0-50 cpu_interval=ANY:0-80 exec_post=echo level 0 > /proc/acpi/ibm/brightness profile=ondemand_low [/Rule]
モジュール ktaka@x60:~$ lsmod|egrep "cpu|acpi" cpufreq_ondemand 9484 1 acpi_cpufreq 11592 1 processor 26824 2 thermal,acpi_cpufreq ibm_acpi 31896 0 backlight 6912 1 ibm_acpi
cpufreqdの起動
/etc/init.d/cpufreqd start 状態確認 x60:/home/ktaka# cpufreqd-get
Name (#1): ondemand_high Governor: ondemand Min freq: 1000000 Max freq: 2000000
Name (#2): ondemand_medium Governor: ondemand Min freq: 1000000 Max freq: 1667000
Name (#3): ondemand_low Active on CPU#: 0, 1 Governor: ondemand Min freq: 1000000 Max freq: 1333000 現在#3の状態にいることがわかる。
以上で、CPU負荷が少ない時には1GHzで動作し、CPU負荷が高くなるとクロックを最大2GHzまであげて動作する設定ができた。バッテリ動作時には更にLCDを暗くし、CPUクロックの最大値も、バッテリの残量に応じて1.67GHz、1.33GHzと制限するようにもなっている。
CPUの周波数とバッテリーの状態をモニタリングするスクリプト
ktaka@x60:~$ more battery_monitor.sh #!/bin/bash
watch -n 1 " echo cat /proc/acpi/battery/BAT0/state cat /proc/acpi/battery/BAT0/state echo -n 'Estimated battery capacity : ' egrep 'rate|remaining' /proc/acpi/battery/BAT0/state |xargs | awk '{print \$7 / \$3 \" hours\"}'
echo echo cat /proc/acpi/battery/BAT0/info cat /proc/acpi/battery/BAT0/info | grep 'design capacity'
echo echo cpu0 cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq echo cpu1 cat /sys/devices/system/cpu/cpu1/cpufreq/cpuinfo_cur_freq " 使ってみる Every 10.0s: ... Tue May 1 03:04:55 2007 cat /proc/acpi/battery/BAT0/state present: yes capacity state: ok charging state: discharging present rate: 16056 mW remaining capacity: 23350 mWh present voltage: 14895 mV Estimated battery capacity : 1.45429 hours
cat /proc/acpi/battery/BAT0/info design capacity: 74880 mWh design capacity warning: 3925 mWh design capacity low: 200 mWh
cpu0 1000000 cpu1 1000000
これで、バッテリーの状態と、CPUクロックを常に確認することができるようになった。 2007-05-11追記 バッテリーほぼ100%の状態、ほぼ無負荷で Every 5.0s: ... Fri May 11 02:10:46 2007 cat /proc/acpi/battery/BAT0/state present: yes capacity state: ok charging state: discharging present rate: 16080 mW remaining capacity: 73600 mWh present voltage: 16459 mV Estimated battery capacity : 4.57711 hours
cat /proc/acpi/battery/BAT0/info design capacity: 74880 mWh design capacity warning: 3856 mWh design capacity low: 200 mWh
cpu0: 1000000 kHz cpu1: 1000000 kHz
lcd level: 2 CPUクロックは1GHzで、電力消費は、16W 次のように、カーネルコンパイルで負荷をかけてみる ktaka@x60:~/Kernel/linux-2.6.21.1$ make clean; make -j 10
そうすると、
Every 10.0s: ... Fri May 11 02:15:12 2007 cat /proc/acpi/battery/BAT0/state present: yes capacity state: ok charging state: discharging present rate: 44708 mW remaining capacity: 71170 mWh present voltage: 16036 mV Estimated battery capacity : 1.59189 hours
cat /proc/acpi/battery/BAT0/info design capacity: 74880 mWh design capacity warning: 3856 mWh design capacity low: 200 mWh
cpu0: 2000000 kHz cpu1: 2000000 kHz
lcd level: 0
CPUクロックが2GHzになり、消費電力は45Wにもなる。 |