J'utilise une machine Debian 8 amd64 pour l'analyse comparative. Pendant l'expérimentation, j'aimerais que le CPU fonctionne à une fréquence fixe (de préférence le maximum possible). Cela exclut la vitesse d'horloge du processeur comme source de variation dans les résultats.
Après quelques lectures, il semble que la bonne chose à faire est de changer le gouverneur CPU performance
, qui est décrit ici dans la documentation du noyau Linux :
La "performance" du gouverneur CPUfreq définit le CPU statiquement à la fréquence la plus élevée dans les limites de scaling_min_freq et scaling_max_freq.
Malheureusement, d'autres détails sur scaling_min_freq
et scaling_max_freq
ne sont pas fournis. J'espère que cela ne devrait pas avoir d'importance, car la fréquence CPU utilisée est la valeur maximale de l'intervalle.
J'ai donc activé ce gouverneur en utilisant cpufreq-set:
$ cat / sys / devices / system / cpu / cpu * / cpufreq / scaling_governor performance performance performance performance
Et pour faire bonne mesure, j'ai également désactivé le mode turbo boost dans le bios:
$ cat / sys / devices / system / cpu / intel_pstate / no_turbo 1
Sur la base de la description ci-dessus du gouverneur de performances, je ne m'attendrais à aucune fluctuation de la vitesse d'horloge du processeur. Pourtant, si je cours à plusieurs reprises cpufreq-info
, je vois la vitesse d'horloge fluctuer:
$ cpufreq-info | grep 'current CPU fr' la fréquence actuelle du processeur est de 4,00 GHz. la fréquence actuelle du processeur est de 3,99 GHz. la fréquence actuelle du processeur est de 4,00 GHz. la fréquence actuelle du processeur est de 4,00 GHz. $ cpufreq-info | grep 'current CPU fr' la fréquence actuelle du processeur est de 4,00 GHz. la fréquence actuelle du processeur est de 4,00 GHz. la fréquence actuelle du processeur est de 4,00 GHz. la fréquence actuelle du processeur est de 3,96 GHz. $ cpufreq-info | grep 'current CPU fr' la fréquence actuelle du processeur est de 4,00 GHz. la fréquence actuelle du processeur est de 4,00 GHz. la fréquence actuelle du processeur est de 4,00 GHz. la fréquence actuelle du processeur est de 3,94 GHz. $ cpufreq-info | grep 'current CPU fr' la fréquence actuelle du processeur est de 4,01 GHz. la fréquence actuelle du processeur est de 4,00 GHz. la fréquence actuelle du processeur est de 4,00 GHz. la fréquence actuelle du processeur est de 3,98 GHz.
Cette fluctuation est-elle due au matériel, au BIOS, au noyau ou à un autre facteur? Existe-t-il un moyen de régler la fréquence du processeur de sorte qu'elle ne fluctue pas du tout?
Réponses:
Après quelques expérimentations, je pense pouvoir répondre à ma propre question.
Comme mentionné dans ce fil , sur certains matériels Intel, il existe deux façons de gérer la fréquence du processeur:
Lorsque pstate est utilisé, le BIOS a son mot à dire sur la vitesse d'horloge, et il semble que ce soit la source des fluctuations.
Vous pouvez forcer la désactivation de pstate en ajoutant
intel_pstate=disable
aux arguments du noyau (éditez/etc/default/grub
et ajoutez l'argument àGRUB_CMDLINE_LINUX_DEFAULT
. Enfin exécutezsudo update-grub
).Après avoir fait cela, la sortie de
cpufreq-info
semble très différente, et je remarque également qu'un ensemble différent de gouverneurs CPU devient disponible (par exempleondemand
est maintenant disponible).Plus important encore, après avoir réglé le gouverneur sur
performance
, la vitesse d'horloge est maintenant fixée (dans mon cas, à 4,00 GHz).Vous pouvez regarder
/sys/devices/system/cpu/cpu*/cpufreq/scaling_driver
pour déterminer si pstate ou ACPI est utilisé pour mettre à l'échelle le processeur. Ces fichiers peuvent prendre les valeursacpi-cpufreq
ouintel_pstate
.la source
[1] https://www.kernel.org/doc/Documentation/cpu-freq/intel-pstate.txt
la source
intel_pstate=disable
au noyau? Suis-je invoquer le "mode hérité" quand je fais cela?Intel Architectures Software Developer's Manual.
2) oui. PS. Vous pouvez également jouer avecx86_energy_perf_policy
J'ai lu ce fil parce que je cherchais trop à définir une fréquence fixe pour mon processeur car le ventilateur ne fonctionne plus (bien sûr, ces choses se produisent lorsque vous êtes à l'étranger dans une île perdue pour les loisirs de plongée!), donc mon point était plus à régler la fréquence la plus basse (800Mhz) ..j'ai finalement réussi à changer le scaling_max_freq dans / sys / devices / system / cpu / cpu * / cpufreq / pour chaque cpu de la configuration et maintenant c'est bien la fréquence est supposée passer de 800Mhz à .... 800Mhz. Cela fonctionne et a résolu le problème de surchauffe que j'ai connu .. (la fréquence est maintenant de 799Mhz et ne bouge pas, ce qui a permis au processeur de rester autour de 50 ° C!)
PS: je désactive également le mode turbo (3,1Ghz)
la source