Power management (Português)

Status de tradução:
Esse artigo é uma tradução de
Power management
. Data da última tradução: 2025-03-04. Você pode ajudar a sincronizar a tradução, se houver
alterações
na versão em inglês.
Artigos relacionados
Gestão de energia/Suspensão e hibernação
Power management/Wakeup triggers
Escala de frequência do CPU
Display Power Management Signaling
Hybrid graphics
sysctl
Gestão de energia
, ou gerenciamento de energia, é um recurso que desliga ou troca o comportamento dos componentes do sistema para um estado de economia de energia quando inativo.
Em Arch Linux, a gestão de energia consiste em duas partes principais:
Configuração do
kernel
Linux, o mesmo interage com o hardware por meio de:
Parâmetros de kernel
Módulos de kernel
Regras
udev
Configuração de ferramentas do espaço de usuário (userspace), que interage com o kernel e reage aos respectivos eventos. Muitas destas ferramentas permitem a modificação da configuração de kernel em um ambiente amigável, ou também chamado de
user-friendly
, para facilitar o gerenciamento por um usuário padrão. Veja as opções
logo abaixo
.
Ferramentas do espaço de usuário (userspace)
Estas ferramentas permitem alterar muitas definições sem a necessidade de editar arquivos de configuração manualmente. Apenas escolha
uma
delas para evitar possíveis conflitos, pois todas funcionam de maneira similar. Visite as
categorias listadas em inglês
e dê uma olhada de forma geral nas opções de gestão de energia que existem em Arch Linux.
A seguir estão listados os scripts desenvolvidos e as ferramentas projetadas mais populares para ajudar na gestão de energia:
Console
acpid
— Um daemon que entrega gerenciamento energético em eventos ACPI com suporte a netlink.
https://sourceforge.net/projects/acpid2/
||
acpid
Laptop Mode Tools
— Utilitário para definir a economia de energia em notebooks/laptops. Considerado por muitos a mais efetiva para gestão de energia, apesar de requerer um pouco de configuração.
https://github.com/rickysarraf/laptop-mode-tools
||
laptop-mode-tools
AUR
libsmbios
— Conjunto de bibliotecas e ferramentas para interagir com tabelas Dell SMBIOS.
https://github.com/dell/libsmbios
||
libsmbios
powertop
— Uma ferramenta para diagnosticar problemas com o consumo e gestão de energia e ajudar a configurar a economia de energia.
https://github.com/fenrus75/powertop
||
powertop
powerstat
— Uma ferramenta que mede o consumo de energia ao usar ACPI ou a interface RAPL da Intel.
https://github.com/ColinIanKing/powerstat
||
powerstat
AUR
systemd
— Um gerenciador de sistema e de serviço.
https://systemd.io/
||
systemd
TLP
— Gestão de energia avançada para sistemas Linux.
https://linrunner.de/tlp
||
tlp
TuneD
— Um daemon que monitora e cria configurações de adaptação para dispositivos no sistema.
https://tuned-project.org
||
tuned
UPower
— Uma abstração para contagem de dispositivos de energia, escuta de eventos dos mesmos e consulta de histórico e estatísticas.
https://upower.freedesktop.org
||
upower
power-profiles-daemon
— Faz com que o manuseio dos perfis de energia esteja disponível pelo D-Bus
https://gitlab.freedesktop.org/upower/power-profiles-daemon
||
power-profiles-daemon
Gráfico
batsignal
— Monitoramento de bateria leve que usa libnotify para alertar os níveis baixos de bateria.
https://github.com/electrickite/batsignal
||
batsignal
cbatticon
— Ícone rápido e leve que permanece na bandeja do sistema.
https://github.com/valr/cbatticon
||
cbatticon
GNOME Power Statistics
— Exibe para o GNOME informações e estatísticas do uso de energia do sistema.
https://gitlab.gnome.org/GNOME/gnome-power-manager
||
gnome-power-manager
KDE Power Devil
— Módulo de gestão de energia para o Plasma.
https://invent.kde.org/plasma/powerdevil
||
powerdevil
LXQt Power Management
— Módulo de gestão de energia para o LXQt.
https://github.com/lxqt/lxqt-powermanagement
||
lxqt-powermanagement
MATE Power Management
— Módulo de gestão de energia para o MATE.
https://github.com/mate-desktop/mate-power-manager
||
mate-power-manager
MATE Power Statistics
— Exibe para o MATE informações e estatísticas do uso de energia do sistema.
https://github.com/mate-desktop/mate-power-manager
||
mate-power-manager
poweralertd
— Daemon de entrega de notificações do UPower.
https://git.sr.ht/~kennylevinsen/poweralertd
||
poweralertd
AUR
powerkit
— Gestor de energia desktop independente.
https://github.com/rodlie/powerkit
||
powerkit
AUR
Xfce Power Manager
— Gestor de energia para o Xfce.
https://docs.xfce.org/xfce/xfce4-power-manager/start
||
xfce4-power-manager
vattery
— Aplicativo de monitoramento da bateria escrito em Vala que exibe status de bateria em notebooks/laptops na bandeja do sistema.
https://www.jezra.net/projects/vattery.html
||
vattery
AUR
Eventos ACPI
O
systemd
gerencia alguns eventos
ACPI
relacionados à energia, tais ações de eventos podem ser configuradas em
/etc/systemd/logind.conf
ou
/etc/systemd/logind.conf.d/*.conf
— veja em
logind.conf(5)
. Normalmente o daemon
acpid
é usado somente com o propósito de reagir aos eventos ACPI, e em função disso, em sistemas sem gestor de energia dedicado é comum que o systemd faça a substituição do
acpid
.
A ação especificada para cada evento pode ser uma das seguintes opções:
ignore
,
poweroff
,
reboot
,
halt
,
suspend
,
hibernate
,
hybrid-sleep
,
suspend-then-hibernate
,
lock
ou
kexec
; respectivamente as opções significam "ignorar", "desligar", "reiniciar", "interromper/descontinuar", "suspender", "hibernar", "suspensão híbrida" "suspender então hibernar", "bloquear" e "
kexec
". Em caso de hibernação e suspensão garanta que as
configurações
sejam apropriadamente definidas, se caso não configurado o systemd usará as ações de evento padronizadas.
Manipulador de evento
Descrição de como acionar o evento
Ação padrão
HandlePowerKey
Tecla/botão de energia (power on/off) é pressionado.
poweroff
HandleSuspendKey
Tecla/botão de suspensão é pressionado.
suspend
HandleHibernateKey
Tecla/botão de hibernação é pressionado.
hibernate
HandleLidSwitch
A tampa é fechada, exceto nos casos abaixo.
suspend
HandleLidSwitchDocked
A tampa é fechada enquanto o sistema está inserido em um
dock station
(régua de recarga), ou quando mais de um display está conectado.
ignore
HandleLidSwitchExternalPower
A tampa é fechada enquanto o sistema está conectado a uma fonte externa de energia.
A ação é definida por:
HandleLidSwitch
Para aplicar qualquer mudança,
recarregue
systemd-logind
.
Nota
Systemd não pode modificar eventos ACPI de carregamento e bateria, portanto se você usa
Laptop Mode Tools
ou outras ferramentas similares o
acpid
ainda é requisito.
Ao realizar a abertura/fechamento da tampa sucessivamente em um curto período de tempo,
logind
irá aumentar o tempo de espera para suspender em até 90 segundos, com o intuito de detectar possíveis docks.
[1]
Este tempo é agora configurável desde a versão 220 do systemd.
[2]
Você pode usar por exemplo a opção
HoldoffTimeoutSec=30s
em
logind.conf
ou no respectivo arquivo drop-in para alterar o tempo de espera.
Gestores de energia
Alguns
ambientes de desktop
incluem gestores de energia que
inibem
(temporariamente desligam) algumas ou todas as configurações ACPI do
systemd
. Se tais gestores de energia estão ativos, então as ações dos eventos ACPI podem ser configuradas nestes gestores de energia por si só. Modificações em
/etc/systemd/logind.conf
ou
/etc/systemd/logind.conf.d/*.conf
precisam ser feitas somente se o comportamento desejado para um evento em particular não estiver restrito pelo gerenciador de energia.
Note que se o gestor de energia não inibe apropriadamente os eventos do systemd, você pode acabar em uma situação complicada, cujo systemd suspende o sistema e quando acordado o outro gerenciador de energia o suspende de volta. Os gestores de energia de
GNOME
,
MATE
,
Plasma
e
Xfce
proporcionam os comandos necessários já
inibidos
. Se os comandos
inibidos
não estão funcionando, como por exemplo sob uso do
acpid
ou outros manipuladores de eventos ACPI, defina a opção
Handle
para
ignore
no systemd. Veja também sobre em
systemd-inhibit(1)
.
xss-lock
xss-lock
subscreve em
systemd-events
as opções
suspend
,
hibernate
,
lock-session
e
unlock-session
; respectivamente os termos significam "suspender", "hibernar", "bloquear sessão" e "desbloquear sessão". As opções são usadas para definir as ações apropriadas de cada evento, para tal é só executar o bloqueio e esperar o usuário desbloquear ou matar o processo. O
xss-lock
também reage com eventos
DPMS
e consegue executar ou matar o bloqueio em resposta.
Autoinicie
o programa usando algo como o exemplo abaixo:
$ xss-lock -- i3lock -n -i
background_image.png
&
Economia de energia
Note
Veja
Laptop (Português)#Gerenciar energia
para um guia mais especifico de gerenciamento de energia para notebooks/laptops, tal como monitoramento de bateria. Veja também as páginas específicas para a sua CPU e GPU (por exemplo
Ryzen
,
AMDGPU
, etc).
Esta seção é uma referência para criar scripts customizados e configurações de economia de energia, bem como por regras udev. Antes tenha certeza que as definições não estão a ser gerenciadas por
outro utilitário
para evitar conflitos.
Praticamente todas as funcionalidades listadas aqui merecem o uso mesmo que o computador esteja conectado diretamente a uma fonte de alimentação ou pela bateria. Muitos tem impacto de performance negligenciável e só não são habilitados por padrão porque é comum a quebra de hardware/drivers. Reduzir o gasto de energia significa diminuir o calor, logo isso gera maior desempenho de um processador Intel ou AMD moderno, graças ao
overclocking dinâmico
.
Visualizando configurações de energia
Este script faz o
print
das configurações de energia e de uma variedade de outras propriedades para dispositivos USB e PCI. Note que são necessárias permissões de root para que seja possível ver todas as configurações.
#!/bin/bash

for i in $(find /sys/devices/ -name "bMaxPower")
do
	busdir=${i%/*}
	busnum=$(<$busdir/busnum)
	devnum=$(<$busdir/devnum)
	title=$(lsusb -s $busnum:$devnum)

	printf "\n\n+++ %s\n  -%s\n" "$title" "$busdir"

	for ff in $(find $busdir/power/ -type f ! -empty 2>/dev/null)
	do
		v=$(cat $ff 2>/dev/null|tr -d "\n")
		[[ ${#v} -gt 0 ]] && echo -e " ${ff##*/}=$v";
		v=;
	done | sort -g;
