33.5. Il pacchetto powersave

Il pacchetto powersave controlla tutte le funzioni di risparmio energetico sopra menzionate. A causa della richiesta in aumento di componenti a consumo energetico più basso, alcune di queste funzioni possono essere utilizzate su workstation e server, ad esempio la funzione di sospensione, standby o adattamento alla frequenza della cpu.

In questo pacchetto sono incluse tutte le funzionalità di risparmio energetico del computer. Supporta hardware che utilizzano dischi rigidi ACPI, APM, IDE e tecnologie PowerNow! oppure SpeedStep. Le funzionalità dei pacchetti apmd, acpid, ospmd e cpufreqd (ora cpuspeed) sono state consolidate nel pacchetto powersave. I daemon contenuti in questi pacchetti, eccetto acpid che funge da multiplexer per gli eventi acpi, non devono essere eseguiti contemporaneamente al daemon powersave.

Anche se il sistema non contiene tutti gli elementi hardware sopra elencati, si consiglia di utilizzare il daemon powersave per il controllo della funzione di risparmio energetico. Poiché ACPI e APM sono mutualmente esclusivi, è possibile utilizzare soltanto uno dei due a esclusione dell'altro sul computer. Il daemon rileva automaticamente qualsiasi modifica apportata alla configurazione dell'hardware.

33.5.1. Configurazione del pacchetto powersave

In genere, la configurazione di powersave è distribuita su diversi file: Tutte le opzioni di configurazione elencate contengono ulteriori informazioni sulle funzioni disponibili.

/etc/sysconfig/powersave/common

Questo file contiene le impostazioni generali per il daemon powersave. Ad esempio, è possibile aumentare la quantità di messaggi di debug in /var/log/messages aumentando il valore della variabile DEBUG.

/etc/sysconfig/powersave/events

Il daemon powersave necessita di questo file per l'elaborazione degli eventi del sistema. È possibile assegnare a un evento azioni esterne o azioni eseguite dal daemon stesso. Per le azioni esterne, il daemon prova a eseguire un file eseguibile (generamente uno script Bash) in /usr/lib/powersave/scripts/. Le azioni interne predefinite sono:

  • 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 rallenta il processore in base al valore definito in MAX_THROTTLING. Questo valore dipende dallo schema corrente. dethrottle imposta il processore sulla prestazione piena. sospensione_su_disco, sospensione_su_ram, e stand-by attivano l'evento del sistema per lo stato sleep. Queste tre azioni sono di norma responsabili dell'attivazione dello stato sleep, ma devono essere sempre associate a eventi del sistema specifici.

La directory /usr/lib/powersave/scripts contiene script per l'elaborazione degli eventi:

switch_vt

Utile se la schermata viene visualizzata dopo un'operazione di sospensione o standby.

wm_logout

Salva le impostazioni ed esegue il log out da GNOME, KDE o da altri gestori finestre.

wm_shutdown

Salva le impostazioni di GNOME o KDE e arresta il computer.

set_disk_settings

Esegue le impostazioni del disco specificate in /etc/sysconfig/powersave/disk.

Se, ad esempio, è impostata la variabile EVENT_GLOBAL_SUSPEND2DISK="prepare_suspend_to_disk do_suspend_to_disk", i due script o azioni vengono elaborati nell'ordine specifico appena l'utente da il comando a powersaved per lo stato sleep sospensione su disco. Il daemon esegue lo script esterno /usr/lib/powersave/scripts/prepare_suspend_to_disk. Dopo l'elaborazione corretta dello script, il daemon esegue l'azione interna esegui_sospensione_su_disco e imposta il computer sullo stato sleep dopo che lo script ha scaricato i moduli critici e i servizi arrestati.

