Portál AbcLinuxu, 2. června 2024 16:35

Jak na Linuxu šetřit energii

Pokud používáte notebook či nějaké jiné mobilní zařízení s Linuxem, možná jste si všimli (ať už z doslechu nebo na vlastní kůži), že má váš Linux v porovnání s majoritním systémem poměrně velkou spotřebu energie. Rozdíl je mnohdy až 50%. Naštěstí, v současné době už systém poskytuje velké množství prostředků, kterými se dá spotřeba značně snížit a to až na úroveň onoho majoritního operačního systému.

Předpokladem pro snižování spotřeby je co nejnovější distribuce (obsahuje čerstvé jádro) a dobře podporovaný hardware. Příklad -- instalace o rok novější distribuce na stejný stroj snížíla spotřebu o téměr 10 %.

Zásady mobilního provozu

Nastavení systému

Jednoduché nastavení při spustění počítače

Pomocí několika voleb vložených buď do startovacího skriptu (obvykle /etc/rc.d/boot.local) nebo do nastavení grafického správce napájení, můžete dosáhnout významných úspor energie za cenu jen malého snížení výkonu. Následující příklad platí pro openSUSE 11.1, měl by však fungovat na většině nových distribucí. Nastavení bylo vytvořeno za velké pomoci webu LessWatts.org, který se spotřebou na Linuxu zabývá.

# bude se jinym zpusobem pracovat s vicejadrovymi systemy
echo 1 > /sys/devices/system/cpu/sched_mc_power_savings
# plati pouze pro Intel Wireless WiFi Link 4965 ANG; nastavuje spravu napajeni na nizkou uroven
echo 5 > /sys/bus/pci/drivers/iwlagn/0000\:03\:00.0/power_level
# zvysuje interval probouzeni disku kvuli zapsani novych dat
echo 48000 > /proc/sys/vm/dirty_writeback_centisecs
echo 90 > /proc/sys/vm/dirty_ratio
echo 1 > /proc/sys/vm/dirty_background_ratio
echo 5 > /proc/sys/vm/laptop_mode
# vypina podporu Wake On LAN na eth0
ethtool -s eth0 wol d
# nastavuje usporu energie na SATA radici
echo min_power > /sys/class/scsi_host/host0/link_power_management_policy
echo min_power > /sys/class/scsi_host/host1/link_power_management_policy
# nastavuje usporu energie rozhrani PCI Express
echo powersave > /sys/module/pcie_aspm/parameters/policy
# interval roztaceni disku zkracuje na 120 sekund, nastavuje intenzivni setreni energie
hdparm -B32 -S24 /dev/sda > /dev/null
# nastavuje usporu energie zvukove karty (plati pro Intel HDA)
echo 10 > /sys/module/snd_hda_intel/parameters/power_save
# prodluzuje interval zapisovani zurnalu na disk (upravte dle sveho diskoveho rozvrzeni)
mount -o remount,commit=480 /
mount -o remount,commit=480 /home
# povoli uspavani USB zarizeni v nejvyssi mozne mire
echo 10 > /sys/bus/usb/devices/usb1/power/autosuspend
echo 10 > /sys/bus/usb/devices/usb2/power/autosuspend

Mnoho voleb závisí na použitém HW vašeho počítače a datu vydání jádra, které vaše distribuce používá. Například úspora energie SATA řadiče se objevila v Linuxu teprve nedávno. Mimo výše uvedeného je často možné nastavit i jiné části distribuce -- například X.Org či některé grafické programy.

Automatické nastavení pomocí ACPI

Protože je jednotné nastavení při spuštění počítače poměrně omezující jelikož snižujeme zbytečně výkon počítače když to není nutné, je možné za pomoci daemona acpid (v desktopových distribucích je ve výchozím stavu nainstalován) tuto nevýhodu odstranit. Ten automaticky vyvolá akci pokud se přihodí nějaká událost -- v našem případě je odpojen nebo připojen napájecí adaptér. Vytvoříme si tedy popis události spolu s cestou ke skriptu, který se má následně spustit:

# cat /etc/acpi/events/ac_adapter
event=ac_adapter/*                               
action=/usr/lib/acpid/ac_adapter "%e"

Dalším krokem je vytvoření tzv. handleru pro tuto událost:

# cat /usr/lib/acpid/ac_adapter
#!/bin/bash

HOTKEY=$1
set $HOTKEY
EVENT=$1   # "ibm/hotkey"
ACPI=$2    # "HOTK"
WHAT=$3    # "00000080"
SERIAL=$4  # "0000100c" Fn+F12

# unplug power adapter
if [ "$WHAT" = "00000080" -a "$SERIAL" = "00000000" ]; then
        echo 5 > /sys/bus/pci/drivers/iwlagn/0000\:03\:00.0/power_level
        echo min_power > /sys/class/scsi_host/host0/link_power_management_policy
        echo min_power > /sys/class/scsi_host/host1/link_power_management_policy
        hdparm -B32 -S24 /dev/sda > /dev/null
fi

# plug power adapter
if [ "$WHAT" = "00000080" -a "$SERIAL" = "00000001" ]; then
        echo 1 > /sys/bus/pci/drivers/iwlagn/0000\:03\:00.0/power_level
        echo max_performance > /sys/class/scsi_host/host0/link_power_management_policy
        echo max_performance > /sys/class/scsi_host/host1/link_power_management_policy
        hdparm -B254 -S0 /dev/sda > /dev/null
fi

Tento skript (nezapomenout nastavit právo spuštění!) při odpojení napájení automaticky zapne parkování disku a nastaví úsporný režim sběrnice SATA a WiFi. Při opětovném nastavení jsou změny vráceny zpět na maximální výkon. Opět je třeba myslet na specifika vašeho počítače a pokud máte třeba jinou WiFi kartu, provést nastavení výkonu odlišným způsobem. Kódy dalších událostí lze snadno zjistit pomoci nástroje acpi_listen, který zobrazuje události tak, jak je systém ACPI registruje.

Jak zjistím, jakou má moje PC spotřebu?

Pro měření spotřeby před a po úpravě systému lze použít program PowerTOP (web, distribuční rada na konci článku) od společnosti Intel. Tato aplikace taktéž ukazuje, které programy jsou nejvíce aktivní a spotřebovávají systémové prostředky. Pomůže vám tedy například najít původce častého probouzení procesoru ze stavu hlubokého spánku. PowerTOP funguje i na procesorech jiných výrobců, jen nezobrazuje některé podrobnosti.

Pokud se vám i po aplikaci výše uvedených voleb zdá spotřeba vašeho systému příliš vysoká, zkuste si na internetu vyhledat články o spolupráci vašeho počítače s Linuxem.

Příklady výsledných spotřeb energie

Související dokumenty

Přednáška Pavla Machka o hibernaci na Linuxu (externí dokument)
Obsahuje velké množství informací i o spotřebě jednotlivých komponent počítače a rady, jak ji snížit.
ThinkWiki (externí dokument)
Wiki pro linuxové uživatele notebooků ThinkPad
Root.cz: Šetříme energii s Linuxem (externí dokument)
Rady pro snížení spotřeby
Abclinuxu.cz: Snížení spotřeby počítače v Linuxu (článek)
Abclinuxu.cz: Cpufreq - dynamické škálování frekvence procesoru (článek)

Dokument vytvořil: Jan Grmela, 25.12.2008 17:58 | Poslední úprava: Jan Grmela, 12.3.2011 11:49 | Další přispěvatelé: Jirka Keresteš, Jan Grmela | Historie změn | Zobrazeno: 5244×

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.