33.3. ACPI

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“.

33.3.1. ACPI v praxi

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:

/proc/acpi/info

Základní informace o ACPI

/proc/acpi/alarm

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.

/proc/acpi/sleep

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.

/proc/acpi/event

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.

/proc/acpi/dsdt a /proc/acpi/fadt

tento soubor obsahuje ACPI tabulky DSDT a FADT. Soubor lze číst pomocí acpidmp, acpidisasm a dmdecode.

Příklad: acpidmp DSDT | acpidisasm.

/proc/acpi/ac_adapter/AC/state

Je připojen AC adaptér?

/proc/acpi/battery/BAT*/{alarm,info,state}

Detailní informace o stavu baterií.

/proc/acpi/button

Tento adresář obsahuje informace o přepínačích.

/proc/acpi/fan/FAN/state

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.

/proc/acpi/processor

Adresář s podadresáři pro každý procesor ve vašem systému.

/proc/acpi/processor/*/info

Informace o úsporách energie procesoru.

/proc/acpi/processor/*/power

Informace o stavu procesoru.

/proc/acpi/processor/*/throttling

Zde se dá povolit lineární přiškrcení procesoru.

/proc/acpi/processor/*/limit

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.

/proc/acpi/thermal_zone/

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é.

/proc/acpi/thermal_zone/*/temperature

Současná teplota teplotní zóny.

/proc/acpi/thermal_zone/*/state

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.

/proc/acpi/thermal_zone/*/cooling_mode

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é).

/proc/acpi/thermal_zone/*/trip_points

Nastavení teploty pro pasivní nebo aktivní chlazení, uspání nebo bezpečnostní vypnutí.

/proc/acpi/thermal_zone/*/polling_frequency

Hodnota v temperature není automaticky obnovována se změnou teploty, přepněte na polling mode. 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ý.

33.3.2. Nastavení výkonu CPU

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ů.

Frekvence a napětí

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/.

Přiškrcení

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.

Uspání procesoru

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“.

33.3.3. Nástroje ACPI

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).

33.3.4. Možné problémy

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:

pci=noacpi

Nepoužívat ACPI pro nastavená PCI zařízení.

acpi=oldboot

Provést jen základní nastavení. Nepoužívat ACPI k ničemu jinému.

acpi=off

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ů.

33.3.4.1. Další informace

Dodatečnou dokumentaci najdete na následujících stránkách: