Il pacchetto powersave è responsabile della funzione di risparmio energetico nei computer portatili durante il funzionamento a batteria. Alcune delle funzionalità sono utili anche per workstations e server normali, quali ad esempio la sospensione, lo stand-by, la funzionalità del pulsante ACPI e il passaggio dei dischi rigidi IDE allo stato sleep.
In questo pacchetto sono incluse tutte le funzionalità di power management del computer. Supporta hardware che utilizza 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. Si consiglia di non eseguire i daemon di questi pacchetti contemporaneamente con il 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.
In genere, la configurazione di powersave è distribuita su diversi file:
/etc/sysconfig/powersave/common
Questo file contiene le impostazioni generali del 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 utilizza questo file per l'elaborazione degli eventi di 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 in /usr/lib/powersave/scripts/. Azioni interne predefinite:
ignora
throttle
dethrottle
sospensione_su_disco
sospensione_su_ram
stand-by
esegui_sospensione_su_disco
esegui_sospensione_su_ram
esegui_stand-by
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:
Notifica di un evento tramite console, X window oppure segnale acustico.
Attiva lo screen saver.
Risulta utile se lo schermo si trova in stato di sospensione o di stand-by.
Consente di salvare le impostazioni ed esegue il log out da GNOME, KDE o altri gestori di finestre.
Consente di salvare le impostazioni GNOME o KDE e chiude il sistema.
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, l'utente viene informato della sospensione dallo script esterno notifica. Successivamente, viene generato l'evento EVENT_GLOBAL_SUSPEND2DISK che comporta l'esecuzione delle azioni indicate e una modalità sicura di sospensione del sistema. Lo script notifica può essere personalizzato utilizzando la variabile NOTIFY_METHOD in /etc/sysconfig/powersave/common.
/etc/sysconfig/powersave/cpufreq
Contiene variabili per l'ottimizzazione delle impostazioni della frequenza dinamica della CPU.
/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 21.5.4, «Risoluzione dei problemi» per ulteriori informazioni sull'identificazione dell'errore.
/etc/sysconfig/powersave/thermal
Consente di attivare il controllo per il raffreddamento e termico. Informazioni dettagliate su questo argomento sono disponibili nel file /usr/share/doc/packages/powersave/README.thermal.
/etc/sysconfig/powersave/scheme_*
Questi sono i vari schemi che regolano il consumo di energia secondo determinati scenari di distribuzione. Esistono diversi schemi preconfigurati che possono essere utilizzati così come sono. Gli schemi personalizzati possono essere salvati qui.
Per default, gli stati sleep sono inattivi poiché su alcuni computer non funzionano. Esistono tre stati sleep ACPI di base e due stati sleep APM:
Consente di salvare tutto il contenuto della memoria sul disco rigido. Il computer viene disattivato completamente e non vi è consumo di alimentazione.
Consente di salvare gli stati di tutti i dispositivi nella memoria principale. Soltanto la memoria principale continua a consumare energia.
Consente di disattivare alcuni dispositivi (a seconda del 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 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"
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 visualizzati.
BATTERY_WARNING=20 BATTERY_LOW=10 BATTERY_CRITICAL=
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 nella Sezione 21.5.1, «Configurazione del pacchetto powersave».
EVENT_BATTERY_NORMAL="ignore" EVENT_BATTERY_WARNING="notify" EVENT_BATTERY_LOW="notify" EVENT_BATTERY_CRITICAL="wm_shutdown
È 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 preconfifurati. Gli schemi esistenti possono essere modificati, creati, eliminati o associati a diversi stati di alimentazione con il modulo power management di YaST descritto nella Sezione 21.6, «Modulo power management di YaST».
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 single opzioni, fare riferimento al file di configurazione.
Alla pressione del pulsante Power, il sistema risponde chiudendo il rispettivo gestore delle finestre (KDE, GNOME, fvwm, e così via.).
Alla pressione del pulsante Sleep, il sistema viene impostato sullo stato sospensione su disco.
Quando si apre lo schermo non avviene nulla.
Quando lo schermo viene abbassato, viene attivato lo screen saver.
È 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.
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.
Per problemi con ACPI, utilizzare il comando dmesg|grep
-i acpi
per cercare l'output di dmesg per 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:
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.
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.
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.
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.
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/sleep mode 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 la ripresa del sistema, il file system potrebbe essere corrotto e deve essere rimontato.
Con ACPI, il sistema operativo può richiedere che BIOS invii un messaggio quando il livello di carica della batteria scende al di sotto di un determinato limite. Il vantaggio di questo metodo è costituito dal fatto che la batteria non deve essere sottoposta a polling costantemente, che potrebbe causare problemi alla prestazione del computer. Tuttavia, è possibile che questa notifica non venga inviata quando il livello di carica scende al di sotto del limite specificato, anche se il BIOS dovrebbe supportare questa funzionalità. In tal caso, impostare la variabile FORCE_BATTERY_POLLING nel file /etc/sysconfig/powersave/battery su sì per eseguire forzatamente il polling della batteria.