電源管理對筆記型電腦十分重要,對其他系統也很有用。ACPI (Advanced Configuration and Power Interface,進階組態和電源介面) 可以在所有現代電腦 (筆記型電腦、桌上型電腦和伺服器) 上使用。電源管理技術需要配備合適的硬體與 BIOS 常式。大多數筆記型電腦和許多新式的桌上型電腦及伺服器都符合這些需求。此技術還可以控制 CPU 頻率比例,這有助於省電及降低噪音。
省電功能不僅對於筆記型電腦的行動用途很重要,對於桌上型系統也很重要。主要功能以及在 ACPI 中的用途包括:
不支援。
此模式會將整個系統狀態寫入 RAM 中。接著,除了 RAM 以外,整個系統都會進入睡眠狀態。在此狀態中,電腦所使用的電源極少。此狀態的好處是可以在幾秒內將工作復原到暫停之前的狀態,而不用開機或重新啟動應用程式。此功能等同於 ACPI 狀態 S3。
在此操作模式,會將整個系統狀態寫入硬碟,然後關閉系統。至少要有與 RAM 一樣大的交換分割區,才能寫入所有作用中資料。要從此狀況重新啟用需耗時 30 到 90 秒。還原時會回到暫停前的狀態。有些製造商會為此模式提供有用的混合功能,例如 IBM Thinkpad 中的 RediSafe。對應的 ACPI 狀態為 S4。在 Linux 中,暫停寫入到磁碟是由獨立於 ACPI 之外的核心常式來執行。
mkswap 進行格式化時變更了交換分割區的 UUID如果可能,請勿使用 mkswap 重新格式化現有的交換分割區。否則,使用 mkswap 重新格式化將變更交換分割區的 UUID 值。請改為透過 YaST 重新格式化 (將更新 /etc/fstab),或者手動調整 /etc/fstab。
ACPI 會檢查電池充電狀態並提供相關資訊。此外,ACPI 會在電力到達某個關鍵狀態時,協調要執行的動作。
關機後,電腦會關閉電源。此功能很重要,尤其是在電池用盡前所執行的自動關機。
與 CPU 連結時有三種方式可節省電源:頻率和電壓比例 (也稱為 PowerNow! 或 Speedstep)、調節,以及讓處理器進入睡眠狀態 (C 狀態)。依據電腦的操作模式,也可以合併這些操作方法。
ACPI 主要用於讓作業系統設定和控制個別的硬體元件。ACPI 取代了「電源管理隨插即用 (PnP)」與「進階電源管理 (APM)」。它能提供一些資訊,包括電池、交流電轉接器、溫度、風扇以及「關閉蓋子」或「電池電力不足」等系統事件。
BIOS 會提供一些表格,內含關於個別元件與硬體的存取方法等資訊。作業系統會使用這此資訊來執行任務,像是指定中斷或啟用和停用元件。因為作業系統會執行儲存於 BIOS 中的指令,所以 BIOS 實行會決定其功能。journald 中報告了 ACPI 能偵測和載入的表格。如需有關檢視這些日誌記錄訊息的詳細資訊,請參閱第 15 章 「journalctl:查詢 systemd 日誌」。請參閱第 29.2.2 節 「疑難排解」,以取得更多有關 ACPI 問題疑難排解的資訊。
CPU 可以使用三種方式省電:
頻率和電壓比例
調節時鐘頻率 (T 狀態)
使處理器進入睡眠狀態 (C 狀態)
依據電腦的操作模式的不同,這些方法可合併使用。省電也表示能降低系統溫度,減低風扇的使用頻率。
頻率比例及調節只在處理器忙碌時使用,因為在處理器閒置時,必定會套用最經濟的 C 狀態。如果 CPU 正忙碌,頻率比例是建議的省電方法。通常處理器僅有部份的工作負載。在此情況中,可以使用較低的頻率。通常,最佳方法是使用依核心需求調節器來控制動態頻率比例。
調節應做最後手段使用,例如,在高度系統負載下仍要延伸電池操作時間時。不過在調節過多時,有些系統無法運作順暢。此外,當 CPU 要做的事不多時,調節 CPU 是無意義的動作。
如需更多資訊,請參閱Chapter 11, Power Management。
共有兩種不同類型的問題。一方面是核心的 ACPI 程式碼包含無法及時偵測到的錯誤。在這種情況中,將會有可供下載的解決方案。問題通常是因 BIOS 而起。有時,會刻意在 BIOS 中整合與 ACPI 規格不符的技術,以避免在其他常見作業系統中出現 ACPI 實作錯誤。會在黑名單中將那些在 ACPI 實行中有重大錯誤的硬體元件記錄下來,以避免 Linux 核心對這些元件使用 ACPI。
發生問題時要做的第一件事是更新 BIOS。若電腦未開機,以下其中一個開機參數可能有用︰
不使用 ACPI 來設定 PCI 裝置。
僅執行一個簡單的資源組態。不將 ACPI 用於其他目的。
關閉 ACPI。
有些較新的機器 (尤其是 SMP 系統及 AMD64 系統) 需透過 ACPI 以正確設定硬體。關閉這些機器的 ACPI 會發生隨之而來的問題。
有時,透過 USB 或 FireWire 連接的硬體會另機器混淆。如果機器拒絕開機,則拔除所有不需要的硬體插頭,並再試一次。
開機後,可使用 dmesg -T | grep -2i acpi 指令來監控系統的開機訊息 (或所有訊息,因為也可能是 ACPI 以外的因素所導致的問題)。如果在分析 ACPI 表格時發生問題,可以將最重要的表格 DSDT (Differentiated System Description Table,區分系統描述表) 替換為改良版本。在此情況中,會忽略 BIOS 的錯誤 DSDT。程序在 第 29.4 節 「疑難排解」 中描述。
在核心組態中,有個啟用 ACPI 除錯訊息的切換。如果具有 ACPI 除錯功能的核心已編譯並安裝,則會發出詳細資訊。
如果您曾遇到 BIOS 問題或硬體問題,建議您聯絡製造商。尤其是哪些一直未提供 Linux 支援的製造商,更應該出面解決這些問題。唯有讓製造商得知他們有不少使用 Linux 的客戶,他們才會嚴肅地處理這些問題。
http://tldp.org/HOWTO/ACPI-HOWTO/ (詳細的 ACPI HOWTO,內含 DSDT 修補程式)
http://www.acpi.info (進階組態與電源介面規格)
http://acpi.sourceforge.net/dsdt/index.php (Bruno Ducrot 的 DSDT 修補程式)
在 Linux 中,可在不需使用硬碟時,讓硬碟完全進入睡眠狀態,或是讓硬碟以更省電、更安靜的方式來運作。在目前的筆記型電腦中,您不用手動關閉硬碟,因為它們會在不用的時候自動進入省電操作模式。不過,如果您想最大限度地省電,可以使用 hdparm 指令嘗試下面的幾種方法。
該指令能修改各種硬碟設定。-y 選項能立即將硬碟切換到待命模式。-Y 能讓它進入睡眠。hdparm -s x 則會讓硬碟閒置一段時期後關閉。如下所示取代 x:0 會停用此機制,使得硬碟持續執行。1 到 240 的值將乘以 5 秒。241 到 251 的值則是以 30 分鐘為一個單位,依序從 30 分鐘的閒置到 11 倍的 330 分鐘的閒置。
可以使用 -B 選項來控制硬碟內部的省電選項。可從 0 到 255 中選取一個值,以最大化省電效果或最大化電力輸出。其結果視硬碟用途而定,難以評估。如果要減少硬碟噪音,請使用 -M 選項。從 128 到 254 中選取一個值,以決定要安靜或快速。
通常,要讓硬碟進入睡眠不是件容易的事。在 Linux 中,會有多個程序寫入硬碟中,因而重複喚醒硬碟。因此,有必要去瞭解 Linux 如何處理那些要寫入硬碟的資料 首先,會將所有資料在 RAM 中做緩衝處理。pdflush 精靈會監控此緩衝區。當資料到達特定的時間限制,或當緩衝區已填滿至某一程度時,會將緩衝區的內容注入硬碟。緩衝區的大小則動態地由記憶體地的大小及系統負載來決定。依預設,pdflush 會設成較短的間隔,以最大化資料的完整性。pdflush 每 5 秒檢查一次緩衝區,並將資料寫入硬碟。以下變數較為重要:
/proc/sys/vm/dirty_writeback_centisecs
包含 pdflush 執行緒喚醒前的延遲時間 (以百分之一秒為單位)。
/proc/sys/vm/dirty_expire_centisecs
定義最遲應在其後將改動分頁寫出的時間框架。預設值為 3000,即 30 秒。
/proc/sys/vm/dirty_background_ratio
pdflush 開始寫入改動分頁之前改動分頁的最大百分比。預設值為 5%。
/proc/sys/vm/dirty_ratio
改動分頁超過此總記憶體的百分比時,系統會強制執行程序以在其時間片段內將改動寫入緩衝區,而不是繼續寫入改動。
變更 pdflush 精靈的設定會損害資料的完整性。
除了這些程序之外,Btrfs、Ext3、Ext4 記錄檔案系統及其他檔案系統不經由 pdflush 便將中繼資料寫入硬碟,也會使得硬碟無法減速。為了避免這類情形,正在開發適用於行動裝置的核心延伸程式。若要使用該延伸,請安裝 laptop-mode-tools 套件。如需詳細資料,請參閱 /usr/src/linux/Documentation/laptops/laptop-mode.txt。
另一個重要因素在於啟動程式的行為方式。例如,好的編輯器會定期為修改中的檔案,將隱藏備份檔寫入硬碟,因而喚醒硬碟。停用這類功能可能會傷害資料的完整性。
在這一點上,postfix 郵件精靈會使用 POSTFIX_LAPTOP 變數。如果將此變數設為 yes,postfix 會減少存取硬碟的頻率。
在 SUSE Linux Enterprise Desktop 中,這些技術由 laptop-mode-tools 控制。
所有錯誤訊息和警示均記錄在可以使用 journalctl 指令查詢的系統日誌中 (如需詳細資訊,請參閱第 15 章 「journalctl:查詢 systemd 日誌」)。下列幾節涵蓋了一些最常見的問題。
請參閱核心來源以瞭解您的處理器是否受支援。您需要特殊核心模組或模組選項以啟用 CPU 頻率控制。如果 kernel-source 套件已安裝,則此資訊可在 /usr/src/linux/Documentation/cpu-freq/* 中找到。
http://en.opensuse.org/SDB:Suspend_to_RAM — 如何使「暫停寫入到 RAM」正常工作
http://old-en.opensuse.org/Pm-utils — 如何修改一般暫停架構