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.

2013. május 20.

Windows másodlagos lemezre

A Windows telepítőnek van egy borzasztó rossz szokása: Az első merevlemez legelején létrehoz egy 100Mb-os rendszerindító partíciót, amit se áthelyezni, se kihagyni nem lehet. Általában ezzel nem szoktunk foglalkozni, de van amikor kénytelenek vagyunk ezt a problémát megkerülni.

Egy Samsung Series 5 Chronos S700Z3C gépen állt elő a helyzet, hogy a gép elsődleges lemeze egy 15Gb-os alaplapra forrasztott SSD, amiről a gép BIOS-a nem képes bootolni. Mivel a Windows erre a lemezre teszi a rendszerindítót akkor is ha a rendszer második lemezre kerül, a telepítés lefutása után a gépet nem lehet beindítani.

Megoldásként telepítés előtt létre kell hozni a másodlagos lemezen egy partíciót amely megfelel a rendszerindításra. Ezután a grafikus telepítő felrakja a rendszert végül a korábban létrehozott partícióra kézzel telepíthető a windows rendszerindító. A grafikus telepítő által létrehozott indító az elsődleges lemezről törölhető.

Előkészítés

A grafikus telepítőben nem lehet letiltani az indítópartíció létrehozását, tehát az első lemez elejére mindenképpen létre fogja azt hozni! Figyelni kell rá hogy az első és a kiválasztott másodlagos lemez is üres legyen, mert azokról minden adat el fog veszni.

Kézi particionálás

Ha a gép készen áll a telepítésre, elindítható a Windows lemezről, de telepítés helyett a helyreállítás menüt (System recovery) azon belül pedig a helyreállító eszközök közül a parancssort (Command line) kell választani. A partíciók kezelését itt a DISKPART parancs kiadásával lehet megkezdeni. Ez egy parancssoros programot indít el amiben a LIST DISK parancs segítségével listázhatóak a lemezeket.

Elsődleges lemez törlése

Az elsődleges lemez törléséhez meg kell keresni azt (DISK 0) és kiválasztani szerkesztésre a SEL DISK 0 paranccsal. A LIST PART paranccsal ellenőrizhető hogy mi található a lemezen mert erről a lemezről minden adat el fog veszni! Ha bármilyen megőrizni kívánt adat található rajta, ki kell lépni a telepítőből és  másolatot készíteni róla! A lemez a CLEAN parancs segítségével üríthető ki, helyet adva rajta a rendszerindító partíciónak:
LIST DISK
SEL DISK 0
LIST PART
CLEAN

Másodlagos lemez előkészítése


Ismét a LIST DISK segítségével kereshető meg az a lemez, amiről a Windowst a jövőben indítani szeretnénk. Két lemez esetén ez a DISK 1,  ezt ki kell választani a SEL DISK 1 paranccsal. Erről a lemezről is minden adatot törölni kell. (CLEAN parancs)
Ennek a lemeznek az elején szükség lesz egy 100Mb-os (Windows 8 esetén 350Mb-os) helyre a rendszerindítónak. Ennek létrehozása majd formázása meg:
CREATE PART PRIMARY SIZE=100
FORMAT FS=NTFS QUICK 

Ezek után ki lehet lépni a partíciókezelőből (EXIT) miután a gép újraindítása szükséges.

Telepítés

A fenti műveletek elvégzése után a Windows grafikusan telepíthető. A telepítést egyedi üzemmódban (Custom) kell végezni, és fontos hogy a másodlagos lemezre kell telepíteni. A lemez elején a particionálás során látható lesz az előbbiekben elkészített 100Mb fenntartott hely, ezt nem szabad módosítani!

Befejezés

Betűjelek kiosztása

Miután a telepítő felmásolta a fájlokat újraindul, de a rendszert nem kell betölteni. Ismét újra kell indítani a gépet a telepítőlemezről és a korábban már használt parancssort választani. Ismét a partíciókezelőbe (DISKPART) kell belépni ahol a LIST VOL paranccsal listázható az összes partíció.
Az elsődleges lemez kiválasztása után (SEL DISK 0 parancs) törölhető róla a rendszerindító amit a grafikus telepítő helyezett el. (CLEAN parancs).
Egy betűjel (X) egy partíciónak a kiválasztása után az ASSIGN LETTER=X paranccsal adható. Erre a rendszerindító és a windowst tartalmazó lemeznél is szükség lesz. Legyen B: betűjele a rendszerindító helyének:
SEL DISK 1
SEL PART 1
ASSIGN LETTER=B
Majd legyen a megkeresése után legyen W: betűjele a partíciónak amire a Windows került telepítésre.
LIST PART
SEL PART 2
ASSIGN LETTER=W
Ezek után bezárható a partícionálás. (EXIT)

A rendszerindító telepítése

A fentiek szerint kiosztott betűjelek mellett, az X:\WINDOWS rendszert kell indítani a B: partícióról. A rendszerindítót ekkor a következő paranccsal lehet telepíteni:
BCDBOOT W:\WINDOWS /S B:

A művelet befejezése után a gépet újraindítva azon már a másodlagos lemezről fog indulni a Windows rendszer, így grafikusan befejezhető a telepítés.