Modulare il funzionamento di una CPU

Da Guide@Debianizzati.Org.

Debian-swirl.png Versioni Compatibili
Debian 6 "Squeeze"
Debian 7 "Wheezy"
Debian 8 "Jessie"
Verificala con Stretch

Indice

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 grazie all'utilizzo del pacchetto cpufrequtils, di norma già installato durante l'installazione del sistema operativo.
Si noti che tale pacchetto permette di regolare la frequenza della CPU attraverso entrambe le interfacce CPUFreq, sysfs e procfs, del kernel.

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:

  1. ogni applet gestisce un core e di default viene gestito il primo core (cpu0), è quindi necessario aggiungere tante applet quanti sono i propri core e cliccando col tasto destro su ciascuna di esse selezionare un differente core;
  2. le variazioni sono temporanee e pertanto andranno perse al successivo avvio del sistema. Per introdurre modifiche permanenti si veda l'apposita sezione.

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/*/cpufreq/scaling_max_freq
# echo valore > /sys/devices/system/cpu/*/cpufreq/scaling_min_freq

Si noti la presenza del carattere "*" nelle due precedenti righe di comando, che implica la selezione di tutti i core della propria CPU. Qualora si desiderasse selezionare uno specifico core è sufficiente sostituire "*" con "cpuX", dove è 0<=X<=(N-1) e N il numero di core della CPU (nel caso di un dual core si avrebbe dunque una "cpu0" ed una "cpu1"). Per impostare ad esempio una frequenza minima di 1,2 GHz del primo core basterebbe digitare:

# 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. Le CPU per portatili invece supportano in genere almeno quattro distinte frequenze.

Per visualizzare l'elenco delle modalità disponibili digitare:

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

che restituirà un output del tipo:

conservative userspace powersave ondemand performance

Per determinare quello attualmente in uso:

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

Per impostare ad esempio la modalità conservative in tutti i core:

# echo conservative > /sys/devices/system/cpu/*/cpufreq/scaling_governor

Qualora il precedente comando dovesse restituire un avviso di "ambiguous redirect" sostituire al carattere "*" uno alla vota il core desiderato (cpu0, cpu1, ecc.).
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 l'apposita sezione per come rendere permanenti le modifiche).

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

Rendere permanenti le modifiche

Se ci si limita a cambiare la modalità di funzionamento, per esempio da Ondemand a Conservative nel caso dei portatili, è sufficiente creare o modificare il file /etc/default/cpufrequtils:

# nano /etc/default/cpufrequtils

e scrivere (o cambiarla, se già presente) la riga GOVERNOR="conservative". È anche possibile cambiare i valori delle frequenze massima e minima, purché permesso dalla modalità scelta, attraverso le variabili MAX_SPEED e MIN_SPEED.

Qualora si intendesse modificare altri parametri sarebbe necessario ricorrere ad altre strade, come ad esempio editare il file /etc/rc.local o installare le sysfsutils.

Approfondimenti

Sitografia

CPUFreq on Linux




Guida scritta da: Wtf 15:18, 24 ago 2011 (CEST)

Swirl-auth40.png Debianized 40%

Estesa da:
Verificata da:
HAL 9000 17:42, 30 mag 2015 (CEST)

Verificare ed estendere la guida | Cos'è una guida Debianized

Strumenti personali
Namespace
Varianti
Azioni
Navigazione
Risorse
Strumenti