ACPIACPI

Az ACPI (advanced configuration and power interface, speciális beállítási és energiagazdálkodási csatoló) úgy készült, hogy lehetővé tegye az operációs rendszer számára az egyes hardverelemek beállítását és vezérlését külön-külön. Az ACPI több, mint a PnP és az APM. Információt ad az akkumulátorról, a hálózati adapterről, a hőmérsékletről, a ventilátorokról, valamit a különféle rendszereseményekről, mint a „fedél lecsukása” vagy az „alacsony akkumulátorszint”.

A BIOS információs táblázatokat tartalmaz az egyes komponensekről és a hardver elérési módjáról. Az operációs rendszer ezen információ alapján oszt ki például megszakításokat, illetve aktivál vagy kapcsol ki komponenseket. Mivel az operációs rendszer a BIOS-ban tárolt parancsokat hajtja végre, a funkcionalitás függ a BIOS-változattól. Az ACPI által felismert és betöltött táblákat a /var/log/boot.msg tartalmazza. Az ACPI-problémák hibaelhárításával kapcsolatos további információ a 28.3.4. szakasz - Hibaelhárítás részben olvasható.

ACPI működés közbenACPI működés közben

Ha a kernel ACPI BIOS-t észlel a rendszer indítása közben, az ACPI alrendszer automatikusan aktiválásra kerül. Egyes régebbi gépeknél esetleg szükség lehet az acpi=force rendszerindítási paraméterre. A számítógépnek támogatnia kell az ACPI 2.0 vagy frissebb változatát. Az, hogy az ACPI-alrendszer aktiválásra került-e, a /var/log/boot.msg fájl üzeneteiből állapítható meg.

Ezután további modulokat kell betölteni. Ez ACPI-démon (acpid) indító parancsfájljával tehető meg. Ha e modulok bármelyike problémát okoz, a megfelelő modul betöltése vagy leállítása kihagyható az /etc/sysconfig/powersave/common fájlból. A rendszernapló (/var/log/messages) tartalmazza a modulok üzeneteit, így látható, hogy mely komponenseket sikerült felismerni.

A /proc/acpi könyvtárban egy sor fájl található, amelyek a rendszer állapotáról nyújtanak információt, illetve az állapotok egy részének módosítására is alkalmasak. Bizonyos funkciók még nem működnek, mert még fejlesztés alatt állnak, és egyes funkciók támogatása nagymértékben függ a gyártó megvalósításától

Minden fájl (a dsdt és az fadt kivételével) elolvasható a cat paranccsal. Egyes fájlok beállításai módosíthatók az echo paranccsal: az echo X > fájl_neveparanccsal például megadhatja X megfelelő értékeit. Az egyik lehetőség ezen értékek elérésére a Powersave démon felhasználóoldali felületét biztosító powersave parancs. A legfontosabb fájlok a következők:

/proc/acpi/info

Általános információk az ACPI-ről.

/proc/acpi/alarm

Itt adható meg, hogy mikor ébredjen fel a rendszer egy alvó állapotból. Jelenleg ez a funkció még nem teljesen támogatott.

/proc/acpi/sleep

A lehetséges alvó állapotokról nyújt információt.

/proc/acpi/event

Minden esemény itt kerül rögzítésre és itt dolgozza fel a Powersave démon (a powersaved). Ha egy démon sem nyúl hozzá ehhez a fájlhoz, akkor a különféle események, mint például a tápkapcsoló gomb rövid megnyomása, vagy a fedél lecsukása a cat /proc/acpi/event paranccsal olvasható ki (Ctrl-C billentyűkombinációval lehet befejezni).

/proc/acpi/dsdt és /proc/acpi/fadt

Ezek a fájlok tartalmazzák a DSDT (differentiated system description table, megkülönböztetett rendszerleíró tábla) és FADT (fixed ACPI description table, rögzített ACPI-leíró tábla) nevű ACPI-táblákat. Ezek az acpidmp, acpidisasm és dmdecode parancsokkal olvashatók ki. Ezek a programok és leírásuk a pmtools csomagban találhatók. Példa a használatukra: acpidmp DSDT | acpidisasm.

/proc/acpi/ac_adapter/AC/state

Azt jeleníti meg, hogy a hálózati adapter csatlakoztatva van-e.

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

