BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / linux / #4783同步于 1 周前
Linux机器人发帖

[转帖]電源管理指引

sunway
1 周前镜像同步0 回复
電源管理指引 內容: 1. 介紹 為什麼需要電源管理? 筆記型電腦電池的容量和持續力在過去幾年已有很大的改善,然而現今的處理器較過去消耗更多能源,而且新一代筆記型電腦引進越來越多的高耗電配備,這就是為什麼電源管理愈形重要的原因。要延長電池的持續力並不一定要買另一顆電池,良好運用智慧型電源管理政策就能獲得很大的改善。 概要 請注意這份文件說明 筆記型電腦 的電源管理。雖然一些章節可能可以適用於 伺服器,其他的章節卻不行,而且可能造成損害。請不要將這份指引應用到伺服器上,除非您很清楚知道您在做什麼。 由於這份指引很長,這裡先給個簡短的概述,幫助您了解大概的內容。 在 前提要件 這一章會談到設定一些基本的要求,這些將在接下來討論各種設備設定的章節內會用到,這些包括 BIOS 和 kernel 的設定,還有使用者端的簡化手續。接下來三個章節將專注於特別耗電的設備 ─ 處理器,螢幕和硬碟,它們可以被個別設定,CPU 電源管理 展示如何調整處理器的頻率,而能夠在不甚影響效能的前提下,達到省電最大化。幾個避免您的硬碟作不必要運轉的小技巧會在 硬碟電源管理 提到(順便可以降低噪音程度)。最後在 其他配備的電源管理 一章,我們會說明一些關於無線網路和 USB 週邊應注意的事項。另外有個章節專門講述 睡眠狀態 (雖然還是實驗性質)。最後 問題排除 列舉常見的陷阱。 各元件的電源預算 圖示 1.1: 各元件的電源預算 Fig. 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/*\//} # AC 模式下的執行階層 RLVL_AC="default" # 電池模式下的執行階層 RLVL_BATTERY="battery" # 指示 AC 狀態的檔案,使用前請先確定檔案名稱 AC_STATE="/proc/acpi/ac_adapter/AC/state" # 此行表示在 AC 模式 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 以便開機時能轉換執行階層 # 如果使用電池,假造 acpi 事件來轉換執行階層 /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 (改變頻率到 1 GHz (100000 KHz) 用您筆記型電腦支援的頻率代換) # 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 查看現在的頻率。 自動頻率調整 上述的方法很好,可是不適合日復一日的例行工作,最好是讓您的系統自動設定適當的頻率。幾個在使用者空間執行的程式可以幫您達到這個目標。下面的表格提供簡單的介紹,輔助您選擇合適的程式。 名稱 優點 缺點 cpudyn 支援硬碟待命 cpufreq 可以做精密的設定 設定複雜 speedfreq 小巧但功能強大 client/server 介面很好用 只是用於 kernel 2.6 系列 powernowd 支援多處理器 根據工作負載調整頻率看似簡單,卻不是件容易的工作。一個設計不良的演算法可能會造成頻繁的頻率轉換,或是把頻率設太高而造成能源浪費。 該選擇那個程式?如果您無法決定,先試試 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 # 使用下面設定來啟動 ACPI workaround(參考 cpufreqd.conf(5)) # acpi_workaround=1 verbosity=4 #(如果您想要最少的記錄,把值設成 5) # 最大效能 [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 # AC 電源時使用最大效能 [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 # 慢速的 CPU 頻率會使 DVD 播放不順 # 電玩等程式同樣適用 [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" # 5 分鐘後空白螢幕(模擬的) Option "StandbyTime" "10" # 10 分鐘後關閉螢幕(DPMS) Option "SuspendTime" "20" # 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 做硬碟待命 ################################################ # DISK OPTIONS # (disabled by default) ################################################ # # 如果時限內硬碟沒有執行任何存取, # 硬碟將進入待命模式(單位為秒) # 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 (使用 swsup 冬眠) [*] Software Suspend (EXPERIMENTAL) (使用 swsusp2 冬眠) Software Suspend 2 --- Image Storage(您最少需要選一個) [*] Swap Writer --- Page Transformers [*] LZF image compression (/dev/"在此填入您的 swap") Default resume device name (使用 Suspend-to-Disk 冬眠) [*] 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: 啟動睡眠狀態 (kernel 2.4 系列) # echo 1 > /proc/acpi/sleep (待命) # echo 3 > /proc/acpi/sleep (睡眠) (kernel 2.6 系列) # echo -n standby > /sys/power/state (待命) # echo -n mem > /sys/power/state (睡眠) (swsusp) # echo 4 > /proc/acpi/sleep 冬眠 (Suspend-to-Disk) # echo -n disk > /sys/power/state 冬眠 (swsusp2) # 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 - 姓名標示-相同方式分享 授權條款發布
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。