Cpu scaling

Appena installato Ubuntu, ho messo i controlli dell’utilizzo della CPU e della RAM nella tray. Con mio stupore mi sono accorto che c’era anche il monitoraggio della frequenza e con questo ho avuto la dimostrazione che il kernel Linux pratica di dafault il CPU scaling. Per non lo sapesse, ciò significa che il sistema, quando lavora poco, fa calare la frequenza del processore, con il risultato di scaldare di meno e consumare meno energia (funzione molto comoda quindi a qui ha un portatile). Il mio P4 oscillava però solo tra 3 frequenze ovvero loa massima (3,4 ghz) e i 2,8 ghz. Perplesso mi sono messo in cerca e ho trovato in una guida inglese una bella guida che mi accingo a tradurre di per attivare a pieno questa funzione.

La seguente guida sostituirà powernowd con cpufreqd. La differenza tra i due programmi è che il primo si adegua solo al carico del sistema, mentre il secondo anche allo stato della batteria e di altri fattori. Questa guida quindi, di per sè, è indicata ai portatili. Per gli utenti che non hanno voglia di seguire tutta la procedura, vogliono solo provare o hanno un desktop, consiglio quest’altra guida che attiva a pieno powernowd.

Prima di tutto, accertatevi che la vostra CPU e scheda madre supporti il CPU scaling. Per fare ciò spulciate tra la configurazione del BIOS fino a quando trovate la voce “Cool’n'Quiet” se avete AMD o “SpeedStep” se avete Intel e attivate tale opzione. Entrate in Ubuntu e lanciate il terminale. Adesso si lavora!
1 Innanzitutto bisogna disinstallare powernowd e quindi

sudo apt-get remove powernowd

2 Bisogna disinstallare anche un altro programma, cpudyn

sudo apt-get remove cpudyn

3 Ora dovete informarvi sul tipo della vostra CPU o se non lo sapete cercate il nome digitando da terminale

cat /proc/cpuinfo

Di seguito elenco i possibili processori supportati. Quando lo trovate ricordatevi il comando scritto sotto di esso.

AMD Sempron/Athlon/MP ( K7 )
Socket Types: A, Slot A

powernow-k7

AMD Duron/Sempron/Athlon/Opteron 64 ( K8 )
Socket Types: 754, 939, 940, S1 ( 638 ), AM2 ( 940 ), F ( 1207 )

powernow-k8

Intel Core Duo

speedstep-centrino

Intel Pentium M

speedstep-centrino

Intel Pentium 4

p4_clockmod

Nel caso nessuno dei precedenti soddisfi le vostre esigenze provate questa riga

acpi-cpufreq

4 Bene, passiamo alla configurazione. Date questo comando per farvi mostrare i governatori installati

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

Dovreste ottenere una riga come questa

powersave conservative ondemand performance

5 Ora dobbiamo far partire i moduli all’avvio. Dal terminale bisogna modificare le ultime linee all’interno di /etc/modules. Quindi date

sudo nano /etc/modules

e aggiungete le seguenti righe

cpufreq_conservative
cpufreq_ondemand
cpufreq_powersave
cpufreq_stats
cpufreq_userspace

Come ultimissima riga aggiungete quella riguardante la vostra CPU, scelta nel punto 3

6 Esiste un semplice tool per usare i moduli, installiamolo dando

sudo apt-get install cpufrequtils

per testare che lavori date

cpufreq-info

7 Ultimo passo, installare un governatore. Il governatore è l’insieme di regole che gestirà il CPU. I principali sono 4, adesso ve li spiego

ondemand: in base al lavoro che fate lui aumenta o diminuisce la frequenza. La velocità di cambiamento è molto rapida.

conservative: è simile a ondemand ma non salta di botto, è come se aspettasse un po’. La consiglio a chi ha portatili

performance: tiene sempre la potenza al massimo

powersave: come dice il nome allunga la vita delle batterie fuori maniera, infatti una la frequenza minima sempre

Io uso di solito ondemand e mi trovo bene. Per settarlo dovete dare

cpufreq-set -g ondemand

Se il vostro pc è dotato dell’ HT o è un dual-core, dovete impostare entrambe le CPUs.

cpufreq-set -c 1 -g ondemand

Per vedere quante CPU avete date da terminale

ls /sys/devices/system/cpu/

8 Rendere il governatore selezionato il predefinito al boot. Date

sudo nano /etc/default/cpufrequtils

E cambiate questa riga

ENABLE="false"

in

ENABLE="true"

Una precisazione. Se dopo aver attivato avete fastidi perchè per passare da una frequenza bassissima a una più alta qualche millisecondo passa, vi consiglio di limitare il range di frequenze in cui il governor lavora. Per fare ciò basta indicare le frequenze volute (espresse in Hz) sempre nel file sopracitato.

