ubuntu 筆記本電源管理優(yōu)化指南
作者:yuk
版本:1.0
免責(zé)聲明:以下操作可能會(huì)引起數(shù)據(jù)丟失,本人不承擔(dān)任何責(zé)任。
版權(quán)聲明:可以自由轉(zhuǎn)載,但原作者請(qǐng)務(wù)必保留;
論壇里看到許多朋友抱怨linux電源管理很糟糕,說(shuō)什么電池使用比win下短了很多。實(shí)際上linux提供很多電源優(yōu)化的功能,只不過(guò)默認(rèn)情況下的設(shè)置沒(méi)有考慮電源使用罷了。下面我以u(píng)buntu edgy為例,系統(tǒng)的討論一下筆記本電源管理優(yōu)化。
目標(biāo):最長(zhǎng)的電池使用時(shí)間
概述
筆記本由許多不同的組件組成,各個(gè)組件的耗電不用,引用gentoo power management的一張圖,其耗電比重如下圖所示:
Power Budget For Each Component
?
?
?
?
?
?
?
?
?
?
?
?
從上圖我們可以看到主要的耗電部件是液晶顯示器、CPU、芯片組和硬盤(pán)。雖然我們可以在BIOS里面設(shè)置操作系統(tǒng)無(wú)關(guān)的電源管理模式,但是在操作系統(tǒng)之上我們可以設(shè)置一些更smart的電源管理模式自動(dòng)適應(yīng)各種環(huán)境。
本文分下面幾個(gè)部分分別討論各個(gè)部件的電源管理優(yōu)化。
0. 前提
在討論各個(gè)設(shè)備的電源管理優(yōu)化之前,先確定我們是否滿足下面一些前提條件。
BOIS
首先你要檢查一下你的BOIS的電源管理設(shè)置,先關(guān)閉所有bois支持的電源管理方式,只通過(guò)操作系統(tǒng)設(shè)置電源管理,然后再恢復(fù)BOIS的電源管理。
kernel
acpi支持,edgy默認(rèn)內(nèi)核是支持acpi的,如果你自定義編譯了內(nèi)核,記住要把電源管理相關(guān)的模塊選上
Power Management Options ---> [*] Power Management Support [ ] Software Suspend ACPI( Advanced Configuration and Power Interface ) Support ---> [*] ACPI Support [ ] Sleep States [ ] /proc/acpi/sleep (deprecated) [*] AC Adapter [*] Battery <M> Button <M> Video [ ] Generic Hotkey <M> Fan <M> Processor <M> Thermal Zone < > ASUS/Medion Laptop Extras < > IBM ThinkPad Laptop Extras < > Toshiba Laptop Extras (0) Disable ACPI for systems before Jan 1st this year [ ] Debug Statements [*] Power Management Timer Support < > ACPI0004,PNP0A05 and PNP0A06 Container Driver (EXPERIMENTAL) CPU Frequency Scaling ---> [*] CPU Frequency scaling [ ] Enable CPUfreq debugging < > CPU frequency translation statistics [ ] CPU frequency translation statistics details Default CPUFreq governor (userspace) <*> 'performance' governor <*> 'powersave' governor <*> 'ondemand' cpufreq policy governor <*> 'conservative' cpufreq governor <*> CPU frequency table helpers <M> ACPI Processor P-States driver <*> CPUFreq driver for your processor
?1.顯示器
如上圖所示,LCD是最耗電的部件,這一節(jié)我們討論如何降低LCD的耗電
首先,盡可能調(diào)低亮度,這個(gè)不多說(shuō)手動(dòng)調(diào)節(jié)就可以了;
然后設(shè)置 DPMS(Display Power Management Signaling)
修改sudo vi /etc/X11/xorg.conf文件
Section "ServerLayout" Identifier [...] [...] Option "BlankTime" "5" # Blank the screen after 5 minutes (Fake) Option "StandbyTime" "10" # Turn off screen after 10 minutes (DPMS) Option "SuspendTime" "20" # Full suspend after 20 minutes Option "OffTime" "30" # Turn off after half an hour [...] EndSection [...] Section "Monitor" Identifier [...] Option "DPMS" "true" [...] EndSection
?但似乎xorg的dpms有bug不能關(guān)閉LCD,只能把屏幕變黑
google搜索了一下發(fā)現(xiàn)是和acpi沖突只要重新啟動(dòng)acpi就可以了
手動(dòng)設(shè)置屏幕關(guān)閉,
sudo /etc/init.d/acpid restart xset dpms force off
?2.cpu
移動(dòng)版本的CPU支持頻率和電壓的動(dòng)態(tài)調(diào)整,在大多數(shù)情況下你的CPU是沒(méi)必要全速運(yùn)行的,尤其在電池支持下,我們可以強(qiáng)制使CPU運(yùn)行在最低頻率。
在linux 2.6以后的內(nèi)核就支持cpu頻率的動(dòng)態(tài)調(diào)整,有下面5種模式
-
performance 將CPU頻率設(shè)定在支持的最高頻率,而不動(dòng)態(tài)調(diào)節(jié).
powersave 將CPU頻率設(shè)置為最低
ondemand 快速動(dòng)態(tài)調(diào)整CPU頻率, Pentuim M的CPU可以使用
conservative 與ondemand不同,平滑地調(diào)整CPU頻率,適合于用電池工作時(shí).
userspace 用戶模式,也就是長(zhǎng)期以來(lái)都在用的那個(gè)模式。可以通過(guò)手動(dòng)編輯配置文件進(jìn)行配置
先安裝相關(guān)軟件cpufrequtils
sudo apt-get install cpufrequtils
?查看你的cpu所支持的頻率
cpufreq-info
?
Report errors and bugs to linux@brodo.de, please.
analyzing CPU 0:
driver: powernow-k8
CPUs which need to switch frequency at the same time: 0
hardware limits: 800 MHz - 1.60 GHz
available frequency steps: 1.60 GHz, 800 MHz
available cpufreq governors: userspace, powersave, ondemand, conservative, performance
current policy: frequency should be within 800 MHz and 1.60 GHz.
The governor "ondemand" may decide which speed to use
within this range.
current CPU frequency is 800 MHz.
?需要進(jìn)入那個(gè)模式直接修改proc文件,比如要進(jìn)入powersave模式
echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
?其實(shí)有個(gè)實(shí)用程序laptop-mode可以方便的設(shè)置,在后面硬盤(pán)一節(jié)統(tǒng)一介紹
如果是用迅馳cpu,支持多個(gè)頻率,你可以用powernowd更細(xì)化的調(diào)節(jié)cpu頻率
3.顯卡
各類顯卡有自己的電源管理方式,我這里主要介紹ati powerplay,
首先要安裝ati的fgrlx,請(qǐng)參考論壇wiki
運(yùn)行aticonfig --lsp顯示顯卡可以運(yùn)行的頻率,選最低的就行了
我的輸出:
core/mem [flags]
-----------------
* 1: 100/150 MHz
2: 301/200 MHz [default state]
aticonfig --set-powerstate=0
?使顯卡運(yùn)行在最低頻率上
也可以設(shè)置顯卡動(dòng)態(tài)調(diào)整頻率
修改sudo vi /etc/X11/xorg.conf
[...]
Option "DynamicClocks" "on"
EndSection
?4.硬盤(pán)
我們先做一個(gè)粗略的計(jì)算,你的筆記本如果硬盤(pán)在節(jié)能模式下運(yùn)行,能延長(zhǎng)多少時(shí)間。
cat /proc/acpi/battery/BATx/info
design capacity: 6000 mAh
last full capacity: 3808 mAh
battery technology: rechargeable
design voltage: 14800 mV
design capacity warning: 209 mAh
design capacity low: 133 mAh
capacity granularity 1: 10 mAh
capacity granularity 2: 25 mAh
model number: JM-6
serial number: xxxxxxxxxxxxxxx
battery type: LION
OEM info: Hewlett-Packard
?電池功率為 3808 mAh x 14800 mV = 56.3584 Wh == 56wh
電池支持時(shí)間4小時(shí)
移動(dòng)硬盤(pán)正常功率: 2.4w
移動(dòng)硬盤(pán)standby功率: 0.25w
(根據(jù)自己型號(hào)google自己搜索)
56/4 = 14 w
14 - (2.4-0.25) = 11.85 w
56 / 11.85 = 4.725738397 小時(shí)
延長(zhǎng)了0.73 小時(shí),大約44分鐘
硬盤(pán)是不可能一直處于standby狀態(tài)的,實(shí)際的情況肯定會(huì)短一些。
下面我們討論如何使硬盤(pán)更長(zhǎng)時(shí)間的處于standby模式下
我們可以laptop-mode 軟件達(dá)到這個(gè)效果,
首先我們啟動(dòng)laptop-mode,edgy默認(rèn)設(shè)置是禁止laptop-mode運(yùn)行的
修改 /etc/default/acpi-support
?sudo /etc/init.d/laptop-mode start
好了現(xiàn)在我們來(lái)詳細(xì)配置,有中文注釋的地方是我修改過(guò)的地方
修改/etc/laptop-mode/laptop-mode.conf
# 在電池模式下啟動(dòng)laptop_mode
ENABLE_LAPTOP_MODE_ON_BATTERY=1
# Disable all data loss sensitive features when the battery level (in % of the
# battery capacity) reaches this value.
# 在低電量的情況下禁止laptop-mode
MINIMUM_BATTERY_CHARGE_PERCENT=10
# Disable data loss sensitive features when the battery reports its state
# as "critical".
# 在極底電量下禁止laptop_mode
DISABLE_LAPTOP_MODE_ON_CRITICAL_BATTERY_LEVEL=8
# The drives that laptop mode controls.
# Separate them by a space, e.g. HD="/dev/hda /dev/hdb". The default is a
# wildcard, which will get you all your IDE and SCSI/SATA drives.
# HD="/dev/[hs]d[abcdefgh]"
# 設(shè)定需要控制的硬盤(pán)
HD="/dev/hda"
# Should laptop mode tools control readahead?
# 啟動(dòng) readahead
CONTROL_READAHEAD=1
# Read-ahead, in kilobytes. You can spin down the disk while playing MP3/OGG
# by setting the disk readahead to a reasonable size, e.g. 3072 (3 MB).
# Effectively, the disk will read a complete MP3 at once, and will then spin
# down while the MP3/OGG is playing. Don't set this too high, because the
# readahead is applied to _all_ files that are read from disk.
# 設(shè)定laptop_mode下的readahead buffer,如果是聽(tīng)mp3 3-5M,如果是看電影 8-10M
LM_READAHEAD=4096
NOLM_READAHEAD=128
# Should laptop mode tools control the maximum CPU frequency?
# 啟動(dòng)CPU頻率控制
CONTROL_CPU_FREQUENCY=1
# Legal values are "slowest" for the slowest speed that your
# CPU is able to operate at, "fastest" for the fastest speed,
# "medium" for some value in the middle, or any value listed in
# /sys/devices/system/cpu/cpu*/cpufreq/scaling_available_frequencies.
# 設(shè)定電池模式下的CPU頻率
BATT_CPU_MAXFREQ=slowest
BATT_CPU_MINFREQ=slowest
BATT_CPU_GOVERNOR=ondemand
?現(xiàn)在可以通過(guò)下面命令查看laptop-mode的狀態(tài)
sudo /etc/init.d/laptop-mode status
使用tmpfs把臨時(shí)文件放入內(nèi)存中。tmpfs 就象虛擬磁盤(pán)(ramdisk),但又不完全一樣。象虛擬磁盤(pán)一樣,tmpfs 可以使用您的 RAM,但它也可以使用您的交換分區(qū)來(lái)存儲(chǔ)。而且傳統(tǒng)的虛擬磁盤(pán)是個(gè)塊設(shè)備,并需要一個(gè) mkfs 之類的命令才能真正地使用它,tmpfs 是一個(gè)文件系統(tǒng),而不是塊設(shè)備;您只是安裝它,它就可以使用了。總而言之,這讓 tmpfs 成為我有機(jī)會(huì)遇到的最好的基于 RAM 的文件系統(tǒng)。
修改/etc/fstab,把tmpfs mount 到/tmp上,并設(shè)置最大上限為32M。
tmpfs /tmp tmpfs size=32m 0 0
?如果你內(nèi)存很多(1G以上)你完全可關(guān)閉swap
?現(xiàn)在你的硬盤(pán)應(yīng)該把讀寫(xiě)操作降得很低了。
5.其他優(yōu)化
降低顏色深度
修改xorg.conf 改為16位色
修改sudo vi /etc/X11/xorg.conf
DefaultDepth 16
?盡量少使用光驅(qū)
盡量不啟動(dòng)X,使用console
比如看片子的話可以在console下用mplayer -vo fbdev your.movie.file
聽(tīng)音樂(lè)可以使用mpg123 ogg123等等
無(wú)線網(wǎng)卡
在不使用wlan的時(shí)候關(guān)閉它
?6. 讓上面優(yōu)化實(shí)現(xiàn)自動(dòng)化
acpi能截獲電源適配器事件
/etc/acpi/events/ac
在這個(gè)腳本中我們可以看到實(shí)際上調(diào)用的是/etc/acpi/power.sh腳本
grep -q off-line $x/state
if [ $? = 0 ] && [ x$1 != xstop ]; then
for SCRIPT in /etc/acpi/battery.d/*.sh; do
. $SCRIPT
done
if [ x$ENABLE_LAPTOP_MODE = xtrue ]; then
(sleep 5 && laptop_mode_enable)&
fi
else
for SCRIPT in /etc/acpi/ac.d/*.sh; do
. $SCRIPT
done
if [ x$ENABLE_LAPTOP_MODE = xtrue ]; then
(sleep 5 && laptop_mode_disable)&
fi
fi
done
?在這段腳本中我們看到如果要讓腳本在bettary模式下運(yùn)行就放在/etc/acpi/battery.d/目錄下,要讓腳本在電源模式下于虛擬就把腳本放在/etc/acpi/ac.d/目錄下
好了既然腳本能自動(dòng)執(zhí)行,要實(shí)現(xiàn)什么樣的節(jié)能效果就看你的想象力了。
另附一些實(shí)用工具軟件
查看硬盤(pán)溫度
sudo hddtemp -n /dev/hda
查看cpu信息
sudo x86info
查看硬件信息
lshw
案例,本人hp ze22xx
在windows下便攜模式下能運(yùn)行大概2小時(shí)20分
在ubuntu下未優(yōu)化能運(yùn)行2小時(shí)左右
優(yōu)化過(guò)后能運(yùn)行2小時(shí)30分
參考
gentoo power management guide
http://www.gentoo.org/doc/en/power-management-guide.xml
Extending Battery Life with Laptop Mode
http://www.linuxjournal.com/article/7539
?
?
?
?
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
