2012. március 22., csütörtök

HP4530s Linux - 20 Watt megtakarítás


Nem rég vettem egy új laptopot: a címben is szereplő HP4530s-t, nagyon jó áron sikerült hozzájutnom, és rendkívül elégedett vagyok vele; a várakozásokkal ellentétben nagyon rövid idő alatt sikerült minden hardvert életre kelteni. Természetesen nem véletlenszerűen választottam ki ezt a gépet, SUSE Linux Enterprise 11 rendszerrel is árulják, és a neten egy kis utánaolvasgatás után úgy láttam, hogy elég szépeket írtak a gépről és meglepően kevés hibáról olvashattam.
A legújabb Backports verzióját tettem fel a Crunchbang-nek, a telepítés után minden hardver tökéletesen működött, azonban rövid idő után észleltem, hogy rendkívűl forró a gép és már nagyon hangosak a ventillátorok. Egy rövid pillantással a Conky-ra láttam, hogy majdnem 70 fokos a gép: úgy döntöttem, hogy a rendszer finomhangolásába kezdek. Ekkor a rendszer 28 W-ot fogyasztott, ami miatt körülbelül 40 perc alatt le is merült.

Egy hőmérséklet teszt után láttam, hogy a gép legforróbb része a dedikált AMD Radeon HD 6470M videókártya. Első lépésként tehát ezt kell kikapcsolni:

1. lépés: Radeon HD 6470 videókártya kikapcsolása

Ezt egy vgaswitcheroo nevű programmal tehetjük meg. Ahhoz, hogy ez a program elérhető legyen a gépen (/sys/kernel/debug mappában); először csatoljuk ezt a könyvtárat:
echo "none /sys/kernel/debug debugfs defaults 0 0" | sudo tee -a /etc/fstab
Adjuk hozzá kernel paraméterként Grubhoz a következőt:
modeset=1
Ehhez
sudo gedit /etc/default/grub
és a GRUB_CMDLINE_LINUX_DEFAULT részhez írjuk be az idézőjelek közé.
Ahhoz, hogy a változtatásokat érvénybe léptessük generáljunk új Grubot:
sudo update-grub2
És a biztonság kedvéért, hogy láthassuk majd a vgaswitcheroo programot:
sudo chown $USER /sys/kernel/debug/
és rakjuk be blacklistbe a videókártyát:
echo "blacklist radeon" | sudo tee -a /etc/modprobe.d/blacklist.conf
Majd végül kapcsoljuk ki a rendszer indulásakor a videókártyát:
sudo gedit /etc/rc.local
majd az "exit 0" elé írjuk be a következőt:
modprobe radeon
echo OFF > /sys/kernel/debug/vgaswitcheroo/switch
Ezzel a lépéssel több, mint 10 W-ot nyerhetünk, nálam a fogyasztás itt 17,7 W-ra csökkent.

2. lépés: További kernel paraméterek hozzáadása

Továbbiakban néhány további kernel paramétert adunk a Grub-hoz, amik alapesetben ki vannak kapcsolva, mert néhány hardverkonfigurációnál elméletileg hibákat okozhatnak.
Ezt ugyanúgy tehetjük meg, mint az előző részben:
sudo gedit /etc/default/grub
és a GRUB_CMDLINE_LINUX_DEFAULT részhez idézőjelek közé írjuk be a következőket:
pcie_aspm=force
i915.i915_enable_rc6=1
i915.i915_enable_fbc=1
i915.lvds_downclock=1
Ezek sorban: az első a PCI Express Active-State Power Management bekapcsolása, mely egyes hardvereknél nagy energiamegtakarítást eredményezhet, a második az Intel videókártya RC6 energiatakarékos üzemmódjának engedélyezése, a harmadik a Frame-Buffer Compression engedélyezése, mellyel az Intel videókártya tömöríti a képernyő frissítéséhez használt buffert, így kevesebb memóriát használ a videókártya, az utolsó pedig downclockolja az integrált Intel videókártyát. Az ilyen sorrendben történő alkalmazással lemértem, melyikkel mennyi energiát lehet megtakarítani:
Így változott a fogyasztás: 16,8W -> 11,6W -> 10,8W -> 10,6W. Láthatjuk, hogy ezekkel összesen több, mint 7 W-ot spóroltunk meg.
A kernel paraméterek érvénybe léptetéséhez, új Grub-ot kell generálni:
sudo update-grub2
Majd indítsuk újra a gépet.

