Lo scopo principale di ogni tecnica di gestione dell'energia è quello di limitare l'usura dell'oggetto. Nel caso della gestione dell'energia dei laptop, i nostri sforzi sono rivolti a ridurre lo sfruttamento della CPU e del disco rigido. Semplificando un po', tutto ciò viene suddiviso in tecniche ovvie, semi ovvie, e non ovvie, dando per scontato che le vostre previsioni di utilizzo possano essere differenti.
Suspend to Disk (S2D) rimane un compito elusivo, sotto Linux. Il progetto principale, al momento, è swsup, disponibile presso http://sourceforge.net/projects/swsusp. È ancora piuttosto recente e richiede che si intervenga sulla configurazione per abilitarlo.
hdparm è un'utilità della shell di Linux che può essere usata per "addormentare" e migliorare le prestazioni di vari dispositivi ATA/IDE. Se non è incluso nel vostro sistema, è possibile prelevare i sorgenti da http://freshmeat.net/redir/hdparm/4062/url_homepage/hardware. Per esempio, quanto segue fornisce supporto IO a 32 bit con sync (-c3), supporto DMA (-d1), Advanced Power Management (-B128), scrittura su cache (-W1), spegnimento del disco dopo cinque minuti (-S60). Mi permette fantastiche prestazioni con l'aggiunta del risparmio di energia. Tenete presente che le vostre esigenze di utilizzo potrebbero differire, quindi vorrete forse adattare tale configurazione al vostro specifico sistema per prevenire perdite di dati (specialmente le opzioni -B e -m!).
Nell'esempio che segue, lanciamo un'analisi delle prestazioni di lettura/scrittura del nostro disco rigido prima e dopo l'uso di hdparm. Si noti che, mentre le nostre scritture su cache rimangono più o meno le stesse, le nostre effettive letture fisiche dal disco ottengono un incredibile incremento! Se vi piace vivere sul filo del rasoio, potete destreggiarvi tra le opzioni -m, -c, -B, e -u con cautela (si veda la pagina man).
bash# hdparm -tT /dev/hda Timing buffer-cache reads: 588 MB in 2.01 seconds = 292.15 MB/sec Timing buffered disk reads: 14 MB in 3.46 seconds = 4.05 MB/sec bash# hdparm -k1 -K1 -c3 -d1 -W1 /dev/hda bash# hdparm -tT /dev/hda Timing buffer-cache reads: 596 MB in 2.01 seconds = 297.01 MB/sec Timing buffered disk reads: 72 MB in 3.05 seconds = 23.58 MB/sec |
Esaminate il vostro file /etc/syslog.conf per individuare attività di log non necessarie e per ottimizzarne le prestazioni. Se non vi interessa effettuare il log delle attività di sistema, potreste decidere di disabilitare interamente syslogd e klogd o, per lo meno, minimizzare la quantità dei log eseguiti dal sistema. È anche possibile far precedere ogni voce dal segno meno (-) per evitare il syncing del file dopo ogni immissione di log [1]. Per esempio, quanto segue effettuerà il log di tutto ciò con priorità di info o più alta, ma inferiore a warning, su /var/log/messages o /var/log/mail senza la necessità del sync del disco dopo ogni scrittura. Dal momento che vogliamo conservare tutti i messaggi con priorità di warning, questi verranno registrati su un file differente senza disabilitare il sync del disco (per evitare perdite di dati nell'eventualità di un crash del sistema).
*.warning /var/log/syslog *.info;*.!warning;mail.none -/var/log/messages mail.info;mail.!warning -/var/log/mail |
Un altro punto da considerare sono i messaggi -- MARK -- che syslogd(8) scrive, il che avrà effetto sulle impostazioni di inattività del vostro disco rigido. Si possono disabilitare semplicemente lanciando syslogd(8) con:
if [ -x /usr/sbin/syslogd -a -x /usr/sbin/klogd ]; then # '-m 0' disabled 'MARK' messages /usr/sbin/syslogd -m 0 sleep 1 # '-c 3' displays errors on console # '-x' turns off broken EIP translation /usr/sbin/klogd -c 3 -x fi |
Ci sono essenzialmente due tipi di oscuramento dello schermo, che possono essere eseguiti sotto XFree86: BlankTime e DPMS. Il primo è essenzialmente un debole effetto di "oscuramento" che in realtà non comporta alcun risparmio di energia. L'altro è riservato ai monitor aderenti allo standard DPMS, e deve essere specificamente abilitato per avere effetto. Si trova nel file XF86Config, normalmente collocato in /etc/X11/XF86Config.
Se possedete un monitor rispondente allo standard DPMS, potete provare a abilitarne il supporto sotto la sezione Monitor del vostro file XF86Config:
Section "Monitor" Option "DPMS" EndSection |
Per manipolare le funzioni DPMS, potete creare o modificare le righe seguenti nella sezione ServerLayout.
Section "ServerLayout" Option "BlankTime" "10" # Oscura lo schermo dopo 10 minuti Option "StandbyTime" "20" # Spegne lo schermo dopo 20 minuti Option "SuspendTime" "30" # Completa ibernazione dopo 30 minuti Option "OffTime" "40" # Spegne il monitor DPMS EndSection |
Vale la pena di notare che BlankTime non costituisce affatto un livello di risparmio di energia. Allo schermo è indirizzato un "debole" effetto di oscuramento, il cui intervallo prestabilito di attivazione è di 10 minuti. In alternativa, può indicare l'intervallo in minuti prima dell'attivazione del salvaschermo. Non ha comunque niente a che vedere con DPMS.
Dopo aver attivato le proprie modifiche e aver riavviato X-Windows, può essere preferibile esaminare i propri file di log, per verificare se la propria scheda video abbia avuto qualche problema con i nuovi cambiamenti:
bash$ egrep "^\(WW|EE\)" /var/log/XFree86.0.log |
È possibile che ci siano opzioni aggiuntive, che si potrebbe voler abilitare per lo specifico driver della propria scheda o chip video; si veda il sito Web della Documentazione di XFree86 per ulteriori precisazioni.
Certamente, tutto questo può essere attivato "al volo" usando xset(1). Se non avete accesso al vostro file di sistema XF86Config , un buon posto in cui inserire questi comandi potrebbe essere il vostro file ~/.Xsession oppure ~/.xinitrc.
bash$ xset -dpms # Disabilita DPMS bash$ xset +dpms # Abilita DPMS bash$ xset s off # Disabilita l'oscuramento dello schermo bash$ xset s 150 # Oscura lo schermo dopo 150 secondi bash$ xset dpms 300 600 900 # Imposta i tempi di standby, suspend, e off (in secondi) bash$ xset dpms force standby # Introduce immediatamente il modo standby bash$ xset dpms force suspend # Introduce immediatamente il modo suspend bash$ xset dpms force off # Spegne immediatamente il monitor bash$ xset -q # Interroga le impostazioni attuali |
Se state invece usando la console di Linux (senza X-Windows), potreste usare setterm(1):
bash$ setterm -blank 10 # Oscura lo schermo dopo 10 minuti bash$ setterm -powersave on # Mette il monitor nel modo VESA di risparmio di energia bash$ setterm -powerdown 20 # Imposta a 20 minuti lo spegnimento VESA |
Assumendo che abbiate configurato XFree86 per supportare DPMS, lanciate semplicemente kcontrol e scegliete Power Control/Display Power Control. Da qui, potete configurare le impostazioni di Standby, Suspend, e Power off per il vostro monitor.
Assumendo che abbiate configurato il vostro kernel per supportare APM o ACPI, lanciate semplicemente kcontrol e scegliete Power Control/Laptop Battery. Da qui, potete configurare le varie impostazioni per il vostro sistema basate sul livello di carica rimanente della batteria.
È degno di nota che alcuni utilizzatori di ACPI tendano a vedere questo messaggio:
Your computer seems to have a partial ACPI installation. ACPI was probably enabled, but some of the sub-options were not - you need to enable at least 'AC Adaptor' and 'Control Method Battery' and then rebuild your kernel. Ossia: Sembra che sul vostro computer ci sia una installazione parziale di ACPI. ACPI è stato probabilmente abilitato, tralasciando però di abilitare alcune sotto-opzioni - dovete per lo meno abilitare 'AC Adaptor' e 'Control Method Battery' e quindi ricompilare il kernel. |
Se vedete questo, significa che ACPI non è installato o, più probabilmente, KDE non riconosce il vostro particolare sottosistema ACPI Linux. Se l'applicazione di una patch aggiornata di ACPI al kernel non risolve il problema, sarà necessario o non usare questa funzione di KDE o, in alternativa, riconvertirsi all'APM.
Energy Star è un programma sostenuto dal governo degli Stati Uniti per promuovere standard energetici efficienti. Di interesse:
Un computer qualificato come ENERGY STAR, nel modo sleep, consuma il 70% in meno di elettricità rispetto ai computer privi di caratteristiche di gestione dell'energia.
Un monitor qualificato come ENERGY STAR, nel modo sleep, consuma il 90% in meno di elettricità rispetto ai monitor privi di caratteristiche di gestione dell'energia.
Tipicamente, Energy Star ottiene tali risparmi grazie a impostazioni esterne di gestione dell'energia e non costituisce, di per sé una tecnica di gestione dell'energia.
Prendete in considerazione l'opportunità di disabilitare il vostro file di swap in /etc/fstab per ridurre gli accessi al disco rigido. Se disponete di memoria in quantità, questo è certamente un metodo da seguire. Un modo per capire se avete bisogno del file di swap consiste nell'attivarlo, usare il vostro sistema per un periodo di tempo, e quindi esaminare /proc/meminfo e /proc/swaps per determinare di quanta memoria libera disponete mediamente, e se il vostro file di swap venga mai utilizzato.
Per esempio, oggi ho compilato svariati programmi intensivi e ho fatto funzionare il mio laptop per circa otto ore di fila. Un semplice esame del mio sistema rivela:
bash$ cat /proc/swaps Filename Type Size Used Priority /dev/hda3 partition 136544 0 -1 bash$ cat /proc/meminfo MemTotal: 513880 kB MemFree: 254820 kB Buffers: 42812 kB Cached: 142880 kB SwapCached: 0 kB Active: 159644 kB Inactive: 76888 kB HighTotal: 0 kB HighFree: 0 kB LowTotal: 513880 kB LowFree: 254820 kB SwapTotal: 136544 kB SwapFree: 136544 kB Dirty: 0 kB Writeback: 0 kB Mapped: 86148 kB Slab: 10748 kB Committed_AS: 203944 kB PageTables: 1140 kB VmallocTotal: 516076 kB VmallocUsed: 1468 kB VmallocChunk: 514604 kB HugePages_Total: 0 HugePages_Free: 0 Hugepagesize: 4096 kB |
Al che, si potrebbe disabilitare il file di swap, se non c'è alcun indicatore di un probabile uso futuro.
Includendo nel kernel il supporto per il tmpfs (filesystem temporaneo) e usandolo per montarvi la directory /tmp, si ottiene che nulla verrà scritto sul disco rigido in corrispondenza di questo punto di mount, il quale agirà come un disco RAM (per contro nulla verrà salvato). Il vantaggio di tmpfs rispetto al più tradizionale ramfs è che il primo risiede nella cache interna del kernel e cresce o si riduce per adattarsi ai file che deve ospitare. Si veda il Documentation/filesystems/tmpfs.txt del proprio kernel per completa documentazione. Se non si specifica una dimensione massima, essa verrà automaticamente limitata a metà della memoria totale disponibile. Un file /etc/fstab di esempio, con un file ram temporaneo di 100MB montato sotto /tmp, apparirebbe così:
tmpfs /tmp tmpfs size=100m,mode=1777 0 0 |
La modifica di /proc/sys/vm/bdflush permette a un utente di precisare in quali circostanze i buffer "sporchi" debbano essere trasferiti su disco, quanti di tali buffer possano esistere, ecc. Per dettagli si veda nell'albero_dei_sorgenti_di_linux/Documentation/sysctl/vm.txt (grazie a Marc Liberatore per il riferimento).
Avviate il vostro sistema e elencate, con lsmod, i moduli correntemente caricati. Tutto ciò che compare nell'elenco molto probabilmente deve essere caricato regolarmente; compilandolo come parte del kernel piuttosto che come modulo può servire a ridurre il tempo necessario a caricarlo dal disco, e, in grado molto minore, riduce gli accessi al disco richiesti per l'avvio del sistema.
Esaminate la vostra configurazione di crontab per vedere se qualcosa venga avviato su base regolare. Commentate ogni voce non necessaria. Non dimenticate di esaminare il crontab di ogni singolo utente, incluso 'nobody'. Se non avete bisogno di registrare una qualsivoglia attività di background, valutate se disabilitare crontab del tutto. Lo stesso consiglio vale per atd.
Se avviate http per testare e/o sviluppare pagine web, provate a impostare i valori di MinSpareServers e StartServers a 1. Non definite alcun CustomLogging o almeno incrementate il valore di LogLevel a warn. Se vi sentite veramente sicuri di voi stessi, potete cambiare la direttiva ErrorLog perché punti a /dev/null.
Valutate se creare uno script di risparmio di energia che metta immediatamente il vostro laptop nel modo di bassa potenza:
#!/bin/sh if [ -x /usr/sbin/hdparm ]; then hdparm -y /dev/hda fi if [ -x /usr/X11R6/bin/xset ]; then xset dpms force off fi |
In più, merita attenzione quanto rientra nelle aree seguenti:
Regolate le impostazioni del BIOS del vostro sistema per ridurre o spegnere la retroilluminazione del display.
Regolate le impostazioni del BIOS del vostro sistema per ridurre la velocità di clock della CPU durante il funzionamento a batterie.
Evitate di usare i dispositivi PCMCIA durante il funzionamento a batterie. Meglio ancora, estraete le schede PCMCIA quando non sono in uso.
Evitate di collegare al computer dispositivi esterni durante il funzionamento a batterie. Questo include stampanti, monitor esterni, drive zip, e fotocamere portatili.
Evitate l'uso dei dispositivi incorporati durante il funzionamento a batterie. Questo include drive cdrom e floppy.
Usate programmi semplici. Una applicazione multimediale caricherà molto di più il sistema e creerà molta più attività su disco di un semplice word processor
Usate un window manager semplice. Gnome e KDE sono attraenti, ma tutto il tempo in più necessario per lanciarli non vale la pena, quando si usano le batterie. Un'idea elegante sarebbe usare uno script xinitrc differente per lanciare un altro window manager, più semplice in base all'utilizzo o meno delle batterie da parte del sistema.
Abitualmente risultava vantaggioso ricompilare i driver PCMCIA di Linux per permettere agli slot di godere del supporto APM per l'energia. Tuttavia, la maggior parte delle funzionalità di tali driver sono ora incluse nel kernel stesso. Se vi interessano le specifiche, la pagina del progetto PCMCIA è disponibile presso http://sourceforge.net/projects/pcmcia-cs/.
Alcune persone credono che APM offra un migliore risparmio di energia rispetto a ACPI, e viceversa. Per quanto differiscano in termini di tecniche di gestione dell'energia, nei test reali di utilizzo delle batterie, entrambi a quanto si dice garantiscono prestazioni all'incirca equivalenti.
Contrariamente alla credenza popolare, le batterie a Ioni di Litio (si veda sotto) soffrono di effetto memoria. Fortunatamente, l'effetto non è pesante rispetto al periodo di vita di una batteria tipica (3-4 anni). Chiunque affermi il contrario sta cercando di vendervi qualcosa.
[1] | syslogd.c |