Modulare il funzionamento di una CPU: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
Riga 40: Riga 40:
<pre>conservative userspace powersave ondemand performance</pre>
<pre>conservative userspace powersave ondemand performance</pre>
Tralasciando ''userspace'' si descrivono qui di seguito le altre modalità:
Tralasciando ''userspace'' si descrivono qui di seguito le altre modalità:
* ''Conservative'': questa modalità prevede un funzionamento normale con frequenza pari alla frequenza minima ammissibile, mentre quando si verifica un incremento del carico di lavoro richiesto la frequenza viene aumentata gradualmente fino al valore massimo. Per questi motivi la presente modalità risulta idonea per quei computer alimentati da una batteria, come i portatili. Di seguito un elenco dei parametri configurabili:
*'''Conservative''': questa modalità prevede un funzionamento normale con frequenza pari alla frequenza minima ammissibile, mentre quando si verifica un incremento del carico di lavoro richiesto la frequenza viene aumentata gradualmente fino al valore massimo. Per questi motivi la presente modalità risulta idonea per quei computer alimentati da una batteria, come i portatili. Il percorso della modalità è '''<code>/sys/devices/system/cpu/cpu0/cpufreq/conservative/</code>''', mentre i parametri configurabili sono:
**<code>scaling_max_freq</code> e <code>scaling_min_freq</code>, già descritti.
**''<code>scaling_max_freq</code>'' e ''<code>scaling_min_freq</code>'', già descritti.
** <code>/sys/devices/system/cpu/cpu0/cpufreq/conservative/sampling_rate</code> l'attuale frequenza di campionamento del carico della CPU in microsecondi [10^(-6)*s].
**''<code>sampling_rate</code>'', l'attuale frequenza di campionamento del carico della CPU in microsecondi [10^(-6)*s].
***<code>/sys/devices/system/cpu/cpu0/cpufreq/conservative/sampling_rate_min</code> minima frequenza di campionamento ammissibile del carico della CPU in microsecondi.
***''<code>sampling_rate_min</code>'', minima frequenza di campionamento ammissibile del carico della CPU in microsecondi.
***<code>/sys/devices/system/cpu/cpu0/cpufreq/conservative/sampling_rate_max</code> minima frequenza di campionamento ammissibile del carico della CPU in microsecondi.
***''<code>sampling_rate_max</code>'', minima frequenza di campionamento ammissibile del carico della CPU in microsecondi.
** <code>/sys/devices/system/cpu/cpu0/cpufreq/conservative/up_threshold</code> il valor medio della percentuale di carico CPU tra due consecutivi istanti di campionamento perché il kernel decida di incrementare la frequenza della CPU. Esempio: se tale valore fosse impostato ad esempio su 80 (che significa 80%) il kernel opterebbe per un incremento di frequenza se all'istante X misurasse un carico del 70% e all'istante X+1 un carico del 90%, oppure 75% all'istante X e 88% in X+1, ecc.
**''<code>up_threshold</code>'', il valor medio della percentuale di carico CPU tra due consecutivi istanti di campionamento perché il kernel decida di incrementare la frequenza della CPU. Esempio: se tale valore fosse impostato ad esempio su 80 (che significa 80%) il kernel opterebbe per un incremento di frequenza se all'istante X misurasse un carico del 70% e all'istante X+1 un carico del 90%, oppure 75% all'istante X e 88% in X+1, ecc.
** <code>/sys/devices/system/cpu/cpu0/cpufreq/conservative/down_threshold</code> come al punto precedente, ma in questo caso si imposta il valor medio per cui la frequenza deve essere ridotta rispetto all'attuale valore.
**''<code>down_threshold</code>'', come al punto precedente, ma in questo caso si imposta il valor medio per cui la frequenza deve essere ridotta rispetto all'attuale valore.
** <code>/sys/devices/system/cpu/cpu1/cpufreq/conservative/freq_step</code>
**''<code>freq_step</code>'', l'incremento/decremento percentuale adottato dal kernel nelle condizioni descritte sopra; posto di chiamare tale valore 'K' dovrà essere 0<K<100 con K intero. Esempio: impostando un valore di <code>freq_step</code> pari a 5 la frequenza della CPU sarà aumentata del 5% ogni volta che il valor medio percentuale del carico è superiore a quello definito <code>up_treshold</code>. Supponendo quindi di partire da un valore di 72 la frequenza sarà portata (sempre in percentuale) prima a 77, poi a 82, poi a 87, ecc.

Versione delle 09:14, 24 ago 2011

Debian-swirl.png Versioni Compatibili

Debian 6 "squeeze"
Debian 7 "wheezy"
ERRORE: utilizzare "unstable_2024" come parametro al posto di " Sid "! Vedi qui.

Introduzione

Ormai da anni esiste la possibilità di regolare il funzionamento della CPU di una macchina per meglio rispondere alle esigenze dell'utente, ma mentre inizialmente era necessario ricorrere a programmi appositi, con le ultime versione del kernel (>= 2.6.12) di linux questa necessità è venuta meno.
Di più, la modulazione della CPU è divenuta la condizione standard, tanto da essere abilitata automaticamente all'avvio del computer.