Részletes információ az akkumulátor állapotáról. A töltöttségi szint az info fájl last full capacity (utolsó teljes kapacitás) értékének és a state fájl remaining capacity (maradék kapacitás) értékének összehasonlításával kerül meghatározásra. Ennek egy kényelmesebb módja a ACPI-eszközökhöz tartozó, a 28.3.3. szakasz - ACPI-eszközök részben bemutatott speciális programok valamelyikének használata. Azt, hogy milyen töltöttségi szint esetén kerüljön egy akkumulátorral kapcsolatos esemény (figyelmeztetés, alacsony, kritikus) aktiválásra, az alarm részben adható meg.

/proc/acpi/button

Ez a könyvtár a különféle kapcsolókról tartalmaz információt.

/proc/acpi/fan/FAN/state

Azt jelzi, hogy a ventilátor éppen aktív-e. A ventilátor kézzel úgy indítható és állítható le, ha 0 (be) vagy 3 (ki) értéket ír a fáljba. Ezt a beállítást azonban mind a kernelben található ACPI-kód, mind a hardver (vagy a BIOS) felülírja, ha túlságosan felmelegszik a rendszer.

/proc/acpi/processor/*

Külön alkönyvtár található a rendszer minden egyes CPU-ja számára.

/proc/acpi/processor/*/info

Információ a processzor energiatakarékossági lehetőségeiről.

/proc/acpi/processor/*/power

Információ a processzor jelenlegi állapotáról. A C2 melletti csillag azt jelzi, hogy a processzor üresen jár. Ez a leggyakoribb állapot, amint az a usage (használat) értékből ki is derül.

/proc/acpi/processor/*/throttling

A processzor órajelének korlátozására használható. Általában a korlátozás nyolc szinten lehetséges. Ez a CPU frekvenciájának vezérlésétől független.

/proc/acpi/processor/*/limit

Ha a teljesítmény (elavult) és a korlátozás (throttling) vezérlését egy démon végzi automatikusan, akkor itt adhatók meg a maximális korlátok. Egyes korlátokat a rendszer határoz meg. Másokat a felhasználó is állíthat.

/proc/acpi/thermal_zone/

Külön alkönyvtár létezik minden egyes hőmérsékleti zóna számára. A hőmérsékleti zóna egy hasonló hőmérsékleti tulajdonságokkal rendelkező terület, amelynek számát és neveit a hardvergyártó határozza meg. Az ACPI által kínált számos lehetőség azonban ritkán kerül megvalósításra. Ehelyett a hőmérsékletet hagyományosan a BIOS vezérli. Az operációs rendszernek nem sok lehetősége marad a beavatkozásra, hiszen a hardver élettartamáról van szó. Éppen ezért az alábbi leírások egy része csupán elméleti jelentőséggel bír.

/proc/acpi/thermal_zone/*/temperature

A hőmérsékleti zóna aktuális hőmérséklete.

/proc/acpi/thermal_zone/*/state

Ez az állapot azt jelzi, hogy minden OK vagy azt, ha az ACPI aktív vagy passzív hűtést alkalmaz. ACPI-független ventilátorvezérlés esetén ez az állapot mindig OK.

/proc/acpi/thermal_zone/*/cooling_mode

Az ACPI által vezérelt hűtési módot választja ki. Passzív (kisebb teljesítmény, gazdaságosabb) és aktív (maximális teljesítmény, zajos ventilátor) választható.

/proc/acpi/thermal_zone/*/trip_points

Lehetővé teszi hőmérsékletkorlátok megadását bizonyos műveletekhez, mint például az aktív vagy passzív hűtés, felfüggesztés (forró) vagy leállítás (kritikus). A lehetséges műveletek a DSDT-ben vannak megadva (eszközfüggő). Az ACPI-specifikációban meghatározott váltási pontok a critical (kritikus), a hot (forró), a passive (passzív), az active1 (aktív 1) és active2. Még ha nincs is mindegyik megvalósítva, akkor is ebben a sorrendben kell beírni őket a fájlba. Például az echo 90:0:70:0:0 > trip_points bejegyzés a critical hőmérsékletet 90 fokra állítja, a passive hőmérsékletet pedig 70 fokra (minden fok Celsiusban van megadva).

/proc/acpi/thermal_zone/*/polling_frequency

