電源管理指引
1.
介紹
為什麼需要電源管理?
筆記型電腦電池的容量和持續力在過去幾年已有很大的改善,然而現今的處理器較過去消耗
更多能源,而且新一代筆記型電腦引進越來越多的高耗電配備,這就是為什麼電源管理愈形
重要的原因。要延長電池的持續力並不一定要買另一顆電池,良好運用智慧型電源管理政策
就能獲得很大的改善。
概要
請注意這份文件說明 筆記型電腦 的電源管理。雖然一些章節可能可以適用於
伺服器,其他的章節卻不行,而且可能造成損害。請不要將這份指引應用到伺服器上,
除非您很清楚知道您在做什麼。
由於這份指引很長,這裡先給個簡短的概述,幫助您了解大概的內容。
在 前提要件 這一章會談到設定一些基本的要求,這些將在接下來討論各種設備設
定的章節內會用到,這些包括 BIOS 和 kernel 的設定,還有使用者端的簡化手續。接下來
三個章節將專注於特別耗電的設備 ─ 處理器,螢幕和硬碟,它們可以被個別設定,CPU
電源管理 展示如何調整處理器的頻率,而能夠在不甚影響效能的前提下,達到省電最
大化。幾個避免您的硬碟作不必要運轉的小技巧會在 硬碟電源管理 提到(順便可
以降低噪音程度)。最後在 其他配備的電源管理 一章,我們會說明一些關於無線
網路和 USB 週邊應注意的事項。另外有個章節專門講述 睡眠狀態 (雖然還是實驗
性質)。最後 問題排除 列舉常見的陷阱。
各元件的電源預算
圖示 1.1: 各元件的電源預算 |
 |