done;

printf "\n\n\n+++ %s\n" "Kernel Modules"
for mod in $(lspci -k | sed -n '/in use:/s,^.*: ,,p' | sort -u)
do
	echo "+ $mod";
	systool -v -m $mod 2> /dev/null | sed -n "/Parameters:/,/^$/p";
done
Processadores com suporte ao Intel Hardware P-state
As preferências de energia disponíveis de um processador com suporte ao Intel Hardware P-state (HWP) são
default
,
performance
,
balance_performance
,
balance_power
e
power
; respectivamente "padrão/normal", "desempenho", "desempenho balanceado", "economia de energia balanceada" e "economia de energia" (os dois últimos termos definem uma maior eficiência energética).
As opções válidas do sistema podem ser vistas da seguinte forma:
$ cat /sys/devices/system/cpu/cpufreq/policy*/energy_performance_available_preferences
Para reduzir o gasto energético, você pode editar a configuração ao criar o seguinte arquivo:
/etc/tmpfiles.d/energy_performance_preference.conf
w /sys/devices/system/cpu/cpufreq/policy*/energy_performance_preference - - - - balance_power
Veja o manual
x86_energy_perf_policy(8)
para consultar mais detalhes sobre o protocolo de desempenho energético da Intel. Consulte igualmente os manuais
systemd-tmpfiles(8)
e
tmpfiles.d(5)
para mais detalhes sobre arquivos/diretórios temporários.
Áudio
Se a economia de energia está ativada ou não isto irá depender do dispositivo em específico. Por exemplo, estará ativo com HD Audio.
Identifique
o módulo em uso e então execute:
$ modinfo --field=parm
nome_módulo
| column --separator=':' --table --table-columns-limit=2
E busque por um
parâmetro de kernel
como
power_save
, do qual possa ajustar ou desabilitar a funcionalidade de economia de energia.
Nota
A funcionalidade de economia de energia pode causar sons de
clicks
(ou um barulho de estouro) e outros problemas. Veja as seguintes páginas, em inglês, dedicadas a este tópico para soluções relevantes:
Advanced Linux Sound Architecture/Troubleshooting#Power saving
PipeWire#Noticeable audio delay or audible pop/crack when starting playback
, ou veja a página traduzida em:
PipeWire (Português)#Atraso no áudio notável ao começar a tocar áudio
PulseAudio/Troubleshooting#Pops when starting and stopping playback
Retroiluminação - Backlight
Veja a página em inglês sobre
Backlight
.
Bluetooth
Para desativar completamente o Bluetooth
crie uma lista negra
com os módulos
btusb
e
bluetooth
.
De forma alternativa, crie o seguinte arquivo de regras udev:
/etc/udev/rules.d/50-bluetooth.rules
# desabilita bluetooth
SUBSYSTEM=="rfkill", ATTR{type}=="bluetooth", ATTR{state}="0"
Para desligar o Bluetooth somente temporariamente, use
rfkill(8)
:
# rfkill block bluetooth
Webcam
Se você não irá usar uma webcam integrada, então
crie uma lista negra
para bloquear o módulo
uvcvideo
.
Parâmetros de kernel
Esta seção visa o uso de configurações em
/etc/sysctl.d/
, que significa usar
"
um diretório drop-in
para os parâmetros sysctl de kernel."
Veja mais em
Os novos arquivos de configuração
e mais especificamente no manual em
sysctl.d(5)
.
Desativar NMI do watchdog
O
NMI
do watchdog é um recurso de
debugging
(depuração) para capturar travamentos de hardware que causam pânico no kernel. Em alguns sistemas isto pode gerar várias interrupções, consequentemente é notável um aumento no consumo de energia. Para listar estas interrupções por core de CPU desde o último boot, você pode usar:
$ grep NMI /proc/interrupts
NMI:     22     58     24     23     24     39     22     30   Non-maskable interrupts
Para desativar o detector de travamento rígido (hardlockup), use:
/etc/sysctl.d/disable_watchdog.conf
kernel.nmi_watchdog = 0
Ou adicione
nmi_watchdog=0
em uma
linha de comando do kernel
.
Alternativamente, adicione
nowatchdog
na
linha de comando do kernel
para desativar o detector de travamento rígido e suave (hardlockup/softlockup). Veja mais sobre em
[3]
.
Tempo de resposta da escrita (writeback)
Aumentar tempo de
writeback
da memória virtual suja ajuda a agregar o conjunto das E/S (I/O) do disco, e portanto reduz a duração de escritas pelo disco e aumenta a economia de energia. Para definir o valor em 60 segundos (o padrão é 5 secs):
/etc/sysctl.d/dirty.conf
vm.dirty_writeback_centisecs = 6000
Para fazer o mesmo com a alocação de registro (journal commits) nos sistemas de arquivos suportados (por exemplo ext4, btrfs...), use a opção
commit=60
em
fstab
.
Note que este valor é modificado como um efeito colateral das configurações do modo notebook/laptop, descrito na seção abaixo. Veja também sobre outros parâmetros que afetam a performance de E/S (I/O) e a economia de energia em
sysctl#Virtual memory
.
Modo notebook/laptop
Veja sobre
O valor sensível de "knob" em 5 segundos - modo laptop
na documentação do kernel para mais detalhes sobre a configuração a seguir:
/etc/sysctl.d/laptop.conf
vm.laptop_mode = 5
Nota
Esta definição é especialmente relevante para discos giratórios (HDDs).
Interfaces de rede
O
Wake-on-LAN
pode ser um recurso muito útil, porém se não for usado o efeito é a drenagem extra de energia a espera de um pacote mágico enquanto o sistema é suspenso. Você pode adaptar a regra
udev
para desabilitar o recurso em todas as interfaces de Ethernet. Para habilitar a economia de energia com o uso de
iw
em todas as interfaces sem fio:
/etc/udev/rules.d/
81
-wifi-powersave.rules
ACTION=="add", SUBSYSTEM=="net", KERNEL=="wl*", RUN+="/usr/bin/iw dev
$name
set power_save on"
O nome para o arquivo de configuração é importante, com o uso de
nomes de dispositivos persistentes
em systemd, a regra de rede acima, chamada pela lexicografia
derivada de
80-net-setup-link.rules
, é aplicada após o dispositivo ser renomeado com um nome persistente, por exemplo
wlan0
é renomeado como
wlp3s0
. Esteja ciente que o comando
RUN
é executado depois que todas as regras foram processadas e as mesmas devem usar o nome persistente, disponível em
$name
e do qual corresponde a um determinado dispositivo.
Placas de internet sem fio da Intel (iwlwifi)
Funções de economia de energia adicionais com o driver
iwlwifi
das placas de internet sem fio da Intel podem ser ativadas ao passar os parâmetros corretos ao módulo de kernel, além de serem modificações persistentes ao incrementar as linhas abaixo para o arquivo
/etc/modprobe.d/iwlwifi.conf
:
options iwlwifi power_save=1
Esta opção provavelmente aumentará a latência média:
options iwlwifi uapsd_disable=0
Em kernels < 5.4 (abaixo da versão 5.4) você até pode usar a opção abaixo, mas é provável que diminua o processamento máximo da placa:
options iwlwifi d0i3_disable=0
Dependendo da sua placa de internet sem fio um dos módulos abaixo será aplicável:
options iwlmvm power_scheme=3
options iwldvm force_cam=0
Você pode verificar qual deles é relevante ao investigar qual destes módulos está sendo usado com:
# lsmod | grep '^iwl.vm'
Tenha em mente que essas opções de economia de energia são experimentais e podem causar instabilidade no sistema.
Gerenciamento de energia em Bus
Gestão de energia de estado ativo
Trecho traduzido e retirado da
Wikipédia
:
Active-state power management
(
ASPM
) é o mecanismo de gestão de energia para dispositivos
PCI Express
adquirirem economia de energia, apesar de estarem em um estado ativo de uso. Predominantemente, isto é alcançado através da conexão do gerenciamento de energia com o estado ativo, ou seja, o vínculo de serial (
PCI Express serial
) é desligado quando não há nenhum tráfego de dados sendo passado. Normalmente isto é usado em notebooks/laptops e outros dispositivos móveis com internet para estender a vida da bateria.
No boot a BIOS ativa ou desativa o uso de ASPM baseado no suporte do hardware disponível. Para verificar o suporte:
# lspci -vv | grep 'ASPM.*abled;'
Busque por protocolos disponíveis e o padrão atual do sistema com:
$ cat /sys/module/pcie_aspm/parameters/policy
[default] performance powersave powersupersave
ASPM pode estar desabilitado pelas seguintes razões
[4]
:
A BIOS determinou que isto precisava acontecer.
PCIE requer ASPM, mas L0s é opcional, então talvez o L0s esteja inativo e apenas L1 está ativo.
Você possui uma BIOS bugada.
Você não possui uma BIOS e os desenvolvedores do seu sistema podem não ter proporcionado ainda o controle com ASPM.
Se você acredita que seu hardware possui o suporte para ASPM, apesar do que foi listado acima, existe a alternativa de forçar a ativação para o kernel administrar com a opção
pcie_aspm=force
definida nos
parâmetros de kernel
.
Atenção
Forçar a ativação de ASPM em um sistema sem suporte pode na realidade aumentar o consumo de energia. A longo prazo pode causar congelamentos ou pânicos de kernel no sistema, portanto tenha certeza que você tem um jeito de refazer a opção se ela estiver sendo inconveniente.
Embora o ASPM tenha sido imposto a força para tomar lugar no funcionamento do kernel, há uma chance de não dar certo e continuar desabilitado no hardware. Para verificar se esse é o caso, execute
dmesg | grep ASPM
como root. Consulte se possível o artigo específico do seu hardware na Wiki para mais informações.
Contanto que ASPM seja suportado e ativado, é possível selecionar o protocolo desejado para a sessão atual. Por exemplo, a troca de
powersupersave
para a sessão atual é feita com uso de:
# echo powersupersave > /sys/module/pcie_aspm/parameters/policy
Para configurar a ativação de um estado especifico de ASPM a partir do boot do sistema (usando
powersupersave
, por exemplo), adicione
pcie_aspm.policy=powersupersave
como um
parâmetro de kernel
.
Gestão de energia do tempo de execução PCI (PCI runtime)
/etc/udev/rules.d/pci_pm.rules
SUBSYSTEM=="pci", ATTR{power/control}="auto"
A regra acima desliga todos os dispositivos em desuso exceto pelo dispositivo ata PCI. É preciso criar regras para cada um destes, de forma similar a demonstração abaixo.
/etc/udev/rules.d/pci_pm_ata.rules
ACTION=="add",SUBSYSTEM=="pci",TEST=="ata1/power/control",ATTR{ata1/power/control}="auto"
ACTION=="add",SUBSYSTEM=="pci",TEST=="ata2/power/control",ATTR{ata2/power/control}="auto"
ACTION=="add",SUBSYSTEM=="pci",TEST=="ata3/power/control",ATTR{ata3/power/control}="auto"
#similares...
Alguns dispositivos podem não conseguir mais acordar. Para permitir somente a gestão de energia do tempo de execução de dispositivos que são conhecidos por operar normalmente, faça uma combinação simples entre
vendor
e
device IDs
(use
lspci -nn
para pegar estes valores):
/etc/udev/rules.d/pci_pm.rules
# lista branca para autossuspensão pci 
SUBSYSTEM=="pci", ATTR{vendor}=="0x1234", ATTR{device}=="0x1234", ATTR{power/control}="auto"
Como segunda opção, coloque na lista negra dispositivos não operantes com a gestão de energia do tempo de execução PCI e mantenha ativo para todos os outros hardwares:
/etc/udev/rules.d/pci_pm.rules
# lista negra para a gestão de energia do tempo de execução pci
SUBSYSTEM=="pci", ATTR{vendor}=="0x1234", ATTR{device}=="0x1234", ATTR{power/control}="on", GOTO="pci_pm_end"

