Warum verwendet die inaktive Windows-VM so viel CPU?


12

Ich habe 2 VMs als Gäste auf einer KVM-Virtualisierungsplattform unter Ubuntu 10.04. Eine VM ist ein Ubuntu 10.04-System, die andere ein Windows 7-System. Wenn beide Rechner vollständig abgemeldet sind, verbraucht der Linux-Rechner 1% der CPU, der Windows-Rechner 45-50%. Die Grafiken in virt-manager scheinen dies zu belegen. Auf dem Win7-Image ist nichts installiert, das im Hintergrund ausgeführt werden könnte. Es ist so frisch wie möglich.

Warum verwendet die Windows-VM so viel mehr als die Linux-VM, wenn beide abgemeldet sind und sich im Leerlauf befinden?

Bearbeiten:

Ich habe den Gast von Anfang an mit Paravirt-Speicher und Netzwerktreibern installiert. Ich glaube nicht, dass noch andere Treiber fehlen, irre ich mich?

Laut dem Task-Manager des Gastes ist es tatsächlich müßig. Taskman beansprucht ungefähr 1 oder 2% der Gast-CPU, aber es gibt keine anderen Prozesse, die CPU-Zeit in Anspruch nehmen.

Antworten:


4

Welche Version von QEMU-KVM verwenden Sie?

Wir haben dieses Problem ab Version 0.12.3 gesehen, aber bei Version 0.12.4 scheint es kein allzu großes Problem zu sein. Überprüfen Sie auch, ob die Bildschirmschoner aktiv sind. Wenn Sie die VNC-Verbindung verwenden, wird sie möglicherweise dort ausgeführt und die CPU-Auslastung befindet sich nicht in der VM - sie wird vom KVM-Prozess verbraucht.


1
0.12.3. Ich werde 0.12.4 einbauen und sehen, ob das weggeht.
Jeff Shattock

1
Und tatsächlich war es so. Windows hat einen Treiber für eine virtuelle Qemu 0.12.4-CPU gefunden. Dieses Problem ist nach einem Neustart des Gastsystems behoben.
Jeff Shattock

7

Ich weiß, dass meine Antwort nach 100 Jahren kommt, aber: Zum späteren Nachschlagen siehe hier:

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

Wenn dies der Fall ist, ist hier die Lösung: http://support.microsoft.com/kb/895980

Die CPU-Auslastung meines Win2K3 R2-Gasts (als der Gast inaktiv war) auf meinem x86_64-KVM-Host wurde von ~ 30% -40% auf 6% gesenkt.


2
Der Proxmox-Thread enthält nützliche Informationen: Wenn Sie die virtuelle Hardware des USB-Tablets von der Windows-VM entfernen, wird die Anzahl der Kontextwechsel verringert. Meine inaktive Windows-VM ging von 20% Host-CPU auf 5% Host-CPU zurück.
Colin 't Hart

Danke, hat für mich gearbeitet. Das virtuelle Tablet-Gerät hat endlose Interrupt-Anfragen gesendet
michaelbn

1

Die Tatsache, dass Windows neu installiert wird, bedeutet nicht, dass keine Hintergrundprozesse oder -dienste ausgeführt werden. Überwachen Sie den Windows-Computer mit SNMP oder dem Task-Manager und versuchen Sie herauszufinden, ob er tatsächlich inaktiv ist. Wie Massimo sagte, sollten Sie auch Pravirtualization-Treiber für Ihr Gastbetriebssystem installieren. Ich habe noch nie eine inaktive VM gesehen, die dem Host CPU-Ressourcen entzogen hat.


0

Ich weiß überhaupt nichts über KVM, aber unter VMware kann dies passieren, wenn Sie die VMware-Tools nicht auf der virtuellen Maschine installieren, sodass sie keine geeigneten Gerätetreiber für die virtualisierte Hardware haben und nicht in der Lage sind, diese zu installieren Die virtuelle CPU befindet sich im realen Leerlauf, wenn sie eigentlich gar nichts tut, und verwendet stattdessen eine einfache Leerlaufschleife (was tatsächlich der Tatsache entspricht, dass die CPU voll damit beschäftigt ist, sich in einer Schleife fortzubewegen).

Vielleicht gibt es etwas Ähnliches wie VMware-Tools, die Sie in Ihrer VM installieren sollten?


-2

Hören Sie als Erstes auf, Windows und Linux zu vergleichen, oder erwarten Sie, dass sie sich gleich verhalten. Sie sind anders.

Windows ist nie untätig. Es führt viele Hintergrundaufgaben aus und aus meiner kurzen Erfahrung mit Win 7 kann es mehr als nur XP. Eine Sache, die dazu beiträgt, die Last zu verringern, ist das Herunterfahren der erforderlichen Dienste, z. B. des Indexdienstes.


1
Linux führt auch viele Hintergrunddienste aus. Das Original-Poster bestätigte, dass der Task-Manager 1-2% der im Windows-Gast verwendeten CPU anzeigt.
Colin 't Hart

@Colin, wie wir alle wissen, geht es im Task-Manager um die CPU-Auslastung. Wer hat hier nicht gesehen, dass es 98% Leerlauf meldet und das System aufgrund der Last immer noch nicht auf die CPU-Temperatur reagiert? Mir ist auch klar, dass Linux auch Hintergrundaufgaben ausführt, aber der Punkt, den ich angesprochen habe, ist, dass Linux und Windows völlig unterschiedliche Tiere sind. Diejenigen, die versuchen, sich zu vergleichen, werden immer mehr zu kämpfen haben als diejenigen, die einfach akzeptieren, dass sie unterschiedlich sind und jedes als eine separate Einheit behandeln.
John Gardeniers

1
Das macht überhaupt keinen Sinn.
Colin 't Hart

@Colin, das liegt wahrscheinlich daran, dass so etwas außerhalb Ihres Fachgebiets liegt. Jedes Windows, das schon eine Weile in der Nähe ist, wird verstehen, was ich über die CPU-Auslastung geschrieben habe. Jeder, der sowohl mit Windows als auch Linux arbeitet, sollte den Rest verstehen. Da Sie nicht auf demselben Gebiet arbeiten, erwarte ich nicht wirklich, dass Sie diese Dinge verstehen, so wie ich nichts von Oracle verstehe.
John Gardeniers

Was lässt Sie denken, dass ich nicht auf demselben Gebiet arbeite?
Colin 't Hart
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.