Der cpufreq-Governor "userspace" kann nicht verwendet und die CPU-Frequenz nicht eingestellt werden

22

Ich versuche, die CPU-Frequenz auf meinem Laptop zu ändern (unter Linux) und habe keinen Erfolg.
Hier sind einige Details:

# 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 [email protected], 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

Anfangs hatte ich den Userspace Governor in den Kernel eingebaut, aber dann habe ich auch versucht, ihn als Modul zu bauen (mit den gleichen Ergebnissen). Es wurde geladen, während die obigen Befehle ausgeführt wurden (und ich konnte beim Laden keine Systemmeldungen finden):

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

Und hier sind die Befehle, die ich zum Ändern der Frequenz ausprobiert habe:

# 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?

Irgendwelche Ideen?

aditsu
quelle
@don_crissti danke, heh, ich habe versucht, echo 1 > /sys/devices/system/cpu/intel_pstate/no_turboeine sofortige Kernel-Panik zu bekommen: p Dann habe ich mit neu gestartet intel_pstate=disableund jetzt wird acpi-cpufreq verwendet, aber ich kann die Frequenz immer noch nicht einstellen (obwohl ich keine Fehlermeldungen mehr bekomme). Übrigens, warum machen Sie Ihren Kommentar nicht zu einer Antwort?
Aditsu
@don_crissti Ich wusste nichts über cpupower. Es hat eine etwas unangenehme Syntax, scheint aber besser zu funktionieren als cpufreq. Ich kann jetzt die Frequenz einstellen :) Vielen Dank und vergessen Sie nicht, eine Antwort zu schreiben (es sei denn, Sie möchten die Punkte wirklich nicht haben).
Aditsu

Antworten:

41

Dies liegt daran, dass Ihr System den neuen Treiber verwendet intel_pstate. Bei Verwendung dieses Treibers stehen nur zwei Regler zur Verfügung: powersaveund performance.
Der userspaceGovernor ist nur mit dem älteren acpi-cpufreqTreiber verfügbar (der automatisch verwendet wird, wenn Sie ihn intel_pstatebeim Booten deaktivieren ; Sie stellen dann den Governor / die Frequenz mit ein cpupower):

  • Deaktivieren Sie den aktuellen Treiber: Fügen Sie ihn intel_pstate=disableIhrer Kernel-Boot-Zeile hinzu
  • booten, dann das userspaceModul laden :modprobe cpufreq_userspace
  • Stellen Sie den Gouverneur ein: cpupower frequency-set --governor userspace
  • Frequenz einstellen: cpupower --cpu all frequency-set --freq 800MHz
don_crissti
quelle
Danke, übrigens, Frequenz-Set scheint das gleiche zu tun, ohne--cpu all
aditsu
3
Die Verwendung eines älteren Treibers muss einige Nachteile haben. Was sind Sie?
kontextify
2
@kontextify Mehr zufriedene Benutzer, die weniger bereit sind, freiwillig als Laborratten zu dienen, um die neue Version zu testen.
Mephisto
0

Die Antwort ist in Ihrer Frage:

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

Dies und der Kernel müssen mit aktiviertem Userspace Governor kompiliert werden.

Jaun Mauro Fernandez
quelle