Observation:
J'ai un serveur HP avec un processeur dual core AMD (Turion II Neo N40L) qui peut mettre à l'échelle des fréquences de 800 à 1500 MHz. La mise à l'échelle des fréquences fonctionne sous FreeBSD 9 et sous Ubuntu 12.04 avec le noyau Linux 3.5. Cependant, lorsque je place FreeBSD 9 dans un environnement KVM au-dessus d'Ubuntu, la mise à l'échelle des fréquences ne fonctionne pas. L'invité (donc FreeBSD) ne détecte pas les fréquences minimales et maximales et ne modifie donc rien lorsque l'occupation du processeur augmente. Sur l'hôte (donc Ubuntu), le processus KVM utilise entre 80 et 140% des ressources CPU mais aucune mise à l'échelle de fréquence ne se produit, la fréquence reste à 800 MHz, bien que lorsque j'exécute tout autre processus sur la même boîte Ubuntu, le gouverneur à la demande rapidement adapte la fréquence à 1500 MHz!
Préoccupation et question:
je ne comprends pas comment le CPU est peut-être virtualisé, et s'il appartient à l'invité d'effectuer la mise à l'échelle appropriée. Faut-il que certaines fonctionnalités du processeur soient exposées à l'invité pour que cela fonctionne?
Annexe:
La note de publication suivante de Red Hat tend à suggérer que la mise à l'échelle de la fréquence fonctionne même dans un environnement virtualisé (voir les chapitres 6.2.2 et 6.2.3), pensant que la note ne traite pas de la technologie de virtualisation avec laquelle cela fonctionne (kvm, xen , etc.?)
Pour information, la cpufreq-info
sortie sur Ubuntu est:
$ cpufreq-info
cpufrequtils 007: cpufreq-info (C) Dominik Brodowski 2004-2009
Report errors and bugs to cpufreq@vger.kernel.org, please.
analyzing CPU 0:
driver: powernow-k8
CPUs which run at the same hardware frequency: 0
CPUs which need to have their frequency coordinated by software: 0
maximum transition latency: 8.0 us.
hardware limits: 800 MHz - 1.50 GHz
available frequency steps: 1.50 GHz, 1.30 GHz, 1000 MHz, 800 MHz
available cpufreq governors: conservative, ondemand, userspace, powersave, performance
current policy: frequency should be within 800 MHz and 1.50 GHz.
The governor "ondemand" may decide which speed to use
within this range.
current CPU frequency is 800 MHz.
cpufreq stats: 1.50 GHz:14.79%, 1.30 GHz:1.07%, 1000 MHz:0.71%, 800 MHz:83.43% (277433)
analyzing CPU 1:
driver: powernow-k8
CPUs which run at the same hardware frequency: 1
CPUs which need to have their frequency coordinated by software: 1
maximum transition latency: 8.0 us.
hardware limits: 800 MHz - 1.50 GHz
available frequency steps: 1.50 GHz, 1.30 GHz, 1000 MHz, 800 MHz
available cpufreq governors: conservative, ondemand, userspace, powersave, performance
current policy: frequency should be within 800 MHz and 1.50 GHz.
The governor "ondemand" may decide which speed to use
within this range.
current CPU frequency is 800 MHz.
cpufreq stats: 1.50 GHz:14.56%, 1.30 GHz:1.06%, 1000 MHz:0.79%, 800 MHz:83.59% (384089)
La raison pour laquelle je veux que cette fonctionnalité fonctionne est: économiser de l'énergie, courir plus silencieusement (moins chaud) et aussi une simple curiosité pour mieux comprendre pourquoi cela ne fonctionne pas et comment le faire fonctionner.
cpufreq-info
sur le système d'exploitation hôte, il se plaindra probablement qu'aucun pilote n'est disponible.
cpufreq-info
ne se plaint pas et génère des informations appropriées, de sorte que le processeur est entièrement pris en charge (bien sûr d'une certaine manière!). Le pilote utilisé est powernow-k8 qui est également logique.