Observação:
Eu tenho um servidor HP com uma CPU AMD dual core (Turion II Neo N40L) que pode escalar frequências de 800 a 1500 MHz. O escalonamento de frequência funciona no FreeBSD 9 e no Ubuntu 12.04 com o kernel Linux 3.5. No entanto, quando coloco o FreeBSD 9 em um ambiente KVM em cima do Ubuntu, o escalonamento de frequência não funciona. O convidado (portanto FreeBSD) não detecta as frequências mínima e máxima e, portanto, não escala nada quando a ocupação da CPU aumenta. No host (portanto, Ubuntu), o processo KVM usa entre 80 e 140% do recurso da CPU, mas não ocorre escala de frequência, a frequência permanece em 800 MHz, embora quando eu execute qualquer outro processo na mesma caixa do Ubuntu, o governador da ondemand rapidamente escala a frequência para 1500 MHz!
Preocupação e pergunta:
não entendo como a CPU talvez seja virtualizada e se cabe ao convidado executar o dimensionamento adequado. Requer que alguns recursos da CPU sejam expostos ao convidado para que isso funcione?
Apêndice:
A seguinte nota de lançamento da Red Hat tende a sugerir que a escalabilidade da frequência funcione mesmo em um ambiente virtualizado (consulte os capítulos 6.2.2 e 6.2.3), apesar de a nota falhar em abordar com qual tecnologia de virtualização funciona (kvm, xen etc.?)
Para informações, a cpufreq-info
saída no Ubuntu é:
$ 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)
O motivo pelo qual desejo que esse recurso funcione é: economizar energia, ficar mais silencioso (menos quente) e também uma simples curiosidade para entender melhor por que isso não está funcionando e como fazê-lo funcionar.
cpufreq-info
no sistema operacional host, provavelmente reclamará que não há driver disponível.
cpufreq-info
não reclama e gera informações adequadas, portanto a CPU é totalmente suportada (é claro, de certa forma!). O driver usado é o powernow-k8, que também é lógico.