/proc/acpi详细介绍
本文轉(zhuǎn)載于:https://blog.csdn.net/gaojy19881225/article/details/80027213
目錄
前言
一、使用 ACPI
二、控制 CPU 性能
三、ACPI 工具
四、故障診斷
更多信息
前言
ACPI(高級(jí)配置和電源接口)支持操作系統(tǒng)設(shè)置和控制各個(gè)硬件部件。 ACPI 可以取代 PnP 和 APM。 它提供有關(guān)電池、AC 適
配器、溫度、風(fēng)扇和系統(tǒng)事件(例如 “合上機(jī)蓋” 或 “電池電量低”)的信息。
BIOS 提供包含有關(guān)各個(gè)部件和硬件訪問方法信息的表。 操作系統(tǒng)使用這些信息執(zhí)行指派中斷或激活和取消激活部件等任務(wù)。 因
為操作系統(tǒng)執(zhí)行 BIOS 中儲(chǔ)存的命令,所以功能取決于 BIOS 實(shí)施。 /var/log/boot.msg?中報(bào)告了 ACPI 能夠檢測(cè)并裝載的
表。?有關(guān)對(duì) ACPI 問題進(jìn)行故障診斷的詳細(xì)信息,請(qǐng)參見第?28.3.4?節(jié) “故障診斷”。
一、使用 ACPI
如果內(nèi)核在引導(dǎo)系統(tǒng)時(shí)檢測(cè)到 ACPI BIOS,則會(huì)自動(dòng)激活 ACPI。某些較舊的計(jì)算機(jī)可能需要引導(dǎo)參數(shù)?acpi=force。 計(jì)算機(jī)必須支持 ACPI 2.0 或更高版本。 檢查?/var/log/boot.msg?中的內(nèi)核引導(dǎo)消息,了解是否已激活了 ACPI。
隨后,必須裝載多個(gè)模塊。 這是由 Aacpid 的啟動(dòng)腳本完成的。 如果這些模塊中的任何一個(gè)模塊引起問題,則可以在?/etc/sysconfig/powersave/common?中排除相應(yīng)模塊的裝載或卸載。系統(tǒng)日志 (/var/log/messages) 包含模塊的消息,使您了解檢測(cè)到了哪些組件。
/proc/acpi?目前包含多個(gè)文件,這些文件提供有關(guān)系統(tǒng)狀態(tài)的信息,也可用于更改某些狀態(tài)。 某些功能仍在開發(fā)中,所以尚不能使用,而對(duì)某些功能的支持主要取決于制造商的實(shí)施。
通過?cat?可以讀取所有文件(dsdt?和?fadt?除外)。 在某些文件中,可使用?echo(例如?echo?X > file)來修改設(shè)置,以指定適用于 X 的值。能夠簡(jiǎn)化訪問這些值的其中一種可行方法就是使用?powersave?命令,它將充當(dāng) Powersave 守護(hù)程序的前端。 下面介紹一些最重要的文件:
/proc/acpi/info
有關(guān) ACPI 的一般信息。
/proc/acpi/alarm
這里指定應(yīng)將系統(tǒng)從休眠狀態(tài)喚醒的時(shí)間。 當(dāng)前不完全支持此功能。
/proc/acpi/sleep
提供有關(guān)可能的休眠狀態(tài)的信息。
/proc/acpi/event
在這里報(bào)告所有事件并由 Powersave 守護(hù)程序 (powersaved) 對(duì)這些事件進(jìn)行處理。 如果沒有任何守護(hù)程序訪問該文件,則可以使用?cat?/proc/acpi/event?讀取事件(如短暫?jiǎn)螕綦娫窗粹o或合上機(jī)蓋)(用?Ctrl+C終止)。
/proc/acpi/dsdt?和?/proc/acpi/fadt
這些文件包含 ACPI 表 DSDT(區(qū)分系統(tǒng)說明表和 FADT(固定 ACPI 說明表)。 可以使用?acpidmp、acpidisasm?和?dmdecode?讀取這些文件。 包?pmtools?中提供了這些程序及其文檔。 例如,acpidmpDSDT | acpidisasm。
/proc/acpi/ac_adapter/AC/state
顯示是否連接了 AC 適配器。
/proc/acpi/battery/BAT*/{alarm,info,state}
有關(guān)電池狀態(tài)的詳細(xì)信息。 通過將?info?中的?last full capacity?與?state?中的?remaining capacity?進(jìn)行比較來讀取電量水平。 一個(gè)更方便的方法是使用?第?28.3.3?節(jié) “ACPI 工具”?中引入的特殊程序之一。 可以在?alarm?中指定電量水平,達(dá)到該電量水平將觸發(fā)電池事件(例如警告、低和嚴(yán)重)。
/proc/acpi/button
該目錄中包含各種切換模式的相關(guān)信息,比如便攜式計(jì)算機(jī)機(jī)蓋和按鈕。
/proc/acpi/fan/FAN/state
顯示風(fēng)扇當(dāng)前是否處于活動(dòng)狀態(tài)。 將?0(開)或?3(關(guān))寫入此文件可以手動(dòng)激活或取消激活風(fēng)扇。 但是,當(dāng)系統(tǒng)變得過熱時(shí),內(nèi)核中的 ACPI 代碼和硬件(或 BIOS)將覆蓋此設(shè)置。
/proc/acpi/processor/*
為系統(tǒng)中的每個(gè) CPU 保留了一個(gè)單獨(dú)的子目錄。
/proc/acpi/processor/*/info
有關(guān)處理器省電選項(xiàng)的信息。
/proc/acpi/processor/*/power
有關(guān)當(dāng)前處理器狀態(tài)的信息。?C2?旁邊的星號(hào)表示處理器處于空閑狀態(tài)。這是最常見的狀態(tài),可以從?usage?值中觀察到。
/proc/acpi/processor/*/throttling
可用于設(shè)置處理器時(shí)鐘的節(jié)流。 通常,可以將節(jié)流分為 8 個(gè)級(jí)別。 這與 CPU 的頻率控制無關(guān)。
/proc/acpi/processor/*/limit
如果守護(hù)程序自動(dòng)控制性能(已過時(shí))和節(jié)流,則可以在這里指定最大限制。 某些限制是由系統(tǒng)確定的。 某些限制可由用戶進(jìn)行調(diào)整。
/proc/acpi/thermal_zone/
每個(gè)熱區(qū)有單獨(dú)的子目錄。 熱區(qū)是具有類似熱屬性的區(qū)域,其編號(hào)和名稱由硬件制造商指定。 但是,很少實(shí)施 ACPI 提供的許多功能。 而溫度控制通常是由 BIOS 處理的。 因?yàn)殛P(guān)系到硬件的使用壽命,所以操作系統(tǒng)很少有機(jī)會(huì)進(jìn)行干預(yù)。 因此,部分文件只具有理論價(jià)值。
/proc/acpi/thermal_zone/*/temperature
熱區(qū)的當(dāng)前溫度。
/proc/acpi/thermal_zone/*/state
此狀態(tài)指出一切是否?ok?或 ACPI 是采用?active?散熱還是?passive?散熱。 對(duì)于獨(dú)立于 ACPI 的風(fēng)扇控制,此狀態(tài)始終是?ok。
/proc/acpi/thermal_zone/*/cooling_mode
選擇由 ACPI 控制的散熱方法。 選擇被動(dòng)散熱方式(性能較低,但很經(jīng)濟(jì))還是主動(dòng)散熱方式(全部性能,但有風(fēng)扇噪音)。
/proc/acpi/thermal_zone/*/trip_points
允許您確定溫度限制,達(dá)到這些溫度限制將觸發(fā)特定操作(例如,被動(dòng)散熱或主動(dòng)散熱、暫停 (hot) 或關(guān)閉 (critical))。 DSDT 中定義了可能的操作(取決于設(shè)備)。 ACPI 規(guī)范中確定的臨界點(diǎn)是?critical、hot、passive、active1?和?active2。 即使不是實(shí)施所有臨界點(diǎn),也必須始終在此文件中以此順序輸入它們。 例如,項(xiàng)?echo?90:0:70:0:0 > trip_points?將?critical?的溫度設(shè)置為?90,將?passive?的溫度設(shè)置為?70(所有溫度以攝氏度為單位)。
/proc/acpi/thermal_zone/*/polling_frequency
如果在溫度改變時(shí)沒有自動(dòng)更新?temperature?中的值,請(qǐng)?jiān)谶@里切換巡回檢測(cè)方式。 使用命令?echoX > /proc/acpi/thermal_zone/*/polling_frequency?將每?X?秒查詢一次溫度。 設(shè)置?X=0?禁用巡回檢測(cè)。
不需要手動(dòng)編輯這些設(shè)置、信息和事件。 這可以通過 Powersave 守護(hù)程序 (powersaved) 及其各種前端(例如 powersave、kpowersave 和 wmpowersave)來完成。 請(qǐng)參見第?28.3.3?節(jié) “ACPI 工具”。
二、控制 CPU 性能
CPU 可以采用三種省電方法。 根據(jù)計(jì)算機(jī)的運(yùn)行方式,還可以將這三種方法結(jié)合起來使用。 省電還意味著系統(tǒng)溫度不會(huì)升得過高并且激活風(fēng)扇的頻率會(huì)降低。
頻率和電壓調(diào)節(jié)
PowerNow!?和?Speedstep?是 AMD 和 Intel 為這一技術(shù)指定的名稱。 但是,其他制造商的處理器中也應(yīng)用了這一技術(shù)。 CPU 的時(shí)鐘頻率及其核心電壓同時(shí)降低,因而采用這一技術(shù)所節(jié)省的電量遠(yuǎn)遠(yuǎn)超過了線性省電量。 這意味著,如果頻率減半(一半的性能),所節(jié)省的電量遠(yuǎn)不止一半。 此技術(shù)獨(dú)立于 APM 或 ACPI。 可使用兩種主要的方法來執(zhí)行 CPU 頻率調(diào)節(jié):通過內(nèi)核本身或通過用戶空間應(yīng)用程序。 因此,可以在?/sys/devices/system/cpu/cpu*/cpufreq/?下設(shè)置不同的內(nèi)核管理器。
userspace governor
如果設(shè)置了用戶空間管理器,則內(nèi)核會(huì)將對(duì) CPU 頻率調(diào)節(jié)的控制指定給用戶空間應(yīng)用程序(通常是守護(hù)程序)。 在 SUSE Linux Enterprise 分發(fā)中,此守護(hù)程序是?powersaved?程序包。 使用此實(shí)施時(shí),將根據(jù)當(dāng)前系統(tǒng)負(fù)載調(diào)整 CPU 的頻率。 默認(rèn)情況下,將使用某個(gè)內(nèi)核實(shí)施。 但是,在某個(gè)硬件上或?qū)τ谔囟ㄌ幚砥骰蝌?qū)動(dòng)器,用戶空間實(shí)施仍是唯一的工作解決方法。
ondemand governor
它是動(dòng)態(tài) CPU 頻率策略的內(nèi)核實(shí)施,應(yīng)該可在大多數(shù)系統(tǒng)上運(yùn)行。 只要系統(tǒng)負(fù)載過高,CPU 頻率將立即增加。 它在系統(tǒng)負(fù)載較低時(shí)也較低。
conservative governor
此管理器與按需實(shí)現(xiàn)相似,只是使用更保守的策略。對(duì)于 CPU 頻率增加之前的特定時(shí)間內(nèi),系統(tǒng)的負(fù)載必須很高。
powersave governor
靜態(tài)地將 cpu 頻率設(shè)置為最低。
performance governor
靜態(tài)地將 cpu 頻率設(shè)置為最高。
節(jié)流時(shí)鐘頻率
此技術(shù)將忽略一定百分比的 CPU 時(shí)鐘信號(hào)脈沖。 如果節(jié)流 25%,則將忽略四分之一的脈沖,如果節(jié)流 87.5%,則只有八分之一的脈沖到達(dá)處理器。 但是,采用這種方法所節(jié)省的電量稍微低于線性省電量。 通常,只有在頻率調(diào)節(jié)不可用或要最大程度節(jié)省電量時(shí)才使用節(jié)流。 此技術(shù)也必須由特殊的進(jìn)程控制。 系統(tǒng)接口是?/proc/acpi/processor/*/throttling。
使處理器進(jìn)入休眠狀態(tài)
操作系統(tǒng)在處理器不執(zhí)行任何任務(wù)時(shí)使處理器進(jìn)入休眠狀態(tài)。在這種情況下,操作系統(tǒng)向 CPU 發(fā)送一個(gè)?halt命令。 有三種狀態(tài):C1、C2 和 C3。最經(jīng)濟(jì)的狀態(tài)是 C3,在這種狀態(tài)下,連處理器高速緩存與主存之間的同步都將暫停。 因此,只有在沒有任何其他設(shè)備通過總線主控芯片活動(dòng)修改主儲(chǔ)存器的內(nèi)容時(shí)才能應(yīng)用此狀態(tài)。 某些驅(qū)動(dòng)程序禁止使用 C3。 當(dāng)前狀態(tài)顯示在?/proc/acpi/processor/*/power?中。
只有當(dāng)處理器忙時(shí),才需要進(jìn)行頻率調(diào)節(jié)和節(jié)流,這是因?yàn)楫?dāng)處理器處于空閑狀態(tài)時(shí)總是會(huì)應(yīng)用最經(jīng)濟(jì)的 C 狀態(tài)。 如果 CPU 忙,則建議采用的省電方法是頻率調(diào)節(jié)。 處理器經(jīng)常只在部分負(fù)載的狀態(tài)下工作。 在這種情況下,可以以較低的頻率運(yùn)行。 通常,由內(nèi)核按需管理器 (kernel on demand governor) 或一個(gè)守護(hù)程序(如 powersaved)控制的動(dòng)態(tài)頻率調(diào)節(jié)是最佳方法。如果使用電池工作或如果您想讓計(jì)算機(jī)冷卻或安靜,則靜態(tài)設(shè)置為低頻率會(huì)非常有用。
節(jié)流應(yīng)作為最后沒有辦法時(shí)采用的方法,例如,雖然系統(tǒng)負(fù)載很高,但為延長(zhǎng)電池工作時(shí)間而采用節(jié)流。 但是,如果節(jié)流程度過高,某些系統(tǒng)將不會(huì)正常運(yùn)行。 此外,如果 CPU 處理的任務(wù)量很少,則 CPU 節(jié)流就沒什么作用。
在 SUSE Linux Enterprise 中,這些技術(shù)是由 powersave 守護(hù)程序控制的。 對(duì)此配置進(jìn)行了說明。第?28.5?節(jié) “powersave 包”
三、ACPI 工具
一系列相對(duì)全面的 ACPI 實(shí)用程序包含這樣一些工具:只顯示信息(例如,電池電量水平和溫度)的工具(acpi、klaptopdaemon 和 wmacpimon 等)、簡(jiǎn)化對(duì)?/proc/acpi?中的結(jié)構(gòu)進(jìn)行訪問的工具或協(xié)助監(jiān)視更改的工具(akpi、acpiw 和 gtkacpiw)以及用于編輯 BIOS 中 ACPI 表的工具(包?pmtools)。
四、故障診斷
問題有兩種不同的類型。 一種是內(nèi)核的 ACPI 代碼可能包含未及時(shí)檢測(cè)出的錯(cuò)誤。 在這種情況下,可以通過下載獲得解決方案。 而另一種更常見的問題,是由 BIOS 引起的。 有時(shí),會(huì)故意將一些不符合 ACPI 規(guī)范的配置集成在 BIOS 中,用于避免其他常用操作系統(tǒng)中 ACPI 實(shí)施中的錯(cuò)誤。 在 ACPI 實(shí)施中有嚴(yán)重錯(cuò)誤的硬件部件會(huì)被記錄在一個(gè)黑名單中,防止 Linux 內(nèi)核對(duì)這些部件使用 ACPI。
在遇到問題時(shí),首先要做的是更新 BIOS。 如果計(jì)算機(jī)根本未引導(dǎo),則使用以下引導(dǎo)參數(shù)之一可能會(huì)解決問題:
pci=noacpi
不使用 ACPI 配置 PCI 設(shè)備。
acpi=ht
只執(zhí)行簡(jiǎn)單的資源配置。 不要將 ACPI 用于其他目的。
acpi=off
禁用 ACPI。
| 不使用 ACPI 引導(dǎo)會(huì)出現(xiàn)問題 | |
| 某些較新的計(jì)算機(jī)(特別是 SMP 系統(tǒng)和 AMD64 系統(tǒng))需要 ACPI 以正確配置硬件。 在這些計(jì)算機(jī)上,禁用 ACPI 可能會(huì)產(chǎn)生問題。 | |
引導(dǎo)后,用命令?dmesg| grep -2i acpi?來監(jiān)視系統(tǒng)的引導(dǎo)消息(或所有消息,因?yàn)閱栴}可能不是由 ACPI 引起的)。 如果在分析 ACPI 表時(shí)出錯(cuò),則最重要的表 (DSDT) 可替換為更高的版本。在這種情況下,將忽略 BIOS 中有問題的 DSDT。 中對(duì)這一過程進(jìn)行了介紹。第?28.5.4?節(jié) “查錯(cuò)”
在內(nèi)核配置中,可以使用開關(guān)來激活 ACPI 調(diào)試消息。 如果已編譯并安裝了具有 ACPI 調(diào)試功能的內(nèi)核,則支持對(duì)詳細(xì)信息執(zhí)行錯(cuò)誤專家搜索。
如果遇到 BIOS 或硬件問題,則最好與制造商聯(lián)系。 特別是如果制造商不常對(duì) Linux 提供支持,他們就應(yīng)該面對(duì)這些問題。 只有在制造商意識(shí)到有很多客戶在使用 Linux 時(shí),他們才會(huì)重視這一問題。
更多信息
有關(guān) ACPI 的其他文檔和幫助:
-
http://www.cpqlinux.com/acpi-howto.html(詳細(xì)的 ACPI HOWTO 文檔,包含 DSDT 增補(bǔ)程序)
-
http://www.intel.com/technology/iapc/acpi/faq.htm?(ACPI FAQ @Intel)
-
http://acpi.sourceforge.net/(Sourceforge 中的 ACPI4Linux 項(xiàng)目)
-
http://www.poupinou.org/acpi/(Bruno Ducrot 開發(fā)的 DSDT 增補(bǔ)程序)?
總結(jié)
以上是生活随笔為你收集整理的/proc/acpi详细介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: XML文件格式解析
- 下一篇: /proc/asound详细介绍