Ha a temperature értéke nem kerül automatikusan frissítésre, amikor a hőmérséklet megváltozik, itt lehet bekapcsolni a lekérdezéses (polling) módot. Az echo X > /proc/acpi/hőmérsékletzóna/*/lekérdezési_gyakoriság parancs hatására a hőmérséklet X másodpercenként kerül lekérdezésre. Az X=0 letiltja a lekérdezést.

E beállítások, információk és események egyikét sem kell kézzel szerkeszteni. Mindez megtehető a Powersave démonnal (powersaved) és különféle alkalmazásokkal, mint a powersave, a kpowersave és a wmpowersave. Lásd: 28.3.3. szakasz - ACPI-eszközök

A CPU teljesítményének szabályozásaA CPU teljesítményének szabályozása

A CPU-val kapcsolatban háromféle módon lehet energiát megtakarítani. A számítógép működési módjától függően ezek a módszerek esetleg kombinálhatók is. Az energiatakarékosság azt is jelenti, hogy a rendszer kevésbé melegszik fel és a ventilátoroknak is kevesebbet kell működniük.

Frekvencia- és feszültségszabályozás

A PowerNow! és Speedstep az AMD és az Intel márkaneve erre a technológiára, de más gyártók is alkalmazzák processzoraikban. A CPU órajel-frekvenciáját és a magfeszültséget együtt csökkentve hatékonyan mérsékelhető a szükséges energia mennyisége. Ez azt jelenti, hogy a frekvenciát felére csökkentve (fél teljesítmény) a rendszer kevesebb, mint fele annyi energiát fogyaszt. Ez a technológia független az APM- és ACPI-alrendszerektől. Két fő megközelítés van a CPU frekvenciaszabályozására – magával a kernellel, vagy egy felhasználói területen futó alkalmazással. Éppen ezért különböző kernelvezérlők ("governor"-ok) állíthatók be a /sys/devices/system/cpu/cpu*/cpufreq/ alatt.

userspace governor

A felhasználói területen futó irányító (userspace governor) beállítása esetén a kernel átadja a CPU-frekvenciaszabályozás irányítását egy felhasználói területen futó alkalmazásnak, jellemzően egy démonnak. SUSE Linux Enterprise disztribúciókban ez a démon a powersaved csomag. Ha ezt az implementációt használják, akkor a CPU frekvenciája az aktuális rendszerterhelésnek megfelelően lesz szabályozva. Alapértelmezés szerint az egyik kernelimplementáció kerül alkalmazásra. Egyes hardvereken, vagy egyes processzorokkal/illesztőprogramokkal kapcsolatban előfordulhat, hogy csak a felhasználói területi implementáció az egyetlen működő megoldás.

ondemand governor

Ez a kernelimplementáció egy dinamikus CPU frekvencia-irányelvet alkalmaz, és a legtöbb rendszeren megfelelően kell, hogy működjön. Nagy rendszerterhelés esetén a CPU frekvenciáját azonnal megnöveli a rendszer. Alacsony terhelés mellett viszont csökkenti.

conservative governor

Ez az irányító hasonló az igény szerinti (on demand) implementációhoz, csak konzervatívabb szemléletet alkalmaz. A CPU frekvenciájának növeléséhez a terhelésnek meghatározott ideig magasnak kell lennie.

powersave governor

A CPU frekvenciája statikusan a lehető legalacsonyabbra van álítva.

performance governor

A CPU frekvenciája statikusan a lehető legmagasabbra van álítva.

Az órajel-frekvencia korlátozása

A technológia lényege, hogy a CPU-hoz érkező órajelek egy bizonyos százaléka kimarad. 25 százalékos korlátozás mellett minden negyedik impulzus marad ki. 87,5 százalékosnál csak minden nyolcadik impulzus éri el a processzort. Az energiamegtakarítás azonban ebben az esetben egy kicsit kisebb, mint lineáris. Normális esetben csak akkor van szükség korlátozásra (throttling), ha nem áll rendelkezésre a frekvenciaszabályozás, vagy maximális megtakarításra van szükség. Ezt a technológiát szintén egy speciális folyamattal kell vezérelni. A rendszercsatoló a /proc/acpi/processor/*/throttling.

A processzor elaltatása

Az operációs rendszer alvó állapotba hozza a processzort, ha nincs tennivaló. Ebben az esetben az operációs rendszer egy halt parancsot ad ki a CPU-nak. Háromféle állapot van: C1, C2 és C3. A leggazdaságosabb C3 állapotban még a processzor gyorsítótárának és a fő memóriának a szinkronizálása is leáll. Éppen ezért ez az állapot csak akkor használható, ha semmilyen más eszköz nem módosítja a fő memóriát buszvezérlő műveleteken keresztül. Egyes illesztőprogramok meg is akadályozzák a C3 állapot használatát. Az aktuális állapot /proc/acpi/processor/*/power fájlban látható.

