1- Per prima cosa installiamo cpufreqd e cpufrequtils con rpmdrake o con il comando
Code: Select all
urpmi cpufreqd cpufrequtils
fermiamo cpufreqd se è in esecuzione, minimizziamo la finestra perchè poi ci torneremo
3- se non avete aperto la console prima lo fate ora e come root date il comando
Code: Select all
cpufreq-info
a) frequenze disponibili
b) gestori disponibili
3.1- se non doveste trovare più frequenze e più gestori disponibili probabilmente qualcosa non va nella vostra configurazione, più precisamente potrebbe non essere caricato il modulo destinato al controllo della vostra cpu, questo è stato il mio caso dove sul portatile con Celeron 550 non viene caricato il modulo p4_clock. Informatevi su quale modulo serve per il vostro processore e date
#modprobe nomemodulo
ripetete il comando cpufreq-info questa volta dovrebbero esserci più frequenze e più gestori, se è così editate /etc/modprobe.preload aggiungendo una riga con: nomemodulo
4- Lasciamo aperta la console e apriamo un editor di testo come root. Apriamo il file /etc/cpufreqd.conf (consiglio un backuop del originale) che è il file di configurazione di cpufreqd.
Il file è sostanzialmente formato da profili che verranno eseguiti dal demone, i profili sono del tipo
[Profile]
name=On_Demand_Low # nome assegnato al profilo
minfreq=20% # frequenza minima alla quale verrà settata la cpu se non le è richiesto lavoro, in %
maxfreq=80% # frequenza massima a cui verrà portata la cpu a pieno carico, in %
policy=ondemand # gestore frequenza utilizzato, cioè il criterio con il quale si varieranno le frequenze
[/Profile]
(per minfreq e maxfreq vedere frequenze disponibili e usare percentuale su frequenza massima. Es da cpufreq-info ottengo: frequenze disponibili: 375 MHz, 750 MHz, 1.13 GHz, 1.50 GHz, 1.88 GHz, 2.25 GHz, 2.63 GHz, 3.00 GHz
se desidero che 750MHz sia minfreq faccio (750/3000)*100=25 allora sarà: minfreq=25%)
e dalle regole che tengono conto, ad esempio, del tipo di alimentazione: rete, batteria, batteria scarsa o batteria carica, esecuzione di programmi (es guardare un film) o la temperatura con la interessante regola CPU Too Hot (processore troppo caldo).
[Rule]
name=CPU Too Hot #nome regola
acpi_temperature=45-100 #arco temperature
cpu_interval=50-100 #arco utilizzo cpu
profile=On_Demand_Low #nome profilo che verrà usato se si entra nelle due condizioni sopra
[/Rule]
5- editiamo il file, la sezione General deve essere così:
Code: Select all
[General]
pidfile=/var/run/cpufreqd.pid
poll_interval=2
verbosity=0
enable_remote=1
remote_group=root
[/General]
la sezione acpi deve essere:
Code: Select all
[acpi]
acpid_socket=/var/run/acpid.socket
[/acpi]
La sezione sensors_plugin non l'ho usata.
I profili messi nel file iniziale mi sembrano eccessivi, ad ogni modo una configurazione desktop sarà diversa da una per notebook.
5.1- Per una configurazione desktop inserirei un profilo
Code: Select all
[Profile]
name=On_Demand
minfreq=20%
maxfreq=100%
policy=ondemand
[/Profile]
Code: Select all
[Rule]
name=AC Rule
ac=on # (on/off)
profile=On_Demand
[/Rule]
Code: Select all
[Profile]
name=On_Demand_Low
minfreq=20%
maxfreq=80%
policy=ondemand
[/Profile]
Code: Select all
[Rule]
name=CPU Too Hot
acpi_temperature=45-100 #ovviamente la temperatura dipende dal processore
cpu_interval=50-100
profile=On_Demand_Low
[/Rule]
Il resto dei profili e regole inutilizzati si possono commentare o cancellare.
5.2- per una configurazione notebook userei i profili "On_Demand" da usare con la regola "AC Rule" come sopra, un profilo "On_Demand_Low" come sopra da usare a batteria cioè con la regola "AC Off - Medium Battery" modificata così
Code: Select all
[Rule]
name=AC Off - Medium Battery
ac=off # (on/off)
battery_interval=30-100
#exec_post=echo 5 > /proc/acpi/sony/brightness
profile=On_Demand_Low
[/Rule]
Code: Select all
[Profile]
name=Powersave
minfreq=10%
maxfreq=50%
policy=powersave
[/Profile]
Code: Select all
[Rule]
name=AC Off - Low Battery
ac=off # (on/off)
battery_interval=0-30
#exec_post=echo 5 > /proc/acpi/sony/brightness
profile=Powersave
[/Rule]
Code: Select all
[Rule]
name=CPU Too Hot
acpi_temperature=45-100
cpu_interval=50-100
profile=Powersave
[/Rule]
Code: Select all
watch -n 1 cat /proc/cpuinfo
7- Come notate io sono andato per la via della semplificazione, perchè se è vero che abbassare la frequenza porta ad un risparmio di batteria è anche vero che servirà più tempo per finire un operazione, quindi secondo me ha poco senso limitare la frequenza al 30%. Così come ho scelto spesso il gestore ondemand che ritengo sia una buona scelta anche per i sistemi desktop che non hanno esigenze particolari. Ovviamente un sistema pronto e reattivo al nanosecondo si ottiene con un governatore performance e con minfreq=maxfreq=100%, ed eliminando (o alzando i limiti di temperatura e carico processore) la regola "CPU Too Hot"
Cosa c'è da migliorare in questa guida, principalmente la gestione della luminosità dello schermo, che come vedete è commentata.
Suggerisco di visionare più cpufreqd.conf per avere un'idea migliore.