SUBSYSTEM=="pci", ATTR{power/control}="auto"
LABEL="pci_pm_end"
Autossuspensão USB
O kernel Linux pode automaticamente suspender dispositivos USB quando não estão sendo usados. Às vezes a prática traz uma pequena economia de energia, porém alguns dispositivos USB não são compatíveis com a economia de energia USB e começam a mudar de comportamento (comum em teclados e microfones USB). Regras
udev
baseadas na filtragem por lista branca ou lista negra ajudam a mitigar o problema.
O mais simples exemplo, entretanto um pouco inútil, é ativando a autossuspensão para todos os dispositivos USB:
/etc/udev/rules.d/50-usb_power_save.rules
ACTION=="add", SUBSYSTEM=="usb", TEST=="power/control", ATTR{power/control}="auto"
Para permitir a autossuspensão de somente alguns dispositivos com o funcionamento conhecido, simplesmente busque a combinação entre
vendor
e
product IDs
(use
lsusb
para pegar estes valores):
/etc/udev/rules.d/50-usb_power_save.rules
# lista branca para autosusspensão de USBs
ACTION=="add", SUBSYSTEM=="usb", TEST=="power/control", ATTR{idVendor}=="05c6", ATTR{idProduct}=="9205", ATTR{power/control}="auto"
Como solução oposta, e se você achar melhor, opte por criar uma lista negra para os dispositivos que não reagem bem com a autossuspensão USB e habilite para todos os outros dispositivos:
/etc/udev/rules.d/50-usb_power_save.rules
# lista negra para autossuspensão de USBs
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="05c6", ATTR{idProduct}=="9205", GOTO="power_usb_rules_end"