A frekvenciaszabályozásnak és a korlátozásnak csak akkor van értelme, ha a processzor dolgozik, hiszen ha üresjáratban van, akkor a leggazdaságosabb C állapotba kerül. Ha a CPU dolgozik, akkor a javasolt energiatakarékossági megoldás a frekvencia szabályozása. A processzor igen gyakran csak korlátozott terhelés alatt áll. Ebben az esetben alacsonyabb frekvencián is működhet. A dinamikus frekvenciaszabályozás legjobb módja általában a kernel által használt igény szerinti irányító, vagy egy démon, mint a powersaved. Statikusan alacsonyabb frekvenciára akkor érdemes állítani a gépet, ha akkumulátorról működik, vagy ha hűvös, csendes módban akarja használni a számítógépet.

Az órajel korlátozása (throttling) csak a legutolsó eszköz legyen, például az akkumulátoros üzemidő meghosszabbítására relatíve nagy rendszerterhelés mellett is. Egyes rendszerek nem futnak simán, ha túlságosan le vannak korlátozva. Szintén nem szükséges az órajel korlátozása, ha egyébként nincs terhelés alatt a CPU.

SUSE Linux Enterprise rendszereken ezeket a technológiákat a powersave démon vezérli. Konfigurációjának leírása 28.5. szakasz - A powersave csomag részben található.

ACPI-eszközökACPI-eszközök

Az ACPI-segédprogramok között találhatók csupán adatokat – például az akkumulátor töltöttségét vagy a hőmérsékletet – kijelző eszközök (acpi, klaptopdaemon, wmacpimon stb.), olyan eszközök, amelyeken keresztül elérhetők a /proc/acpi struktúrái, amelyek segítenek a változások figyelésében (akpi, acpiw, gtkacpiw), illetve olyanok, amelyekkel a BIOS ACPI-táblái módosíthatók (a pmtools csomag).

HibaelhárításHibaelhárítás

Kétféle probléma szokott jelentkezni. Egyrészt a kernel ACPI-kódjában lehetnek időben fel nem derített hibák. Ebben az esetben előbb-utóbb megjelenik egy letölthető javítás. Gyakrabban okoz azonban gondot a BIOS. Egyes esetekben szándékosan vannak beépítve a BIOS-ba eltérések az ACPI-ajánlástól, például az ACPI-megvalósítás vagy más elterjedt operációs rendszerek hibáinak megkerülése érdekében. Az olyan hardverelemek, amelyek igen súlyosan megsértik az ACPI-ajánlást, egy feketelistába kerülnek, és a Linux-kernel nem is próbál ACPI-t használni ezekkel a komponensekkel kapcsolatban.

Hibák észlelése esetén az első teendő a BIOS frissítése. Ha a számítógép el sem indul, az alábbi rendszerindítási paraméterek segíthetnek:

pci=noacpi

Ne használjon a rendszer ACPI-t a PCI-eszközök beállításához.

acpi=ht

Csak egyszerű erőforrás-konfiguráció történik. Más célokra nem használja a rendszer az ACPI-t.

acpi=off

Az ACPI letiltása.

[Warning]Problémák ACPI nélküli rendszerindítás esetén

Egyes újabb gépek (különösen az SMP-rendszerek és az AMD64-rendszerek ) igénylik az ACPI használatát a hardver helyes beállításához. Ezeken a gépeken az ACPI letiltása problémákat okozhat.

A rendszer indítási üzenetei a dmesg | grep -2i acpi paranccsal figyelhetők (vagy akár figyelhető az összes üzenet, hiszen lehet, hogy a problémát nem az ACPI okozza). Ha hiba történik egy ACPI-tábla feldolgozásakor, akkor a legfontosabb tábla – a DSDT – kicserélhető egy javított verzióra. Ebben az esetben a BIOS hibás DSDT-je figyelmen kívül marad. Az eljárás leírása a 28.5.4. szakasz - Hibaelhárítás részben olvasható.

A kernelkonfiguráció során van egy kapcsoló az ACPI hibakeresési üzenetek aktiválására. Ha ACPI-hibakereséssel együtt kerül a kernel lefordításra és telepítésre, akkor a hibákat kereső szakértők extra információhoz juthatnak.

Ha BIOS- vagy hardverproblémákat észlel, mindig jó ötlet a gyártó megkeresése. Még akkor is, ha nem nyújtanak mindig támogatást Linuxhoz, érdemes tudniuk a problémákról. A gyártók csak akkor fogják a problémát komolyan venni, ha tisztába kerülnek vele, hogy ügyfeleik elég nagy számban használnak Linuxot.

További információkTovábbi információk

További dokumentáció és segítség az ACPI-vel kapcsolatban: