Portál AbcLinuxu, 2. května 2025 09:28
Poslední verze linuxového jádra nabízejí několik možností, jak snížit spotřebu energie a prodloužit tak například výdrž notebooku na baterie. Jak to nastavit, využít a měřit, se dozvíte v článku.
K vyzkoušení novinek v oblasti šetření energie úpravou jádra mě inspiroval linuxpowertop.org a úryvek Jaderných novin o snížení spotřeby notebooků. Ačkoliv se tento článek snaží být univerzální, přece jen některé funkce či možnosti (powertop, patch Linux-PHC a další) se týkají především platformy Intel. U AMD jsem bohužel na podobný projekt nenarazil, což ovšem neznamená, že s procesory AMD tyto funkce nejsou dostupné.
Snížit odběr energie při chodu z baterie můžeme několika způsoby, jednak na úrovni hardwaru (např. snížení jasu LCD, vypnutí TV-out či Bluetooth) a pak také na úrovni softwaru (jádro, programy).
My se budeme věnovat té náročnější oblasti, která není pro úplné začátečníky - linuxovému jádru. Nejdříve se však podívejme, jakým způsobem lze ušetřit energii bez kompilování jádra. Vzhledem k tomu, že autor používá architekturu x86_64, je možné, že pro architekturu x86 mohou být již některé funkce implementovány přímo v jádře a není potřeba dodatečně patchovat.
Nejjednodušším způsobem, jak snížit spotřebu energie, je snížit jas u LCD na minimum - třeba pomocí xbacklight, čímž lze ušetřit 1 - 3 W. Dalším jednoduchým způsobem je vypnout rozhraní jako TV-out (pokud je standardně zapnut BIOSem) či periférie, které nejsou využívány jako např. Bluetooth či WiFi (ušetří se cca 0,6 - 1 W). Vypnutí TV-out:
#xrandr --output TV --off
Ze programů se budou asi nejvíce hodit Laptop Mode Tools, které jsou skvělé pro snížení spotřeby disku a procesoru. Případně můžeme použít samostatné programy hdparm, cpufrequtils a cpufreqd.
Nyní přejdeme k tomu složitějšímu, k nastavení "úsporného" jádra.
Ke snížení je potřeba nejnovější jádro 2.6.22 a dále jsou použity některé patche, které mohou být označeny za "experimentální", nejsou tedy ještě standardně v jádře či se na nich ještě pracuje, ale počítá se, že budou do jádra zařazeny v nejbližší době. Již nyní je lze však použít na vanilla jádro.
High Resolution Timers - časovače s vysokým rozlišenímČasovače s vysokým rozlišením jsou založeny na implementaci bezčasového [tickless] jádra a také funkci "dynamické Hz" (dyntick). Časovače s vysokým rozlišením (CONFIG_HIGH_RES_TIMERS) umožňují POSIXovým časovačům a funkci nanosleep(), aby byly tak přesné, jak jen to dovoluje hardware (kolem 1μsec na běžném hardwaru). Jde o transparentní funkci - je-li zapnuta, jsou prostě časovače o hodně přesnější než se stávajícím rozlišením v Hz.
Patch hrt obsahuje jak bezčasové jádro (tickless), tak také cpuidle a High Resolution Timers a je k dispozici vždy pro příslušné jádro.
Nejdříve si připravíme vanilla jádro. Stáhneme linux-2.6.22.tar.bz2 a dále opravný patch patch-2.6.22.1.bz2. V pracovním adresáři vytvoříme adresář "pokus", ve kterém se budou nacházet všechny soubory a patche, a ve kterém budeme pracovat.
Rozbalíme jádro:
cd pokus tar xvfj linux-2.6.22.tar.bz2
Dále aplikujeme opravný patch pro jádro:
cd linux-2.6.22 bzcat ../patch-2.6.22.1.bz2 | patch -p1
Aplikace dalších patchů:
patch -Np1 -i ../patch-2.6.22-hrt6.patch patch -Np1 -i ../ondemand-fix.patch patch -Np1 -i ../ahci-link-power-management-2.6.22.patch
Po aplikaci nezbytných patchů můžeme nastavit jádro. Mnoho lidí také používá soubor .config ze své předešlé kompilace jádra, který se upraví již jen o rozšíření poskytnuté čtveřicí patchů - samozřejmě při stejné verzi jádra.
Nastavení jádra v konzoli:
make menuconfig
Přidání funkce časovače s vysokým rozlišením a bezčasového jádra:
Processor type and features ---> [*] Tickless System (Dynamic Ticks) [*] High Resolution Timer Support
Přidání CPU idle:
Power management options ---> CPU idle PM support ---> [*] CPU idle PM support --- Governors [*] 'ladder' governor [*] 'menu' governor
Povolení ondemand či jiného governoru a AMD/Intel ovladače:
Power management options ---> CPU Frequency scaling ---> [*] CPU Frequency scaling [*] 'ondemand' cpufreq policy governor [*] AMD Opteron/Athlon64 PowerNow! [*] Intel Enhanced SpeedStep (deprecated) #pouze pro starší procesory [*] ACPI Processor P-States driver
Pokud chcete pro měření spotřeby použít utilitu powertop, je třeba ještě pro ni v jádru povolit sběr dat - Collect kernel timers statistics.
Kernel hacking ---> [*] Kernel debugging [*] Collect kernel timers statistics
Je třeba nastavit další volby jádra, které jsou potřeba pro správnou funkci vašeho specifického hardwaru. Co a jak víte určitě již sami. Po nastavení můžeme již jádro zkompilovat příkazy:
make bzImage modules modules_install
Po úpravě vašeho bootovacího zavaděče můžete počítač restartovat a vyzkoušet nové funkce. Pro měření spotřeby jsem použil powertop. Spolehlivost měřených výsledků není zaručena (nejedná se o fyzické měření wattmetrem či UPS), k porovnávání však postačí. Nevýhodou powertop je, že funguje pouze na bezčasovém jádře a je určen pro platformu Intel.
Spotřeba na testovacím notebooku při provozu na baterii je nyní při částečně sníženém jasu LCD (nikoliv úplně) cca 16,2 W. Při zcela sníženém jasu LCD, vypnuté WiFi a Bluetooth se spotřeba snížila na nějakých 13,8 - 14,2 W a výdrž baterie přesáhla 3 hodiny a 15 minut. Reálný nárůst času při chodu na baterii je okolo 30 minut v závislosti na množství komponent, které jsou v chodu.
Budu rád, pokud se vám podaří snížit odběr energie a zvýší se doba, po kterou lze notebook používat na baterii, a pokud se podělíte o své případné zkušenosti v diskuzi.
Časem se tyto patche stanou běžnou součástí jádra a nebude již třeba složitějšího nastavování a kompilování. Máme se tedy na co těšit! Zmizí tím jeden z poměrně častých nářků uživatelů, že jiné operační systémy jsou úspornější.
lepsi reseni, dokonce bez nutnosti extra investice, je prebootovat do xpnemam XP, ntb sem koupil levněji bez XP, s XP by mě notes stál o minimálně tři litry víc. to že si nějakej kokos jako pj koupí notes s XP a myslí si, že distributor mu je milostivě přibalil zadarmo je leda tak blbej fór.
Windows si zaplatis VZDY, at je mas predinstalovane (OEM verze) nebo si je koupis (retail). Navic je k Windows dobra podpora ovladacu, kterou vetsinou poskytuje treti strana, tedy vyrobce. Ten sve produkty zna, a vi ze obsahuji spoustu chyb (nejen NVIDIA), spoustu nedodrzenych standardu a specifikaci (obcas kazdy vyrobce, nekteri permanentne). To vsak nevadi, protoze specificke ovladace pro Windows chyby "opravi"ci obejdou. Vysledek? Funguje 99,5% pocitacu.
To vse si uzivatel zaplati.
Jak jiste vis, dle tvych odbornych prispevku, u Linuxu je situace trochu odlisna. Ne kazdy vyrobce Linux podporuje (at uz umyslne, ci neumyslne) a nedelaji pro Linux ovladace (AMD/NVIDIA/jini) jako treba Intel. Pak kdyz ma napsat vyvojar na zcela "neznamy" kus HW ovladac, je to dost tezke, kdyz nejsou znamy specifikace, ani standardy, kterych se drzi ci nedrzi. Vysledek ? nejakych dejme tomu 95% komponent je kompatibilnich a 5% proste nefunguje jak ma. A kvuli tem nekolika procent nekompatilniho HW se cely proces znacne zpozduje, zvlast, kdyz dane komponenty jsou klicove. Takove ACPI nebo cipsety, to je pro vyvojare opravdu radost...
Linux se snazi jit jinou cestou nez Windows, je to otevreny system, vetsinou zdarma, ale podpora pro nej neni tak vyborna, jako u Windows, kde si podporu pro svuj OS Microsoft muze dovolit zaplatit.
To jen tak na uvod teto problematiky. Rad zodpovim tve pripadne dotazy, klidne se ptej pres mejl. Budu taky rad, pokud prestanes se svymi bludy a irelevantnimi poznamkami, ktere k dane problematice popsane jsou zbytecne.
ano, souhalsim s tim, ze powermanagment a suspend musi fungovat v zakladu.
Jak jsi si mohl precist v clanku, tento postup je predzvesti toho, co nas ceka nekdy ve verzich 2.6.24-2.6.27(odhad). Cili se situace zacina zlepsovat a komunita i vyvojari vi o tomto problemu a je snaha tu pokrocit, viz Jaderne noviny nebo tento clanek.
nechci se tu nejak vehementne zastavat mrkvosoftu - take mi leze krkem a visty povazuji za velkej ulet.. nicmene by me velice zajimalo, co myslite tou nestabilitou. ano, u win 95 neco bylo, u 98 jeste vice.. u ME to bylo hned na vymenu.. 2k take sem tam.. ale XP mam uz par let a drzi se - az na dva vypadky zpusobene hardwarem sem nemel nikdy zadny problem..
a kdyz se tu mluvi o cene - snazim se par mesicu zkamaradit s linuxem, ale.. obcas mi pride - cena 3500 za to, ze mam system, ktery sice neni otevreny, ale ma podporu (msdn), ma vetsinu toho co se da nastavit (ze linuxar vidi wokna jednou za rok a v nabidce start se nedoklika neceho neznamena, ze to wokna neumi - sam se obcas divim, co ve widlich de nastavit - a neni pristupne primo z nabidek !).. zkratka dat 3.5k a nestarat se mi obcas pride jako rozumna investice: linux nainstaluju, mam v zakladu (fedora, ubuntu, opensuse) trilion aplikaci ktere hned davam pryc - nepotrebuji je, nechci je - nechapu proc jsou mi vnucovany (po instalaci woken delam to same).. pak resim vseljake ovladace (vim - za to linux nemuze, vyrobci sou hovada), kodeky a nastaveni - ve woknech par kliknuti, v linuxu instalace balicku a prepisovani minimalne jednoho konfiguracniho souboru - a to se jeste bojim jestli to vubec pujde pro muj hw, pro mou verzi jadra, pro mou verzi cehokoliv *..
linux je dobry system, stabilni, s minimem chyb a kdyz uz nejake sou, jsou rychle opravovany.. ale mam takovy pocit, ze linux dnes ma jeste daleko do systemu, ktery by byl pouzitelny na desktopu pro normalniho uzivatele..
* - takova instalace multimedialnich klavesnic (protoze s gnome sem skoncil, kde je zalostne pomale a tak sem odkazan na manualni nastaveni) mi dava poradne zabrat, instalace programu pro komunikaci s mobilnim telefonem - bt funguje, adresa zarizeni je znama ale pc-telefon se nespoji a muzu se stavet treba na hlavu, vsechny navody ktere sem precetl pocitaji s tim, ze to fungovat bude... nastaveni webove kamery - hardwerove rozpoznana ale opet ve vysledku nefunkcni.. to je opravdovy luxus - ja vim, je to prece zadarmo, tak co bych chtel - ze?
ps: ne, opravdu nejsem radek hulan :D.. a omlouvam se za flejmoidni prizpevek.. ale :) uz sem se vazne nemohl udrzet
"automaticky a bezproblemu"Zajímavé, mně to taky chodí automaticky a bez problémů, na jakémkoli notebooku, který jsem vzal do ruky.
"dokonce bez nutnosti extra investice"A jak už někdo poznamenal, oni už začali dávat XPčka zadarmo, nebo nás jen ponoukáš k trestnému činu? Víš snad, že to se taky nemá?
"Linux ACPI vyvíjejí lidé pomýlení natolik, že chybný spec je pro ně důležitější než realita."Prosím??? Já měl za to, že Linux ACPI vyvinul Intel? Oni napsali VM podle specifikace, kterou sami napsali, proč by vývojáři Intelu měli psát něco jiného v dokumentaci a něco jiného v kódu?
"které obsahují v BIOSu ACPI kód dle specu"Nevím o tom, že na opravdu intelích deskách by byly nějaké problémy. Nebyl by příklad? Každopádně takové věci jako intelí desky od jiných výrobců a notebooky určitě BIOS od Intelu nemají. Třeba můj Dell tvrdí, že má BIOS od Dellu.
což většina ještě distribucí "vylepšuje" z prostého vytvoření bzimage a initrd na dosti komplikovanou tvorbu plnohodnotného balíčkuMísto padesáti příkazů stačí zadat jeden a všechno od konfigurace po vytvoření balíčku se udělá samo, to bych nazval zlepšením bez uvozovek.
Linux Processor Hardware Control aka 'undervolt 'je patch pro linuxové jádro, který umožňuje nastavení voltáže jádra procesoru.Existuje něco podobného i pro paměti? Trochu jsem hledal, ale nenašel...
...(Kdysi dávno stačila pro malý příkon statická CMOS logika, dnes už nepomáhá ani CMOS a holt se to musí vypínat.)To bude asi tím, že se pořád zvyšuje taktovací frekvence
/dev/hda3 / ext3 defaults,noatime,errors=remount-ro,commit=30 0 1
nevim co mas za kartu, WiFi s cipsetem od intelu : iwpriv ethX set_power 1
iwconfig ethX power
ovladac nepodporuje.
iwconfig eth1 txpower off vypne pouze automatickou regulaci vysílacího výkonu.
Používám toto: WLAN On/Off scripts
Řízení spotřeby ale umí ifup/ifdown většiny distribucí (dokonce i busybox verze), pokud se to napíše do příslušného konfiguráku.
Potvrzuji významnou úsporu energie u Prism2.5 karty (výdrž baterie stoupla ze cca 3,5h se zapnutým WiFi na 10h) a snížení teploty karty.
Option "DynamicClock"
v xorg.conf
. Treba ma nv neco podobneho?
cat earth | grep water
' se mi hrozne libi, kde se to da stahnout? ... umožňují POSIXovým časovačům a funkci nanosleep(), aby byly tak přesné, jak jen to dovoluje hardware...... umožňují POSIXovým časovačům a funkci nanosleep(), být tak přesnými, jak jen to dovoluje hardware ... Takhle to je lepší, ne?
Auto-Dismount facility, which can be set to dismount a volume after no data has been written/read to/from it for specified number minutes. It can also be set to dismount all mounted TrueCrypt volumes when:
- user logs off
- entering power saving mode
- screen saver is launched
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.