
Ich habe 2 VMs als Gäste auf einer KVM-Virtualisierungsplattform unter Ubuntu 10.04 laufen. Eine VM ist ein Ubuntu 10.04-System, die andere ein Windows 7-System. Wenn beide Maschinen vollständig abgemeldet sind, verwendet die Linux-Maschine 1 % CPU, die Windows-Maschine 45-50 %, laut top. Die Diagramme im virt-manager scheinen dies zu bestätigen. Auf dem Win7-Image ist nichts installiert, was im Hintergrund laufen würde; es ist so aktuell wie nur möglich.
Warum verbraucht die Windows-VM so viel mehr als die Linux-VM, wenn beide abgemeldet und im Leerlauf sind?
Bearbeiten:
Ich habe den Gast von Anfang an mit Paravirt-Speicher- und Netzwerktreibern installiert. Ich glaube nicht, dass mir noch weitere Treiber fehlen, oder liege ich falsch?
Laut Taskmanager des Gasts ist dieser tatsächlich im Leerlauf. Taskman beansprucht etwa 1 bis 2 % der Gast-CPU, aber es gibt keine anderen Prozesse, die CPU-Zeit beanspruchen.
Antwort1
Welche Version von QEMU-KVM verwenden Sie?
Wir haben dieses Problem bei den Versionen 0.12.3 und darunter gesehen, aber bei 0.12.4 scheint es kein allzu großes Problem zu sein. Überprüfen Sie auch, ob die Bildschirmschoner laufen. Wenn Sie die VNC-Verbindung verwenden, läuft sie möglicherweise dort, und die CPU-Auslastung liegt nicht innerhalb der VM, sondern wird vom KVM-Prozess verbraucht.
Antwort2
Ich weiß, dass meine Antwort erst 100 Jahre später kommt, aber zur künftigen Bezugnahme schauen Sie bitte hier nach:
http://forum.proxmox.com/threads/5770-Windows-guest-high-context-switch-rate-when-idle
Wenn das der Fall ist, dann ist hier die Lösung: http://support.microsoft.com/kb/895980
Es hat die CPU-Auslastung meines Win2K3 R2-Gasts (wenn der Gast im Leerlauf war) auf meinem x86_64-KVM-Host von ~30%-40% auf 6% gesenkt.
Antwort3
Ich kenne mich überhaupt nicht mit KVM aus, aber bei VMware kann dies passieren, wenn Sie die VMware-Tools nicht in der virtuellen Maschine installieren, sodass diese nicht über die richtigen Gerätetreiber für die virtualisierte Hardware verfügt und ihre virtuelle CPU nicht in den tatsächlichen Leerlauf versetzen kann, wenn sie tatsächlich nichts tut, sondern stattdessen eine einfache Leerlaufschleife verwendet (was eigentlich bedeutet, dass die CPU völlig damit beschäftigt ist, sich selbst in einer Schleife zu drehen).
Vielleicht gibt es etwas Ähnliches wie VMware-Tools, das Sie in Ihrer VM installieren sollten?
Antwort4
Hören Sie als Erstes auf, Windows und Linux zu vergleichen oder zu erwarten, dass sie sich gleich verhalten. Sie sind unterschiedlich.
Windows istniemalsim Leerlauf. Es werden viele Hintergrundaufgaben ausgeführt und meiner kurzen Erfahrung mit Win 7 zufolge sind das mehr als beispielsweise XP. Eine Möglichkeit, die Belastung zu verringern, besteht darin, die erforderlichen Dienste, wie beispielsweise den Indizierungsdienst, herunterzufahren.