web-dev-qa-db-fra.com

Le gouverneur de performances pour cpufreq ne semble pas se comporter comme annoncé

Le noyau utilisé: 3.2.0-23-generic sur Ubuntu 12.04LTS

Par exemple, j'émets la commande suivante:

Sudo cpufreq-set -c 0 -g performance

Ensuite, je vais à /sys/devices/system/cpu/cpu0/cpufreq et saisis ce qui suit:

Sudo cat cpuinfo_cur_freq

Parfois, j'obtiens la fréquence maximale (3600 MHz) et parfois la fréquence minimale (1600 MHz).

Si je fais:

cat scaling_governor

La sortie est performance, ce qui montre que le gouverneur est en fait défini sur les performances.

Ensuite, pour le rendre encore plus étrange, si je le fais:

cpufreq-info

Je reçois:

analyzing CPU 0:
  driver: acpi-cpufreq
  CPUs which run at the same hardware frequency: 0 1 2 3 8 9 10 11
  CPUs which need to have their frequency coordinated by software: 0
  maximum transition latency: 10.0 us.
  hardware limits: 1.60 GHz - 3.60 GHz
  available frequency steps: 3.60 GHz, 3.60 GHz, 3.47 GHz, 3.33 GHz, 3.20 GHz, 3.07 GHz, 2.93 GHz, 2.80 GHz, 2.67 GHz, 2.53 GHz, 2.40 GHz, 2.27 GHz, 2.13 GHz, 2.00 GHz, 1.87 GHz, 1.73 GHz, 1.60 GHz
  available cpufreq governors: conservative, ondemand, userspace, powersave, performance
  current policy: frequency should be within 3.60 GHz and 3.60 GHz.
                  The governor "performance" may decide which speed to use
                  within this range.
  current CPU frequency is 3.60 GHz.
...

Si vous regardez la politique actuelle ci-dessus, vous remarquerez que cela me dit que le processeur doit être indexé à 3,60 GHz. Pourtant, cpuinfo_cur_freq semble raconter une histoire différente.

4
Michael Goldshteyn

Malheureusement, dans 12.04, le cpufreqd-deamon remplace tout réglage effectué dans d'autres applications, que ce soit dans cpufreq-cli ou dans Unity-applet. La solution la plus simple que j'ai trouvée en parcourant la documentation Ubuntu consistait à modifier /etc/cpufreqd.conf et à ajouter d'abord un profil appelé On Demand, comme suit:

[Profile]
name=On Demand
minfreq=10%
maxfreq=100%
policy=ondemand
[/Profile]

Ensuite, vous devez faire défiler les états #basic et choisir le nouveau profil On Demand comme profil pour tous les états Basic.

Le problème actuel est que cpufreqd interroge acpi pour l’état de l’AC, remarque que l’AC est connecté, puis définit les performances du gouverneur cpu, car c’est ce qui est défini dans les règles de base du fichier de configuration. . Peu importe que vous ayez sélectionné un autre gouverneur, que ce soit par ligne de commande ou par l'applet de mise à l'échelle dans Unity.

N'oubliez pas de courir

Sudo service cpufreqd restart

après avoir édité le fichier de configuration.

Fait amusant: cpufreqd ne semble pas me remplacer si je choisis le gouverneur de performances dans l'applet d'unité. Mais avant de modifier le fichier de configuration, il annulait toujours mon choix pour la demande et revenait à la performance. Je ne sais pas pourquoi.

J'utilise le pilote powernow-k8, si cela signifie quelque chose à quiconque lira cette réponse plus tard.

Note: La documentation Ubuntu est sérieusement manquante concernant cpufreqd (aussi) et il pourrait y avoir une solution meilleure/plus simple/graphique pour le problème.

6
Gert

Si vous observez une baisse temporaire de la fréquence de la CPU, cela peut être dû au fait que la CPU atteint une limite thermique et est réduite jusqu'à ce que la température baisse. Juste une supposition.

0
Colin Ian King