Non è possibile utilizzare il regolatore cpufreq "userspace" e impostare la frequenza della CPU


22

Sto cercando di cambiare la frequenza della CPU sul mio laptop (con Linux) e non sto avendo successo.
Ecco alcuni dettagli:

# uname -a
Linux yoga 3.12.21-gentoo-r1 #4 SMP Thu Jul 10 17:32:31 HKT 2014 x86_64 Intel(R) Core(TM) i5-3317U CPU @ 1.70GHz GenuineIntel GNU/Linux

# cpufreq-info
cpufrequtils 008: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0:
  driver: intel_pstate
  CPUs which run at the same hardware frequency: 0
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency: 0.97 ms.
  hardware limits: 800 MHz - 2.60 GHz
  available cpufreq governors: performance, powersave
  current policy: frequency should be within 800 MHz and 2.60 GHz.
                  The governor "powersave" may decide which speed to use
                  within this range.
  current CPU frequency is 2.42 GHz (asserted by call to hardware).
(similar information for cpus 1, 2 and 3)

# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
performance powersave

Inizialmente avevo il Governator dello spazio utente integrato nel kernel, ma poi ho anche provato a costruirlo come modulo (con gli stessi risultati); è stato caricato durante l'esecuzione dei comandi sopra (e non sono riuscito a trovare alcun messaggio di sistema durante il caricamento):

# lsmod
Module                  Size  Used by
cpufreq_userspace       1525  0
(some other modules)

Ed ecco i comandi che ho provato per cambiare la frequenza:

# cpufreq-set -f 800MHz
Error setting new values. Common errors:
- Do you have proper administration rights? (super-user?)
- Is the governor you requested available and modprobed?
- Trying to set an invalid policy?
- Trying to set a specific frequency, but userspace governor is not available,
   for example because of hardware which cannot be set to a specific frequency
   or because the userspace governor isn't loaded?

# cpufreq-set -g userspace  
Error setting new values. Common errors:
- Do you have proper administration rights? (super-user?)
- Is the governor you requested available and modprobed?
- Trying to set an invalid policy?
- Trying to set a specific frequency, but userspace governor is not available,
   for example because of hardware which cannot be set to a specific frequency
   or because the userspace governor isn't loaded?

Qualche idea?


@don_crissti grazie, eh, ho provato echo 1 > /sys/devices/system/cpu/intel_pstate/no_turboe ho avuto un panico istantaneo del kernel: p Poi ho riavviato intel_pstate=disablee ora sta usando acpi-cpufreq, ma non riesco ancora a impostare la frequenza (anche se non ricevo più messaggi di errore). A proposito, perché non fare una risposta al tuo commento?
aditsu,

@don_crissti Non sapevo di cpupower; ha una sintassi un po 'brutta, ma sembra funzionare meglio di cpufreq. Sono in grado di impostare la frequenza ora :) Grazie mille e ricordati di inviare una risposta (a meno che tu non voglia davvero i punti).
aditsu,

Risposte:


41

Questo perché il sistema utilizza il nuovo driver chiamato intel_pstate. Sono disponibili solo due regolatori quando si utilizza questo driver: powersavee performance.
Il userspaceregolatore è disponibile solo con il acpi-cpufreqdriver più vecchio (che verrà utilizzato automaticamente se si disabilita intel_pstateal momento dell'avvio; si imposta quindi il regolatore / frequenza con cpupower):

  • disabilita il driver corrente: aggiungi intel_pstate=disablealla tua linea di avvio del kernel
  • avviare, quindi caricare il userspacemodulo:modprobe cpufreq_userspace
  • impostare il governatore: cpupower frequency-set --governor userspace
  • imposta la frequenza: cpupower --cpu all frequency-set --freq 800MHz

Grazie, a proposito, il set di frequenze sembra fare la stessa cosa senza--cpu all
aditsu,

3
Ci devono essere alcuni svantaggi nell'uso di un driver più vecchio. Quali sono?
kontextify,

2
@kontextify Utenti più felici, meno inclini a servire volontariamente come topi di laboratorio per testare la nuova versione.
Mefisto,

0

La risposta è nella tua domanda:

for core in $(seq 0 "$(($(getconf _NPROCESSORS_ONLN) - 1))"); do
echo {performance|powersave} >/sys/devices/system/cpu/cpu$core/cpufreq/scaling_governor ;
done

Quello e il kernel devono essere compilati con l'utility governor di userspace abilitata.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.