Le azioni per l'evento di un pulsante sleep possono essere modificate come in EVENT_BUTTON_SLEEP="notify suspend_to_disk". In questo caso viene visualizzata una finestra popup in X o un messaggio nella console per informare l'utente dell'operazione di sospensione. Successivamente, viene generato l'evento EVENT_GLOBAL_SUSPEND2DISK che comporta l'esecuzione delle azioni indicate e una modalità sicura di sospensione del sistema. L'azione interna notify può essere personalizzata utilizzando la variabile NOTIFY_METHOD in /etc/sysconfig/powersave/common.

/etc/sysconfig/powersave/cpufreq

Contiene le variabili per l'ottimizzazione delle impostazioni dinamiche della frequenza della CPU e quelle che consentono di specificare se è necessario utilizzare l'implementazione userspace o del kernel.

/etc/sysconfig/powersave/battery

Contiene i limiti della batteria e altre impostazioni specifiche della batteria.

/etc/sysconfig/powersave/sleep

In questo file, attivare gli stati sleep e stabilire quali moduli critici devono essere scaricati e quali servizi devono essere arrestati prima dell'evento di sospensione o di stand-by. Alla ripresa del sistema, questi moduli vengono ricaricati e i servizi riavviati. È possibile anche ritardare uno stato sleep avviato, ad esempio, per salvare dei file. Le impostazioni di default interessano essenzialmente i moduli USB e PCMCIA. Un errore di sospensione o di stand-by viene causato in genere da determinati moduli. Vedere la Sezione 33.5.4, "Risoluzione dei problemi" per ulteriori informazioni sull'identificazione dell'errore.

/etc/sysconfig/powersave/thermal

Attiva il raffreddamento e il controllo termico. Informazioni dettagliate su questo argomento sono disponibili nel file /usr/share/doc/packages/powersave/README.thermal.

/etc/sysconfig/powersave/disk

Questo file di configurazione controlla le azioni e le impostazioni specificate per il disco rigido.

/etc/sysconfig/powersave/scheme_*

Esistono diversi schemi che consentono di adattare il risparmio energetico ad alcuni tipi di distribuzione. Esistono diversi schemi preconfigurati che possono essere utilizzati così come sono. Gli schemi personalizzati possono essere salvati qui.

33.5.2. Configurazione di APM e ACPI

33.5.2.1. Sospensione e stand-by

Esistono tre stati sleep ACPI di base e due stati sleep APM:

sospensione su disco (sospensione ACPI S4, APM)

Salva tutto il contenuto della memoria sul disco rigido. Il computer viene disattivato completamente e non vi è consumo di alimentazione. La modalità sleep è abilitata per impostazione predefinita e funziona su tutti i sistemi.

sospensione su RAM (sospensione ACPI S3, APM)

Salva gli stati di tutti i dispositivi nella memoria principale. Soltanto la memoria principale continua a consumare energia. La modalità sleep è disabilitata per impostazione predefinita perché causa ancora problemi su alcuni sistemi. Tuttavia, il supporto è stato notevolmente esteso.

Standby (standby ACPI S1, APM)

Spegne alcuni dispositivi (in base al produttore).

Assicurarsi che le seguenti opzioni di default siano impostate nel file /etc/sysconfig/powersave/events per l'elaborazione corretta di sospensione, stand-by e ripresa (impostazioni di default secondo l'installazione di 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. Personalizzazione degli stati della batteria

Nel file /etc/sysconfig/powersave/battery, definire i tre livelli di carica della batteria (in percentuale) che attivano gli avvisi del sistema o le azioni specifiche quando vengono raggiunti.

BATTERY_WARNING=12
BATTERY_LOW=7
BATTERY_CRITICAL=2

Le azioni o gli script da eseguire quando i livelli di carica scendono al di sotto dei limiti specificati sono definiti nel file di configurazione /etc/sysconfig/powersave/events. Le azioni standard dei pulsanti possono essere modificate come descritto riportato nella Sezione 33.5.1, "Configurazione del pacchetto powersave".

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

33.5.2.3. Adattamento del consumo di energia secondo le diverse condizioni

