Warum verwendet Virtualbox 15-20% CPU, wenn die VM angehalten wird?

10

Ich starte VirtualBox 3.1 unter Ubuntu mit einem Win XP-Gast. Zu meiner Überraschung ist mir aufgefallen, dass VirtualBox beim Anhalten der VM (deren Bildschirm grau ist) weiterhin 15 bis 20% der CPU des Hosts verwendet.

Ist das normal?

Gibt es eine Möglichkeit, dies zu vermeiden? (Ohne den Status der VM zu speichern und VirtualBox zu beenden.)

Vielen Dank für alle Einblicke!

~ lara

Laramichaels
quelle

Antworten:

8

Um die CPU-Auslastung von VirtualBox jederzeit zu verringern, greifen Sie auf diesen seltsamen Hack zurück.

Erstellen Sie eine neue virtuelle Maschine und installieren Sie kein Betriebssystem darauf. Sagen Sie VirtualBox, dass DOS ausgeführt wird, und geben Sie ihm die absoluten Mindestressourcen. Installieren Sie keine O / S. Führen Sie es aus, lassen Sie es beim Booten fehlerhaft und minimieren Sie es.

Während Sie Ihr reales Betriebssystem in einer zweiten VM ausführen, sinkt die Leerlauf-CPU-Auslastung der Virtualbox auf 3-5%.

Idee von jed4czar: http://ubuntuforums.org/showthread.php?s=58e862a814e65eb96f8fe8389b615366&t=838073&page=2

EDIT: Um Ihre Fragen direkt zu beantworten

Warum verwendet Virtualbox 15-20% CPU, wenn die VM angehalten wird?

Es ist ein Fehler. Es verbraucht immer 15-20% mehr CPU als nötig, wenn eine VM aktiv ist, es sei denn, der bereitgestellte Hack wird verwendet.

Gibt es eine Möglichkeit, dies zu vermeiden?

Siehe Hack oben.

kmarsh
quelle
Gut zu wissen, dass vbox beim Start möglicherweise verwendete CPU-Quellen
zuweist
ooooh es hat es auch für mich behoben! Super, danke. Zur Information, ich verwende Windows 8.1, VM ist Centos und verbraucht im Leerlauf etwa 15% CPU. VBox v4.3.12
Sebas
Erstaunlich, dass dies immer noch ein Problem ist.
kmarsh
4

Ich habe den oben beschriebenen Hack mit der DOS-VM versucht, aber ohne Erfolg (Ubuntu 12.04-Gäste auf einem MacBook Pro mit OS X ausführen). Ich habe auch versucht, die im Oracle-Thread erwähnten Kernel-Parameteränderungen vorzunehmen , wieder keine Änderung. Egal was ich tat, meine Gäste schienen jeweils 15-20% CPU zu essen. Ich bemerkte jedoch, dass der eine Gast, dem ich zufällig 2 CPUs zugewiesen hatte, nicht 15-20% kaute - er verhielt sich wie erwartet.

Sicher genug, als ich die anderen auf 2 CPUs umstellte, verschwand das Problem. Aus früheren Erfahrungen weiß ich, dass das Umschalten auf 2 CPUs auch die IO APIC-Option im Motherboard-Bereich aktiviert, sodass ich vermutete, dass dies die wirklich interessante Änderung war. Das heißt, dieser:

IOAPIC aktiviert

Beachten Sie, dass Sie das Gerät herunterfahren müssen, um diese Einstellung zu ändern, da es sonst ausgegraut ist. Nachdem ich dies für die Gäste aktiviert und neu gestartet hatte, war es egal, ob ich eine oder mehrere CPUs hatte. Die CPU-Auslastung von 15 bis 20% ging verloren, sodass ich dachte, ich würde meine Lösung hier teilen.

Adam C.
quelle
1

Ich hatte das gleiche Problem auf einer Windows 7 Quad-Box, auf der Oracle 5 in der VM ausgeführt wird.