Ecco qua, il lavoro è finito, se tutto è andato per il verso giusto ora sarete come me, con un P4 che lavora a 425 mhz e produce 5 gradi in meno di calore! Spero di essere stato utile!

Aggiornamento: per passare velocemente da un governor all’altro o settare una frequenza particolare leggere quest’altro articolo.

29 Risposte a “Cpu scaling”

  1. CPU scaling a portata di click « SonOfFree’s Blog Dice:

    [...] a portata di click Ottobre 8th, 2007 — sonoffree Visto che l’articolo sul CPU scaling che ho tradotto dal wiki inglese è parecchio gettonato credo che molti utenti vogliano cambiare [...]

  2. sevencapitalsins Dice:

    Bellissimo! Stavo per fare una guida simile, meno male che ho cercato prima! :D

    Ti consiglio questo articolo di Gentoo, che spiega come modificare il comportamento del cpufreqd tramite il file cpufreqd.conf!

    http://www.gentoo.org/doc/en/power-management-guide.xml#doc_chap3

  3. sonoffree Dice:

    Ottimo, grazie della segnalazione! Appena esce la Gutsy stabile provo tutto!

  4. Guida facile al Cpu Scaling « SonOfFree’s Blog Dice:

    [...] source offre molti metodi per limitare questo consumo. La guida seguente sarà un riassunto della precedente, ma fatta nella chiave più semplice che ci sia. La consiglio a tutti quelli che hanno un [...]

  5. Samiscooking Dice:

    E’ possibile cambiare gli step di frequenze predefinite? Io ho solo 800 e 1600 Mhz. Cmq non ho il file /etc/default/cpufrequtils, lo creo?

  6. Samiscooking Dice:

    un’altra domanda, se imposto conservative mi resta fisso a 800Mhz, se imposto onDemand mi resta fisso a 1600 Mhz, credo ci sia qualcoa che non va perchè prima usando powernowd le cose funzionavano!

  7. sonoffree Dice:

    Ma non ti avevo detto di seguire l’altra? Comunque gli step non si possono cambiare, sono imposti da come può lavorare il processore teoricamete. OnDemand sceglie in base al carico di lavoro, sicuro che non stai facendo qualcosa?

  8. Samiscooking Dice:

    Che vuol dire che mi avevi detto di seguire l’altra? Io ho seguito la tua e come da te suggeritomi ho rimosso powernowd in favore di cpufreqd credendo che potessi migliorare le prestazioni di risparmio energetico..ma non è così perchè ondemand e conservative sono opzioni inutili per il mio processore.

  9. sonoffree Dice:

    Non ti avevo linkato la guida facile? Powernowd comunque controlla anche la batteria, l’illuminazione dello schermo e molti fattori che powernowd non fa. Poi è questione di gusti

  10. Max Dice:

    come mai sui portatili consigli conservative al posto di on demand?
    ciao

  11. sonoffree Dice:

    Ondemand fa scatti più rapidi e sale di frequenza anche se il cambio potenza necessario è minimo. COnservative è più progressivo

  12. Max Dice:

    ah ok, ma la consigli anche se la cpu dispone di sole 2 frequenze tipo 800 mhz e 1600 mhz?ciao
    ps. son maxresti su ubntu-it.org
    ciao

  13. sonoffree Dice:

    Con quei due step lascia ondemand. Praticamente andrà sempre a 1600 tranne quando non fai proprio niente

  14. sctoh Dice:

    ma per i turion x2 che si deve usare??e che comando vogliono?

  15. Eu Dice:

    Possibile che cpufrequtils non parta all’avvio?
    Dando “sudo /etc/init.d/cpufrequtils start” funziona e viene caricato il “governor” corrispondente…
    Ma all’avvio non sembra far nulla…
    Avendo specificato nel file di configurazione “conservative”…

  16. sonoffree Dice:

    L’ultima volta che l’ho usato mi sono accorto che mi partiva sempre e solo con il governor ondemand, qualsiasi cosa facessi. Poi non ho più indagato perchè è arrivato il freddo.

  17. Eu Dice:

    AH… Mitico… Stavo impazzendo…
    E ancora non ho capito se cpufreqd e cpufrequtils si pestano i piedi a vicenda…
    Ho provato anche a editare il file di configurazione di cpufreqd ( /etc/cpufreqd.conf ) ma non ho ottenuto risultati…

  18. SAABSISTA Dice:

    A me il comando cpufreq-info restituisce

    —————————————————————————
    analisi della CPU 0:
    modulo p4-clockmod
    CPU per le quali e` necessario cambiare la frequenza contemporaneamente: 0
    limiti hardware: 350 MHz – 2.80 GHz
    frequenze disponibili: 350 MHz, 700 MHz, 1.05 GHz, 1.40 GHz, 1.75 GHz, 2.10 GHz, 2.45 GHz, 2.80 GHz
    gestori disponibili: userspace, powersave, ondemand, conservative, performance
    gestore corrente: la frequenza deve mantenersi tra 2.80 GHz e 2.80 GHz.
    Il gestore “performance” puo` decidere quale velocita` usare
    in questo intervallo.
    la frequenza attuale della CPU e` 2.80 GHz.
    —————————————————————————

    Quindi il processore non può variare la frequenza?
    C’è un modo per dare al gestore un altro intervallo?
    Grazie

  19. SAABSISTA Dice:

    Dopo averlo settato in “conservative” torna alla modalità “performance” da solo, senza che io faccia nulla, e anche il comando restituisce performance…. in effetti secondo l’applet variazione di frequenza il processore va sempre al 100%, ma a me non sembra che vada tanto, e il monitor di sistema (applet) dice che il processore è in uso tra il 10 e il 30%, la temperatura è alta ma dopo un uso di 4-5ore consecutive, e la ventola è accesa ma non al massimo.
    Con powernowd l’applet mi segnalava una variazione nella frequenza e riuscivo a settare la modalità…

    il risultato di modprobe

    sudo modprobe acpi_cpufreq
    FATAL: Error inserting acpi_cpufreq (/lib/modules/2.6.22-14-generic/kernel/arch/i386/kernel/cpu/cpufreq/acpi-cpufreq.ko): Device or resource busy

    Forse dovevo tenermi powernowd?

  20. SAABSISTA Dice:

    Forse ho trovato

    daniele@acertravelmate2501lmi:~$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
    2800000
    daniele@acertravelmate2501lmi:~$ cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
    2800000

    sai come cambiare quei files?

  21. SAABSISTA Dice:

    risolto, ho editato con nano i files in /sys/devices/system/cpu/cpu0/cpufreq

    e adesso funziona, vedremo al riavvio.

    Grazie

  22. SAABSISTA Dice:

    è inverosimile
    i valori della applet sono tornati come prima, confermati dai comandi, i files editati si sono riscritti da soli…

    Forse dovrei provare con cupdyn, visto che ho un pentium 4?

  23. sonoffree Dice:

    Ho notato anche io questo problema passando da Feisty a Gutsy (ah, scusa ma ero in vacanza). Adesso avevo tolto, ma avevo modificato i valori che hai detto 3 post fa da root (con su, non sudo altrimenti non mi andava) e avevo fatto uno script perchè lo rifacesse a ogni riavvio. Però è strana la cosa

  24. ugaciaka Dice:

    io non ho messo niente in etc/modules però funziona tutto lo stesso…grazie comunque dell’articolo!

  25. FirstTimeFedora Dice:

    io uso Fedora 8 e ho provato a seguire questa guidama ci sono delle cose che non mi tornano…
    il file: etc/modules
    in Fedora è: etc/modprobe.conf ??
    l’ho letto da qualche parte ma non sono per niente sicuro, in ogni caso ho aggiunto lì la riga inerente al processore (powernow-k8) poi c’è un’altra cosa diversa, non ho questi governor:
    powersave conservative ondemand performance
    ma solo: ondemand userspace performance

    Oltretutto (a parte il fatto che non so che faccia) il governor userspace non mi compare sulle preferenze di variazione della frequenza CPU.
    Ultimissima cosa: il governor di default è ondemand ed è anche l’unico che posso usare in quanto gli altri non risco a selezionarli…è perchè devo essere root? e come faccio a poterli utilizzare anche da utente?

  26. sonoffree Dice:

    Allora, premetto che non ho mai provato Fedora oltre a qualche click. In teoria, modprobe.conf è tutt’altra cosa per la compilazione dei moduli del kernel, poi non hai gli altri governor perchè probabilmente il kernel di default di Fedora non li comprende come moduli e per cambiare governor, normalmente, bisogna essere root. Comnque ondemand è di default perchè mediamente va bene a tutti. Ti conviene chiedere nel forum di Fedora per queste cose, avendo usato solo Ubuntu non ti sarei di tanto aiuto

  27. FirstTimeFedora Dice:

    Ok grazie lo stesso!
    Mi sa che ho toccato cose che non dovevo toccare…ora non mi parte più il gestore dei pacchetti e neanche quello degli aggiornamenti! ghgh :-)

  28. oncologiaesalute Dice:

    Complimenti davvero per la guida..mi è stata utilissima.. posso fare una domanda..da perfetto profano? ma non sottopone a più stress questo cambio continuo di frequenza che non lasciare sempre il processore alla frequenza massima..? Mi scuso se la domanda è un pochino stupida ma era semplicemente una mia semplicissima curiosità..ringrazio per le risposte! ;-)
    Fabio

  29. sonoffree Dice:

    Oddio, se l’opzione è stata messa non vedo perchè dovrebbe stressare il processore. Poi non so che dirti.


Lascia una Risposta