Hlavní navigace

Proč má linuxové jádro velkou spotřebu a co s tím?

29. 6. 2011
Doba čtení: 4 minuty

Sdílet

Na konci dubna se poprvé objevila informace o tom, že linuxové jádro začalo mít vyšší spotřebu než dřív. Notebooky uživatelů vydržely až o třetinu méně než dříve a nikdo nevěděl proč. Trvalo dva měsíce, než byl objeven důvod a také postup, který umožní příkon vrátit na původní hodnoty. Jak na to?

Spotřeba elektrické energie je dnes pro řadu uživatelů velmi důležitým ukazatelem. Všude se hovoří o ekologii, o „zeleném IT“ a snaze ušetřit nemalé peníze prostým výběrem vhodnějšího hardware či softwarovou konfigurací. Z praktického hlediska ocení nižší příkon především mobilní uživatelé, kterým není jedno, zda jejich notebook vydrží tři nebo pět hodin v provozu.
Čtěte: Šetříme energii s Linuxem

Chyba v jádře nás stojí 30 % energie

Na konci dubna se poprvé objevila zpráva o tom, že Linux má neblahý dopad na spotřebu. Server Phoronix tehdy provedl sérii testů a zjistil, že od jádra 2.6.35 mají počítače s Linuxem až o 30 % vyšší spotřebu. Problém se v jádrech objevil před rokem a je patrný napříč celým spektrem linuxových distribucí. Navíc se s novými vydáními ještě více prohluboval. Viníkem tedy jasně bylo linuxové jádro.

Michael Larabel ze serveru Phoronix se rozhodl přijít záhadě na kloub a začal intenzivně pátrat po chybě, která problém způsobuje. Přestože byla situace řádně zmedializována a všichni uživatelé chtěli znát odpověď, byl Larabel pravděpodobně jediným člověkem, který se intenzivně věnoval odhalení chyby.

Viník je odhalen, jmenuje se ASPM

Trvalo to dva měsíce, ale viník byl odhalen. Tedy alespoň ten hlavní viník, který způsoboval (a stále ještě způsobuje) největší potíže se spotřebou. V jádře je přítomen od verze 2.6.38 a způsobuje problémy větší skupině uživatelů než jiná chyba z jádra 2.6.35. Ta je způsobena plánovačem jádra a Larabel na jejím objasnění ještě pracuje.

Michael Larabel viníka z jádra 2.6.38 pojmenoval. Jmenuje se ASPM, tedy Active-State Power Management. Jedná se o technologii, která dovoluje na základních deskách vypínat PCI Express linky, které nejsou v danou chvíli potřeba. Nevýhodou ASPM je, že probouzení z úsporného stavu nějakou dobu trvá, což snižuje výkon připojených karet. Velkou výhodou ale naopak je, že to celé umožňuje výrazně šetřit elektrickou energii. ASPM se využívá především v mobilních zařízeních, na desktopových strojích je ale možné jej nasadit také.

Kód poslaný do jádra 2.6.38 upravoval chování linuxového jádra vůči ASPM a vypínal tuto technologii ve chvíli, kdy BIOS systému neoznámil její podporu. Existovalo teoretické riziko, že zapnutí ASPM na stroji s chybnou podporou povede k pádům při usínání/probouzení. Tento patch má za úkol vypnout ASPM tam, kde si systém nebyl jistý, že je vše v pořádku.

Larabel ale tvrdí, že mnoho BIOSů je špatných a snaží se vycházet vstříc rozbitému power managementu MS Windows, místo aby dodržovaly standardy. Proto řada zařízení ASPM umí, ale jejich BIOS to systému odmítá potvrdit. Takto se chová velká část počítačů, takže jádra obsahující zmíněný patch automaticky podporu šetření energie vypínají.

Zda je to váš případ se dozvíte nejjednodušeji tak, že si zobrazíte následující soubor:

cat /sys/module/pcie_aspm/parameters/policy
[default] performance powersave

Pokud v něm máte (jako já) položku powersave, pak je vše v pořádku a na svém počítači ASPM zapnuté máte. Pokud máte méně štěstí, jádro podporu vypnulo, protože se nedohodlo s BIOSem.

Nejjednodušším řešením tohoto problému je vynucení podpory ASPM. To je možné provést pomocí jaderného parametru pcie_aspm. Ten je v jádrech už velmi dlouho – už od verze 2.6.27. Pokud používáte zavaděč GRUB 2, stačí editovat soubor /etc/default/grub a upravit v něm následující parametr:

GRUB_CMDLINE_LINUX_DEFAULT="pcie_aspm=force"

Po vygenerování nové konfigurace pomocí update-grub a restartu byste se měli setkat s výrazně nižší spotřebou svého počítače. Tato úprava by podle Larabela měla fungovat na většině strojů. Pokud je ale BIOS rozbitý skutečně hodně a má s ASPM problémy, mohl by být systém nestabilní. V takovém případě volbu opět vypněte.

Jak se projeví výsledek?

Michael Larabel také změřil, o kolik klesla spotřeba počítače po úpravě. Jeho Lenovo ThinkPad vykazoval mezi jádry 2.6.37 a 2.6.38 nárůst spotřeby o 10,6 %. Po zavedení výše zmíněné úpravy příkon klesl o 15 %. Je tedy ještě nižší než u původního jádra, které chybu ještě neobsahovalo. Podobné výsledky se objevily i u stolního počítače s procesorem i7.

Oficiální oprava pro linuxové jádro je zatím v nedohlednu, pravděpodobně se neobjeví v jádře 3.0, které je už zmražené a během několika týdnů bude k dispozici. Nějaké změny se tak dočkáme nejdříve v jádře 3.1. Také je otázkou, jak bude oprava vypadat. Je možné, že bude jen vyhozen patch, který byl zaveden do 2.6.38. Problém s příkonem totiž postihuje mnohem více uživatelů než problém s nefunkčním ASPM.

Zatím to také není poslední problém s příkonem, po kterém Michael Larabel jde. Tento byl ale zjevně nejdůležitější, postihoval největší skupinu uživatelů a způsoboval největší problémy. Druhým v pořadí by měla být už zmíněná chyba s plánovačem jádra.

Autor článku

Petr Krčmář pracuje jako šéfredaktor serveru Root.cz. Studoval počítače a média, takže je rozpolcen mezi dva obory. Snaží se dělat obojí, jak nejlépe umí.