Difference between revisions of "CPU frequency scaling (Italiano)"

From ArchWiki
Jump to: navigation, search
m (corretto path)
m (Gestori della variazione: remove needless attributes from wiki tables and/or use class="wikitable")
(19 intermediate revisions by 5 users not shown)
Line 1: Line 1:
[[Category:Power management (Italiano)]]
+
[[Category:Power management (Italiano)]]
 
[[Category:CPU (Italiano)]]
 
[[Category:CPU (Italiano)]]
 +
[[ar:CPU Frequency Scaling]]
 
[[cs:CPU Frequency Scaling]]
 
[[cs:CPU Frequency Scaling]]
 
[[de:Cpufrequtils]]
 
[[de:Cpufrequtils]]
Line 7: Line 8:
 
[[es:CPU Frequency Scaling]]
 
[[es:CPU Frequency Scaling]]
 
[[fr:Cpufreq]]
 
[[fr:Cpufreq]]
 +
[[ja:CPU Frequency Scaling]]
 
[[pt:CPU Frequency Scaling]]
 
[[pt:CPU Frequency Scaling]]
 
[[ru:CPU Frequency Scaling]]
 
[[ru:CPU Frequency Scaling]]
Line 12: Line 14:
 
[[tr:Işlemci_frekansını_ölçekleme]]
 
[[tr:Işlemci_frekansını_ölçekleme]]
 
[[zh-CN:CPU Frequency Scaling]]
 
