CPU frequency scaling (Italiano)
zh-CN:CPU Frequency Scaling Template:Article summary start Template:Article summary text Template:Article summary heading Template:Article summary text Template:Article summary end
Cpufreq si riferisce l'infrastruttura del kernel che implementa la variazione della frequenza della CPU. Questa tecnologia consente al sistema operativo di scalare la velocità della CPU verso l'alto o verso il basso in modo da risparmiare energia. Le frequenze della CPU possono essere scalati automaticamente a seconda del carico del sistema, in risposta agli eventi ACPI, o manualmente da programmi userspace. Gestori della variazione
Dalla versione del kernel 3.4 i moduli necessari sono caricati automaticamente e il governatore raccomandato ondemand è abilitato in maniera predefinita. Tuttavia le applicazioni a livello utente come cpupower, acpid , laptop-mode-tools o le GUI fornite dagli ambienti desktop possono essere ancora utilizzati per la configurazione avanzata.
Contents
tool userspace (cpupower)
cpupower è un insieme di utility in userspace che contribuire ad assicurare lo scaling della frequenza della CPU. Il pacchetto non è richiesto per l'uso dello scaling, ma è altamente consigliato in quanto fornisce utility a riga di comando e uno servizio per cambiare il governatore all'avvio.
Il file di configurazione di cpupower è situato in /etc/default/cpupower
. Questo file di configurazione viene letto da script bash situati in /usr/lib/systemd/scripts/cpupower
, i quali vengono attivati da systemd
tramite cpupower.service
. Per abilitare cpupower all'avvio tramite systemd, eseguire:
# systemctl enable cpupower.service
Un front-end per Gnome-shell è disponibile utilizzando CPU Freq.
Driver per la frequenza della CPU
cpupower necessita di moduli (vedi tabella sotto) per conoscere i limiti della cpu nativa. Per visualizzare un elenco completo dei moduli disponibili , eseguire:
$ ls /lib/modules/$(uname -r)/kernel/drivers/cpufreq/
Caricare il modulo appropriato con
# modprobe <module>
Module | Description |
---|---|
acpi-cpufreq | CPUFreq driver che utilizza le ACPI Processor Performance States. Questo driver supporta anche i processori Intel Enhanced Speedstep (precedentemente supportato dal deprecato modulo speedstep-centrino). |
speedstep-lib | CPUFreq driver per processori Intel che abilita lo SpeedStep (per lo più Atom e vecchi Pentium (<3)). |
powernow-k8 | CPUFreq driver processori K8/K10 Athlon64/Opteron/Phenom. Deprecato dalla versione linux 3.7 - Utilizzare acpi_cpufreq. |
pcc-cpufreq | Questo driver supporta l'interfaccia di controllo della frequenza di Clock dei processori da Hewlett-Packard e Microsoft Corporation, che è utile in alcuni server Proliant. |
p4_clockmod | CPUFreq driver processori Intel Pentium 4/XEON/Celeron. Quando è abilitato lo abbasserà soltanto la temperatura della CPU saltando la frequenza di clocks. Probabilmente si preferisce usare un driver Speedstep al suo posto. |
Una volta che avete caricato il driver appropriato per la gestione della frequenza della CPU, potrete ottenere delle informazioni dettagliate lanciando il seguente comando:
$ cpupower frequency-info
Gestori della variazione
I gestori della variazione (Governor - vedi tabella sotto) sono gli schemi di alimentazione per la CPU. Può essere attivo solo un governatore alla volta. Per maggiori dettagli si veda la documentazione ufficiale nei sorgenti del kernel.
on_demand
per impostazione predefinita.Modulo | Descrizione |
---|---|
cpufreq_ondemand | Passa dinamicamente tra le varie frequenze disponibili per le CPU(s) se il carico della cpu raggiunge il 95% |
cpufreq_performance | Fa funzionare le CPU(s) alla frequenza massima |
cpufreq_conservative | Passa gradualmente tra le varie frequenze disponibili per le CPU(s) se il carico della cpu raggiunge il 75% |
cpufreq_powersave | Fa funzionare le CPU(s) alla frequenza minima |
cpufreq_userspace | Fa funzionare le CPU(s) alla frequenza specificata dall'utente |
Con cpupower
Per caricare e attivare un governatore particolare , si dovrebbe eseguire:
# cpupower frequency-set -g <governor_senza cpufreq_>
Senza cpupower
Per caricare un governatore particolare , si dovrebbe eseguire:
# modprobe <governor>
Ottimizzare i governatori (con cpupower)
Per impostare la soglia massima per passare ad un'altra frequenza
# echo -n <percent> > /sys/devices/system/cpu/cpufreq/<governor>/up_threshold
Per impostare la soglia mionima per passare ad un'altra frequenza
# echo -n <percent> > /sys/devices/system/cpu/cpufreq/<governor>/down_threshold
Sampling rate (Frequenza di campionamento)
Il Sampling rate determina l'intervallo con cui il governatore effettua un controllo per regolare la frequenza della cpu.
Impostare il sampling_down_factor
maggiore di 1 migliora le prestazioni riducendo l'overhead di valutazione del carico e mantiene la CPU alla frequenza massima di clock a causa del carico elevato. Questo parametro non ha alcun effetto sul comportamento a frequenze/carichi inferiori della CPU.
Per leggere l'attuale valore (default=1), eseguire:
$ cat /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
Per impostare un valore, eseguire:
# echo -n <value> > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
Impostrare una frequenza Massima e Minima
/etc/default/cpupower
. Per regolare un singolo core della cpu : -c <core #>
. Dove <clock_freq> è la frequenza di clock, espressa in GHz,MHz.Per impostare la frequenza massima di clock:
# cpupower frequency-set -u <clock_freq>
Per impostare la frequenza minima di clocl:
# cpupower frequency-set -d <clock_freq>
Per impostare il processore ad una determinata frequenza:
# cpupower frequency-set -f <clock_freq>
Interazione con gli eventi ACPI
Gli utenti possono configurare i gestori della variazione in modo tale che varino automaticamente in base agli eventi ACPI, come il collegamento all'adattatore di corrente o la chiusura di un coperchio del portatile. Un esempio veloce è riportata qui sotto, ma si consiglia la lettura dell'articolo completo su acpid.
Gli eventi sono definiti in /etc/acpi/handler.sh
. Se il pacchetto acpid è installato, il file deve già esistere ed essere eseguibile. Ad esempio, per cambiare il governatore da performance
a conservative
quando l'adattatore CA viene scollegato, e viceversa se ricollegata:
/etc/acpi/handler.sh
[...] ac_adapter) case "$2" in AC*) case "$4" in 00000000) echo "conservative" >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor echo -n $minspeed >$setspeed #/etc/laptop-mode/laptop-mode start ;; 00000001) echo "performance" >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor echo -n $maxspeed >$setspeed #/etc/laptop-mode/laptop-mode stop ;; esac ;; *) logger "ACPI action undefined: $2" ;; esac ;; [...]
Concessione dei privilegi sotto Gnome
GNOME include un gradevole applet per cambiare il governatore al volo. Per usarlo senza la necessità di inserire la password di root bisogna creare il file /var/lib/polkit-1/localauthority/50-local.d/org.gnome.cpufreqselector.pkla
e immettere le seguenti stringhe:
[org.gnome.cpufreqselector] Identity=unix-user:USER Action=org.gnome.cpufreqselector ResultAny=no ResultInactive=no ResultActive=yes
Dove la parola USER
deve essere rimpiazzata con il proprio nome utente.
Il pacchetto desktop-privilegesAUR contenuto in AUR contiene un file .pkla simile, per autorizzare tutti gli utenti del gruppo power
di cambiare il governatore.
Laptop Mode Tools
Se si sta già utilizzano o si intende utilizzare Laptop Mode Tools per la gestione del risparmio energetico, si consiglia di lasciargli gestire anche la variazione della frequenza della CPU. Per farlo, basta inserire il driver appropriato in un file nella directory /etc/modules.d/
(si veda Driver per la frequenza della CPU sopra descritto) e poi passare attraverso il file /etc/laptop-mode/conf.d/cpufreq.conf
per definire i governatori, frequenze e politiche. Non avrete bisogno di caricare altri moduli, demoni o impostare i governatori per l'interazione con gli eventi ACPI. Si prega di fare riferimento a Laptop Mode Tools per maggiori dettagli.
Risoluzione dei problemi
- Alcune applicazioni, come ntop, non rispondono bene alla variazione di frequenza automatica. Nel caso di ntop può causare difetti di segmentazione e un sacco di informazioni perse. Allo stesso modo il governatore
ondemand
non può cambiare la frequenza abbastanza rapidamente quando molti di pacchetti arrivano improvvisamente alla interfaccia di rete monitorata che non possono essere gestiti da la velocità del processore corrente.
- Alcune CPU possono soffrire di scarse prestazioni con le impostazioni predefinite del governatore
ondemand
(ad esempio i video in flash possono soffrire di rallentamenti, o scatti nelle animazioni delle finestre). Invece di disabilitare completamente il frequency scaling per risolvere questi problemi, l'aggressività dello variazione di frequenza può essere aumentata riducendo la variabile sysctl up_threshold per ogni CPU. Si veda Modifica della soglia (threshold) del governatore 'ondemand'.
- A volte il governatore
ondemand
non può acceleratore alla frequenza massima, ma un gradino sotto. Questo può essere risolto impostando il valore max_freq ad uno leggermente superiore a quella massima reale. Per esempio, se la gamma di frequenza della CPU va da 2,00 GHz a 3,00 GHz, impostare max_freq a 3,01 GHz può essere una soluzione.
- Alcune combinazioni di driver ALSA e chip sonori possono causare il salto dell'audio quando i governatori cambiano tra le frequenze, al passaggio del governatore l'audio potrebbe interrompersi per un attimo o saltare.
Limitazione BIOS della frequenza
Alcune configurazioni CPU/BIOS possono avere difficoltà a scalare le frequenze massime o scalare alla massima frequenza disponibile.
Questo è probabilmente causato da eventi del BIOS che dicono al sistema operativo di limitare la frequenza con la conseguenza di impostare /sys/devices/system/cpu/cpu0/cpufreq/bios_limit
al valore minimo.
Oppure, se si sono cambiate specifiche impostazione nel BIOS Setup Utility (frequenza , gestione termica , ecc), si può incolpare un BIOS danneggiato/obsoleto, altrimenti il BIOS potrebbe avere un motivo valido per limitare la frequenza della CPU.
Motivi del genere possono essere (se il vostro computer è un notebook ) causati da una rimozione incauta della batteria (o se sia prossima alla morte ), in modo da essere costretti ad utilizzare solo la rete elettrica. In questo caso, un debole alimentatore AC potrebbe non fornire energia elettrica sufficiente a soddisfare le richieste di picco estreme del sistema generale, e quando non vi è alcuna batteria inserita di supporto, potrebbe portare alla perdita di dati , la corruzione dei dati o nel peggiore dei casi , anche a danni hardware!
Non tutti i BIOS limitano la frequenza della CPU, in questo caso , ma per esempio accade sulla maggior parte dei IBM/Thinkpad Lenove, per maggiori informazioni relativi ai thinkpad, fare riferimento a thinkwiki su questa discussione.
Se avete controllato che non è solo un comportamento strano dell'ambiente BIOS e si sa cosa si sta facendo, allora si può dire al Kernel di ignorare questa limitazione del BIOS.
Per effetuare una prova temporanea, modificare il valore in /sys/module/processor/parameters/ignore_ppc
da 0 a 1.
Per impostarlo in maniera permanente, si aggiunga processor.ignore_ppc=1
alla linea di caricamento del kernel.
/etc/modprobe.d/ignore_ppc.conf
# If the frequency of your machine gets wrongly limited by BIOS, this should help options processor ignore_ppc=1
Si faccia riferimento alla pagina Kernel_parameters se non si sa come procedere.