quinta-feira, 18 de outubro de 2012

Economizando um pouquinho de energia

O PowerTOP me deu algumas recomendações para diminuir o consumo de energia.

Bad           VM writeback timeout
Bad           Enable Audio codec power management
Bad           NMI watchdog should be turned off
Bad           Runtime PM for PCI Device ATI Technologies Inc IXP SB400 USB2 Host Controller
Bad           Runtime PM for PCI Device ATI Technologies Inc IXP SB400 Serial ATA Controller
Bad           Runtime PM for PCI Device ATI Technologies Inc IXP SB400 Serial ATA Controller
Bad           Runtime PM for PCI Device ATI Technologies Inc IXP SB400 USB Host Controller
Bad           Runtime PM for PCI Device ATI Technologies Inc IXP SB400 IDE Controller
Bad           Runtime PM for PCI Device ATI Technologies Inc IXP SB4x0 High Definition Audio Controller
Bad           Runtime PM for PCI Device ATI Technologies Inc RC410 [Radeon Xpress 200]
Bad           Runtime PM for PCI Device Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+
Bad           Runtime PM for PCI Device 3Com Corporation 3c905C-TX/TX-M [Tornado]
Bad           Runtime PM for PCI Device ATI Technologies Inc IXP SB400 USB Host Controller
Bad           Using 'ondemand' cpufreq governor
Good          Autosuspend for USB device OHCI Host Controller [usb2]
Good          Autosuspend for USB device OHCI Host Controller [usb3]
Good          Autosuspend for USB device EHCI Host Controller [usb1]
Good          Wake-on-lan status for device eth0
Good          Wake-on-lan status for device eth1

Então hora de configurar algumas coisinhas.

[Atualização - 19/11/2012] Na lista de discussão systemd-devel, Mantas Mikulenas recomenda melhor lugar para as configurações usando regras do udev. Além da vantagem do udev aplicar os parâmetros para qualquer hardware à medida que apareça (ao contrário do método anterior que era estático e aplicava apenas durante o boot), ele o fará só caso o suporte exista no kernel.

/etc/udev/rules.d/10-energia.rules

# USB
#ACTION=="add", SUBSYSTEM=="usb", TEST=="power/autosuspend" ATTR{power/autosuspend}="1"
#ACTION=="add", SUBSYSTEM=="usb", TEST=="power/control" ATTR{power/control}="auto"

# PCI
ACTION=="add", SUBSYSTEM=="pci", TEST=="power/control" ATTR{power/control}="auto"

# SATA AHCI
ACTION=="add", SUBSYSTEM=="scsi_host", TEST=="link_power_management_policy" ATTR{link_power_management_policy}="medium_power"

(a parte do USB está comentada pois se mostrou problemática com meus mouses xing-ling)

O que envolve configuração de módulos, via modprobe.d.

/etc/modprobe.d/10-energia.conf

options snd-hda-intel power_save=10

Os ajustes em /proc/sys continuam sendo feitos via sysctl.d. O arquivo a seguir é mais para notebooks. Em desktops, recomendo deixar os padrões do kernel.

/etc/sysctl.d/10-energia.conf

kernel.nmi_watchdog=0
vm.dirty_writeback_centisecs=1500

[Atualização - 17/11/2013] medium_power para impactar menos no desempenho.
[Atualização - 27/08/2016] options snd-hda-intel power_save=10. Nota sobre os ajustes via sysctl.d.

Dicas anteriores (obsoletas, não usar!)

/etc/tmpfiles.d/10-energia.conf

w /sys/module/snd_hda_intel/parameters/power_save - - - - 10
w /sys/bus/pci/devices/*/power/control - - - - auto

Nota: para habilitar o gerenciamento de energia nos dispositivos PCI, a sintaxe simplificada com o coringa * no tmpfiles.d passou a ser suportada a partir do systemd 190, graças ao trabalho de Dave Reisner, desenvolvedor do Arch Linux. O patch foi backportado para o Fedora 17 na atualização systemd-44-20.fc17.

Quanto ao "Bad" do PowerTOP sobre o processador estar usando o governor ondemand, ignore. Hoje, ondemand é o modo recomendado -- equilíbrio entre economia de energia e desempenho.

Este chipset não tem AHCI. Quando for suportado, outra configuração que pode ser feita (tmpfiles.d):

w /sys/class/scsi_host/host*/link_power_management_policy - - - - medium_power

No ThinkWiki tem outras dicas.

Não é uma maravilha fazer essas configurações sem nenhum shell script?

Referência:
sysctl.d e tmpfiles.d

Nenhum comentário:

Postar um comentário