Applet GNOME

Nel caso di GNOME il metodo più semplice per variare la modalità di funzionamento della CPU è aggiungere al pannello l'applet Variazione Frequenza CPU. Fatto ciò comparirà un icona raffigurante un chip e una barra colorata indicante l'attuale frequenza di funzionamento della CPU come frazione della frequenza massima ammissibile.
Cliccando col tasto sinistro sulla suddetta icona verrà mostrato sia l'elenco delle frequenze che delle modalità di funzionamento permesse; basta cliccare quindi sul valore desiderato, immettere la password di amministratore quando richiesto, e i suddetti parametri verranno modificati.
Si noti che tali variazioni sono temporanee e pertanto andranno perse al successivo avvio del sistema. Per introdurre modifiche permanenti è necessario ricorrere al terminale ed editare appositi file (si veda più avanti).

Terminale

È possibile determinare l'attuale frequenza della CPU in due modi, in primis digitando

cat /proc/cpuinfo

e leggendo la riga CPU MHz, alternativamente digitando

$ cat /sys/devices/system/cpu/*/cpufreq/scaling_cur_freq

Per conoscere le frequenze di funzionamento ammissibili (espresse in [kHz])

$ cat /sys/devices/system/cpu/*/cpufreq/scaling_available_frequencies 

Conoscendo tali valori è possibile impostare coerentemente i valori massimo e minimo con i seguenti comandi

$ echo valore > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq<br/>
$ echo valore > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq

Ad esempio per impostare una frequenza minima di 1,2 GHz:

$ echo 1200000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq

visto che come già scritto le frequenze devono essere specificate in [kHz]. Impostare manualmente il massimo e il minimo ha senso solo se:

  1. la modalità di funzionamento scelta (si veda più avanti) permette di variare la frequenza di funzionamento;
  2. la propria CPU supporta almeno tre distinte frequenze di funzionamento, cosa non sempre vera nel caso di processori desktop. A titolo d'esempio le CPU Intel Core Duo 2 e Celeron D supportano in genere solo due differenti frequenze, le CPU Athlon X2 tre e la CPU sempron 145 quattro.

NOTA BENE: la sintassi dei comandi per visualizzare e modificare i valori dei vari parametri elencati nel seguito è sempre la stessa, ovvero:

$ cat percorso_parametro/parametro

per visualizzare l'attuale valore dello stesso, mentre per modificarne il valore:

# echo valore > percorso_parametro/parametro

Si osservi che le modifiche effettuate restano valide solo fino al successivo riavvio del sistema (vedere più avanti per come rendere permanenti le modifiche).
Per visualizzare l'elenco delle modalità disponibili digitare

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors

che restituirà un output del tipo

conservative userspace powersave ondemand performance

Tralasciando userspace si descrivono qui di seguito le altre modalità:

  • Conservative: questa modalità prevede un funzionamento normale con frequenza pari alla frequenza minima ammissibile, mentre quando si verifica un incremento del carico di lavoro richiesto la frequenza viene aumentata gradualmente fino al valore massimo. Per questi motivi la presente modalità risulta idonea per quei computer alimentati da una batteria, come i portatili. Il percorso della modalità è /sys/devices/system/cpu/cpu0/cpufreq/conservative/, mentre i parametri configurabili sono:
    • scaling_max_freq e scaling_min_freq, già descritti.
    • sampling_rate, l'attuale frequenza di campionamento del carico della CPU in microsecondi [10^(-6)*s].
      • sampling_rate_min, minima frequenza di campionamento ammissibile del carico della CPU in microsecondi.
      • sampling_rate_max, minima frequenza di campionamento ammissibile del carico della CPU in microsecondi.
    • up_threshold, il valor medio della percentuale di carico CPU tra due consecutivi istanti di campionamento perché il kernel decida di incrementare la frequenza della CPU. Esempio: se tale valore fosse impostato ad esempio su 80 (che significa 80%) il kernel opterebbe per un incremento di frequenza se all'istante X misurasse un carico del 70% e all'istante X+1 un carico del 90%, oppure 75% all'istante X e 88% in X+1, ecc.
    • down_threshold, come al punto precedente, ma in questo caso si imposta il valor medio per cui la frequenza deve essere ridotta rispetto all'attuale valore.
    • freq_step, l'incremento/decremento percentuale adottato dal kernel nelle condizioni descritte sopra; posto di chiamare tale valore 'K' dovrà essere 0<K<100 con K intero. Esempio: impostando un valore di freq_step pari a 5 la frequenza della CPU sarà aumentata del 5% ogni volta che il valor medio percentuale del carico è superiore a quello definito up_treshold. Supponendo quindi di partire da un valore di 72 la frequenza sarà portata (sempre in percentuale) prima a 77, poi a 82, poi a 87, ecc.