ACPI je zkratka z Advanced Configuration and Power Interface. ACPI umožňuje operačnímu systému nastavit a kontrolovat spotřebu jednotlivých hardwarových součástí. Svou funkcí nahrazuje jak PnP tak APM. Část ACPI zodpovědná za inicializaci hardwaru není v této kapitole popsána.
BIOS poskytuje tabulku obsahující informace o jednotlivých komponentech a metodách přístupu. Tyto informace pak použijte operační systém např. k přiřazení přerušení či aktivaci nebo deaktivaci tohoto zařízení. Jaké operace může operační systém provést, záleží na implementaci BIOSu. Záznamy ACPI o nalezení a použití tabulky najdete v souboru /var/log/boot.msg. Detekované a zavedené ACPI tabulky jsou zapsány do /var/log/boot.msg. Více o této problematice najdete v části
33.3.4 – „Možné problémy“.
Když jádro detekuje při startu ACPI BIOS,
ACPI se automaticky aktivuje (a APM deaktivuje). Některé starší počítače važdují pro spuštění ACPI zadání parametru jádra acpi=on. Počítač musí podporovat ACPI 2.0
nebo vyšší. Zda se ACPI aktivovalo, zjistíte ze záznamu jádra v souboru
/var/log/boot.msg.
Zavádění modulů obstarává startovací skript ACPI démona. Pokud se při zavádění některého modulu objeví problémy, je možné ho vyřadit zápisem v souboru /etc/sysconfig/powersave/common.
Hlášení modulů, která vám umožní zjistit detekované komponenty, najdete v systémovém záznamu (/var/log/messages).
/proc/acpi nyní obsahuje řadu souborů s informacemi o stavu systému a možných změnách. Některé funkce se stále vyvíjejí a nejsou stále plně funkční. Podpora řady dalších funkcí je závislá na implementaci výrobce.
Všechny soubory (kromě dsdt a fadt)
lze číst pomocí příkazu cat. V řadě souborů lze nastavení měnit, použít můžete např. příkaz echo. U nastavení vhodných hodnot pro X Window bude příkaz vypadat takto:
echo X ><soubor>.
K přístupu k těmto informací vždy používejte příkaz powersave. Nejdůležitější soubory s nastaveními správy napájení jsou:
Základní informace o ACPI
Doba, kdy má dojít k probuzení. Nastavení je bezpředmětné v případě, že probuzení nefunguje. V současné době není tato funkce plně podporována.
Poskytuje informace o možných stavech uspání. V současné době jsou funkční pouze S1 (standby) a S5 (vypnout, neuklízet): echo 1 > /proc/acpi/sleep.
Zde jsou ukládány záznamy o všech událostech. Ty jsou vykonávány démony 'acpid' nebo 'ospmd'. Pokud k souboru nepřistupuje žádný démon, události lze číst příkazem cat /proc/acpi/event (ukončení stisknutím Ctrl-C.
tento soubor obsahuje ACPI tabulky DSDT a FADT. Soubor lze číst pomocí acpidmp, acpidisasm a dmdecode.
Příklad: acpidmp DSDT | acpidisasm.
Je připojen AC adaptér?
Detailní informace o stavu baterií.
Tento adresář obsahuje informace o přepínačích.
Ukazuje aktivitu větráčku. Lze ho také manuálně vypnout/spustit zapsáním 0 (zapnutý) nebo 3 (vypnutý) do tohoto souboru. V případě vysoké teploty může jádro toto nastavení přepsat.
Adresář s podadresáři pro každý procesor ve vašem systému.
Informace o úsporách energie procesoru.
Informace o stavu procesoru.
Zde se dá povolit lineární přiškrcení procesoru.
Nastavení limitů při použití omezení výkonu a přiškrcení procesoru. Nacházejí se zde jak systémové tak uživatelské limity. Příkazem echo 1:5 > /proc/acpi/processor/*/limit předejdete použití stavů P0 nebo T0--T4.
Podadresáře pro jednotlivé teplotní zóny. termální zóna je oblast s určitými teplotními vlastnostmi, číslem a jménem určeným výrobcem zařízení. Velká část funkcí bohužel není implementována. Nejvhodnější ovládání je stále přímo prostřednictvím BIOSu. Některé z následujících nastavení mohou být pouze teoretické.
Současná teplota teplotní zóny.
Stav může být ok,
aktivní nebo pasivní chlazení. Vše je ok
v případě ovládání větráčku nezávisle na ACPI.
Volba výchozího chlazení v případě nasazení kontroly ACPI. Může být aktivní (méně úsporné, ale výkonnější) nebo pasivní(méně výkonné, ale úsporné).
Nastavení teploty pro pasivní nebo aktivní chlazení, uspání nebo bezpečnostní vypnutí.
Hodnota v temperature není automaticky obnovována se změnou teploty, přepněte na . Příkaz
echo X > /proc/acpi/thermal_zone/*/polling_frequency
zapíše aktuální hodnotu každých X second.
Nastavením X=0 polling deaktivujete.
Žádné z těchto nastavení není nutné provádět ručně. Použít můžete buď přímo Powersave démona (powersaved) nebo některou z aplikací jako powersave, kpowersave nebo wmpowersave. Více informací najdete v části 33.3.3 – „Nástroje ACPI“. Protože powersaved obsahuje všechny funkce staršího démona acpid, není již démon acpid potřebný.
V případe procesoru lze snížit spotřebu energie třemi různými způsoby a v závislosti na operačním režimu lze tyto metody kombinovat. Nižší spotřeba vede k nižšímu zahřívání procesoru a méně častému spouštění větráčků.
Technologie nastavení frekvence a napětí PowerNow! a
Speedstep byly navrženy společnostmi AMD a Intel. Tyto technologie jsou implementována také v procesorech jiných výrobců. Současné snížení frekvence a napětí vede k více jak lineárním úsporám energie, což znamená, že při snížení frekvence na polovinu, je spotřeba energie méně než poloviční. Technologie jsou závislé na APM nebo ACPI a vyžadují pro nastavení frekvence příslušného démona. Nastavení lze provést v adresáři
/sys/devices/system/cpu/*/cpufreq/.
Pomocí této technologie lze přenastavit procento signálů časovače pro CPU. V případě 25% přiškrcení je vynechán každý čtvrtý impuls a k procesoru se dostane pouze 87.5% obvyklých signálů. Úspora energie je však menší než lineární. Obvykle se přiškrcování používá, pokud není dostupná změna frekvence nebo je nutné dosáhnout maximální úspory energie. Tato technologie vyžaduje kontrolu zvláštním procesem. Systémové rozhraní je v
/proc/acpi/processor/*/throttling.
Operační systém v případě nečinnosti procesor uspí zasláním příkazu halt. Uspání má stavy C1, C2 a C3. V nejekonomičtějším stavu C3 je zastavena také synchronizace vyrovnávací paměti procesoru a operační paměti. Tento stav je tedy možné nastavit pouze v případě, že žádné zařízení nepřistupuje k operační paměti a nemění její obsah. Některé ovladače vylučují uvedení do stavu C3. Aktuální stav můžete zjistit v souboru /proc/acpi/processor/*/power.
Změna frekvence a přiškrcování jsou učiněné pouze při velkém zatížení procesoru, protože u nevytíženého procesoru je automaticky aplikován ekonomický režim C. V případě pracujícího procesoru je doporučená metoda spoření energie změna frekvence. Ve většině případů totiž není procesor zcela vytížen a může bez problémů pracovat i na nižší frekvenci. Obvykle je nejvhodnější dynamická změna frekvence. Statické nastavení má význam pouze pokud stálá nižší frekvence vede k významným úsporám energie nebo pokud je potřeba, aby byl počítač dobře chlazený a tichý.
Přiškrcovaní je metoda poslední volby, např. v případě potřeby maximální vydrže baterií. Některé systémy nemusí při větším přiškrcení běžet korektně. Přiškrcení nemá žádný smysl, pokud je procesor málo vytížen.
V systému SUSE Linux jsou tyto technologie kontrolovány pomocí démona Powersave. Nastavení je popsáno v části 33.5 – „Balík powersave“.
K dispozici je řada více či méně komplexních ACPI nástrojů pro zobrazení informací jako např. stav baterií nebo teplota (acpi, klaptopdaemon, wmacpimon atd.), nástrojů umožňujících přístup ke struktuře /proc/acpi nebo pomáhajících monitorovat změny (akpi,
acpiw, gtkacpiw) a také nástroje pro editaci ACPI tabulek v BIOSu(balíček pmtools).
V zásadě se můžete setkat se dvěma základními typy problémů. V prvním případě může jít o selhání podpory ACPI v jádře. V takovém případě, hned jak bude k dispozici oprava, můžete problém vyřešit stažením a instalací novějšího typu jádra. Druhý typ problému je spojen s BIOSem počítače. Ne všichni výrobci bohužel správně dodržují ACPI specifikaci. Jejich zařízení pak nefungují správně. Zařízení s chybnou implementací ACPI jsou zařazeny na černou listinu linuxového jádra. Jádro pak pro tato zářízení ACPI nepoužije.
První krok, který byste při řešení problému s ACPI měli udělat, je update BIOSu. Tím můžete vyřešit mnoho problémů. Pokud se počítač nespouští správně, můžete použít jeden z parametrů jádra:
Nepoužívat ACPI pro nastavená PCI zařízení.
Provést jen základní nastavení. Nepoužívat ACPI k ničemu jinému.
Vypnout ACPI.
V dalším kroku pečlivě prostudujte startovací záznamy. To můžete udělat např. příkazem dmesg | grep -2i acpi (nebo si nechte zobrazit všechny záznamy, protože chyba může být zapřičiněna něčím jiným). Pokud při parsování ACPI tabulky dojde k chybě, lze přepsat nejdůležitější tabulku – DSDT. To způsobí, že DSDT BIOSu bude ignorována. Jde však o značně složitý úkol, který by měl provádět pouze expert. Pro některé počítače jsou opravené DSDT tabulky dostupné na Internetu.
Při nastavení jádra máte možnost nastavit vytváření ladicích zpráv ACPI. Pokud jste překompilovali a nainstalovali jádro s ACPI laděním, mohou být výpisy jádra cennými informacemi při hledání chyby.
V případě problémů s BIOSem nebo hardwarem je vždy užitečné kontaktovat výrobce zařízení. Ne všichni výrobci jsou sice schopní poskytnout pomoc v případě podpory Linuxu, ale vždy je dobré je o svém problému informovat. Pokud se výrobce setká s větším počtem stížností na funkci svého výrobku, je větší pravděpodobnost, že chybu opraví. Pokud chcete, můžete také informovat výrobce svého hardwaru, že vám na něm Linux funguje bez jakýchkoliv problémů.
Dodatečnou dokumentaci najdete na následujících stránkách:
http://www.cpqlinux.com/acpi-howto.html (podrobné ACPI HOWTO a DSDT opravy)
http://www.intel.com/technology/iapc/acpi/faq.htm (ACPI FAQ @Intel)
http://acpi.sourceforge.net/ (ACPI4Linux projekt)
http://www.poupinou.org/acpi/ (DSDT opravy od Bruna Ducrota)