ACTION=="add", SUBSYSTEM=="usb", TEST=="power/control", ATTR{power/control}="auto"
LABEL="power_usb_rules_end"
O tempo de espera ocioso padrão da autossuspensão é controlado pelo parâmetro
autosuspend
, pertencente ao já embutido (built-in)
módulo de kernel
usbcore
. Para definir um tempo de espera de 5 segundos ao invés do padrão de 2 segundos, adicione o seguinte
parâmetro de kernel
ao seu bootloader:
usbcore.autosuspend=5
De forma semelhante ao
power/control
, o tempo de espera pode ser refinado para cada dispositivo ao definir o atributo
power/autosuspend
. Isto significa que, se desejado de outra forma, a autossupensão pode ser desativada ao defini-la para -1 (e com isso jamais autossuspender):
/etc/udev/rules.d/50-usb_power_save.rules
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="05c6", ATTR{idProduct}=="9205", ATTR{power/autosuspend}="-1"
Veja a
documentação do kernel Linux
para mais informações sobre a gestão de energia em dispositivos USB.
Gerenciamento de energia do link ativo SATA
A configuração atual do
Active Link Power Management
(ALPM) pode ser lida pelo ou definida com
/sys/class/scsi_host/host*/link_power_management_policy
da seguinte forma:
$ grep . /sys/class/scsi_host/host*/link_power_management_policy
$ echo "med_power_with_dipm" >/sys/class/scsi_host/host
N
/link_power_management_policy
Configurações do ALPM disponíveis
Configuração
Descrição
Economia de energia
max_performance
atual padrão
Nenhum
medium_power
-
~1.0 Watts
med_power_with_dipm
configuração recomendada
1
~1.5 Watts
min_power
ATENÇÃO: possível perda de dados
2
~1.5 Watts
Desde a versão 4.15 do Linux há uma
configuração
chamada
med_power_with_dipm
que corresponde ao comportamento das configurações de driver IRST do Windows e não deve causar perda de dados com SSDs ou HDDs recentes. A economia de energia pode ser significante,
cerca de 1.0 até 1.5 Watts (quando ocioso)
. Isto se tornou a definição padrão para notebooks/laptops baseados em Intel na versão 4.6 do Linux
[5]
.
Atenção
A definição
min_power
do Gerenciamento de energia do Link Ativo SATA pode levar a perda de dados em alguns dispositivos. Não habilite esta opção a não ser que você faça backups frequentemente.
Você pode configurar de forma persistente as definições em
link_power_management_policy
ao adicionar um arquivo de regras
udev
, por exemplo:
/etc/udev/rules.d/hd_power_save.rules
ACTION=="add", SUBSYSTEM=="scsi_host", KERNEL=="host*", ATTR{link_power_management_policy}="med_power_with_dipm"
Nota
Isto adiciona uma latência ao acessar uma unidade que esteja ociosa, então esta pode ser uma das poucas definições que valem a pena trocar baseado em quando você estiver conectado a um carregador/fonte de alimentação ou não.
Nem todas as combinações dos controladores que gerenciam o SATA e os dispositivos de armazenamento funcionam bem com o padrão
med_power_with_dipm
configurado. Por exemplo:
Desde o linux-6.8.1, os controladores do Intel 7 Series Chipset irão experienciar
timeouts
e degradação do link ao acessar SSDs da Crucial M550 (com o firmware MU02).
Desde o linux-6.9.6, os controladores da AMD 600 Series Chipset SATA usados com os drives de disco óptico HL-DT-ST BDDVDRW GGC-H20L apresentam um efeito incômodo em que o ROM drive irá reinicializar de forma barulhenta em torno de apenas alguns minutos.
Em tais casos, definir
medium_power
na configuração pode resolver o problema.
Unidade de disco rígido
Veja a paǵina
hdparm#Power management configuration
para saber quais configurações podem ser usadas nos parâmetros do dispositivo.
Economia de energia não é efetiva se muitos programas estão frequentemente escrevendo no disco; é possível localizar todos os programas, e como, ou quando, eles escrevem no disco para limitar o uso do driver. Use
iotop
para descobrir quais programas usam o disco com frequência. Veja na seção
Melhorando o desempenho#Dispositivos de armazenamento
para mais dicas.
Pequenos ajustes, como a opção
noatime
, podem ser benéficos. Se houver memória RAM o suficiente disponível, considere desabilitar ou limitar
swappiness
, pois o mesmo permite limitar uma boa porção de escrituras no disco.
Para dispositivos Seagate com tecnologia
PowerChoice
, truques para configurar APM via
hdparm
não irão funcionar por conta do recurso
EPC
(Condição de Energia Estendida). Ao invés de configurar APM, considere
instalar
openseachest
AUR
e desativar totalmente o EPC da seguinte maneira, demonstrada logo abaixo, (troque o
X
pela letra real do dispositivo):
# openSeaChest_PowerControl --scan
# openSeaChest_PowerControl -d /dev/sd
X
-i
# openSeaChest_PowerControl -d /dev/sd
X
--showEPCSettings
# openSeaChest_PowerControl -d /dev/sd
X
--EPCfeature disable
# openSeaChest_PowerControl -d /dev/sd
X
--showEPCSettings
O último comando invocado pode disponibilizar o seguinte resumo:
==========================================================================================
 openSeaChest_PowerControl - openSeaChest drive utilities - NVMe Enabled
 Copyright (c) 2014-2023 Seagate Technology LLC and/or its Affiliates, All Rights Reserved
 openSeaChest_PowerControl Version: 3.3.1-4_1_1 X86_64
 Build Date: Jul  4 2023
 Today: Tue Jul  4 17:49:36 2023        User: root
