33.5. O Pacote powersave

O pacote powersave trata de todas as funções de economia de energia previamente mencionadas. Devido à demanda crescente para consumo de energia inferior em geral, alguns dos recursos também são importantes em estações de trabalho e servidores, como suspensão, standby ou a escala de freqüência de cpu.

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 destes pacotes, exceto acpid que age como um multiplexador para eventos acpi, 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.

33.5.1. Configurando o Pacote powersave

A configuração de powersave é distribuída para vários arquivos. Cada opção de configuração listada aqui contém documentação adicional sobre sua funcionalidade.

/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 (geralmente um script Bash) 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

  • notify

  • screen_saver

  • reread_cpu_capabilities

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:

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.

set_disk_settings

Executa as configurações de disco realizadas em /etc/sysconfig/powersave/disk.

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 por uma janela pop-up em X ou uma mensagem no console. Em seguida, o evento EVENT_GLOBAL_SUSPEND2DISK é gerado, resultando na execução das ações mencionadas e um modo suspenso de sistema seguro. A ação interna notify pode ser personalizada usando a variável NOTIFY_METHOD em /etc/sysconfig/powersave/common.

/etc/sysconfig/powersave/cpufreq

Contém variáveis para otimizar as configurações de freqüência de CPU dinâmica e determinar se a implementação de kernel ou o espaço de usuário deve ser usado.

/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 a Seção 33.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/disk

Este arquivo de configuração controla as ações e as configurações realizadas de acordo com o disco rígido.

/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.

33.5.2. Configurando APM e ACPI

33.5.2.1. Suspender e Standby

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. Esse modo adormecido é habilitado por padrão e deve funcionar em todos os sistemas.

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. Esse modo adormecido é desabilitado por padrão pois ainda causa problemas em alguns sistemas. Porém, o suporte foi bastante estendido.

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 screen_saver do_suspend_to_disk"
EVENT_GLOBAL_SUSPEND2RAM=
    "prepare_suspend_to_ram screen_saver do_suspend_to_ram"
EVENT_GLOBAL_STANDBY=
    "prepare_standby screen_saver 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"

33.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=12
BATTERY_LOW=7
BATTERY_CRITICAL=2

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 na Seção 33.5.1, “Configurando o Pacote powersave”.

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

33.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 na Seção 33.6, “O módulo Gerenciamento de energia YaST”.

33.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.

EVENT_OTHER="ignore"

Esse evento ocorre se um evento desconhecido for encontrado pelo daemon. Eventos desconhecidos incluem teclas de atalho ACPI em algumas máquinas.

É 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.

33.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.

33.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.

33.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.

33.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/suspend2ram.log e /var/log/suspend2disk.log 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.

33.5.5. Mais informações