36 Gerenciamento de energia #
O gerenciamento de energia é especialmente importante em laptops, mas também é útil em outros sistemas. A Interface de Energia e Configuração Avançada (ACPI, Advanced Configuration and Power Interface) está disponível em todos os computadores modernos (laptops, desktops e servidores). As tecnologias de gerenciamento de energia exigem hardware adequado e rotinas BIOS. A maioria dos laptops e muitos desktops e servidores modernos atendem a esses requisitos. Também é possível controlar a escala de frequência de CPU para economizar energia ou reduzir o ruído.
36.1 Funções de economia de energia #
As funções de economia de energia não são significativas apenas para o uso móvel de laptops, como também para sistemas desktop. As funções principais e respectivas utilizações na ACPI são:
- Standby
Não suportado.
- Suspender (para a memória)
Este modo grava todo o estado do sistema na memória RAM. Em seguida, todo o sistema é colocado em repouso, salvo a memória RAM. Neste estado, o computador consome pouquíssima energia. A vantagem desse estado é a possibilidade de reiniciar o trabalho no mesmo ponto em alguns segundos sem precisar inicializar e reiniciar os aplicativos. Essa função corresponde ao estado da ACPI
S3
.- Hibernação (suspender para disco)
Neste modo operacional, o estado do sistema inteiro é gravado no disco rígido e o sistema é desligado. Deve existir uma partição de troca pelo menos tão grande quanto a RAM para gravar todos os dados ativos. A reativação desse estado leva de 30 a 90 segundos. O estado anterior ao suspenso é restaurado. Vários fabricantes oferecem variantes híbridas úteis desse modo, como RediSafe em Thinkpads da IBM. O estado correspondente da ACPI é
S4
. No Linux, a suspensão para disco é desempenhada pelas rotinas de kernel, que são independentes de ACPI.Nota: UUID modificado para partições de troca (swap) ao formatar commkswap
Não reformate as partições de troca (swap) existentes com
mkswap
, se possível. A reformatação commkswap
muda o valor do UUID da partição de troca (swap). Reformate usando o YaST (o que atualizará o/etc/fstab
) ou ajuste o/etc/fstab
manualmente.- Monitor de bateria
A ACPI verifica o status da carga da bateria e fornece informações correspondentes. Além disso, ela coordena as ações a serem desempenhadas quando um status de carga crítico é atingido.
- Desligamento automático
Após um encerramento, o computador é desligado. Isto é especialmente importante quando um encerramento automático é realizado pouco antes da bateria esgotar-se.
- Controle de velocidade do processador
Em conexão com a CPU, é possível economizar energia de três maneiras diferentes: escala de frequência e voltagem (também conhecida como PowerNow! ou Speedstep), throttling e adormecimento do processador (C-states). Dependendo do modo operacional do computador, esses métodos também podem ser combinados.
36.2 Advanced Configuration and Power Interface (ACPI) #
A ACPI foi desenvolvida para habilitar o sistema operacional a configurar e controlar cada componente de hardware. A ACPI substitui tanto o Plug and Play (PnP) de Gerenciamento de Energia quanto o Gerenciamento Avançado de Energia (APM). Ela envia informações sobre a bateria, o adaptador de CA, a temperatura, o ventilador e eventos do sistema, como “fechar tampa” ou “bateria fraca”.
O BIOS fornece tabelas que contém informações sobre os componentes individuais e métodos de acesso ao hardware. O sistema operacional usa essas informações para tarefas como atribuir interrupções ou ativar e desativar componentes. Como o sistema operacional executa comandos armazenados no BIOS, a funcionalidade depende da implementação do BIOS. As tabelas que a ACPI pode detectar e carregar estão relatadas em journald. Consulte o Capítulo 21, journalctl
: consultar o diário do systemd
para obter mais informações sobre como ver as mensagens de registro do diário. Consulte a Seção 36.2.2, “Solução de problemas” para obter mais informações sobre solução de problemas da ACPI.
36.2.1 Controlando o desempenho da CPU #
A CPU pode economizar energia de três maneiras:
Escala de frequência e voltagem
Obstruindo a frequência do relógio (T-states)
Adormecendo o processador (C-states)
Dependendo do modo operacional do computador, estes métodos também podem ser combinados. Economizar energia também significa que o sistema esquenta menos e os ventiladores são ativados com menos frequência.
Expansão e throttling de frequência são relevantes apenas quando o processador está ocupado, pois o C-state mais econômico é aplicado de qualquer maneira quando o processador fica ocioso. Se a CPU estiver ocupada, a escala da frequência é o método recomendado para economia de energia. Em geral o processador só trabalha com carga parcial. Neste caso, pode ser executado com uma frequência inferior. A expansão da frequência dinâmica controlada pelo regulador sob demanda do kernel é a melhor abordagem.
Throttling deve ser usado como última alternativa, por exemplo, para ampliar o tempo de operação da bateria, apesar de uma alta carga do sistema. Contudo, determinados sistemas não são executados continuamente quando ocorrem throttlings em excesso. Ademais, o throttling da CPU não faz sentido se a CPU tem pouco a fazer.
Para obter informações mais detalhadas, consulte o Chapter 12, Power management.
36.2.2 Solução de problemas #
Há dois tipos de problemas. De um lado, o código ACPI do kernel pode conter erros que não foram detectados em tempo útil. Neste caso, uma solução estará disponível para download. O mais comum é que os problemas sejam causados pelo BIOS. Às vezes, desvios da especificação da ACPI são propositalmente integrados ao BIOS para contornar erros na implementação da ACPI em outros sistemas operacionais amplamente utilizados. Componentes de hardware que têm erros sérios na implementação da ACPI são gravados em uma lista negra que impede que o kernel do Linux use a ACPI para esses componentes.
A primeira ação a ser tomada quando problemas forem detectados, é atualizar o BIOS. Se o computador não inicializar, um dos seguintes parâmetros de boot poderá ser útil:
- pci=noacpi
Não usar ACPI para configurar os dispositivos PCI.
- acpi=ht
Realizar apenas uma configuração com recursos simples. Não usar a ACPI para outros fins.
- acpi=off
Desabilitar a ACPI.
Determinadas máquinas mais novas (especialmente os sistemas SMP e AMD64) precisam de ACPI para configurar o hardware corretamente. Nestas máquinas, desabilitar a ACPI pode causar problemas.
Às vezes a máquina é confundida pelo hardware conectado por USB ou FireWire. Se uma máquina se recusa a inicializar, desconecte todos os itens de hardware desnecessários e tente novamente.
Monitore as mensagens de boot do sistema com o comando dmesg
-T
| grep -2i acpi
(ou todas as mensagens, porque o problema pode não ser causado pela ACPI) após a inicialização. Se ocorrer um erro ao analisar uma tabela ACPI, a tabela mais importante, a DSDT (Differentiated System Description Table), poderá ser substituída por uma versão aprimorada. Neste caso, a DSDT defeituosa do BIOS é ignorada. O procedimento está descrito na Seção 36.4, “Solução de problemas”.
Na configuração do kernel, há um switch para ativar as mensagens de depuração da ACPI. Se houver um kernel com depuração ACPI compilado e instalado, serão emitidas informações detalhadas.
Se você tiver problemas com BIOS ou hardware, é sempre recomendável entrar em contato com os fabricantes. Especialmente se eles nem sempre derem assistência ao Linux, devem ser indagados em caso de problemas. Os fabricantes apenas levarão a questão a sério se reconhecerem que um número satisfatório de seus clientes usa Linux.
36.2.2.1 Mais informações #
https://tldp.org/HOWTO/ACPI-HOWTO/ (ACPI HOWTO detalhado, contém patches DSDT)
https://uefi.org/specifications (Configuração Avançada e Especificação da Interface de Energia)
36.3 Inatividade do disco rígido #
No Linux, o disco rígido pode colocado em repouso total se não estiver em uso e pode ser executado em modo mais econômico ou silencioso. Nos laptops modernos, não é necessário desativar o disco rígido manualmente, porque entram automaticamente em um modo operacional econômico sempre que não estão em uso. No entanto, para aumentar a economia de energia, tente os seguintes métodos usando o comando hdparm
.
Ele pode ser usado para modificar configurações de disco rígido. A opção -y
alterna imediatamente o disco rígido para o modo standby. -Y
coloca-o no modo adormecido. hdparm
-S
X faz o disco rígido ser encerrado após um determinado período de inatividade. Substitua X conforme mostrado a seguir: 0
desabilita esse mecanismo, fazendo o disco rígido funcionar continuamente. Valores de 1
a 240
são multiplicados por 5 segundos. Valores de 241
a 251
correspondem de 1 a 11 vezes 30 minutos.
As opções de economia de energia interna do disco rígido podem ser controladas pela opção -B
. Selecione um valor de 0
a 255
para obter de economia máxima a throughput máximo. O resultado depende do disco rígido usado e é difícil de avaliar. Para tornar um disco rígido mais silencioso, use a opção -M
. Selecione um valor de 128
a 254
para obter de silencioso a rápido.
Muitas vezes não é fácil colocar o disco rígido em repouso. No Linux, vários processos gravam no disco rígido, ativando-o repetidamente. Portanto, é importante entender como o Linux trata os dados que necessitam ser gravados no disco rígido. Primeiro, todos os dados estão no buffer da memória RAM. Esse buffer é monitorado pelo daemon pdflush
. Quando os dados atingem uma determinada idade limite ou quando o buffer está cheio até certo grau, o conteúdo do buffer é descarregado para o disco rígido. O tamanho do buffer é dinâmico e depende do tamanho da memória e da carga do sistema. Por padrão, pdflush é configurado em intervalos curtos para obter a integridade máxima de dados. Ele verifica o buffer a cada 5 segundos e grava os dados no disco rígido. As seguintes variáveis são interessantes:
/proc/sys/vm/dirty_writeback_centisecs
Inclui o atraso até o thread pdflush ser acionado (em centésimos de segundo).
/proc/sys/vm/dirty_expire_centisecs
Define o período após o qual uma página modificada deve ser gravada por último. O padrão é
3000
, o que equivale a 30 segundos./proc/sys/vm/dirty_background_ratio
Porcentagem máxima de páginas modificadas para pdflush começar a gravá-las. O padrão é
5
%./proc/sys/vm/dirty_ratio
Quando a página modificada exceder essa porcentagem da memória total, os processos serão forçados a gravar buffers modificados durante suas frações de tempo em vez de continuar gravando.
As mudanças feitas nas configurações do daemon pdflush
podem comprometer a integridade dos dados.
Além desses processos, os sistemas de arquivos de registro em diário, como Btrfs
, Ext3
, Ext4
, e outros, gravam seus metadados independentemente do pdflush
, que também impede que o disco rígido seja encerrado. Para evitar isso, foi desenvolvida uma extensão especial de kernel para dispositivos móveis. Para usar a extensão, instale o pacote laptop-mode-tools
e consulte /usr/src/linux/Documentation/laptops/laptop-mode.txt
para obter detalhes.
Outro fator importante é o modo como se comportam os programas ativos. Por exemplo, os bons editores gravam regularmente backups ocultos do arquivo modificado no momento para o disco rígido, fazendo com que ele saia do modo de hibernação. Recursos como este podem ser desabilitados às custas da integridade dos dados.
Com relação a isso, o mail daemon postfix usa a variável POSTFIX_LAPTOP
. Se essa variável for definida como yes
, o postfix acessará o disco rígido com muito menos frequência.
No SUSE Linux Enterprise Desktop, estas tecnologias são controladas por laptop-mode-tools
.
36.4 Solução de problemas #
Todas as mensagens de erro e os alertas são registrados no diário do sistema, que pode ser consultado com o comando journalctl
(consulte o Capítulo 21, journalctl
: consultar o diário do systemd
para obter mais informações). As seções a seguir abordam os problemas mais comuns.
36.4.1 A frequência da CPU não funciona #
Consulte as fontes do kernel para ver se o seu processador é suportado. Você poderá precisar de um módulo de kernel ou de opção especial para ativar o controle de frequência da CPU. Se o pacote kernel-source
estiver instalado, essas informações estarão disponíveis em /usr/src/linux/Documentation/cpu-freq/*
.