==========================================================================================

/dev/sd
X
- ST1000NM0008-2F2100 - ZFA19JG2 - SN02 - ATA

===EPC Settings===
        * = timer is enabled
        C column = Changeable
        S column = Savable
        All times are in 100 milliseconds

Name       Current Timer Default Timer Saved Timer   Recovery Time C S
Idle A      0            *10           *10           1             Y Y
Idle B      0            *1200         *1200         3             Y Y
Idle C      0             6000          6000         16            Y Y
Standby Z   0             9000          9000         46            Y Y
Os zeros na primeira coluna confirmam a desativação e a interrupção do relógio de disco e do disco giratório de forma bem sucedida.
Ferramentas e scripts
Usando um script e uma regra udev
Desde que usuários do systemd possam suspender e hibernar através de
systemctl suspend
ou
systemctl hibernate
e manipular eventos ACPI com
/etc/systemd/logind.conf
, então pode ser interessante remover
pm-utils
e
acpid
. Há apenas uma coisa que systemd não pode fazer (até a versão 204 pelo menos): a gestão de energia depende que exista diferenciação entre um sistema conectado pela fonte de alimentação ou pela bateria para funcionar melhor. Para preencher esta lacuna você pode criar uma única regra
udev
que executa um script enquanto a fonte de alimentação estiver conectada e o desativa quando ausente:
/etc/udev/rules.d/powersave.rules
SUBSYSTEM=="power_supply", ATTR{online}=="0", RUN+="/caminho/para/seu/script true"
SUBSYSTEM=="power_supply", ATTR{online}=="1", RUN+="/caminho/para/seu/script false"
Nota
Você pode usar o mesmo script que
pm-powersave
usa. Você só precisa fazê-lo executável e colocá-lo em outro lugar (por exemplo
/usr/local/bin/
).
Exemplos de
powersave scripts
:
ftw
, pacote:
ftw-git
AUR
powersave
throttlectl
, de
throttlectl
AUR
É esperado que a regra udev logo acima já baste, mas se as suas configurações de energia não forem atualizadas depois de um ciclo de suspensão ou hibernação, então adicione o script em
/usr/lib/systemd/system-sleep/
com o conteúdo abaixo:
/usr/lib/systemd/system-sleep/00powersave
#!/bin/sh

