Impossible d'utiliser le gouverneur cpufreq «espace utilisateur» et de définir la fréquence du processeur

22

J'essaie de changer la fréquence du processeur sur mon ordinateur portable (fonctionnant sous Linux), et sans succès.
Voici quelques détails:

# 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

Au départ, j'avais le gouverneur de l'espace utilisateur intégré au noyau, mais j'ai ensuite essayé de le construire en tant que module (avec les mêmes résultats); il a été chargé lors de l'exécution des commandes ci-dessus (et je n'ai trouvé aucun message système lors du chargement):

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

Et voici les commandes que j'ai essayées pour changer la fréquence:

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

Des idées?

aditsu
la source
@don_crissti merci, heh, j'ai essayé echo 1 > /sys/devices/system/cpu/intel_pstate/no_turboet j'ai eu une panique instantanée du noyau: p Puis j'ai redémarré avec intel_pstate=disableet maintenant il utilise acpi-cpufreq, mais je ne peux toujours pas définir la fréquence (même si je ne reçois plus de messages d'erreur). Btw, pourquoi ne pas faire de votre commentaire une réponse?
aditsu
@don_crissti Je ne connaissais pas cpupower; il a une syntaxe quelque peu désagréable, mais semble fonctionner mieux que cpufreq. Je suis en mesure de définir la fréquence maintenant :) Merci beaucoup et n'oubliez pas de poster une réponse (sauf si vous ne voulez vraiment pas les points).
aditsu

Réponses:

41

En effet, votre système utilise le nouveau pilote appelé intel_pstate. Il n'y a que deux gouverneurs disponibles lors de l'utilisation de ce pilote: powersaveet performance.
Le userspacegouverneur n'est disponible qu'avec l'ancien acpi-cpufreqpilote (qui sera automatiquement utilisé si vous le désactivez intel_pstateau démarrage; vous définissez ensuite le gouverneur / la fréquence avec cpupower):

  • désactiver le pilote actuel: ajouter intel_pstate=disableà votre ligne de démarrage du noyau
  • démarrer, puis charger le userspacemodule:modprobe cpufreq_userspace
  • définir le gouverneur: cpupower frequency-set --governor userspace
  • réglez la fréquence: cpupower --cpu all frequency-set --freq 800MHz
don_crissti
la source
Merci, btw, la fréquence réglée semble faire la même chose sans--cpu all
aditsu
3
L'utilisation d'un ancien pilote doit présenter certains inconvénients. Que sont-ils?
kontextify
2
@kontextify Utilisateurs plus satisfaits, moins enclins à servir volontairement de rats de laboratoire pour tester la nouvelle version.
Mephisto
0

La réponse est dans votre question:

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

Cela et le noyau doivent être compilés avec le gouverneur de l'espace utilisateur activé.

Jaun Mauro Fernandez
la source