Aumentare la durata delle batterie
Powertop è una utility inizialmente sviluppata da Intel che permette di conoscere il carico di lavoro della CPU – e di ogni suo singolo core in presenza di CPU multicore come oggi è la norma – contando il numero di volte che la stessa CPU viene richiamata dai vari processi, e per quanto tempo i suddetti processi rimangono attivi facendo così uscire la CPU dal suo stato idle.
L’utility Powertop è praticamente presente nei repository di tutte le distribuzioni quindi la sua installazione può risolversi utilizzando il gestore dei pacchetti (e.g. sudo apt-get install powertop su Debian e derivate). Una volta installato, Powertop necessita di accedere all’hardware della macchina per effettuare le dovute misure e in quanto tale occorre lanciarlo con i privilegi dell’amministratore, e.g. sudo powertop o lanciarlo da utente root. In questo modo visualizzerà nella shell diversi rapporti associati ad analoghi menù nei quali ci si sposta con il tasto Tab.
Interessante la sezione Tunables nella quale con l’aggettivo Bad si indicano configurazioni non ottimizzate, mentre con Good le configurazioni che fanno risparmiare energia e che sono attive nella macchina. Nel tab Idle stats è possibile vedere la percentuale del tempo della CPU nel C-State o C-Mode.
Occorre sapere che ogni CPU dispone di diverse modalità di funzionamento indicate con la lettera C seguita da un numero: più alto è il numero più la CPU è inattiva, nel senso che disabilita un certo numero via via crescente di funzioni che così permettono di ridurre i consumi.
Lo stato C0 (Operating State) identifica la modalità attiva. Nello stato C1 (Halt) le temporizzazioni interne principali della CPU sono interrotte via software mentre i bus dell’interfaccia e l’APIC (Advanced Programmable Interrupt Controller) funzionano alla loro piena velocità (ovvero frequenza). Lo stato C2 (Stop Grant) vede le temporizzazioni principali della CPU interrotte in hardware mentre bus e APIC sono sempre attivi. Ad ogni incremento di numero viene spenta qualche funzione fino ad arrivare allo stato C6 (Deep Power Down) nel quale viene ridotta anche a 0 la tensione interna della CPU. Esistono, inoltre, dei “sotto-stati” C come C1E (Enhanced Halt) che interrompe tutte le temporizzazioni principali della CPU e in più inizia gradatamente a ridurre le tensioni interne alla CPU mentre bus e APIC viaggiano sempre a piena velocità.
Da quanto detto è evidente come sia possibile regolare in maniera granulare il risparmio energetico agendo su diversi stati della CPU (ma non solo). Tale utility allora si dimostra particolarmente indicata per i portatili poiché le ottimizzazioni portano ad un sensibile miglioramento della durata della batteria. Per tale motivo è suggerito lanciare powertop da un portatile alimentato solo a batteria e, ancora meglio, fargli generare un report utilizzando il comando powertop –html (anteponendo sudo qualora non si abbiano i privilegi dell’amministratore). Il comando genererà un report in html nella cartella dove è stato lanciato, report che possiamo aprire con un browser per le consultazioni e laddove nel tab Tuning è possibile analizzare le possibili ottimizzazioni da mettere in atto.
Un’osservazione sulla specifica VM writeback timeout il cui valore suggerito è 1500 centesimi di secondo (15 secondi) in luogo del valore di default 500 centesimi di secondo (5 secondi) come è facile verificare con il comando cat /proc/sys/vm/dirty_writeback_centisecs. Questa opzione aumenta da 5 a 15 secondi i kernel flusher ovvero i thread utilizzati dal kernel per scrivere i dati su disco. Questo vuol dire che – in linea di principio – se dovesse venir meno la tensione di alimentazione si possono perdere al più gli ultimi 15 secondi di dati. Se il pericolo è più reale per un desktop, a meno di avere un UPS (Uninterruptible Power Supply) collegato, lo è molto meno per i portatili in primo luogo perché in caso di mancanza della corrente interverrebbe l’alimentazione a batteria e in secondo luogo anche in assenza di alimentazione da rete e presenza di batterie scariche il sistema software avviserebbe del livello di scarica permettendo così di salvare il lavoro e/o iniziare – laddove possibile – la fase di ricarica delle batterie. Dal sito del progetto è possibile scaricare il manuale in pdf per approfondimenti d’uso.