2013. május 26.

Ubuntu 13.04 energiatakarékosság

Egy laptop telepítése kapcsán mindig felmerül hogy mit kell tenni egy laptop telepítése után hogy a Linux rendszer takarékosan bánjon az energiával. Ezeket futottam át a saját NP700Z3C gépem telepítése kapcsán, de a beállítások bármilyen laptopon hasznosak lehetnek.

Az említett gépen az eredeti ~1,5 órás Linux alatt üzemidőt ~5 órára sikerült növelni, a vezeték nélküli hálózat és a gép folyamatos használata mellett! Az elérhető időtartam tehát a gyárival nagyjából azonos - a beállítások elvégzése nélkül viszont csapnivaló.

Friss rendszermag

A legnagyobb és utólag legnehezebb orvosolható kritérium hogy a jó energiatakarékossághoz viszonylag friss rendszermagra volt szükség. Az összes további beállítást elvégeztem Debian Wheezy alatt is (Linux 3.2), de akkumulátoros üzemidőnek csak nagyjából a felét-kétharmadát sikerült elérni az Ubuntu 13.04-es (Linux 3.8) változatához képest.

Grafikus meghajtók

A legnagyobb fogyasztó, és így a legfontosabb energiatakarékossági beállítás is a grafikus kártya. Az NP700Z3C-t nVidia Optimusal szerelik, ehhez Linux alatt a Bumblebee projekt nyújt támogatást. A módszer lényege hogy a gépben található két kártya között elosztja a feladatokat és lekapcsolja a felesleges grafikus erőforrásokat.
Ubuntu alatt a telepítéshez (külön tárolóból) kész csomagok állnak rendelkezésre:
sudo add-apt-repository ppa:bumblebee/stable
sudo apt-get update
sudo apt-get install bumblebee bumblebee-nvidia virtualgl linux-headers-generic
Az Ubuntu Wiki leírása a Bumblebeeről (angol)

Beépített illesztőprogramok

A linux rendszermag a legtöbb periféria energiatakarékos módjához tartalmaz támogatást, ezek legtöbbje viszont kompatibilitási okokból alapértelmezetten le van tiltva. A letiltott funkciókat a rendszerindítást paraméterezve tudjuk engedélyezni.
Az Ubuntu Wiki leírása az energiatakarékossági funkciókról (angol)

PCIe aktivitás-kezelés

A PCIe portokon való energiatakarékoskodás. Ha valami miatt nincs alapértelmezetten bekapcsolva, kézzel megtehetjük:
pcie_aspm=force 
A rendszer alapesetben megpróbál optimálisan energiát megtakarítani. Ezt tovább szigoríthatjuk:
pcie_aspm.policy=powersave
Ekkor minden esetben a lehető legkisebb fogyasztású üzemmódot fogja használni. Ez okozhat némi teljesítmény-csökkenést.

Intel i RC6: Processzor feszültségcsökkentés

Az Intel i sorozatú mobil processzorai képesek lecsökkentett feszültségszinten várakozni amikor nincsen számítási feladat. Ennek a funkciónak 3 szintje (RC6, RC6p, RC6pp) létezik. A mélyebb szintek alacsonyabb feszültséget, tehát több energiamegtakarítást jelentenek. Alapértelmezetten csak az RC6 engedélyezett, mert az RC6p és RC6pp bizonyos gépeken problémát okozhatnak.
A funkció az i915.i915_enable_rc6 paraméterrel állítható,
0: letiltás,
1: RC6 alapértelmezett szint,
3: RC6, RC6p: mély feszültségek engedélyezése,
7: RC6, RC6p, RC6pp: minden feszültségszint engedélyezése
Érdemes a legnagyobb olyan szintre állítani amelyen nem jelentkeznek problémák. Például:
i915.i915_enable_rc6=7

Intel LVDS downclock: Órajel csökkentés

Az LVDS órajel csökkentés engedélyezése. Csakúgy mint az előbbi, bizonyos gépeken hibákat okozhat, ha a képernyő vibrálását tapasztaljuk, próbáljuk meg ezt kikapcsolni. Engedélyezés:
i915.lvds_downclock=1

Intel processzor energiatakarékosság