case $1 in
    pre) /caminho/para/seu/script false ;;
    post)       
	if cat /sys/class/power_supply/AC0/online | grep 0 > /dev/null 2>&1
	then
    		/caminho/para/seu/script true	
	else
    		/caminho/para/seu/script false
	fi
    ;;
esac
exit 0
Um pequeno lembrete: Logo após que criar, deixe seu script com as devidas permissões de execução!
Nota
Tenha em mente que AC0 pode ser diferente em seu notebook/laptop, mude-o se for o caso.
Permitir usuários que desliguem o sistema
Eventos de botão e tampa
Os eventos
suspend
,
poweroff
e
hibernate
; respectivamente "suspender", "desligar" e "hibernar", quando acionados ao pressionar um botão ou ao fechar a tampa, são manipulados pelo
logind
, como descrito pela seção
#Eventos ACPI
.
Usando systemd-logind
Se você estiver usando
polkit
, neste caso usuários em sessões não remotas podem emitir comandos relacionados à gestão de energia contanto que
a sessão não esteja quebrada
.
Para checar se a sessão está ativa:
$ loginctl show-session $XDG_SESSION_ID --property=Active
O usuário pode então digitar comandos de
systemctl
ou adicioná-los aos menus:
$ systemctl poweroff
$ systemctl reboot
Outros comandos podem ser usados igualmente, incluindo
systemctl suspend
e
systemctl hibernate
. Veja a seção
System Commands
em
systemctl(1)
.
Usando sudo
Instale
sudo
e permita ao usuário
privilégios de sudo
, assim o usuário poderá usar comandos de
sudo systemctl
(por exemplo
sudo systemctl poweroff
,
sudo systemctl reboot
,
sudo systemctl suspend
e
sudo systemctl hibernate
). Veja a seção
System Commands
em
systemctl(1)
.
Usuários sem privilégios de sudo
Se usuários devem apenas conseguir usar comandos de desligamento e, entretanto, não ter outros privilégios de sudo, então, como root, adicione os determinados comandos no final de
/etc/sudoers
usando o comando
visudo
. Substitua
user
pelo nome de usuário e
hostname
pelo nome de host da máquina.
user
hostname
=NOPASSWD: /usr/bin/systemctl poweroff,/usr/bin/systemctl halt,/usr/bin/systemctl reboot
Agora usuários podem desligar com
sudo systemctl poweroff
e reiniciar com
sudo systemctl reboot
. Usuários que desejem desligar o sistema podem também usar
sudo systemctl halt
. Defina a tag
NOPASSWD:
apenas se não for esperada a solicitação de senha.
Veja também
ThinkWiki:How to reduce power consumption
How to get longer battery life on Linux