J'avais l'habitude de travailler sur mon ordinateur portable sur ondemand
gouverneur, qui était fréquence de commutation du processeur en fonction de l'utilisation du processeur. Cela a fonctionné assez bien pendant des années et avait trois avantages très importants:
Maintenant, j'ai mis à niveau mon ordinateur portable (Lenovo B5400, Intel Pentium 3550M) et mon système (buntu 14.1), et j'ai constaté que:
performance
et powersave
sont disponibles; ondemand
n'est plus disponible et pris en chargeEn conséquence mon système:
performance
, ce qui est faux, je croisJ'ai essayé de modifier /etc/init.d/cpufrequtils
en définissant le paramètre suivant:
ENABLE = "true"
GOVERNOR = "powersave"
MAX_SPEED = "2300000"
MIN_SPEED = "800000"
J'ai également essayé de modifier le fichier scaling_min_freq
dans /sys/devices/system/cpu/cpu0/cpufreq
et de le définir sur 800000.
Et, devinez quoi, après avoir redémarré le système, je suis de nouveau en mode performance
avec une fréquence "échelonnée" entre 2,30 GHz et 2,30 GHz.
Pourriez-vous, s'il vous plaît, m'expliquer:
a) Où se trouvent exactement dans Ubuntu 14.10 les paramètres principaux des fréquences de processeur minimales/maximales?
b) comment définir les fréquences et les régulateurs pour obtenir le même résultat que l'ancien bien ondemand
? (Je voudrais travailler sur la fréquence la plus basse possible et ne monter que sur des charges lourdes)
c) et comment éviter de réinitialiser ce que j'ai défini, bien sûr.
Je serais reconnaissant pour des explications.
Pour les processeurs compatibles, Ubuntu utilise désormais par défaut le gouverneur de fréquence de processeur intel_pstate, alors qu’il utilisait auparavant le gouverneur de fréquence de processeur acpi_cpufreq.
Le lecteur intel_pstate n'a pas le mode ondemand
, mais son mode powersave
doit être l'équivalent du mode acpi_cpufreq ondemand
. Votre système doit utiliser le mode powersave
par défaut environ 1 minute après le démarrage, via le script /etc/init.d/ondemand
. Dans un passé récent, ce script ne traitait pas correctement le cas intel_pstate, mais il aurait déjà dû être corrigé pour tous les cas d'utilisation. référence .
Pour répondre à vos questions réelles:
A.) Les fréquences minimales et maximales du maître sont stockées sous forme de pourcentages.cat /sys/devices/system/cpu/intel_pstate/min_perf_pct
cat /sys/devices/system/cpu/intel_pstate/max_perf_pct
L’interprétation de ces chiffres dépend du drapeau activé ou désactivé turbo et, à mon avis, il existe une incohérence dans les définitions.cat /sys/devices/system/cpu/intel_pstate/no_turbo
Exemple de mon i7-2600K: fréquence minimale 1,6 GHz; maxi non turbo de 3,4 GHz; max turbo 3,8 GHz.
Donc en pourcentage:
Turbo désactivé: max = 100%, min = 47,1%
Turbo activé: max = 100%, min = 42,1%
$ cat /sys/devices/system/cpu/intel_pstate/no_turbo
0
$ cat /sys/devices/system/cpu/intel_pstate/min_perf_pct
42
$ cat /sys/devices/system/cpu/intel_pstate/max_perf_pct
100
et
$ cat /sys/devices/system/cpu/intel_pstate/no_turbo
1
$ cat /sys/devices/system/cpu/intel_pstate/max_perf_pct
100
$ cat /sys/devices/system/cpu/intel_pstate/min_perf_pct
42
B.) Le mode intel-pstate powersave
devrait être l’équivalent du mode acpi-cpufreq ondemand
.
C.) Il y a quelque chose qui ne va pas, ce qui entraîne votre chagrin. Il y a eu d'autres rapports semblables aux vôtres. Moi-même, je ne connais pas le problème fondamental, mais des incompatibilités avec cpufrequtils ont également été rapportées. Je ne sais pas si elles sont vraies ou non, car je n'utilise aucune de ces choses. J'utilise uniquement le niveau de contrôle le plus primitif avec le pilote intel-pstate.
Je l'ai défini dans .bashrc
comme alias (et comme root
), car j'ai rencontré des problèmes similaires.
Les alias ressemblent à ceci:
alias performance="echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor"
alias powersave="echo powersave > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor"
alias ondemand="echo ondemand > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor"
Vous pouvez ensuite écrire powersave
pour activer l'option d'économie d'énergie sur la console BASH
. Quand je veux utiliser un régulateur de mise à l'échelle spécifique, je le mets dans /etc/rc.local
:
#!/bin/sh -e
# rc.local
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
for i in `ls -d /sys/devices/system/cpu/cpu*|grep -v cpufreq|grep -v cpuidle`; do echo ondemand > $i/cpufreq/scaling_governor; done
exit 0
Vous avez probablement plusieurs processeurs, modifiez-le en conséquence. Je suis trop paresseux pour écrire un court script, mais je le ferai si vous me le demandez :)
EDIT: j'ai ajouté le script à /etc/rc.local