21.5. O Pacote powersave

O pacote powersave é responsável pela função de economia de energia em laptops durante a operação com bateria. Alguns dos seus recursos também são úteis para estações de trabalho e servidores normais, como suspender, standby, funcionalidade do botão ACPI e colocar os discos rígidos IDE para adormecer.

Este pacote contém todos os recursos de gerenciamento de energia do seu computador. Suporta hardware que usa discos rígidos ACPI, APM, IDE e tecnologias PowerNow! ou SpeedStep. As funcionalidades dos pacotes apmd, acpid, ospmd e cpufreqd (agora cpuspeed) foram consolidadas no pacote powersave. Daemons desses pacotes não devem ser executados simultaneamente com o daemon de economia de energia.

Mesmo que o seu sistema não contenha todos os elementos de hardware listados acima, use o daemon powersave para controlar a função de economia de energia. Como ACPI e APM excluem-se mutuamente, você só pode usar um destes sistemas no seu computador. O daemon detecta automaticamente quaisquer mudanças na configuração do hardware.

21.5.1. Configurando o Pacote powersave

Normalmente, a configuração de powersave é distribuída para vários arquivos:

/etc/sysconfig/powersave/common

Este arquivo contém configurações gerais para o daemon de economia de energia. Por exemplo, a quantidade de mensagens de depurar em /var/log/messages pode ficar maior, aumentando-se o valor da variável DEBUG.

/etc/sysconfig/powersave/events

O daemon de economia de energia precisa deste arquivo para processar eventos do sistema. Um evento pode receber atribuição de ações externas ou de ações realizadas pelo próprio daemon. Para as ações externas, o daemon tenta executar um arquivo executável em /usr/lib/powersave/scripts/. Ações internas predefinidas:

  • ignore

  • throttle

  • dethrottle

  • suspend_to_disk

  • suspend_to_ram

  • standby

  • do_suspend_to_disk

  • do_suspend_to_ram

  • do_standby

throttle torna o processador mais lento de acordo com o valor definido em MAX_THROTTLING. Este valor depende do esquema atual. dethrottle configura o processador para desempenho total. suspend_to_disk, suspend_to_ram e standby acionam o evento do sistema para um modo adormecido. Essas três ações são de maneira geral responsáveis pelo acionamento do modo adormecido, mas elas devem ser sempre associadas a eventos específicos do sistema.

O diretório /usr/lib/powersave/scripts contém scripts para processamento de eventos:

notify

Notificação sobre um evento no console, na janela X ou sinal acústico.

screen_saver

Ativa a proteção de tela.

switch_vt

Útil se a tela for deslocada após suspensão ou standby.

wm_logout

Salva as configurações e efetua logout de GNOME, KDE ou outros gerenciadores de janela.

wm_shutdown

Salva as configurações GNOME ou KDE e desliga o sistema.

Se, por exemplo, a variável EVENT_GLOBAL_SUSPEND2DISK="prepare_suspend_to_disk do_suspend_to_disk" for configurada, os dois scripts ou ações são processados na ordem especificada tão logo o usuário dê ao powersaved o comando para o modo adormecido suspender para disco. O daemon executa o script externo /usr/lib/powersave/scripts/prepare_suspend_to_disk. Após o script ser processado com êxito, o daemon executa a ação interna do_suspend_to_disk e configura o computador para o modo adormecido depois que o script tiver descarregado módulos críticos e interrompido serviços.

As ações para o evento de um botão adormecido podem ser modificadas como em EVENT_BUTTON_SLEEP="notify suspend_to_disk". Neste caso, o usuário é informado sobre a suspensão pelo script externo notify. Em seguida, o evento EVENT_GLOBAL_SUSPEND2DISK é gerado, resultando na execução das ações mencionadas e um modo suspenso de sistema seguro. É possível personalizar o script notify com a variável NOTIFY_METHOD em /etc/sysconfig/powersave/common.

/etc/sysconfig/powersave/cpufreq

Contém variáveis para otimizar as configurações dinâmicas de freqüência da CPU.