È possibile adattare il comportamento del sistema secondo il tipo di alimentazione. È necessario che il consumo di energia del sistema sia ridotto quando il sistema viene disconnesso dall'alimentazione a elettricità e passa al funzionamento a batteria. Allo stesso modo, è necessario che la prestazione aumenti automaticamente non appena il sistema viene connesso all'alimentazione a elettricità. È possibile modificare la frequenza della CPU, la funzione di risparmio energetico di IDE e alcuni altri parametri.

Le azioni da eseguire quando il computer viene disconnesso da o connesso all'alimentazione a elettricità sono definite in /etc/sysconfig/powersave/events. Selezionare gli schemi da utilizzare in /etc/sysconfig/powersave/common:

AC_SCHEME="performance"
BATTERY_SCHEME="powersave"

Gli schemi sono memorizzati nei file in /etc/sysconfig/powersave. I nomi file sono nel formato schema_nome-dello-schema. L'esempio fa riferimento a due schemi: schema_prestazione e schema_powersave. prestazione, powersave, presentazione e acustica sono preconfigurati. Gli schemi esistenti possono essere modificati, creati, eliminati o associati a diversi stati di alimentazione con il modulo power management di YaST descritto riportato nella Sezione 33.6, "Modulo power management di YaST".

33.5.3. Funzionalità aggiuntive di ACPI

Se si utilizza ACPI, è possibile controllare la risposta del sistema ai pulsanti ACPI (power, sleep, schermo aperto e schermo abbassato). Configurare l'esecuzione delle azioni in /etc/sysconfig/powersave/events. Per la spiegazione delle singole opzioni, fare riferimento al file di configurazione.

EVENT_BUTTON_POWER="wm_shutdown"

Alla pressione del pulsante di accensione, il sistema risponde chiudendo il rispettivo gestore delle finestre (KDE, GNOME, fvwm e così via.).

EVENT_BUTTON_SLEEP="suspend_to_disk"

Alla pressione del pulsante di sospensione, il sistema viene impostato sullo stato sospensione su disco.

EVENT_BUTTON_LID_OPEN="ignore"

Quando si apre lo schermo, non avviene nulla.

EVENT_BUTTON_LID_CLOSED="screen_saver"

Quando lo schermo viene abbassato, viene attivato lo screen saver.

EVENT_OTHER="ignore"

Questo evento si verifica quando il daemon rileva un evento sconosciuto, ad esempio i tasti di scelta ACPI di alcuni computer.

È possibile sottoporre ancora a throttling la prestazione della CPU se il carico della CPU non supera il limite specificato per un periodo specificato. Specificare il limite di carico in PROCESSOR_IDLE_LIMIT e il time-out in CPU_IDLE_TIMEOUT. Se il carico della CPU resta al di sotto del limite per un periodo di tempo superiore al time-out, viene attivato l'evento configurato in EVENT_PROCESSOR_IDLE. Se la CPU è di nuovo occupata, viene eseguito EVENT_PROCESSOR_BUSY.

33.5.4. Risoluzione dei problemi

Tutti i messaggi e gli avvisi di errore vengono registrati nel file /var/log/messages. Nel caso non si riesca a trovare le informazioni necessarie, aumentare la verbosità dei messaggi di powersave utilizzando DEBUG nel file /etc/sysconfig/powersave/common. Aumentare il valore della variabile a 7 oppure fino a 15 e riavviare il daemon. Gli ulteriori messaggi di errore in /var/log/messages sono utili per trovare l'errore. Nella sezione seguente vengono illustrati i problemi più comuni riscontrati con powersave.

33.5.4.1. ACPI attivato con supporto hardware ma le funzioni non sono attive

