Quanto scritto in questo post è il seguito di quanto nei seguenti:
Ora sto usando il kernel Linux 2.6.29. Quindi per versioni inferiori, per esempio, alcuni percorsi in /sys potrebbero essere diversi.
Risparmio energetico Hard Disk tramite File System ext4 (ext3)
Possiamo far risparmiare il nostro Hard Disk tramite alcune opzioni di ext4 (ext3):
- esistono 3 modi per fare il journaling: data=writeback, data=ordered, data=journal. Quello meno sicuro è il primo ma ottiene meno accessi al disco. Il più sicuro è l’ultimo ma si hanno più accessi al disco. Il secondo invece è l’impostazione di default. Più informazioni si possono trovare qua. Se vogliamo riassumere: se avete una partizione sulla quale potete rischiare che un file appena modificato diventi corrotto, nel caso di un inaspettato riavvio, potete mettere pure data=writeback. Altrimenti è meglio lasciare tutto con i valori di default;
- si può anche disattivare il journaling con l’opzione noload. Sembra essere stato provato che ext4 senza journaling sia più performante di ext2 (che è il File System che non ha il journaling). Quindi se avete una partizione sulla quale non vi interessa preservare il File System, cioé a seguito di una corruzione dovete riformattare tutto con perdita dei dati, potrebbe essere una buona idea mettere ext4 con opzione noload. Potrebbe andare bene, per esempio, per chi ha una partizione separata per /var/cache/pacman;
- per avere meno accessi al disco si può usare l’opzione relatime (l’evoluzione di noatime che non fa arrabbiare Mutt). Si fa in modo che venga aggiornato lo atime (il tempo di ultimo accesso) solo se quello precedente è diverso da mtime (il tempo di modifica) o da ctime (il tempo di accesso). Maggiori informazioni si possono trovare qui. Questa opzione non dovrebbe aver nessuna controindicazione (gli amici di Ubuntu la usano di default dalla versione 8.04);
- commit: fa il sync (cioé scrive veramente sul disco) tutti i dati e metadati ogni tot secondi. Di default è 5 ma se c’è qualche furbo che mette 0 sappia che commit prende lo stesso 5. Dico subito che questo non inficia il journaling ma potrebbe provocare sgradevoli sorprese. Faccio un esempio con il valore di default, cioé commit=5. Siete in treno e avete il portatile alimentato a batteria, per una ragione a noi sconosciuta Linux va in crash: al massimo perdete tutto quello che avete scritto, della vostra tesi di laurea, negli ultimi 5 secondi. Quindi se volete mettere una valore maggiore di commit, per aver meno accessi al disco, siete avvertiti. Sempre facendo riferimento all’esempio di prima: 10 secondi farebbero bestemmiare chiunque scriva abbastanza veloce alla tastiera.
- barrier è un’opzione presente solo in ext4 e diminuisce le performance dato che forza, in un certo qual modo, il journaling. Si può disattivare, rischiando in certe occasioni una corruzione dei dati come spiegato in quell’articolo, con l’opzione nobarrier.
Risparmio energetico Hard Disk tramite tmpfs
Ancora con tmpfs? Hai rotto il “ci a 2 zeta o”.
Più o meno, voglio sfruttare tutto questo giga di ram che mi ritrovo. Visto e considerato che il nostro laptop non fa da server e dei log di sistema ci interessa fin la perché non montare /var/log su tmpfs? Appunto, quindi su fstab ho aggiunto questa riga.
none /var/log tmpfs mode=1755 0 0
Direi che è un buon compromesso fra disattivare del tutto i log e averli sempre scritti sul disco. Lo stesso si può fare anche con /var/run e /var/lock
none /var/run tmpfs mode=1755 0 0
none /var/lock tmpfs mode=1777 0 0
Se qualcuno se lo chiede mode imposta i permessi nella stessa logica numerica di chmod, ho visto i permessi delle directory e ho impostato tmpfs di conseguenza.
Risparmio energetico Hard Disk tramite swappiness
La swap è una partizione importante, dovrebbe esserci sempre nonostante i giga e giga di ram che abbiamo. Però possiamo aiutare il kernel nel dirgli: ok c’è, ma usane proprio quando strettamente necessario. Questa cosa si cerca già di fare ma in un portatile è ancora più importante. Ho così letto questa spiegazione per esseri umani. Ho modificato /etc/sysctl.conf aggiungendoci la riga vm.swappiness = 30. In questo caso ho preferito non masturbare il kernel dicendogli nell’avere un valore di swappiness differente a seconda dell’alimentazione.
Risparmio energetico USB
Ho trovato interessante questa lettura. Spiega anche il famoso usbcore.autosuspend=1
che ci consiglia powertop e che a me non interessa perché il delay mi va bene anche al valore di default cioé 2.
Di solito chi usa il portatile non ha device USB inseriti (anche se alcuni interni, come il bluetooth, sono sempre USB). Quindi perché dare tutta la corrente a tutte le porte? Appunto! Occhio prima di procedere con quanto indicato, non fatelo se non sapete quali dispositivi USB state disattivando sopratutto sul computer fisso: tastiera, mouse? Sennò non potete più accedere al sistema!
Per sospendere l’alimentazione a tutti (che è come fare l’autosuspend con delay 0)
echo suspend > /sys/class/usb_device/*/device/power/level
mentre per ritornare alla situazione di default
echo auto > /sys/class/usb_device/*/device/power/level
Comunque ho notato che se attacco un device o se riattivo il bluetooth il corrispondente livello ritorna, da solo, alla situazione di default. Almeno da quanto ho letto dalla documentazione per un device USB potrebbe essere normale (peccato che sul fisso, sospendendo tutto, né mouse ne tastiera volevano tornare alla situazione di prima).
Undervolting CPU
Dato che sto ancora provando, più o meno, vi consiglio di darvi una letta a questo topic presente nel forum di Arch Linux. Ho cercato di spiegare e scovare tutte le informazioni per configurare l’undervolting di una CPU Intel Dual Core (che io sappia non esiste una documentazione e bisogna poprio andare di google e forum ufficiale del progetto). Quindi aspettatevi, magari fra qualche mese o mai, una Parte VI per la gestione energetica dove illustrerò i valori minimi di Volt da dare in pasto al mio T7250.
E anythings.zsh?
Vero? Non vi ho ancora dato l’ultima versione del mio script omnicomprensivo che intercetta qualsiasi evento acpi per il semplice fatto che potete trovarlo qua (insieme ad rc.local…).