3. lépés: Liquorix kernel telepítése

Korábban is használtam ezt a kernelt, tapasztalataim szerint gyorsabb vele a rendszer (és kicsit kevesebbet is fogyaszt). A Crunchbang startup scriptjében (cb-welcome) ugyan már nincs benne, de ezt megoldhatjuk mi magunk is. Az egyszerűség kedvéért találtam egy csomagot, ami .deb csomagként tartalmazza a kernelt és függőségeit. LETÖLTÉS ITT. (32 bit)

Végeredményben 17,6 W-al csökkentettük a rendszer fogyasztását, ami szerintem bárkinek jól jöhet, konnektor szegényes időkben.
További ~2 W-ot nyertem egy korábban már itt az oldalon bemutatott scripttel, amit tovább fejlesztettem, hamarosan azt is publikálom.
Addigis itt a végereményt mutató screenshot, a fogyasztásmérő program a powertop volt:


A fogyasztást tehát 28W-ról 8,4W-ra csökkentettem, ami 19,6W nyereség. Ugyanez használati időben kifejezve: a gép 40 perc helyett 5 és fél órát bír ki. :)
Sok sikert a változtatásokhoz!

Update: [Energiaspóroló szkript]
Update2: CrunchBang 11 "Waldorf" fogyasztása kicsit megnőtt, induláskor 38W-ot fogyasztott, az oldalon leírt optimalizáció során végül 9.63W-ra sikerült lefogyasztani ezt:

Újabb Liquorix kernel telepítése itt.

Források:
Cikk a kernel paraméterekről
Rövid leírás a Vgaswitcheroo-ról (+ kisebb továbbfejlesztés, pl.: igényesebb vgaswitcheroo állító script, magyarázatok)
Liquorix kernel honlapja
A Liquorix kernel: .deb csomagok forrása + 64 bites változat is

4 megjegyzés:

  1. Szia,

    Nagyon jó írás grat:)
    A következő kérdésem lenne, nekem egy HP Dv6 3010eh laptopom van. Integrált Intel és dedikált ATI 5470-es videókártya van benne. Én pont az ATI-t szeretném életre kelteni hogy nagyobb teljesítményem legyen. Tudnál ebben segíteni? Válaszod előre is köszönöm!

    Üdv.:
    Pásztor Márk
    (markpasztor@gmail.com)

    VálaszTörlés
  2. szia,
    először is, ha van vgaswitcheroo-d (ha nincs az írásomban leírt módon életre keltheted) a következő paranccsal megnézheted melyik kártya működik:
    cat /sys/kernel/debug/vgaswitcheroo/switch
    nálam a leírás után a következőt adja:
    0:IGD:+:Pwr:0000:00:02.0
    1:DIS: :Off:0000:01:00.0
    látszik, hogy az integrált kártyát használom (IGD), és az ATI ki van kapcsolva (DIS).
    ezután itt találhatsz egy szkriptet amivel bootolás közben már kiválasztható, hogy melyik kártyát akarod használni:
    https://help.ubuntu.com/community/HybridGraphics
    itt pedig egy olyat amivel akár grafikus felületen tudsz váltani:
    http://asusm51ta-with-linux.blogspot.com/
    sok sikert a műveletekhez! :)

    VálaszTörlés
  3. szia, remekül ment a vga kikapcsolás köszi szépen,viszont néha laggol a gép(ftp-nél és vlc-nél)olyan explorer leállás képpen cselekszik a gép,eltűnik minden majd se kép se hang......tudnál valamit ajánlani hogy ezt hogy tudnám megoldani????nekem is 4530s csak 6490mes vgat kapcsoltam ki core i5 2450mes cpu egy hd 3000es vgaval 4gb ram mellett meg nehogy már szaggasson.és mint-et raktam fel.
    köszi szépen üdv

    VálaszTörlés
    Válaszok
    1. szia,
      szerintem érdemes lenne egy kernel frissítéssel kezdeni (nálam is volt hasonló probléma). próbáld ki a Liquorix kernelt több szempontból jobb, mint az alap kernel, telepítéséről és erről a problémáról írtam már itt:
      http://linuxtutorialok.blogspot.hu/2013/01/crunchbang-waldorf-fagyas-liquorix.html

      Törlés