幾乎所有元件都可以在不同的狀態下運作 ─ 停止,睡眠,閒置,運作是其中幾種 ─ 耗費不
同程度的能源。很大部份能源是消耗在 LCD 螢幕、CPU、晶片組和硬碟。通常您可以啟動
BIOS 內不倚賴作業系統的電源管理,但是在作業系統內做些智慧型的設定,針對不同情況
做出調整,可以達到更有效的能源運用。
2.
前提要件
需要先完成的事情
我們將會談如何使各種設備有電源管理的能力,但是在此之前,請您先確認某些前提要件已
經符合。在取得 BIOS 設定之後,一些 kernel 的選項應該要啟動 ─ 大致上有 ACPI、睡眠
狀態和 CPU 變頻。大多時候省電的代價是犧牲效能和反應延遲,所以應該在電力來源是電
池時才啟動。因此設定一個新的執行階層(runlevel) battery 是很方便的。
BIOS 部份
第一步,看看您 BIOS 電源管理的設定,最好的作法是整合 BIOS 和作業系統的政策,但是
現在先取消 BIOS 的部份,這會確保 BIOS 的設定不去干擾到您的政策。不要忘記在您做好
所有設定之後,把 BIOS 設定重新開啟。
設定 kernel
Kernel 內 ACPI(Advanced Configuration and Power Interface)的支援還在持續加強中
,所以選擇較新的 kernel 會讓您獲得更多功能。
在 kernel 設定中,啟動下列選項:
原始碼 2.1: Kernel 電源管理最基本設定 (Kernel 2.6) |
Power Management Options --->
[*] Power Management Support
[ ] Software Suspend
[ ] Suspend-to-Disk Support
ACPI( Advanced Configuration and Power Interface ) Support --->
[*] ACPI Support
[ ] Sleep States
<M> AC Adapter
<M> Battery
<M> Button
<M> Fan
<M> Processor
<M> Thermal Zone
< > ASUS/Medion Laptop Extras
< > Toshiba Laptop Extras
[ ] Debug Statements
CPU Frequency Scaling --->
[*] CPU Frequency scaling
Default CPUFreq governor (userspace)
<*> 'performance' governor
<*> 'powersave' governor
<*> CPU frequency table helpers
<M> ACPI Processor P-States driver
<*> CPUFreq driver for your processor
|
您可以自行決定要不要勾選 Sofrware Suspend、Suspend-to-Disk 和 Sleep States(見下
面章節)。如果您的筆記型電腦是華碩、Medion 或 Toshiba,請啟動相關的選項。
開始編譯 kernel,確認啟動時載入需要的模組,然後重開機使用您新編好有 ACPI 支援的
kernel。接著執行 emerge sys-apps/acpid 安裝 acpi daemon,這個程式會通知您
相關事件的發生,例如從使用 AC 電源轉到使用電池或是闔上螢幕蓋。確認 button
模組有載入如果您沒有編進 kernel,然後鍵入 /etc/init.d/acpid start 啟動 ac
pid。執行 rc-update add acpid default 讓它在開機時自動載入。您很快就會知
道如何使用這個程式。
原始碼 2.2: 安裝 acpid |
# emerge sys-apps/acpid
# modprobe button
# /etc/init.d/acpid start
# rc-update add acpid default
|
建立新的 "battery" 執行階層
預設的政策只有在必要時才會啟動電源管理,就是電力來源是電池的時候。為使 AC 電源和
電池電源之間的轉換更方便,建立一個新的執行階層 battery 來儲存所有電源管理
啟動和停止的 scripts。
注意:
如果您不想新設執行階層,您可以略過這一節,這不會有影響。但是略過這一步會使得接下
來的動作設定上比較不直接,所以下一節會假設執行階層 battery 存在。
|
原始碼 2.3: 建立 battery 執行階層 |
# cd /etc/runlevels
# cp -a default battery
|
完畢。您新設的執行階層 battery 已經包含了所有 default 內的設定,只
差還無法在兩者間自動轉換。該是想辦法改正的時候了。
回應 ACPI 事件
典型的 ACPI 事件有闔上螢幕蓋、變換電力來源或按下睡眠按鈕,所有 kernel 認識的
acpi 事件都會被 acpid 攔截並呼叫 /etc/acpi/default.sh。要支援執行階
層轉換,下面給個簡單的修改範例:
原始碼 2.4: 運用 acpid 達到事件驅動的執行階層轉換 |
#!/bin/sh
set $*
group=${1/\/*/}
action=${1/*\//}
RLVL_AC="default"
RLVL_BATTERY="battery"
AC_STATE="/proc/acpi/ac_adapter/AC/state"
AC_ON="on-line"
AC_OFF="off-line"
function SwitchRunlevel() {
if [[ "$(grep ${AC_OFF} ${AC_STATE})" != "" && "$(cat /var/lib/init.d/softlevel)" != "${RLVL_BATTERY}" ]]
then
logger "Switching to ${RLVL_BATTERY} runlevel"
/sbin/rc ${RLVL_BATTERY}
elif [[ "$(grep ${AC_ON} ${AC_STATE})" != "" && "$(cat /var/lib/init.d/softlevel)" != "${RLVL_AC}" ]]
then
logger "Switching to ${RLVL_AC} runlevel"
/sbin/rc ${RLVL_AC}
fi
}
case "$group" in
battery)
case "$action" in
battery)
SwitchRunlevel
;;
*)
logger "ACPI group battery / action $action is not defined"
;;
esac
;;
ac_adapter)
case "$action" in
ac_adapter)
SwitchRunlevel
;;
*)
logger "ACPI group ac_adapter / action $action is not defined"
;;
esac
;;
*)
logger "ACPI group $group / action $action is not defined"
;;
esac
|
試試看:把電源插頭插上或拔下,然後看看 syslog 內有沒有出現
"Switching to AC mode" 或 "Switching to battery mode" 的訊息。
由於事件機制設計的關係,您的筆記型電腦無論電力來源為何,在開機時都會進入
default 執行階層。您可以在 boot loader 內增加一行 softlevel=boot,
但是它無法記住這個設定。一個比較好的方法是在開機程序要完成前,假造一個 ACPI 事件
,讓 /etc/acpi/default.sh script 決定需不需要轉換執行階層。用您喜歡
的編輯器開啟 /etc/conf.d/local.start 並加入以下程式:
原始碼 2.5: 編輯 local.start 以便開機時能轉換執行階層 |
/etc/acpi/default.sh "battery/battery"
|
有了這些前置準備,您就能夠針對個別設備啟動電源管理政策。
3.
CPU 電源管理
手動設定頻率
降低 CPU 的速度和電壓有兩個好處:一方面減少能源消耗,另一方面是熱量的改善,因為
您的系統不會像全速運轉時那麼熱。顯而易見的,主要的缺點是效能較差。降低處理器速度
是在效能的損失和能源的節省中求取平衡。
注意:
並非所有筆記型電腦都支援變頻。如果您不確定,問題排除 一章有個列表,列舉有
支援的處理器,您可以看看您的處理器是否在其中。
|
是測試 CPU 變頻是否能正常運作的時候了。為了熟悉 kernel 提供的介面,先用手動改變
速度。要設定 CPU 速度,鍵入:
原始碼 3.1: 手動變更 CPU 速度 |
# grep "cpu MHz" /proc/cpuinfo
# cd /sys/devices/system/cpu/cpu0/cpufreq/
# cat scaling_available_frequencies
# echo -n userspace > scaling_governor
# echo -n 1000000 > scaling_setspeed
# grep "cpu MHz" /proc/cpuinfo
|
如果您遇到錯誤訊息,請參考指引的最後一章 問題排除。
您也可以寫入 scaling_max_freq 和 scaling_min_freq 來設
定頻率的上下界。
注意:
有些 kernel 似乎在 /proc/cpuinfo 的更新上有點不穩定,如果您沒看到該
有的變化,這並不意味 CPU 的頻率沒改。如果您遇到這個狀況,執行
emerge x86info,照指令更新您的 kernel,並用 x86info -mhz 查看現在
的頻率。
|
自動頻率調整
上述的方法很好,可是不適合日復一日的例行工作,最好是讓您的系統自動設定適當的頻率
。幾個在使用者空間執行的程式可以幫您達到這個目標。下面的表格提供簡單的介紹,輔助
您選擇合適的程式。
根據工作負載調整頻率看似簡單,卻不是件容易的工作。一個設計不良的演算法可能會造成
頻繁的頻率轉換,或是把頻率設太高而造成能源浪費。
該選擇那個程式?如果您無法決定,先試試 speedfreq:
原始碼 3.2: 安裝 speedfreq |
# emerge speedfreq
# rc-update add speedfreq battery
|
編輯 /etc/conf.d/speedfreq 來設定 speedfreq。舉例來說,如果
您希望使用者可以變更政策,把 SPEEDFREQ_OPTS="" 改成
SPEEDFREQ_OPTS="-u",改完就啟動 daemon。
原始碼 3.3: 啟動 speedfreq |
# /etc/init.d/speedfreq start
|
cpufreq 的設定就比較複雜一點。
警告:
不要同時執行上面的程式,這可能造成頻率經常變換的混亂。如果您安裝了 speedfreq,請
暫時略過 cpufreq。
|
原始碼 3.4: 安裝 cpufreqd |
# emerge cpufreqd
# rc-update add cpufreqd battery
|
cpufreqd 有提供預設值在 /etc/cpufreqd.conf,您可以根據您的需
求修改設定檔。下面的例子會較預設值節省更多能源 ─ 當然,效能會比較差。
原始碼 3.5: cpufreqd 設定檔範例 |
[General]
pidfile=/var/run/cpufreqd.pid
poll_interval=2
pm_type=acpi
verbosity=4
[Profile]
name=ac
minfreq=600000
maxfreq=1400000
policy=performance
[Profile]
name=battery
minfreq=600000
maxfreq=900000
policy=powersave
[Profile]
name=dvd
minfreq=900000
maxfreq=1100000
policy=powersave
[Rule]
name=ac_on
ac=on
profile=ac
[Rule]
name=compiling
ac=off
battery_interval=30-100
programs=emerge,make,gcc,cpp
cpu_interval=0-100
profile=ac
[Rule]
name=dvd_watching
ac=off
battery_interval=15-100
programs=xine,mplayer,avidemux,kaffeine,kmplayer
cpu_interval=0-100
profile=dvd
[Rule]
name=battery_on
ac=off
battery_interval=0-100
cpu_interval=0-100
profile=battery
|
cpudyn 和 powernowd 的安裝方式與 speedfreq 相同.
最後要檢查的是您設定的新政策確實做好它的工作。一個簡單的方法,在您用筆記型電腦工
作時監測 CPU 速度:
原始碼 3.6: 監測 CPU 速度 |
# watch -n 1 grep "cpu MHz" /proc/cpuinfo
|
如果 /proc/cpuinfo 沒有被更新(參考前面討論),用下面的指令監看
CPU 頻率:
原始碼 3.7: 監測 CPU 速度的另一種方法 |
# watch -n 1 x86info -mhz
|
取決於您的設定,CPU 的速度應該在負載大時增加,在不活動時減低或保持不變。
4.
LCD 電源管理
能源消耗者第一名
如 圖 1.1 所示,LCD 螢幕消耗最大部份的能源(不
見得適用於 non-mobile CPU)。因此在不使用時關閉螢幕,在合適時減低背景亮度,都成
為重要的關鍵。大部分筆記型電腦都有提供操控背景亮度的功能。
首先要檢查螢幕 待命/暫停/關閉 的時機設定。因為不同的視窗管理程式設定方式都不相同
,所以我將這部份留給您自行解決。提供兩個常見的地方做參考:要空白終端機的畫面可用
setterm -blank <number-of-minutesM>、setterm -powersave on
和 setterm -powerdown <number-of-minutesM>。在 Xorg 下,修改
/etc/X11/xorg.conf 如下:
原始碼 4.1: Xorg 和 XFree86 暫停 LCD 的設定 |
Section "ServerLayout"
Identifier [...]
[...]
Option "BlankTime" "5"
Option "StandbyTime" "10"
Option "SuspendTime" "20"
Option "OffTime" "30"
[...]
EndSection
[...]
Section "Monitor"
Identifier [...]
Option "DPMS" "true"
[...]
EndSection
|
XFree86 和 /etc/X11/XF86Config 的設定完全一樣。
更重要的也許是背景亮度的調暗。如果您有辦法運用工具程式存取亮度控制設定,寫個簡單
的 script 以便在電池模式下調暗背景光源,然後將它加到 battery 執行階層。
5.
硬碟電源管理
閒置時睡眠
讓我們在不需要硬碟時,盡早將之設成睡眠狀態。我將展示兩種方法來達成這項工作。第一
種是運用 cpudyn 對應碟電源管理的支援,啟用
/etc/conf.d/cpudyn 內 "Disk Options" 部份的設定。如果要讓第一顆硬碟
在休止 60 秒之後,進入睡眠狀態,您可以將檔案修改如下:
原始碼 5.1: 使用 cpudyn 做硬碟待命 |
TIMEOUT=60
DISKS=/dev/hda
|
第二種方法是使用簡單的 script 和指令 hdparm。建立檔案
/etc/init.d/pm.hda 如下:
原始碼 5.2: 使用 hdparm 做硬碟待命 |
#!/sbin/runscript
start() {
ebegin "Activating Power Management for Hard Drives"
hdparm -q -S12 /dev/hda
eend $?
}
stop () {
ebegin "Deactivating Power Management for Hard Drives"
hdparm -q -S253 /dev/hda
eend $?
}
|
參看 man hdparm 來了解可用的選項。如果您的 script 準備好了,把它加到
battery 執行階層。
原始碼 5.3: 自動化硬碟待命的設定 |
# /sbin/depscan.sh
# rc-update add pm.hda battery
|
重要:
硬碟 sleep/spin down 的設定值要特別小心,設定值太小可能會磨耗您的硬碟而無法得到
保固。
|
延長閒置時間 ─ 筆記型電腦模式
新近的 kernel(2.6.6 以後、最近 2.4 版本和其他修正版)包含了所謂的
筆記型電腦模式(laptop-mode),當啟動時,dirty buffers 會在讀取時或 10 分
鐘間隔後(而不是 30 秒)被寫入硬碟,這會使硬碟需要轉動的時間降到最少。
要啟動和停止筆記型電腦模式,新建 script /etc/init.d/laptop-mode,您可以使用包含
在 /usr/src/linux/Documentation/laptop-mode.txt 提供的範例。準備好
之後,確定它會被呼叫到。
原始碼 5.4: 自動啟動筆記型電腦模式 |
# rc-update add laptop-mode battery
|
警告:
再一次提醒:硬碟 sleep/spin down 設定要特別小心,設定值太小可能磨耗您的硬碟而失
去保固。請閱讀文件 laptop-mode.txt。確定在電池電力耗光之前,停止筆記型電腦模式,
讓資料能被寫入硬碟 ─ 否則,您最起碼會失去最後 10 分鐘的工作成果。
|
其他小技巧
除了讓您的硬碟儘快進入睡眠模式,將硬碟存取減到最少也是個好主意。檢視經常寫入硬碟
的程式 ─ syslogd 就是個可能人選。您可能不想要完全停掉那個程式,但是透過修改設定
檔,避免把 "不必要" 的事情記錄下來,就能減少硬碟存取流量。Cups 也定期寫入硬碟,
所以可以考慮停止這隻程式,而改在必要時手動啟動。
原始碼 5.5: 在電池模式下停止 cups |
# rc-update del cupsd battery
|
另一個可省電的地方是在電池模式下停止 swap。在撰寫 swapon/swapoff 轉換之前,請確
定有足夠的 RAM 而且 swap 不是經常被使用,否則您會遇上大問題。
如果您不想使用筆記型電腦模式,我們仍可以把某些目錄掛在 tmpfs ─ 寫入動作不
會存到硬碟上而是到主記憶體,卸載時資料便遺失 ─ 來達到使硬碟存取最小化的目的。通
常可以把 /tmp 用這種方式掛載起來 ─ 您不需要做特別的處理,因為無論是
掛載在硬碟或 RAM 上,每次它的內容在重開機時都會自動清理掉。只要您確認有足夠的
RAM 而且沒有程式(如下載程式或壓縮工具)需要在 /tmp 下使用非常多空
間。要使用這項功能,啟動您 kernel 內 tmpfs 支援,然後在 /etc/fstab
加入一行文字:
原始碼 5.6: 編輯 /etc/fstab 使 /tmp 更有機動性 |
none /tmp tmpfs size=32m 0 0
|
警告:
特別留意 size 參數的設定,要依據您的系統做合適的改變。如果您不確定,請不要嘗試這
個方法,它很容易成為效能的瓶頸。如果您想要讓 /var/log 如此掛載,請
確定在卸載前把記錄檔寫回硬碟上,這些動作是必須的。請勿嘗試用此方法掛載 /var/tmp
,Portage 使用這個目錄做編譯工作...
|
6.
其他設備的電源管理
無線電源管理
無線網路卡能源消耗也不少,可以用類似 pm.hda script 的方式將它們加入電源管理模式。
原始碼 6.1: WLAN 電源管理自動化 |
#!/sbin/runscript
start() {
ebegin "Activating Power Management for Wireless LAN"
iwconfig wlan0 power on power max period 3
eend $?
}
stop () {
ebegin "Deactivating Power Management for Wireless LAN"
iwconfig wlan0 power off
eend $?
}
|
啟動這個 script 會使 wlan0 在三秒鐘沒有流量之後進入電源管理模式。同硬碟 script
般,存成 /etc/init.d/pm.wlan0 並加入 battery 執行階層。參看
man iwconfig 內更詳細的說明和選項。如果您的驅動程式和存取點
(access point)支援 beacon time 變更,有可能可以節省更多能源。
USB 電源管理
USB 週邊要做到能源節省會面臨兩個問題:第一是像 USB 滑鼠、數位相機或是 USB 隨身碟
這些配備一插上就會消耗能源,無法完全避免(除非在不用時移除)。第二是當 USB 設備
插上時,USB host controller 會定期存取匯流排,這樣一來會使得 CPU 無法進入 C3/4
睡眠模式。作業系統針對這個問題的解答是所謂的 "USB 選擇性暫停
(selective suspend)",這項功能還沒有進入 kernel。USB 選擇性暫停只允許匯流排在
設備運作時被存取。在這項功能實作出來之前,一個暴力解決辦法:把 USB 支援和設備驅
動程式編譯成模組,然後用 script 在不使用時(例如,闔上螢幕蓋時)移除它們。
7.
睡眠狀態:睡眠、待命、suspend to disk
概說
ACPI 定義了不同的睡眠狀態,比較重要的有
- S1 等同於 待命(Standby)
- S3 等同於 Suspend to RAM 等同於 睡眠(Sleep)
- S4 等同於 Suspend to Disk 等同於 冬眠(Hibernate)
當系統沒有在使用時,可以進入這些狀態。關機不在選項中是因為開機程序耗費時間。
睡眠、待命和冬眠
ACPI 對這些睡眠狀態的支援被標記為實驗性質不是沒有原因的,APM 睡眠狀態較為穩定,
但是您不能同時使用 APM 和 ACPI。
警告:
雖然對於睡眠狀態的支援改善許多,它還是實驗性質。最起碼,我讓 swsusp2 和
suspend to RAM 成功運作,但是事先的警告仍是必須的:以下的動作很可能不僅無法成功
,反而損害到您的資料或系統。
|
目前有三種 S4 的實作方式,最早的是 swsusp;然後是 swsusp2,這隻程式有最好的介面
設計(包括 bootsplash 支援),但是需要自己動手做 kernel 補釘;最晚出現的是
Suspend-to-Disk,一個 swsusp 的分支。
如果上面這段話讓您感到困惑,請參考
特色比較。如果您還是不太清楚要選擇哪一個,先試試 swsusp2,看起來前景不錯。
kernel 內相關部份如下:
原始碼 7.1: Kernel 內不同待命狀態的設定 |
Power Management Options --->
ACPI( Advanced Configuration and Power Interface ) Support --->
[*] ACPI Support
[*] Sleep States
[*] Software Suspend (EXPERIMENTAL)
Software Suspend 2
--- Image Storage(您最少需要選一個)
[*] Swap Writer
--- Page Transformers
[*] LZF image compression
(/dev/"在此填入您的 swap") Default resume device name
[*] Suspend-to-Disk Suport
(/dev/"在此填入您的 swap") Default resume partition
|
適當的設定啟動之後就可以編譯您的 kernel,然後鍵入 /proc/acpi/sleep 或
是 cat /sys/power/state (分別適合 2.4 和 2.6 系列版本)看看有支援那幾種
狀態。後者回傳給我的是 standby mem disk。要是使用 swsusp,需要指定 kernel
參數 resume=/dev/"在此填入您的 swap"。如果開機因為影像(image)破損而無法
完成,swsusp 用 noresuem,Suspend-to-Disk 用 pmdisk=off,swsusp2
用 noresume2 做補救。
要讓您的系統進入下列睡眠狀態,執行
原始碼 7.2: 啟動睡眠狀態 |
# echo 1 > /proc/acpi/sleep
# echo 3 > /proc/acpi/sleep
# echo -n standby > /sys/power/state
# echo -n mem > /sys/power/state
# echo 4 > /proc/acpi/sleep
# echo -n disk > /sys/power/state
# echo > /proc/swsusp/activate
|
警告:
在您進行這些動作之前,請先備份您的資料。在執行其中任一個指令之前,先執行
sync,讓所有快取資料被寫回硬碟。先在沒有跑 X 的情況下試,然後再在 X 正在
執行但沒有記錄時試。
|
如果您遇到因為 uhci 或類似項目導致 kernel panics 的情況,試著將 USB 支援編譯成模
組,然後在您的筆記型電腦進入睡眠狀態前先卸載模組。
雖然上述方法應該可以讓 swsusp 和 Suspend-to-Disk 跑起來(我沒有說正常運作),
swsusp2 需要額外的設定。首先要做的是用
http://softwaresuspend.berlios.de/
提供的補釘修改 kernel,然後安裝該網頁內提供的 hibernate script。
8.
問題排除
如果事情進行不順利...
Q: 我試著改變 CPU 的頻率,但是
/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor 不存在。
A: 請確認您的處理器支援 CPU 變頻,並且您所選的 CPUFreq 驅動程式是正確的。
這裡列出 cpufreq(kernel 2.6.7)所支援的處理器:ARM Integrator, ARM-SA1100,
ARM-SA1110, AMD Elan - SC400, SC410, AMD mobile K6-2+, AMD mobile K6-3+, AMD
mobile Duron, AMD mobile Athlon, AMD Opteron, AMD Athlon 64, Cyrix Media GXm,
搭配某些晶片組的 Intel mobile PIII 和 Intel mobile PIII-M, Intel Pentium 4,
Intel Xeon, Intel Pentium M (Centrino), National Semiconductors Geode GX,
Transmeta Crusoe, VIA Cyrix 3 / C3, UltraSPARC-III, SuperH SH-3, SH-4, 某些
"PowerBook" 和 "iBook2" ,還有其他一些 ACPI 2.0-compatible 系統上的處理器(只有
在 ACPI/BIOS 介面上有 "ACPI Processor Performance States" 選項時)。
Q: 我的筆記型電腦支援變頻,但是
/sys/devices/system/cpu/cpu0/cpufreq/ 是空的。
A: 用 dmesg | grep ACPI 檢查看看有沒有 ACPI 相關的錯誤訊息。試試更
新 BIOS,尤其當有 DSDT 毀損的報告時。您也可以試著手動修復系統(當然這超出這份指
引的範圍)。
Q: 我的筆記型電腦支援變頻,但是從 /proc/cpuinfo 看來,速度從未改變過。
A: 這看起來像是 kernel 的 bug。執行 emerge x86info,照指示更新您的
kernel,然後用 x86info -mhz 檢查現在的頻率。
Q: 我可以改變 CPU 頻率,但是可改變的範圍不如其他作業系統大。
A: 您可以把變頻和 ACPI throttling 一起使用,這樣可以獲得更低的頻率。注意
throttling 並不會節省太多能源,而且它主要的功能是在熱量管理(讓您的筆記型電腦保
持涼爽安靜)。您可以用 cat /proc/acpi/processor/CPU/throttling 來讀取現在
throttling 的狀態,然後用 echo -n "0:x" > /proc/acpi/processor/CPU/limit
來改變它的值,指令中的 x 是 /proc/acpi/processor/CPU/throttling 中
列舉的狀態 Tx 。
Q: 電池持續時間好像變得比以前更糟糕了。
A: 檢查您 BIOS 的設定,也許您忘了把某些設定重新啟動。
Q: 我的電池已經充飽,但是 KDE 回報說只有 0% 剩下,然後就關機了。
A: 檢查電池支援有編譯進您的 kernel。如果您把它編成模組,請確定此模組有載
入。
Q: 我有一台 Dell Inspiron 51xx,但是我收不到任何 ACPI 事件。
A: 這似乎是個 kernel bug。請閱讀
這裡。
Q: 我剛買了一個全新的電池,但是它卻只能撐幾分鐘!那裡出錯了?
A: 首先依照製造商的說明指示將電池正確地充電。
Q: 上面的回答都沒有幫助,我該怎麼辦。
A: 有些所謂 "新" 電池其實是舊貨。試試下面的指令:
原始碼 8.1: 詢查電池狀態 |
$ grep capacity /proc/acpi/battery/BAT0/info
design capacity: 47520 mWh
last full capacity: 41830 mWh
|
如果 "last full capacity" 與 design capacity 差很多,您的電池可能壞掉了。這時,
該是您使用保固權利的時候了。
這份文件是以
Creative Commons - 姓名標示-相同方式分享 授權條款發布
|