Általános energiatakarékossági funkciók be vagy kikapcsolása intel processzorokon. Az alapértelmezett érték változó, érdemes lehet kézzel bekapcsolni. Paraméter:
i915.powersave=1

Intel hangkártya takarékosság

Ha a hangkártya nincsen használatban, várakozó üzemmódba lehet kapcsolni, így energiát takarítva meg. Ennek bekapcsolásához két paraméter szükséges.
A takarékoskodási funkció bekapcsolása:
snd_hda_intel.power_save=1
Az időlimit, ahány másodperc csend után a hangkártya takarékos üzemmódba lép: snd_hda_intel.power_save=1

Paraméterek beillesztése

A kiválasztott rendszermag-paraméterek beillesztéséhez a /etc/default/grub fájlt kell szerkeszteni. A GRUB_CMDLINE_LINUX_DEFAULT kezdetű sorban adhatunk hozzá beállításokat. Például:
# Eredeti rendszerindítási paraméterek
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
# Energiatakarékossági funkciók engedélyezve
GRUB_CMDLINE_LINUX_DEFAULT="pcie_aspm=force i915.i915_enable_rc6=7 i915.lvds_downclock=1 i915.powersave=1 snd_hda_intel.power_save_controller=1 snd_hda_intel.power_save=1 quiet splash"
Mentés után az sudo update-grub paranccsal frissíthetjük a rendszerindítót az új beállításokra.
Ha valamelyik beállítás gondot okozna, az indítóban (GRUB) e betűt nyomva egy alkalomra szerkeszthetjük ezeket. A paraméterek törlése után F10-el indítható a rendszer de a fenti szerkesztést és frissítést ekkor is el kell végezni, mert a rendszer következő alkalommal ismét az itt megadott beállításokkal fog indulni.

Energiatakarékossági démonok

Az illesztőprogramok megfelelő beállításán kívül feltétlenül szükség van egy olyan háttérszolgáltatásra ami az eszközök energiatakarékosságát kezeli. Az Ubuntu eleve tartalmaz ilyet (pm-utils) ezen kívül több program elérhető tárolókból is (laptop-mode-tools) de egy frissebb és összefogottabb megoldást ad a TLP csomag. Ez kezeli többek között az időlimiteket (dirty timeout, spindown timeout) a processzorok turbó és alvó (idle) üzemmódjait, valamint a feladatok energiatakarékos elosztását (process scheduler) valamint a csatlakoztatott perifériák (USB, PCIe, SATA) üzemmódjait.

Ubuntu alatt a ppa:linrunner/tlp tárolóból telepíthető, de ha a laptop-mode-tools telepítve van, azt előbb törölni kell.
#sudo apt-get purge laptop-mode-tools
sudo apt-add-repository ppa:linrunner/tlp
sudo apt-get update
sudo apt-get install tlp
sudo tlp start
A szolgáltatást a legtöbb esetben ezek után nem kell konfigurálni, amennyiben mégis szeretnénk a /etc/default/tlp fájl szerkesztésével tehetjük ezt meg. A rendszer energiatakarékossági információi és a szolgáltatás állapota a tlp-stat paranccsal kérdezhető le.

Kézi hajtányos energiastatisztika

Ha az automatikus megoldásokon kívül szeretnénk az energiakezeléshez nyúlni, akkor a powertop nevű segédeszközre van szükség.
sudo apt-get install powertop
sudo powertop
A program az akkumulátor adataiból dolgozik, ezért elsősorban a gépet hálózatról leválasztva érdemes használni. Áttekintést kaphatunk a legtöbbet fogyasztó eszközökről, programokról és a processzor állapotairól. Ezen kívül a Tunnables fül alatt megnézhetjük és állíthatjuk egyes eszközök energiatakarékossági üzemmódját. Good (jó) jelöli az energiatakarékosságra, Bad (rossz) jelöli a teljesítményre törekvő eszközöket. Az üzemmódokat át is lehet kapcsolni.

A cikkben található példák és instrukciók Ubuntu 13.04 Raring Ringatil GNOME változatán és Samsung Series 5 Chronos NP700Z3C-S02HU gépen lettek tesztelve.