Se si verificano problemi con ACPI, utilizzare il comando dmesg|grep -i acpi per individuare il risultato del comando dmesg per i messaggi specifici di ACPI. Potrebbe essere necessario aggiornare il BIOS per risolvere il problema. Aprire la pagina iniziale del produttore del computer portatile, cercare la versione aggiornata del BIOS e installarla. Chiedere al produttore la conformità con la specifica ACPI più recente. Se gli errori persistono dopo l'aggiornamento del BIOS, procedere come segue per sostituire la tabella DSDT difettosa del BIOS con quella aggiornata:

  1. Scaricare la tabella DSDT per il sistema da http://acpi.sourceforge.net/dsdt/tables. Fare clic se il file è decompresso e compilato come risulta dall'estensione del file .aml (linguaggio macchina ACPI). Se questo è il caso, continuare con il passaggio 3.

  2. Se l'estensione del file della tabella scaricata è .asl (linguaggio sorgente ACPI), compilarlo con iasl (pacchetto pmtools). Immettere il comando iasl -sa file.asl. La versione più recente di iasl (compilatore Intel ACPI) è disponibile all'indirizzo http://developer.intel.com/technology/iapc/acpi/downloads.htm.

  3. Copiare il file DSDT.aml in una ubicazione qualsiasi (/etc/DSDT.aml consigliata). Modificare /etc/sysconfig/kernel e adattare di conseguenza il percorso del file DSDT. Avviare mkinitrd (pacchetto mkinitrd). Quando si installa il kernel e si utilizza mkinitrd per creare un initrd, la tabella DSDT modificata viene integrata e caricata all'avvio del sistema.

33.5.4.2. La frequenza della CPU non funziona

Fare riferimento alle origini del kernel (kernel-source) per verificare se il processore è supportato. Per attivare il controllo della frequenza della CPU, potrebbero essere necessari un modulo o opzione di modulo speciale del kernel. Questa informazione è disponibile in /usr/src/linux/Documentation/cpu-freq/*. Nel caso siano necessari un modulo o un'opzione speciale, configurarli nel file /etc/sysconfig/powersave/cpufreq con le variabili CPUFREQD_MODULE e CPUFREQD_MODULE_OPTS.

33.5.4.3. Gli stati sospensione e stand-by non funzionano

Alcuni problemi relativi al kernel impediscono l'utilizzo degli stati di sospensione e di stand-by nei sistemi ACPI:

  • Attualmente, i sistemi con oltre 1 GB di RAM non supportano lo stato di sospensione.

  • Attualmente, i sistemi con multiprocessore e i sistemi con processore P4 (con hyperthreading) non supportano lo stato di sospensione.

È possibile che l'errore sia dovuto a un'implementazione (BIOS) difettosa della tabella DSDT. In questo caso, installare un nuova DSDT.

Nei sistemi ACPI e APM: Quando vengono scaricati moduli difettosi, il sistema si arresta oppure l'evento di sospensione non viene attivato. Lo stesso accade se non si scaricano moduli o servizi di arresto che impediscono una sospensione corretta. In entrambi i casi, identificare il modulo difettoso che ha impedito lo stato sleep. I file di log generati dal daemon powersave in /var/log/suspend2ram.log e /var/log/suspend2disk.log sono molti utili a tale proposito. Se il computer non passa allo stato sleep, la causa risiede nell'ultimo modulo scaricato. Manipolare le impostazioni seguenti in /etc/sysconfig/powersave/sleep per scaricare i moduli che presentano problemi prima di uno stato di sospensione o stand-by.

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

Se si utilizza la sospensione o lo stand-by durante la modifica degli ambienti di rete o con file system montati in remoto, quali ad esempio Samba e NIS, utilizzare automounter per montarli o aggiungere i rispettivi servizi, ad esempio, smbfs o nfs, nella variabile sopra indicata. Se un'applicazione accede al file system montato in remoto prima dello stato di sospensione o di stand-by, non è possibile arrestare il servizio correttamente e il file system non può essere smontato in modo adeguato. Dopo il ripristino del sistema, il file system potrebbe essere corrotto e deve essere rimontato.

33.5.5. Ulteriori informazioni