Pagine

sabato 11 dicembre 2010

Scaliamo il nostro processore con un semplice script

Siete stufi di quella inutile applet che brutta il bellissimo pannello di Gnome, appesantendo il sistema con uno spropositato consumo di ram? Siete stanchi di vedere quei tipacci di KDE o, peggio ancora, quelli di Xfce vantarsi dei loro migliori sistemi di gestione della CPU ed in generale della gestione energetica? Ecco quello che fa per voi!

Il sistema qui proposto si basa su uno script talmente banale che sono stato in grado di crearlo io stesso, che sono tutt'altro che esperto, ed è in grado di funzionare su tutti i Desktop Environment, su tutte le distro e su tutti i computers. L'unico prerequisito è disporre di un processore che supporti lo scaling.
Lo usavo pure sul mio defunto portatilone (sia pace alla CPU sua!), che, è bene precisarlo, non è passato a miglior vita proprio a causa dello script! :-D
Tuttavia, se vi esplode il pc, non sarò considerato io il responsabile!

Creiamo lo script

La prima cosa da fare è aprire un editor di testo qualunque e copiarvi il seguente testo:
#!/bin/bash
#
# by Doc
# released under GPL

state=`cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor`

if [ "$state" = "ondemand" ] ; then
 sudo cpufreq-set -c 1 -g conservative
 sudo cpufreq-set -c 0 -g conservative
 DISPLAY=:0.0 /usr/bin/notify-send "CPUFreq: Conservative" -i "/usr/share/icons/gnome/32x32/devices/ac-adapter.png" 2>/dev/null
elif [ "$state" = "conservative" ] ; then
 sudo cpufreq-set -c 1 -g powersave
 sudo cpufreq-set -c 0 -g powersave
 DISPLAY=:0.0 /usr/bin/notify-send "CPUFreq: Powersave" -i "/usr/share/icons/gnome/32x32/devices/ac-adapter.png" 2>/dev/null
elif [ "$state" = "powersave" ] ; then
 sudo cpufreq-set -c 1 -g ondemand
 sudo cpufreq-set -c 0 -g ondemand
 DISPLAY=:0.0 /usr/bin/notify-send "CPUFreq: Ondemand" -i "/usr/share/icons/gnome/32x32/devices/ac-adapter.png" 2>/dev/null
fi
Esaminiamo un attimo lo script!
Come si può notare, esso non fa altro che modificare ricorsivamente lo scaling della CPU, facendolo passare, ogni volta che viene lanciato, da ondemand ad conservative a powersave, per poi tornare a ondemand e riprendere il ciclo.
Ho usato solo questi tre governors, poiché sono quelli che uso, ma, se volete, non vi sarà difficile aggiungere gli altri disponibili, che potrete conoscere dando il sequente comando:
$ cpufreq-info
Tramite questo stesso comando, è anche possibile conoscere il numero di CPU possedute. Negli Atom il processore è uno, ma, a causa del cosiddetto hyper-threading, è visto come due. Se la situazione del vostro pc è diversa, non dovrete far altro che aggiungere le righe corrispondenti "sudo cpufreq-set blablabla", tenendo presente che la numerazione comincia da 0 e che quindi, se avete ad esempio 4 processori, dovrete contare fino a 3. Consiglierei inoltre di mettere i cpufreq-set in ordine decrescente, come nel mio script.

Un'altra cosa che potete cambiare agevolmente è l'icona che compare nella notifica. Io ho scelto /usr/share/icons/gnome/32x32/devices/ac-adapter.png, ma, se ne trovate una migliore...
A proposito: per avere le notifiche, accertatevi di aver installato notify-osd!

I passaggi successivi saranno salvare nella nostra home il file di testo con il nome cpusel (o altro di vostro gradimento), renderlo eseguibile e spostarlo in /usr/bin:
$ cd ~
$ chmod +x cpusel
$ sudo mv cpusel /usr/bin

Diamo all'utente i permessi per eseguire lo script

Lo script è già perfettamente funzionante, ma deve essere lanciato da terminale, poiché richiede i permessi di amministratore. Se quindi vogliamo poterlo utilizzare anche a livello utente, dobbiamo dare a quest'ultimo tutti i necessarii permessi. Operiamo:
$ sudo visudo
ed aggiungiamo, nei punti corrispondenti, quanto segue:
# Cmnd alias specification
Cmnd_Alias CPUSEL = /usr/bin/cpusel, /usr/bin/cpufreq-set
...
...
# User privilege specification
root    ALL=(ALL) ALL
nome_utente ALL = (ALL) ALL, NOPASSWD: CPUSEL
sostituendo nome_utente con il nome con cui vi loggate.

Aggiungiamo una scorciatoia da tastiera dedicata

Oramai, il nostro script sarà lanciabile da terminale, ma non richiederà più la password di sudo. Tuttavia, e qui ringrazio l'amico Milozzy che me ne ha fatto venire l'idea (ebbene, sì: per mesi e mesi l'ho lanciato da terminale!!!), possiamo crearci una comoda combinazione da tastiera per lanciare lo script ogni qual volta ci serva. Io uso windows+f, ma voi potete scegliere quella che preferite!
Le modalità con cui creare questa scorciatoia dipendono dal Desktop Environment che utilizzate ed esulano dai limiti di questa guida.

---------------------------------
by Doc, last modified 11 December 2010
Powered by Bluefish

Nessun commento:

Posta un commento