/etc/sysconfig/powersave/battery

Contém limites de bateria e outras configurações específicas da bateria.

/etc/sysconfig/powersave/sleep

Neste arquivo, ative os modos adormecidos e determine que módulos críticos devem ser descarregados e que serviços devem ser interrompidos antes de um evento suspender ou aguardar. Quando o sistema é reiniciado, os módulos são recarregados e os serviços iniciam novamente. Você pode até retardar um modo adormecido acionado, por exemplo, para gravar arquivos. As configurações padrões referem-se sobretudo aos módulos USB e PCMCIA. Normalmente, uma falha de suspender ou aguardar é causada por determinados módulos. Consulte Seção 21.5.4, “Solução de problemas” para obter mais informações sobre identificação do erro.

/etc/sysconfig/powersave/cpufreq

Ativa o controle de resfriamento e térmico. Detalhes sobre este assunto estão disponíveis no arquivo /usr/share/doc/packages/powersave/README.thermal.

/etc/sysconfig/powersave/scheme_*

Estes são os vários esquemas que adaptam o consumo de energia a determinados cenários de distribuição. Vários esquemas são pré-configurados e podem ser usados na forma como são apresentados. Esquemas personalizados podem ser salvos aqui.

21.5.2. Configurando APM e ACPI

21.5.2.1. Suspender e Standby

Por padrão, os modos adormecidos são inativos, porque ainda não funcionam em alguns computadores. Há três modos adormecidos básicos de ACPI e dois de APM:

Suspender para Disco (ACPI S4, suspender APM)

Grava todo o conteúdo da memória no disco rígido. O computador é completamente desativado e não consome nenhuma energia.

Suspender para RAM (ACPI S3, suspender APM)

Grava os estados de todos os dispositivos na memória principal. Apenas a memória principal continua consumindo energia.

Standby (ACPI S1, APM standby)

Desativa alguns dispositivos (dependente do fabricante).

Verifique se as seguintes opções padrões estão configuradas no arquivo /etc/sysconfig/powersave/events para o correto processamento de suspender, standby e reiniciar (configurações padrões de acordo com a instalação do SUSE Linux):

EVENT_GLOBAL_SUSPEND2DISK= 
"prepare_suspend_to_disk do_suspend_to_disk"
EVENT_GLOBAL_SUSPEND2RAM= 
"prepare_suspend_to_ram do_suspend_to_ram"
EVENT_GLOBAL_STANDBY= 
"prepare_standby do_standby"
EVENT_GLOBAL_RESUME_SUSPEND2DISK= 
"restore_after_suspend_to_disk"
EVENT_GLOBAL_RESUME_SUSPEND2RAM= 
"restore_after_suspend_to_ram"
EVENT_GLOBAL_RESUME_STANDBY= 
"restore_after_standby"

21.5.2.2. Estados de bateria padronizados

No arquivo /etc/sysconfig/powersave/battery, defina três níveis de carga de bateria (em porcentagem) que acionem alertas do sistema ou ações específicas quando forem atingidos.

BATTERY_WARNING=20
BATTERY_LOW=10
BATTERY_CRITICAL=5

As ações ou scripts a executar quando os níveis de carga caem abaixo dos limites especificados estão definidos no arquivo de configuração /etc/sysconfig/powersave/events. As ações padrões para botões podem ser modificadas como descrito em Seção 21.5.1, “Configurando o Pacote powersave”.

EVENT_BATTERY_NORMAL="ignore"
EVENT_BATTERY_WARNING="notify"
EVENT_BATTERY_LOW="notify"
EVENT_BATTERY_CRITICAL="wm_shutdown"

21.5.2.3. Adaptando o consumo de energia a várias condições

O comportamento do sistema pode ser adaptado ao tipo de fonte de alimentação. O consumo de energia do sistema deve ser reduzido quando o sistema estiver desconectado da fonte de alimentação CA e operar com bateria. Da mesma maneira, o desempenho deve aumentar automaticamente, tão logo o sistema seja conectado à fonte de alimentação CA. A freqüência da CPU, a função de economia de energia de IDE e vários outros parâmetros podem ser modificados.

