Perché la VM Windows inattiva utilizza così tanta CPU?


12

Ho 2 VM in esecuzione come ospiti su una piattaforma di virtualizzazione KVM in esecuzione su Ubuntu 10.04. Una VM è un sistema Ubuntu 10.04, l'altra è un sistema Windows 7. Quando entrambe le macchine sono completamente disconnesse, la macchina Linux utilizza l'1% di CPU, quella di Windows il 45-50%, in cima. I grafici in virt-manager sembrano confermarlo. Non è installato nulla sull'immagine Win7 che sarebbe in esecuzione in background; è il più fresco possibile.

Perché la VM di Windows utilizza molto più della VM di Linux, quando entrambi sono disconnessi e inattivi?

Modificare:

Ho installato l'ospite con storage paravirt e driver di rete sin dall'inizio. Non credo ci siano altri driver che mi mancano, sbaglio?

Secondo il task manager dell'ospite, è davvero inattivo. Taskman occupa circa l'1 o il 2% della CPU guest, ma non ci sono altri processi che richiedono tempo CPU.

Risposte:


4

Quale versione di QEMU-KVM stai utilizzando?

Abbiamo riscontrato questo problema con le versioni 0.12.3 e precedenti, ma non sembra essere un problema eccessivo con 0.12.4. Inoltre, controlla se gli screensaver sono in esecuzione. Se stai utilizzando la connessione VNC, potrebbe essere in esecuzione lì e l'utilizzo della CPU non sarà all'interno della VM: verrà utilizzato dal processo KVM.


1
0.12.3. Costruirò in 0.12.4 e vedrò se questo scompare.
Jeff Shattock,

1
E infatti lo ha fatto. Windows ha trovato un driver per una CPU virtuale Qemu 0.12.4 e questo problema è scomparso dopo il riavvio del guest.
Jeff Shattock,

7

So che la mia risposta arriva dopo 100 anni ma: per riferimento futuro, consultare qui:

http://forum.proxmox.com/threads/5770-Windows-guest-high-context-switch-rate-when-idle

Se questo è il caso, ecco la soluzione: http://support.microsoft.com/kb/895980

Ha lasciato cadere il mio utente CPU Win2K3 R2 ussage (quando l'ospite era inattivo) sul mio host k86 x86_64 dal ~ 30% -40% al 6%


2
Il thread su Proxmox contiene un'informazione utile: rimuovere l'hardware virtuale della tavoletta USB dalla VM di Windows farà cadere il numero di switch di contesto. La mia macchina virtuale Windows inattiva è passata dal 20ish% della CPU host al 5% della CPU host.
Colin 't Hart,

Grazie, ha lavorato per me. Il dispositivo virtuale tablet ha inviato infinite richieste di interruzione
michaelbn il

1

Il fatto che Windows sia installato di recente non significa che non esegua processi o servizi in background. Monitora il computer Windows con SNMP o Task Manager e prova a scoprire se è effettivamente inattivo. Come ha detto Massimo, dovresti anche installare i driver di pravirtualizzazione per il tuo SO guest. Non ho mai visto una VM inattiva prendere risorse CPU dall'host.


0

Non so nulla di KVM, ma su VMware questo può accadere se non installi gli strumenti VMware nella macchina virtuale, in modo che non disponga di driver di dispositivo adeguati per l'hardware virtualizzato e non sia in grado di inserire la sua CPU virtuale in idle reale quando in realtà non sta facendo nulla, utilizzando invece un semplice loop inattivo (che corrisponde effettivamente al fatto che la CPU è completamente occupata in loop su se stessa).

Forse c'è qualcosa di simile agli strumenti VMware che dovresti installare nella tua VM?


-2

Per prima cosa, smetti di confrontare Windows e Linux o aspettati che si comportino allo stesso modo. Sono diversi.

Windows non è mai inattivo. Esegue molte attività in background e dalla mia breve esperienza con Win 7 fa più di questo che dire XP. Una cosa che faciliterà il carico è iniziare a chiudere i servizi necessari, come il servizio di indicizzazione.


1
Linux esegue anche molti "servizi" in background. E il poster originale ha confermato che Task Manager mostra l'1-2% di CPU utilizzata nel guest Windows.
Colin 't Hart,

@Colin, come tutti sappiamo, Task Manager mente sui carichi della CPU. Chi qui non ha visto riportare il 98% inattivo e il sistema non risponde ancora completamente alla temperatura della CPU a causa del carico? Sono anche consapevole del fatto che Linux esegue anche attività in background, ma il punto che stavo sollevando è che Linux e Windows sono animali completamente diversi. Coloro che cercano di confrontare l'uno con l'altro avranno sempre più difficoltà di quelli che semplicemente accettano di essere diversi e trattano ciascuno come un'entità separata.
John Gardeniers,

1
Non ha alcun senso.
Colin 't Hart,

@Colin, probabilmente perché questo genere di cose è fuori dal tuo campo. Qualsiasi Windows che è in circolazione da un po 'capirà cosa ho scritto sul carico della CPU. Chiunque lavori con Windows e Linux dovrebbe capire il resto. Dato che non lavori nello stesso campo, non mi aspetto davvero che tu capisca queste cose, proprio come non capirò nulla di Oracle.
John Gardeniers,

Cosa ti fa pensare che non lavori nello stesso campo?
Colin 't Hart,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.