Osservazione:
ho un server HP con una CPU dual core AMD (Turion II Neo N40L) in grado di scalare frequenze da 800 a 1500 MHz. Il ridimensionamento di frequenza funziona con FreeBSD 9 e Ubuntu 12.04 con il kernel 3.5 di Linux. Tuttavia, quando inserisco FreeBSD 9 in un ambiente KVM sopra Ubuntu il ridimensionamento della frequenza non funziona. Il guest (quindi FreeBSD) non rileva le frequenze minima e massima e quindi non scala nulla quando l'occupazione della CPU aumenta. Sull'host (quindi Ubuntu) il processo KVM utilizza tra l'80 e il 140% della risorsa CPU ma non si verifica alcun ridimensionamento di frequenza, la frequenza rimane a 800 MHz, anche se quando eseguo qualsiasi altro processo sullo stesso box Ubuntu, il governatore ondemand rapidamente ridimensiona la frequenza a 1500 MHz!
Preoccupazione e domanda:
non capisco come la CPU sia forse virtualizzata e se spetta al guest eseguire il corretto ridimensionamento. Richiede che alcune funzionalità della CPU siano esposte al guest affinché funzioni?
Appendice:
La seguente nota di rilascio di Red Hat tende a suggerire che il ridimensionamento della frequenza funzioni anche in un ambiente virtualizzato (vedere i capitoli 6.2.2 e 6.2.3), ritenendo che la nota non riesca ad affrontare con quale tecnologia di virtualizzazione funziona (kvm, xen , eccetera.?)
Per informazione, l' cpufreq-info
output su 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)
Il motivo per cui voglio che questa funzione funzioni è: risparmiare energia, correre più tranquillo (meno caldo) e anche semplice curiosità per capire meglio perché non funziona e come farlo funzionare.
cpufreq-info
sul sistema operativo host, probabilmente si lamenterà che non è disponibile alcun driver.
cpufreq-info
non si lamenta e genera informazioni adeguate, quindi la CPU è pienamente supportata (ovviamente in un certo senso!). Il driver utilizzato è powernow-k8 che è anche logico.