[[zh-CN:CPU Frequency Scaling]]
{{Article summary start|Sommario}}
+
{{Related articles start (Italiano)}}
{{Article summary text|Una panoramica sul popolare strumento userspace  per il sottosistema [http://www.kernel.org/pub/linux/utils/kernel/cpufreq/cpufreq-info.html CPUfreq] del kernel.}}
+
{{Related|Power saving}}
{{Article summary heading|Articoli Correlati}}
+
{{Related2|Laptop Mode Tools (Italiano)|Laptop Mode Tools}}
{{Article summary text|[[Laptop Mode Tools (Italiano)|Laptop Mode Tools]] <br> [[pm-utils (Italiano)|pm-utils]] <br> [[PHC]]}}
+
{{Related2|pm-utils (Italiano)|pm-utils}}
{{Article summary end}}
+
{{Related|PHC}}
 +
{{Related articles end}}
 +
[https://www.kernel.org/doc/Documentation/cpu-freq/index.txt Cpufreq] 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
  
{{Accuracy|Questo articolo ha bisogno di miglioramenti nelle sezioni : acpid, laptop-mode-tools, e limitazioni del BIOS.}}
+
CPU frequency scaling è implementato nel kernel Linux, l'infrastruttura è chiamata ''cpufreq''. Dalla versione del kernel 3.4 i moduli necessari sono caricati automaticamente e il governatore raccomandato [[CPU Frequency Scaling (Italiano)#Gestori della variazione|ondemand]] è abilitato in maniera predefinita. Tuttavia gli strumenti a livello utente come {{Pkg|cpupower}}, [[acpid (Italiano)|acpid]] , [[Laptop Mode Tools (Italiano)|laptop-mode-tools]] o le GUI fornite dagli ambienti desktop possono essere ancora utilizzati per la configurazione avanzata.
  
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
+
== tool userspace ==
  
Dalla versione del kernel 3.4 i moduli necessari sono caricati automaticamente e il governatore raccomandato [[CPU Frequency Scaling (Italiano)#Gestori della variazione|ondemand]] è abilitato in maniera predefinita. Tuttavia le applicazioni a livello utente come {{Pkg|cpupower}}, [[acpid (Italiano)|acpid]] , [[Laptop Mode Tools (Italiano)|laptop-mode-tools]] o le GUI fornite dagli ambienti desktop possono essere ancora utilizzati per la configurazione avanzata.
+
=== cpupower ===
 
+
== tool userspace (cpupower) ==
+
  
 
{{Pkg|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.
 
{{Pkg|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 {{Pkg|cpupower}} è situato in {{ic|/etc/conf.d/cpupower}}. Questo file di configurazione viene letto da script bash situati in {{ic|/usr/lib/systemd/scripts/cpupower}}, i quali vengono attivati da {{ic|systemd}} tramite {{ic|cpupower.service}}. Per abilitare {{Pkg|cpupower}} all'avvio tramite {{Pkg|systemd}}, eseguire:
+
Il file di configurazione di {{Pkg|cpupower}} è situato in {{ic|/etc/default/cpupower}}. Questo file di configurazione viene letto da script bash situati in {{ic|/usr/lib/systemd/scripts/cpupower}}, i quali vengono attivati da ''systemd'' tramite {{ic|cpupower.service}}. Si consiglia di abilitare {{ic|cpupower.service}} all'avvio.
  
# systemctl enable cpupower.service
+
=== Estensione per GNOME Shell ===
  
Un front-end per Gnome-shell è disponibile utilizzando [https://extensions.gnome.org/extension/444/cpu-freq/ CPU Freq].
+
Diversi frontend per GNOME Shell sono disponibili in [[Arch User Repository (Italiano)|AUR]]:
  
=== Driver per la frequenza della CPU ===
+
* {{AUR|gnome-shell-cpufreq-git}}
 +
* {{AUR|gnome-shell-extension-cpupower-git}} (ultimo aggiornamento per la versione 3.6 di GNOME)
  
{{Nota|Dalla versione 3.4 del kernel, i moduli nativi della CPU sono caricati automaticamente.}}
+
=== Granola ===
  
{{Pkg|cpupower}} necessita di moduli (vedi tabella sotto) per conoscere i limiti della cpu nativa. Per visualizzare un elenco completo dei moduli disponibili , eseguire:
+
{{AUR|Granola}} (disponibile in [[Arch User Repository (Italiano)|AUR]]) è un demone che controlla l'utilizzo della CPU e utilizza il [[#Gestori della variazione|governatore userspace]] per diminuire il consumo di energia senza alcuna differenza notevole nelle prestazioni. Le impostazioni predefinite funzionano per la maggior parte delle configurazioni .
  
$ ls /lib/modules/$(uname -r)/kernel/drivers/cpufreq/
+
Per testare se funziona, eseguire :
 +
 
 +
  $ cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
  
{{Suggerimento|Per caricare un modulo al boot, eseguire
+
e verificare che la frequenza della CPU è inferiore al massimo.
{{bc|<nowiki>
+
# echo <module> >/etc/modules-load.d/<module>
+
</nowiki>}}}}
+
  
{{Nota|Il caricamento del modulo errato si tradurrà in un errore "No such device"}}
+
== Driver per la frequenza della CPU ==
  
Caricare il modulo appropriato con  
+
{{nota|
 +
* Dalla versione 3.4 del kernel, i moduli nativi della CPU sono caricati automaticamente.
 +
* A partire dal kernel 3.9, il nuovo driver {{ic|pstate}} per lo scaling di potenza viene usato automaticamente per le moderne CPU Intel al posto degli altri driver elencati sotto. Questo driver ha la priorità su tutti gli altri, e infatti è all'interno del kernel invece di essere un modulo da caricare. Questo driver è attualmente utilizzato automaticamente per tutti i tipi di CPU Sandy Bridge e Ivy Bridge. Se si verifica un problema durante l'utilizzo di questo driver, aggiungere {{ic|intel_pstate&#61;disable}} alla linea del kernel. É possibile utilizzare le solite utility in userpace con questo driver, ma non possono controllarne l'utilizzo.
 +
* Anche il comportamento di P State, menzionato sopra, può essere influenzato con {{ic|/sys/devices/system/cpu/intel_pstate}}, ad esempio, Intel Turbo Boost può essere disattivato con {{ic|# echo 1> /sys/devices/system/cpu/intel_pstate/no_turbo}} per mantenere basse le temperature delle CPU.
 +
* Un controllo supplementare per le CPU Intel moderne è disponibile con il [https://01.org/linux-thermal-daemon Linux Thermal Daemon] ( disponibile su AUR con il pacchetto  {{AUR|thermald}}), che controlla la temperatura in modo pro-attivo utilizzando i P-states, T-states, e il driver Intel power clamp.
 +
}}
  
# modprobe <module>
+
''cpupower'' necessita di moduli per conoscere i limiti della cpu nativa.
  
{| border="1"
+
{| class="wikitable"
 
!Module!!Description
 
!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).
+
| 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)).
 
| 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.
+
| 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.
 
| 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. <br>Probabilmente si preferisce usare un driver Speedstep al suo posto.
+
| p4-clockmod   || CPUFreq driver processori Intel Pentium 4/XEON/Celeron.  Quando è abilitato lo abbasserà soltanto la temperatura della CPU saltando la frequenza di clocks. <br>Probabilmente si preferisce usare un driver Speedstep al suo posto.
 
|}
 
|}
<br>
 
  
Una volta che avete caricato il driver appropriato per la gestione della frequenza della CPU, potrete ottenere delle informazioni dettagliate lanciando il seguente comando:  
+
Per visualizzare un elenco completo dei moduli disponibili, eseguire :
 +
 
 +
$ ls /lib/modules/$(uname -r)/kernel/drivers/cpufreq/
 +
 
 +
Caricare il modulo appropriato (vedi [[Kernel modules]] per i dettagli). 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
 
  $ cpupower frequency-info
  
=== Gestori della variazione ===
+
=== Impostare una frequenza Massima e Minima ===
 +
 
 +
In rari casi , può essere necessario impostare manualmente le frequenze massima e minima.
 +
 
 +
Per impostare la frequenza massima di clock (''clock_freq'' è la frequenza di clock espressa in unità: GHz, MHz):
 +
 
 +
# cpupower frequency-set -u ''clock_freq''
 +
 
 +
Per impostare la frequenza minima di clock:
 +
 
 +
# cpupower frequency-set -d ''clock_freq''
 +
 
 +
Per impostare il processore ad una determinata frequenza:
 +
 
 +
# cpupower frequency-set -f ''clock_freq''
 +
 
 +
{{nota|
 +
* Per regolare la frequenza solo per un singolo core della CPU, aggiungere {{ic|-c ''core_number''}}.
 +
* Il governatore e le frequenze massimo e minimo possono essere impostati in {{ic|/etc/default/cpupower}}.
 +
}}
  
I gestori della variazione (Governor - vedi tabella sotto) sono gli schemi di alimentazione per la CPU. Può essere attivo solo un governatore alla volta.
+
== Gestori della variazione ==
  
{{nota|Il kernel caricherà il governor {{ic|on_demand}} per impostazione predefinita.}}
+
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 [https://www.kernel.org/doc/Documentation/cpu-freq/governors.txt documentazione ufficiale] nei sorgenti del kernel.
  
{| border="1"
+
{| class="wikitable"
!Modulo!!Descrizione
+
!Governor!!Descrizione
 
|-
 
|-
|cpufreq_ondemand||Passa dinamicamente tra le varie frequenze disponibili per le CPU(s) se il carico della cpu raggiunge il 95%
+
|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
+
|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%
+
|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
+
|powersave||Fa funzionare le CPU(s) alla frequenza minima
 
|-
 
|-
|cpufreq_userspace||Fa funzionare le CPU(s) alla frequenza specificata dall'utente
+
|userspace||Fa funzionare le CPU(s) alla frequenza specificata dall'utente
 
|}
 
|}
<br>
 
{{Suggerimento|Per monitorare la velocità della Cpi in tempo reale, eseguire:
 
{{bc|<nowiki>
 
$ watch grep \"cpu MHz\" /proc/cpuinfo
 
</nowiki>}}}}
 
  
==== Con cpupower ====
+
A seconda del driver per lo scaling utilizzato, uno di questi governatori sarà caricato per impostazione predefinita:
 +
* {{ic|ondemand}} per AMD e vecchie CPU Intel.
 +
* {{ic|powersave}} per CPU Intel Sandybridge e successive.
  
Per caricare e attivare un governatore particolare , si dovrebbe eseguire:
+
Per attivare una particolare governatore, eseguire :
  
  # cpupower frequency-set -g <governor_senza cpufreq_>
+
  # cpupower frequency-set -g ''governor''
  
==== Senza cpupower ====
+
{{nota|
 +
* Per regolare la frequenza solo per un singolo core della CPU, aggiungere {{ic|-c ''core_number''}} al comando sopra.
 +
* Attivando un governatore, lo specifico [[Kernel modules|modulo del kernel]] richiesto (denominato {{ic|cpufreq_''governatore''}}) viene caricato. A partire dal kernel 3.4, questi moduli vengono caricati automaticamente.}}
  
{{Suggerimento|Per caricare un governatore in fase di avvio, eseguire
+
In alternativa, è possibile attivare manualmente un governatore su ogni CPU disponibile :
{{bc|<nowiki>
+
# echo <module> > /etc/modules-load.d/<module>
+
</nowiki>}}}}
+
  
Per caricare un governatore particolare , si dovrebbe eseguire:
+
  # echo ''governor'' | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor >/dev/null
  
# modprobe <governor>
+
{{suggerimento|Per monitorare la velocità della CPU in tempo reale, eseguire :
 +
  $ watch grep \"cpu MHz\" /proc/cpuinfo
 +
}}
  
=== Ottimizzare i governatori (con cpupower) ===
+
=== Ottimizzare il governatore ondemand ===
  
{{Suggerimento|Aggiungere i seguenti comandi di seguito in {{ic|/etc/conf.d/cpupower}}. Dove <percent> è la percentuale di carico della cpu e <governor> è il governatore di cpupower.}}
+
Vedere la [https://www.kernel.org/doc/Documentation/cpu-freq/governors.txt documentazione del kernel] per i dettagli.
 +
 
 +
==== Soglia di commutazione (threshold)====
  
 
Per impostare la soglia massima per passare ad un'altra frequenza
 
Per impostare la soglia massima per passare ad un'altra frequenza
  
  # echo -n <percent> > /sys/devices/system/cpu/cpufreq/<governor>/up_threshold
+
  # echo -n ''percent'' > /sys/devices/system/cpu/cpufreq/''governor''/up_threshold
  
Per impostare la soglia mionima per passare ad un'altra frequenza
+
Per impostare la soglia minima per passare ad un'altra frequenza
  
  # echo -n <percent> > /sys/devices/system/cpu/cpufreq/<governor>/down_threshold
+
  # echo -n ''percent'' > /sys/devices/system/cpu/cpufreq/''governor''/down_threshold
  
===== Sampling rate (Frequenza di campionamento) =====  
+
==== Sampling rate (Frequenza di campionamento) ====  
  
 
Il Sampling rate determina l'intervallo con cui il governatore effettua un controllo per regolare la frequenza della cpu.
 
Il Sampling rate determina l'intervallo con cui il governatore effettua un controllo per regolare la frequenza della cpu.
Line 137: Line 166:
 
Per impostare un valore, eseguire:
 
Per impostare un valore, eseguire:
  
  # echo -n <value> > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
+
  # echo -n ''valore'' > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor
 
+
=== Impostrare una frequenza Massima e Minima ===
+
 
+
{{Nota|La frequenza massima e minima di un governatore può essere impostato in {{ic|/etc/conf.d/cpupower}}. Per regolare un singolo core della cpu : {{ic| -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 ==
 
== Interazione con gli eventi ACPI ==
Line 161: Line 174:
 
Gli eventi sono definiti in {{ic|/etc/acpi/handler.sh}}. Se il pacchetto {{Pkg|acpid}} è installato, il file deve già esistere ed essere eseguibile. Ad esempio, per cambiare il governatore da {{ic|performance}} a {{ic|conservative}} quando l'adattatore CA viene scollegato, e viceversa se ricollegata:
 
Gli eventi sono definiti in {{ic|/etc/acpi/handler.sh}}. Se il pacchetto {{Pkg|acpid}} è installato, il file deve già esistere ed essere eseguibile. Ad esempio, per cambiare il governatore da {{ic|performance}} a {{ic|conservative}} quando l'adattatore CA viene scollegato, e viceversa se ricollegata:
  
{{hc
+
{{hc|/etc/acpi/handler.sh|<nowiki>
|/etc/acpi/handler.sh
+
|<nowiki>
+
 
[...]
 
[...]
  
Line 191: Line 202:
 
== Concessione dei privilegi sotto Gnome ==
 
== Concessione dei privilegi sotto Gnome ==
  
{{nota|Systemd ha introdotto logind, che gestisce le azioni consolekit e policykit. di conseguenza il seguente codice qui sotto non funziona.}}
+
{{Out of date|Vedere la nota sottostante.}}
  
[[Gnome (Italiano)|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 {{ic|/var/lib/polkit-1/localauthority/50-local.d/org.gnome.cpufreqselector.pkla}} e immettere le seguenti stringhe:
+
{{nota|Systemd ha introdotto logind, che gestisce le azioni consolekit e policykit. di conseguenza il seguente codice qui sotto non funziona. Con logind, si editi semplicemente nel file {{ic|/usr/share/polkit-1/actions/org.gnome.cpufreqselector.policy}} la voce ''defaults'' con ciò che si necessita, in base alle direttive del manuale di polkit [http://www.freedesktop.org/software/polkit/docs/latest/polkit.8.html]}}
  
{{bc|<nowiki>[org.gnome.cpufreqselector]
+
[[Gnome (Italiano)|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 :
Identity=unix-user:USER
+
 
 +
{{hc|/var/lib/polkit-1/localauthority/50-local.d/org.gnome.cpufreqselector.pkla|2=
 +
[org.gnome.cpufreqselector]
 +
Identity=unix-user:''utente''
 
Action=org.gnome.cpufreqselector
 
Action=org.gnome.cpufreqselector
 
ResultAny=no
 
ResultAny=no
 
ResultInactive=no
 
ResultInactive=no
ResultActive=yes</nowiki>}}
+
ResultActive=yes}}
  
Dove la parola {{ic|USER}} deve essere rimpiazzata con il proprio nome utente.
+
Dove la parola ''utente'' deve essere rimpiazzata con il proprio nome utente.
  
Il pacchetto {{ AUR|desktop-privileges}} contenuto in [[AUR (Italiano)|AUR]] contiene un file .pkla simile, per autorizzare tutti gli utenti del [[Users and Groups (Italiano)|gruppo]] {{ic|power}} di cambiare il governatore.
+
Il pacchetto {{AUR|desktop-privileges}} contenuto in [[AUR (Italiano)|AUR]] contiene un file .pkla simile, per autorizzare tutti gli utenti del [[Users and Groups (Italiano)|gruppo]] {{ic|power}} di cambiare il governatore.
 
+
==Laptop Mode Tools==
+
 
+
Se si sta già utilizzano o si intende utilizzare [[Laptop Mode Tools (Italiano)| 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  {{ic|/etc/modules.d/}} (si veda [[#Driver per la frequenza della CPU|Driver per la frequenza della CPU]]  sopra descritto) e poi passare attraverso il file {{ic|/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 (Italiano)| Laptop Mode Tools]] per maggiori dettagli.
+
  
 
== Risoluzione dei problemi ==
 
== Risoluzione dei problemi ==
Line 234: Line 244:
 
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.
 
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.
  
{{ Attenzione| Assicurarsi di aver letto e compreso quanto descritto nella sezione precedente. La limitazione di frequenza della CPU è una caratteristica di sicurezza del vostro BIOS e non dovrebbe essere necessario lavorarci sopra. E bene capirne la causa prima.}}
+
{{Attenzione| Assicurarsi di aver letto e compreso quanto descritto nella sezione precedente. La limitazione di frequenza della CPU è una caratteristica di sicurezza del vostro BIOS e non dovrebbe essere necessario lavorarci sopra. E bene capirne la causa prima.}}
 +
 
 +
Un speciale parametro deve essere passato al modulo del processore.
  
 
Per effetuare una prova temporanea, modificare il valore in {{ic|/sys/module/processor/parameters/ignore_ppc}} da 0 a 1.
 
Per effetuare una prova temporanea, modificare il valore in {{ic|/sys/module/processor/parameters/ignore_ppc}} da 0 a 1.
  
Per impostarlo in maniera permanente, si aggiunga {{ic|1=processor.ignore_ppc=1}} alla linea di caricamento del kernel.
+
Per impostarlo in maniera permanente, si faccia riferimento alla pagina [[Kernel_parameters]] o continuare a leggere. Aggiungere {{ic|1=processor.ignore_ppc=1}} alla linea di caricamento del kernel o creare :
  
 
{{hc|/etc/modprobe.d/ignore_ppc.conf|2=# If the frequency of your machine gets wrongly limited by BIOS, this should help
 
{{hc|/etc/modprobe.d/ignore_ppc.conf|2=# If the frequency of your machine gets wrongly limited by BIOS, this should help
 
options processor ignore_ppc=1}}
 
options processor ignore_ppc=1}}
  
Si faccia riferimento alla pagina [[Kernel_parameters]] se non si sa come procedere.
+
== Altre risorse ==
 +
 
 +
* [https://www.kernel.org/doc/Documentation/cpu-freq/index.txt Linux CPUFreq - kernel documentation]
 +
* [http://www.reddit.com/r/linux/comments/1hdogn/acpi_cpufreq_or_intel_pstates/ spiegazione completa di pstate]

Revision as of 09:25, 16 March 2014

Cpufreq 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

CPU frequency scaling è implementato nel kernel Linux, l'infrastruttura è chiamata cpufreq. Dalla versione del kernel 3.4 i moduli necessari sono caricati automaticamente e il governatore raccomandato ondemand è abilitato in maniera predefinita. Tuttavia gli strumenti a livello utente come cpupower, acpid , laptop-mode-tools o le GUI fornite dagli ambienti desktop possono essere ancora utilizzati per la configurazione avanzata.

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. Si consiglia di abilitare cpupower.service all'avvio.

Estensione per GNOME Shell

Diversi frontend per GNOME Shell sono disponibili in AUR:

Granola

GranolaAUR (disponibile in AUR) è un demone che controlla l'utilizzo della CPU e utilizza il governatore userspace per diminuire il consumo di energia senza alcuna differenza notevole nelle prestazioni. Le impostazioni predefinite funzionano per la maggior parte delle configurazioni .

Per testare se funziona, eseguire :

 $ cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq

e verificare che la frequenza della CPU è inferiore al massimo.

Driver per la frequenza della CPU

Nota:
  • Dalla versione 3.4 del kernel, i moduli nativi della CPU sono caricati automaticamente.
  • A partire dal kernel 3.9, il nuovo driver pstate per lo scaling di potenza viene usato automaticamente per le moderne CPU Intel al posto degli altri driver elencati sotto. Questo driver ha la priorità su tutti gli altri, e infatti è all'interno del kernel invece di essere un modulo da caricare. Questo driver è attualmente utilizzato automaticamente per tutti i tipi di CPU Sandy Bridge e Ivy Bridge. Se si verifica un problema durante l'utilizzo di questo driver, aggiungere intel_pstate=disable alla linea del kernel. É possibile utilizzare le solite utility in userpace con questo driver, ma non possono controllarne l'utilizzo.
  • Anche il comportamento di P State, menzionato sopra, può essere influenzato con /sys/devices/system/cpu/intel_pstate, ad esempio, Intel Turbo Boost può essere disattivato con # echo 1> /sys/devices/system/cpu/intel_pstate/no_turbo per mantenere basse le temperature delle CPU.
  • Un controllo supplementare per le CPU Intel moderne è disponibile con il Linux Thermal Daemon ( disponibile su AUR con il pacchetto thermaldAUR), che controlla la temperatura in modo pro-attivo utilizzando i P-states, T-states, e il driver Intel power clamp.

cpupower necessita di moduli per conoscere i limiti della cpu nativa.

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.

Per visualizzare un elenco completo dei moduli disponibili, eseguire :

$ ls /lib/modules/$(uname -r)/kernel/drivers/cpufreq/

Caricare il modulo appropriato (vedi Kernel modules per i dettagli). 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

Impostare una frequenza Massima e Minima

In rari casi , può essere necessario impostare manualmente le frequenze massima e minima.

Per impostare la frequenza massima di clock (clock_freq è la frequenza di clock espressa in unità: GHz, MHz):

# cpupower frequency-set -u clock_freq

Per impostare la frequenza minima di clock:

# cpupower frequency-set -d clock_freq

Per impostare il processore ad una determinata frequenza:

# cpupower frequency-set -f clock_freq
Nota:
  • Per regolare la frequenza solo per un singolo core della CPU, aggiungere -c core_number.
  • Il governatore e le frequenze massimo e minimo possono essere impostati in /etc/default/cpupower.

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.

Governor Descrizione
ondemand Passa dinamicamente tra le varie frequenze disponibili per le CPU(s) se il carico della cpu raggiunge il 95%
performance Fa funzionare le CPU(s) alla frequenza massima
conservative Passa gradualmente tra le varie frequenze disponibili per le CPU(s) se il carico della cpu raggiunge il 75%
powersave Fa funzionare le CPU(s) alla frequenza minima
userspace Fa funzionare le CPU(s) alla frequenza specificata dall'utente

A seconda del driver per lo scaling utilizzato, uno di questi governatori sarà caricato per impostazione predefinita:

  • ondemand per AMD e vecchie CPU Intel.
  • powersave per CPU Intel Sandybridge e successive.

Per attivare una particolare governatore, eseguire :

# cpupower frequency-set -g governor
Nota:
  • Per regolare la frequenza solo per un singolo core della CPU, aggiungere -c core_number al comando sopra.
  • Attivando un governatore, lo specifico modulo del kernel richiesto (denominato cpufreq_governatore) viene caricato. A partire dal kernel 3.4, questi moduli vengono caricati automaticamente.

In alternativa, è possibile attivare manualmente un governatore su ogni CPU disponibile :

 # echo governor | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor >/dev/null
Suggerimento: Per monitorare la velocità della CPU in tempo reale, eseguire :
 $ watch grep \"cpu MHz\" /proc/cpuinfo

Ottimizzare il governatore ondemand

Vedere la documentazione del kernel per i dettagli.

Soglia di commutazione (threshold)

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 minima 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 valore > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor

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

Tango-view-refresh-red.pngThis article or section is out of date.Tango-view-refresh-red.png

Reason: Vedere la nota sottostante. (Discuss in Talk:CPU frequency scaling (Italiano)#)
Nota: Systemd ha introdotto logind, che gestisce le azioni consolekit e policykit. di conseguenza il seguente codice qui sotto non funziona. Con logind, si editi semplicemente nel file /usr/share/polkit-1/actions/org.gnome.cpufreqselector.policy la voce defaults con ciò che si necessita, in base alle direttive del manuale di polkit [1]

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
[org.gnome.cpufreqselector]
Identity=unix-user:utente
Action=org.gnome.cpufreqselector
ResultAny=no
ResultInactive=no
ResultActive=yes

Dove la parola utente 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.

Risoluzione dei problemi

Tango-inaccurate.pngThe factual accuracy of this article or section is disputed.Tango-inaccurate.png

Reason: please use the first argument of the template to provide a brief explanation. (Discuss in Talk:CPU frequency scaling (Italiano)#)
  • 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.

Attenzione: Assicurarsi di aver letto e compreso quanto descritto nella sezione precedente. La limitazione di frequenza della CPU è una caratteristica di sicurezza del vostro BIOS e non dovrebbe essere necessario lavorarci sopra. E bene capirne la causa prima.

Un speciale parametro deve essere passato al modulo del processore.

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 faccia riferimento alla pagina Kernel_parameters o continuare a leggere. Aggiungere processor.ignore_ppc=1 alla linea di caricamento del kernel o creare :

/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

Altre risorse