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!
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:
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:
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:
#!/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 fiEsaminiamo 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-infoTramite 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/L'amico Marco, che ringrazio, nei commenti propone un paio di scripts alternativi, che riproduco di seguito:
#!/bin/bash # by Marco if [ -a .clock ] then #effettua la stessa operazione per tutti i processori for i in `cat /proc/cpuinfo | grep processor | cut -b 13`; do cpufreq-selector -g ondemand -c $i done rm ~/.clock else #effettua la stessa operazione per tutti i processori for i in `cat /proc/cpuinfo | grep processor | cut -b 13`; do cpufreq-selector -g performance -c $i done touch ~/.clock fi
#!/bin/bash # by Marco governor=$(zenity --title CPUFreq --list --text="Seleziona il governor" --hide-header --column check --column governor --radiolist true Ondemand false Performance false Conservative false Powersave) if [ $governor ] ; then for i in `cat /proc/cpuinfo | grep processor | cut -b 13`; do cpufreq-selector -g $governor -c $i done DISPLAY=:0.0 /usr/bin/notify-send "CPUFreq: $governor" -i "/usr/share/icons/gnome/32x32/devices/ac-adapter.png" 2>/dev/null fiQuesti due scripts sono più "generici" e dovrebbero andar bene su tutti i processori, qualunque sia la loro natura. Potremo comunque personalizzarli in base alle nostre esigenze e potremo renderli eseguibili a livello utente, sulla falsariga di quanto spiegato nella sezione seguente.
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 visudoed 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: CPUSELsostituendo 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.
Le modalità con cui creare questa scorciatoia dipendono dal Desktop Environment che utilizzate ed esulano dai limiti di questa guida.
---------------------------------
by Doc, last modified 15 December 2010
Powered by Bluefish |
Essendo un privilegiato uso il tuo script da mesi e devo confermare che è comodissimo!
RispondiElimina@Milozzy
RispondiEliminaSei stato ringraziato anche in guida.
L'ho visto e ti ringrazio: sono sempre nei tuoi pensieri.
RispondiEliminaNoi con Kde ce la passiamo meglio
RispondiEliminabasta un "solid-powermanagement query cpufreq" per vedere i governors disponibili, mentre per impostarne uno "solid-powermanagement set cpufreq nome_governor"
il tutto senza bisogno di privilegi di root :D
@Melko
RispondiEliminaTra l'altro, ci sarebbe da provare cpufreqd, che non conosco bene.
Dovrebbesi poter configurare tramite un file /etc/default/cpufreqd.
Voi ne sapete qualcosa?
piccola miglioria per il tuo script: potresti inserire al posto di
RispondiEliminasudo cpufreq-set -c 1 -g conservative
e di ripeterlo per ogni cpu la seguente stringa:
sudo cpufreq-set -c 1 -g conservative -r
il parametro -r infatti modifica tutte le cpu di un processore multicore contemporaneamente, questo da anche una maggiore scalabilità allo script.
@fiorentux
RispondiEliminaPurtroppo, ti debbo smentire!
Il casino degli Atom sta proprio in quell'hyper-threading.
Quindi, anche con l'opzione -r, se modifichi il proc. 0, la modifica non va ad agire sul proc. 1, e viceversa.
Ora che ci penso, è proprio per questi motivi che avevo rinunciato ad un metodo "unico".
Nel portatilone, invece, avevo un solo comando!
ciao,
RispondiEliminacomplimenti per il blog, è la prima volta che lo visito.
quando usavo arch mi trovavo molto bene con cpufreqd, ma adesso che per alcuni motivi sono passato ad ubuntu, avevo bisogno di qualcosa che mi cambiava la frequenza in modo pulito e instantaneo, quindi ho messo su questo piccolo script http://pastebin.com/sgDmgbLZ
credo che non ci siano bisogno di spiegazione; lo potresti usare per rendere il tuo script adatto a tutti i processori.
Marco
@Marco
RispondiEliminaGrazie mille!
Lo studio ed eventualmente lo inserisco in guida. Sarebbe infatti opportuno inserire qualche altro governor.
ciao,
RispondiEliminaa causa del delay delle notifiche, non capisci subito quale governor hai impostato, così ho tirato fuori questo, così non sapendo ne leggere ne scrivere in bash o tirato fuori anche questo: http://pastebin.com/FLv9txfQ
spero possa essere utile a qualcuno.
Marco
.... neanche in italiano so scrivere XD
RispondiElimina@Marco
RispondiEliminaNon saprai scrivere in italiano, ma conosci bene l'arte degli script! ;-)
Graziosissimo quest'ultimo in zenity.
nono, ho semplicemente fatto qualche ricerca su San Google (radio list zenity, test variable bash) e tutto è venuto da se.
RispondiEliminacomunque l'ultima "versione" è questa http://pastebin.com/sVRGCMcg
@Marco
RispondiEliminaAd ogni modo, complimenti!
Li aggiungerò in guida, con tanto di ringraziamenti ad personam.
grazie mille, troppo gentile ;-)
RispondiEliminase rimetterò mano agli script, te li segnalerò
Doc visto che ultimamente nel blog si parla di compositing ti sottopongo un problemuccio legato all'argomento: uso regolarmente lo script, ma per non so quale ragione, se non ho compositing attivo, al cambio di frequenza oltre alla notifica corretta me ne compare un'altra del tutto indesiderata nell'angolo alto a sinistra dello schermo, sopra il pannello.
RispondiEliminaHai mai notato il fenomeno?
@Milozzy
RispondiEliminaA dirti il vero, non ho mai notato il problema, forse perché xcompmgr c'è comunque.
Inoltre, uso lo script pochissimo: all'avvio, metto conservative (preferisco farlo a mano e non automatizzarlo) e mi fisso ivi per tutto il tempo di uso del pc, sia a batteria sia a corrente.