Nach Adams Rat habe ich die Option Enabled IO APIC aktiviert, aber ohne Erfolg. Also folgte ich der Idee von kmarsh, die wahrscheinlich weniger als eine Minute dauerte, und die Prozessorauslastung ging von 15-20% auf 4-5% zurück.

Die verwendeten Einstellungen waren: Name: Memory Hack, Typ: Andere, Version: DOS. Speichergröße: 4 MB, Festplatte: Fügen Sie keine virtuelle Festplatte hinzu. Klicken Sie auf [Erstellen]. Beim Starten der VM wird nach einer Startdiskette gefragt. Ich habe Folgendes verwendet: Host-Laufwerk 'D:', klicken Sie auf [Start]. Die virtuelle Maschine gibt an: "FATAL: Konnte nicht vom Startmedium lesen! System angehalten." Zu diesem Zeitpunkt sank die CPU-Auslastung, sodass ich das Fenster minimierte. Das Starten einer zweiten VM macht keinen Unterschied.

Bitte lösche mich
quelle
Es scheint, dass dieses Problem so komplex ist, dass niemand es beheben kann.
kmarsh
0

Ich habe dieses VirtualBox-Problem auf einem 2-CPU-P4-Computer mit 3 GB RAM auf einem CentOS 5.5-Host festgestellt.

Ich habe dieses Problem auf einem i720 8-CPU-Computer mit 8 Gigs mit 64-Bit-Win7 nicht festgestellt. Ich habe 3 virtuelle VMWare-Maschinen und die VirtualBox ausgeführt, alle mit 2 GB Speicher, und hatte keinerlei CPU-Probleme.

Dies deutet darauf hin, dass die Ausführung entweder auf einem "kleinen" Computer oder auf einem Linux-Host das Problem ist.

Ihre Lösung hat gut funktioniert, danke.

Ich stelle fest, dass diese früheren Beiträge ein Jahr alt sind und meine VirtualBox die neueste Version 4.0.4 ist, sodass Oracle diesen Fehler noch nicht behoben hat.

Wayne Linton
quelle
2
Ich würde erwarten, dass dieser Leistungsverlust mit dem Gesicht verbunden ist, dass neuere CPUs über VT-x und ähnliches verfügen, um eine hardwareunterstützte Virtualisierung zu ermöglichen, was bedeuten würde, dass das VirtualBox-Programm die Arbeit nicht erledigt und daher die CPU-Auslastung verringert. Ein P4 hätte wahrscheinlich nicht die VT-x-Technologie und müsste daher Systemaufrufe per Software übersetzen und dadurch mehr CPU verbrauchen.
Mokubai
Dies muss inzwischen behoben sein. Wenn ich den Ubuntu-Host und den XP-Gast verwende, auf denen VirtualBox v4.3.6 ausgeführt wird, wenn ich den Gast pausiere, sinkt die CPU-Auslastung um 1%
Seeker
0

Die anderen Antworten erklären oder beheben den Fehler für mich nicht (Debian-Host, pausierter Ubuntu-Gast). Oracle hat einen Abschnitt dafür:

Einige Linux-Gäste können eine hohe CPU-Auslastung verursachen, selbst wenn das Gastsystem inaktiv zu sein scheint. Dies kann durch eine hohe Timerfrequenz des Gastkerns verursacht werden. Einige Linux-Distributionen, beispielsweise Fedora, liefern einen Linux-Kernel aus, der für eine Timer-Frequenz von 1000 Hz konfiguriert ist. Wir empfehlen, den Gastkernel neu zu kompilieren und eine Timerfrequenz von 100 Hz zu wählen.

Mit Red Hat Enterprise Linux gelieferte Linux-Kernel sowie Kernel verwandter Linux-Distributionen wie CentOS und Oracle Linux unterstützen einen Kernel-Parameter divider = N. Daher unterstützen solche Kernel eine niedrigere Timerfrequenz ohne Neukompilierung. Wir empfehlen, den Kernel-Parameter divider = 10 hinzuzufügen, um eine Gast-Kernel-Timer-Frequenz von 100 Hz auszuwählen.

Quelle: Linux-Gäste können eine hohe CPU-Auslastung verursachen

Mayeulk
quelle