Observación:
Tengo un servidor HP con una CPU AMD de doble núcleo (Turion II Neo N40L) que puede escalar frecuencias de 800 a 1500 MHz. La escala de frecuencia funciona bajo FreeBSD 9 y bajo Ubuntu 12.04 con el kernel 3.5 de Linux. Sin embargo, cuando coloco FreeBSD 9 en un entorno KVM encima de Ubuntu, la escala de frecuencia no funciona. El invitado (por lo tanto, FreeBSD) no detecta las frecuencias mínima y máxima y, por lo tanto, no escala nada cuando la ocupación de la CPU aumenta. En el host (por lo tanto, Ubuntu), el proceso KVM utiliza entre el 80 y el 140% de los recursos de la CPU, pero no ocurre escala de frecuencia, la frecuencia se mantiene en 800 MHz, aunque cuando ejecuto cualquier otro proceso en el mismo cuadro de Ubuntu, el gobernador a pedido rápidamente ¡escala la frecuencia a 1500 MHz!
Preocupación y pregunta:
no entiendo cómo la CPU está quizás virtualizada, y si depende del huésped realizar el escalado adecuado. ¿Requiere que algunas características de la CPU estén expuestas al huésped para que esto funcione?
Apéndice:
La siguiente nota de lanzamiento de Red Hat tiende a sugerir que la escala de frecuencia funciona incluso en un entorno virtualizado (consulte el capítulo 6.2.2 y 6.2.3), aunque la nota no aborda con qué tecnología de virtualización funciona (kvm, xen , etc.?)
Para información, el cpufreq-info
resultado en Ubuntu es:
$ 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 razón por la que quiero que esta característica funcione es: ahorrar energía, correr más silenciosamente (menos calor) y también simple curiosidad para comprender mejor por qué esto no funciona y cómo hacerlo funcionar.
cpufreq-info
en el sistema operativo host, probablemente se quejará de que no hay un controlador disponible.
cpufreq-info
no se queja y muestra información adecuada, por lo que la CPU es totalmente compatible (¡por supuesto, de alguna manera! El controlador utilizado es powernow-k8, que también es lógico.