As ações a executar quando o computador for desconectado ou conectado à fonte de alimentação CA estão definidas em /etc/sysconfig/powersave/events. Selecione os esquemas a usar em /etc/sysconfig/powersave/common:

AC_SCHEME="performance"
BATTERY_SCHEME="powersave"

Os esquemas são armazenados em arquivos em /etc/sysconfig/powersave. Os nomes de arquivos têm o formato scheme_name-of-the-scheme. O exemplo refere-se a dois esquemas: scheme_performance e scheme_powersave. desempenho, powersave, apresentação e acústico são pré-configurados. Os esquemas existentes podem ser editados, criados, apagados ou associados com diferentes estados de fonte de alimentação com o auxílio do módulo gerenciamento de energia YaST descrito em Seção 21.6, “O módulo Gerenciamento de energia YaST”.

21.5.3. Recursos de ACPI adicionais

Se usar ACPI, você poderá controlar a resposta do seu sistema para os botões ACPI (energia, adormecido, tampa aberta e tampa fechada). Configure a execução das ações em /etc/sysconfig/powersave/events. Consulte este arquivo de configuração para obter uma explicação sobre as opções individuais.

EVENT_BUTTON_POWER="wm_shutdown"

Quando o botão de alimentação é pressionado, o sistema responde desligando o respectivo gerenciador de janela (KDE, GNOME, fvwm, etc.).

EVENT_BUTTON_SLEEP="suspend_to_disk"

Quando o botão adormecido é pressionado, o sistema é configurado para o modo suspend-to-disk.

EVENT_BUTTON_LID_OPEN="ignore"

Nada acontece quando a tampa está aberta.

EVENT_BUTTON_LID_CLOSED="screen_saver"

Quando a tampa está fechada, o protetor de tela é ativado.

É possível mais throttling do desempenho da CPU se a carga da CPU não exceder um limite especificado durante um período especificado. Especifique o limite de carga em PROCESSOR_IDLE_LIMIT e o tempo de espera em CPU_IDLE_TIMEOUT. Se a carga da CPU ficar abaixo do limite mais tempo do que o tempo de espera, o evento configurado em EVENT_PROCESSOR_IDLE é ativado. Se a CPU estiver ocupada novamente, EVENT_PROCESSOR_BUSY é executado.

21.5.4. Solução de problemas

Todas as mensagens de erro e alertas são registradas no arquivo /var/log/messages. Se não conseguir encontrar as informações necessárias, aumente o detalhamento das mensagens de economia de energia usando DEBUG no arquivo /etc/sysconfig/powersave/common. Aumente o valor da variável para 7 ou mesmo 15 e reinicie o daemon. As mensagens de erro mais detalhadas em /var/log/messages devem ajudá-lo a localizar o erro. As seguintes seções abordam os problemas mais comuns relacionados à economia de energia.

21.5.4.1. ACPI ativada com suporte de hardware mas funções não funcionam

Se você tiver problemas com a ACPI, use o comando dmesg|grep -i acpi para pesquisar a saída de dmesg para mensagens específicas à ACPI. Poderá ser necessário atualizar o BIOS para solucionar o problema. Na home page do fabricante do seu laptop, procure uma versão atualizada do BIOS e instale-a. Peça ao fabricante para estar em conformidade com a última especificação da ACPI. Se os erros persistirem após a atualização do BIOS, faça o seguinte para substituir a tabela DSDT defeituosa no seu BIOS com um DSDT atualizado:

  1. Faça o download do DSDT para o seu sistema em http://acpi.sourceforge.net/dsdt/tables. Verifique se o arquivo está descompactado e compilado como mostra a extensão de arquivo .aml (linguagem computacional ACPI). Se for o caso, continue com a etapa 3.

  2. Se a extensão de arquivo da tabela do download for .asl (linguagem fonte ACPI), compile-a com iasl (pacote pmtools). Digite o comando iasl -sa file.asl. A última versão de iasl (compilador ACPI da Intel) está disponível em http://developer.intel.com/technology/iapc/acpi/downloads.htm.

  3. Copie o arquivo DSDT.aml para qualquer localização (/etc/DSDT.aml é recomendada). Edite /etc/sysconfig/kernel e adapte o caminho para o arquivo DSDT de forma compatível. Inicie mkinitrd (pacote mkinitrd). Sempre que instalar o kernel e usar mkinitrd para criar um initrd, o DSDT modificado é integrado e carregado quando o sistema é inicializado.

