Tartalomjegyzék
Az energiagazdálkodási funkciók nemcsak a hordozható eszközök akkumulátoros használata során fontosak, hanem asztali rendszerekben is. Az ACPI (Advanced Configuration and Power Interface, speciális beállítási és energiagazdálkodási csatoló) minden mai modern számítógépen (hordozhatón, asztalin és kiszolgálón egyaránt) elérhető. Mindenféle energiagazdálkodási technológia használatához megfelelő hardverre és BIOS-ra van szükség. A legtöbb hordozható gép, illetve a modern asztali és kiszolgáló gépek túlnyomó része megfelel ezeknek a követelményeknek. Lehetőség van a CPU frekvenciájának szabályozására is, az energiával való takarékoskodás, vagy a zajszint csökkentése érdekében.
Az energiagazdálkodási funkciók nemcsak a hordozható eszközök akkumulátoros használata során fontosak, hanem asztali rendszerekben is. A fő funkciók és használatuk az ACPI esetén:
nem támogatott.
Ez a mód a teljes rendszerállapotot a RAM-ba írja. Ezután az egész rendszer a RAM kivételével alvó üzemmódba kerül. Ebben az állapotban a számítógép nagyon keveset fogyaszt. Az állapot előnye, hogy a munka ugyanonnan folytatható pár másodpercen belül anélkül, hogy újra kellene indítani a rendszert és az alkalmazásokat. Ez a funkció az S3 jelű ACPI-állapotnak felel meg. Az állapot támogatása még mindig fejlesztés alatt áll, ezért nagymértékben függ a hardvertől.
Ebben a működési módban a teljes rendszer állapota kiírásra kerül a merevlemezre, majd a rendszer kikapcsolódik. Az aktív adatok kiírásához kell, hogy legyen egy, a RAM méretével legalább megegyező méretű cserepartíció. Ebből az állapotból 30-90 másodperc alatt lehet helyreállni. Visszaállításra kerül a felfüggesztés előtti állapot. Egyes gyártók ennek a módnak hibrid változatait használják (mint például az IBM Thinkpadek RediSafe funkciója). A megfelelő ACPI-állapot az S4. Linux alatt a lemezre felfüggesztést az ACPI-től független kernelrutinok végzik.
Az ACPI ellenőrzi az akkumulátor töltöttségi állapotát és információt szolgáltat róla. Ezenfelül képes szabályozni a kritikus töltöttségi állapot esetén végrehajtandó tevékenységeket.
A rendszer leállítását követően a számítógép kikapcsol. Ez különösen akkor fontos, ha automatikus leállítás történik röviddel az akkumulátor lemerülése előtt.
Ami a CPU-t illeti, háromféleképpen lehet takarékoskodni az energiával: az órajelfrekvencia és a feszültség szabályozásával (PowerNow! és Speedstep) néven is ismeretes), a frekvencia korlátozásával és a processzor alvó állapotba (C-állapotba) hozásával. 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 ACPI (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 felváltja a Power Management Plug and Play (PnP), valamint az Advanced Power Management (APM) megoldásokat. 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 31.2.3. - Hibaelhárítás részben olvasható.
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.
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. Általában, a kernel által felügyelt dinamikus órajel használata a legjobb megoldás.
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.
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 ACPI-alrendszertő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. A kernelben lévő vezérlők különböző feltételek alapján (egy sor előre beállított energiagazdálkodási séma a processzorról) képesek megváltoztatni a CPU órajelét. A következő vezérlők találhatók a CPUfreq alrendszerben:
A maximális teljesítmény érdekében a CPU frekvenciája statikusan a lehető legmagasabbra van állítva. Következésképpen, ez a vezérlő nem az energiagazdálkodásra koncentrál.
A CPU frekvenciája statikusan a lehető legalacsonyabbra van állítva. Ez közvetlen hatással lehet a teljesítményre, hiszen a processzor órajele a terheléstől függetlenül sosem fog a megadott érték fölé menni.
A dinamikus órajelkezelés megvalósítása a kernelben: a vezérlő figyeli a processzor kihasználtságát. Amint elér egy bizonyos küszöbértéket, a vezérlő az órajelet a legmagasabb értékre állítja. Amikor a kihasználtság a küszöbszint alá esik, akkor a következő alacsonyabb frekvenciát használja. Ha a rendszer továbbra is kihasználatlan, akkor az órajelet ismét alacsonyabb értékre állítja, amíg el nem éri a legalacsonyabb szintet.
Hasonlít az Igény szerinti vezérlőhöz, mivel a processzor kihasználtságának függvényében dinamikus állítja annak órajelét, azonban ezt több lépésben teszi lehetővé. Amennyiben a processzor teljesítménye elér egy küszöbszintet, akkor a vezérlő nem vált azonnal a legmagasabb elérhető órajelre (ahogyan azt az igény szerinti vezérlő teszi), csak egy lépéssel magasabb órajelre.
A vezérlőkkel kapcsolatos fájlok a /sys/devices/system/cpu/cpu*/cpufreq/ könyvtárban találhatók. Amennyiben a számítógépben több processzor is található, akkor a /sys/devices/system/cpu/ könyvtárban minden processzorhoz külön alkönyvtár található: cpu0, cpu1 stb. Amennyiben a rendszer igény szerinti vagy konzervatív vezérlőt használ, akkor ezekhez, a paramétereket tartalmazó alkönyvtárak találhatók a cpufreq könyvtárban.
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 is egy speciális folyamatnak kell vezérelnie. Az órajel-frekvencia korlátozásához (T-állapot) tartozó rendszerillesztés a /proc/acpi/processor/*/throttling.
A modern processzorok néhány energiagazdálkodási móddal rendelkeznek, amit C-állapotnak neveznek. Ezek kihasználják azon lehetőségeket, hogy a tétlen processzor képes az energiamegtakarítás érdekében kikapcsolja a nem használt komponenseit. 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 CPUfreq alrendszer jelenlegi beállításainak megtekintéséhez és módosításához a cpufrequtils használható. A cpufrequtils csomag telepítését követően a cpufrq-info parancs használható a CPUfreq kernelinformáció megjelenítéséhez. A cpufreq-set parancs segítségével lehet módosítani a CPUfreq beállításokat. A következő parancs root felhasználóval történő futtatásával aktiválni levet az Igény szerinti vezérlő (On-demand Governor):
cpufreq-set -g ondemand
A cpufreq-info és a cpufreq-set parancsokkal kapcsolatos további információ a vonatkozó man oldalakon található, illetve a cpufreq-info --help vagy a cpufreq-set --help parancs futtatásával.
Egy hasznos eszköz a rendszer energiafogyasztásának vizsgálatára a powertop csomag, amely segít azonosítani a szükségtelenül magas energiafogyasztás okait (például, az olyan folyamatok azonosításában, amelyek felelősek a processzor tétlen állapotából történő felébresztésében) és segítenek a rendszer optimalizálásában, ezek elkerülése érdekében. Ez egyaránt támogatja az Intel és AMD processzorokat is. A powerTOP projekttel kapcsolatos részletes információ a projekt weboldalán található: http://www.lesswatts.org/projects/powertop/.
A fentiekben említett eszközök mellett, az alábbi ACPI-eszközök állnak rendelkezésre:
Az olyan információk, mint az akkumulátor töltöttségi állapotának, vagy számítógép hőmérsékleti adatainak megjelenítéséhez az acpi parancs használható. A kapcsolók listája az acpi --help parancs használatával listázható ki.
A BIOS-ban lévő ACPI-táblák módosításához az acpica csomag telepítése szükséges.
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:
Ne használjon a rendszer ACPI-t a PCI-eszközök beállításához.
Csak egyszerű erőforrás-konfiguráció történik. Más célokra nem használja a rendszer az ACPI-t.
Az ACPI letiltása.
![]() | 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. | |
Néha a gépet megzavarják az USB vagy FireWire csatolón keresztül csatlakoztatott eszközök. Ha a gép nem hajlandó újraindulni, húzza ki az összes olyan hardvereszközt, ami nem feltétlenül szükséges, és utána próbálkozzon újra.
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 (Differentiaed System Description Table)—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 31.4.1. - Az ACPI aktiválva van, a hardver is támogatja, de a funkciók nem működnek részben olvasható.
Létezik egy kapcsoló, mellyel a kernelkonfiguráció során aktiválható az ACPI hibakeresési üzemmód. 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.
http://tldp.org/HOWTO/ACPI-HOWTO/ (részletes ACPI HOWTO, DSDT javításokkal)
http://www.acpi.info (Advanced Configuration & Power Interface Specification)
http://www.lesswatts.org/projects/acpi/ (Az ACPI4Linux projekt a Sourceforge-on)
http://acpi.sourceforge.net/dsdt/index.php (Bruno Ducrot DSDT-javításai)
Linux-rendszereken a merevlemezek teljesen lekapcsolhatók, ha nincs rájuk szükség, vagy használhatók gazdaságosabb, illetve csendesebb módban. Modern hordozható gépeken nem kell kézzel kikapcsolni a merevlemezeket, mivel automatikusan takarékos üzemmódba kapcsolnak, ha nincsen rájuk szükség. Ha maximális energiatakarékosságra vágyik, akkor érdemes kipróbálni az alábbi módszereket a hdpram parancs segítségével.
Ezzel módosíthatók a merevlemezek különféle beállításai. A -y paraméter hatására a merevlemez azonnal készenléti módba kapcsol. A -Y elaltatja a merevlemezt. A hdparm -S x parancs hatására bizonyos idejű tétlenség után a merevlemez lelassul. Az x helyére a következők írhatók: A 0 letiltja ezt a mechanizmust, vagyis a merevlemez folyamatosan működik. Az 1 és 240 közötti értékek 5 másodperccel szorzódnak. A 241 és 251 közötti értékek egytől tizenegyszer harminc percet jelentenek.
A merevlemez belső energiagazdálkodási beállításai a -B paraméterrel befolyásolhatók. 0 és 255 közötti értékek adhatók meg, az előbbi a maximális megtakarítás, a másik a maximális átvitel. Az eredmény függ a merevlemeztől és általában nehéz objektíven megítélni. A merevlemez lecsendesítésére a -M paraméter használható. A 128 és 254 közötti értékekkel lehet csendes üzemmódról gyors üzemmódra állítani a merevlemezt.
Gyakran nem is olyan egyszerű alvó üzemmódba állítani egy merevlemezt. Linux alatt számos folyamat írja a merevlemezt, és időről időre felébreszti. Éppen ezért fontos tisztában lenni azzal, hogyan is kezeli a Linux a merevlemezre írandó adatokat. Először is, az adatok a memóriában pufferelődnek. Ezt a puffert a pdflush démon figyeli. Amikor az adatok elérnek egy bizonyos korhatárt, vagy ha a puffer egy bizonyos százalékban már fel van töltve, akkor a puffer tartalma kiíródik a merevlemezre. A puffer mérete dinamikus, és függ a memória méretétől, illetve a rendszer terhelésének mértékétől. Alapértelmezés szerint a pdflush rövid intervallumokra van beállítva, az adatintegritás maximális védelme érdekében. A puffert 5 másodpercenként ellenőrzi és írja ki az adatokat a merevlemezre. Az alábbi változók érdemlik a legtöbb figyelmet:
/proc/sys/vm/dirty_writeback_centisecs
Azt a késleltetést adja meg (századmásodpercben), amely után egy pdflush-szál felébred).
/proc/sys/vm/dirty_expire_centisecs
Azt az időt adja meg (századmásodpercben), amely után egy módosult lapot legkésőbb ki kell írni. Az alapértelmezés 3000, vagyis 30 másodperc.
/proc/sys/vm/dirty_background_ratio
A módosult oldalak maximális százaléka, ennek elérése után a pdflush megkezdi a kiírásukat. Az alapértelmezés 5%.
/proc/sys/vm/dirty_ratio
Ha a módosult oldalak meghaladják az összmemória itt megadott százalékát, akkor a folyamatok rá lesznek kényszerítve, hogy a módosult puffereket a saját időszeletükben írják, ahelyett, hogy folytathatnák az írást.
![]() | Az adatintegritás veszélyeztetése |
|---|---|
A pdflush démon beállításainak módosítása veszélyezteti az adatok integritását. | |
A fenti folyamatoktól függetlenül, a naplózó fájlrendszerek, mint például a ReiserFS, Ext3 és az Ext4 saját metaadataikat a pdflush-tól függetlenül is kiírják a merevlemezre, ami szintén megakadályozza a merevlemez leállítását. Ennek elkerülésére készült egy speciális kernelbővítés mobil eszközökhöz. Ezen bővítés használatához telepíteni kell a laptop-mode-tools csomagot és az ezzel kapcsolatos további információ a /usr/src/linux/Documentation/laptops/laptop-mode.txt fájlban található.
Fontos tényező az is, hogyan viselkednek az aktív programok. A szövegszerkesztők többsége például időről időre rejtett biztonsági mentéseket írnak a merevlemezre az éppen módosított fájlról, viszont ezzel folyton felébresztik a lemezt. Az ilyen funkciók az adatintegritás kárára kikapcsolhatók.
Ide tartozik, hogy a postfix leveleződémon használja a POSTFIX_LAPTOP változót. Ha ennek a változónak az értéke yes, akkor a postfix sokkal ritkábban végez műveletet a merevlemezen.
Minden hibaüzenet és riasztás a /var/log/messages fájlban naplózódik. Az alábbi fejezetben a leggyakoribb problémákat.
Amennyiben valamilyen probléma merül fel az ACPI kapcsán, akkor érdemes a dmesg kimenetben valamilyen ACPI-specifikus üzenetet keresni a dmesg|grep -i acpi parancs használatával.
Lehet, hogy egy BIOS-frissítés megoldja a problémát. Látogassa meg a gép gyártójának a webhelyét, keresse meg a legfrissebb BIOS-verziót és telepítse. Érdeklődjön a gyártónál, hogy az megfelel-e a legfrissebb ACPI-előírásoknak. Ha a hiba a BIOS-frissítés után is fennáll, folytassa az alábbiak szerint a BIOS helytelen DSDT-táblájának egy friss DSDT-re cseréléséhez:
Eljárás 31.1. A BIOS DSDT táblájának frissítése
Az alábbi eljárás használata előtt győződjön meg róla, hogy a következő csomagok telepítésre kerültek-e: kernel-source, acpica, és mkinitrd.
Töltse le a rendszerhez tartozó DSDT-t a http://acpi.sourceforge.net/dsdt/index.php címről. A fájl ne legyen tömörítve és legyen már lefordítva. Erre az .aml (ACPI machine language, ACPI gépi nyelv) fájlkiterjesztés utal. Amennyiben ez a helyzet, folytassa a 3. lépéssel.
Amennyiben a letöltött tábla fájlkiterjesztése .asl (ACPI source langugae), akkor azt a következő paranccsal lehet lefordítani:
iasl -sa file.asl
Az elkészült DSDT.aml fájlt bárhova elmásolható (javasolt helye: /etc/DSDT.aml).
Módosítsa az /etc/sysconfig/kernel fájlt és írja át megfelelően a DSDT-fájl elérési útját.
Indítsa el az mkinitrd parancsot. Ha eltávolítja a kernelt és az mkinitrd paranccsal létrehoz egy initrd fájlt, akkor a módosított DSDT lesz alkalmazva és betöltve a rendszer indulásakor.
Ellenőrizze a kernelforrásban, hogy a processzor támogatott-e. Lehet, hogy egy speciális kernelmodul vagy modulparaméter használatára van szükség a CPU-órajelszabályozás bekapcsolásához. Amennyiben a kernel-source telepítve van, ezek az információk elérhetők a következő helyen: /usr/src/linux/Documentation/cpu-freq/*.
ACPI-rendszereken lehetnek problémák a felfüggesztéssel és a készenléttel hibás DSDT-implementáció (BIOS) miatt. Ebben az esetben frissítse a BIOS-t.
Amikor a rendszer megpróbálja leállítani a hibás modulokat, a rendszer megakad, vagy a felfüggesztési esemény nem kerül aktiválásra. Ugyanez történhet, ha nem állítja le a sikeres felfüggesztést megakadályozó modulokat vagy szolgáltatásokat. Mindkét esetben meg kell állapítani, hogy melyik hibás modul akadályozta meg az alvó üzemmód bekapcsolását. A /var/log/pm-suspend.log naplófájl részletes adatokat tartalmaz arról, hogy mi történik és mik lehetnek a hibák. Módosítsa az /usr/lib/pm-utils/defaults fájlban a SUSPEND_MODULES változót a felfüggesztés vagy készenlét előtti problémás modulok eltávolításához.
A felfüggesztési és készenléti folyamat módosításával kapcsolatos további információ: http://old-en.opensuse.org/Pm-utils és http://wiki.opensuse.org/SDB:Suspend_to_RAM.
http://www.acpi.info (Advanced Configuration and Power Interface Specification)
http://www.lesswatts.org/projects/acpi/ (Az ACPI4Linux projekt a Sourceforge-on)
http://acpi.sourceforge.net/dsdt/index.php (Bruno Ducrot DSDT-javításai)
http://wiki.opensuse.org/SDB:Suspend_to_RAM – A memóriába felfüggesztés beüzemelése
http://old-en.opensuse.org/Pm-utils – Az általános felfüggesztési keretrendszer módosítása