21.5.4.2. A freqüência da CPU não funciona

Consulte as fontes de kernel (kernel-source) 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 freqüência da CPU. Essas informações estão disponíveis em /usr/src/linux/Documentation/cpu-freq/*. Se for necessário um módulo especial ou de opção, configure-o no arquivo /etc/sysconfig/powersave/cpufreq por meio das variáveis CPUFREQD_MODULE e CPUFREQD_MODULE_OPTS.

21.5.4.3. Suspender e Standby não funcionam

Há vários problemas relacionados ao kernel que impedem o uso de suspender e standby nos sistemas da ACPI:

  • Atualmente, os sistemas com mais de 1 GB de RAM não oferecem suporte a suspender.

  • Atualmente, os sistemas multiprocessadores e sistemas com um processador P4 (com hyperthreading) não oferecem suporte a suspender.

O erro também pode ser devido à implementação errada de DSDT (BIOS). Se for o caso, instale um novo DSDT.

Em sistemas ACPI e APM: Quando o sistema tenta descarregar módulos defeituosos, o sistema é verificado ou o evento suspenso não é acionado. O mesmo também pode acontecer se você não descarregar módulos ou interromper serviços que impeçam suma suspensão bem-sucedida. Em ambos os casos, tente identificar o módulo defeituoso que impediu o modo adormecido. Os arquivos de registro gerados pelo daemon de economia de energia em /var/log/sleep mode são muito úteis em relação a isto. Se o computador não entrar no modo adormecido, a causa está no último módulo descarregado. Manipule as seguintes configurações em /etc/sysconfig/powersave/sleep para descarregar módulos problemáticos antes de suspender ou colocar em standby.

UNLOAD_MODULES_BEFORE_SUSPEND2DISK=""
UNLOAD_MODULES_BEFORE_SUSPEND2RAM=""
UNLOAD_MODULES_BEFORE_STANDBY=""
SUSPEND2DISK_RESTART_SERVICES=""
SUSPEND2RAM_RESTART_SERVICES=""
STANDBY_RESTART_SERVICES=""

Se suspender ou colocar em standby ambientes de rede em transformação ou em conexão com sistemas de arquivo montados remotamente, como Samba e NIS, use automounter para montá-los ou adicionar os serviços respectivos como smbfs ou nfs, na variável acima mencionada. Se um aplicativo acessar o sistema de arquivo montado remotamente antes de suspender ou colocar em standby, o serviço não pode ser interrompido corretamente e o sistema de arquivo não pode ser desmontado de forma adequada. Após reiniciar o sistema, o sistema de arquivo pode estar corrompido e deve ser remontado.

21.5.4.4. Usando ACPI, a economia de energia não avisa os limites da bateria

Com ACPI, o sistema operacional pode solicitar ao BIOS para enviar uma mensagem quando o nível de carga da bateria cair abaixo de determinado limite. A vantagem deste método é que o estado da bateria não precisa ser pesquisado constantemente, o que prejudicaria o desempenho do computador. Contudo, esta notificação pode não ocorrer quando o nível de carga cai baixo do limite especificado, mesmo que, supostamente, o BIOS suporte este recurso. Se isto acontecer no seu sistema, configure a variável FORCE_BATTERY_POLLING no arquivo /etc/sysconfig/powersave/battery em sim para forçar o polling da bateria.

21.5.5. Para obter mais informações

Informações sobre o pacote powersave também estão disponíveis em /usr/share/doc/packages/powersave.