Ich habe mehrere VMs mit VirtualBox ausgeführt und die Speichernutzung wurde aus verschiedenen Perspektiven gemeldet. Außerdem habe ich Probleme zu ermitteln, wie viel Speicher meine VMs tatsächlich verwenden. Hier ist ein Beispiel:
- Ich habe eine VM unter Windows 7 (als Gastbetriebssystem) auf meinem Windows XP-Hostcomputer.
- Der Hostcomputer verfügt über 3 GB RAM
- Die Gast-VM verfügt über einen Basisspeicher von 1 GB
- Wenn ich Task Manager auf dem Gastbetriebssystem ausführe, wird eine Speichernutzung von 430 MB angezeigt
- Wenn ich Task Manager auf dem Host-Betriebssystem ausführe, werden drei Prozesse angezeigt, die anscheinend zu VirtualBox gehören:
- VirtualBox.exe (1) mit 60 MB Arbeitsspeicher (dieser scheint die meiste CPU-Auslastung zu haben)
- VirtualBox.exe (2) mit 20 MB Arbeitsspeicher
- VBoxSvc.exe mit 11,5 MB Arbeitsspeicher
- Während die VM ausgeführt wird, beträgt die Speichernutzung des Host-Betriebssystems ca. 2 GB
- Wenn ich die VM heruntergefahren habe, wird das Host-Betriebssystem auf etwa 900 MB reduziert
Es gibt hier also einige große Unterschiede. Ich verstehe wirklich nicht, wie das GuestOS 400+ MB verwenden kann, während das Host-Betriebssystem nur ungefähr 75 MB anzeigt, die der VM zugewiesen sind. Gibt es andere von VirtualBox verwendete Prozesse, die nicht so offensichtlich benannt sind?
Außerdem würde ich gerne wissen, ob ich einen Computer mit 1 GB betreibe. Wird dies meinem Host-Betriebssystem 1 GB entziehen oder nur die Menge an Speicher, die der Gastcomputer derzeit verwendet?
Aktualisieren:
Jemand drückte Misstrauen gegenüber meinen Speichernutzungszahlen aus, und ich bin mir nicht sicher, ob dieses Misstrauen auf mich oder den Task-Manager-Bericht meines Host-Betriebssystems (der möglicherweise der Schuldige ist) gerichtet war. Für Skeptiker finden Sie hier einen Screenshot dieser Prozesse auf dem Hostcomputer:
quelle
Antworten:
Der einzige Bereich im Task-Manager, der den vollständigen Betrag wiederzugeben scheint, befindet sich auf der Registerkarte Leistung. Der Wert für die Gesamteinschreibungsgebühr entspricht in etwa dem der VM zugewiesenen Betrag. Ich habe gerade eine mit 1536 MB zugeteilt, und die Festschreibegebühr ging von etwa 2,4 GB auf 0,8 GB zurück. Sie können dies bis zu einem gewissen Grad mit Virtual Box überwachen, indem Sie den Systemmonitor verwenden und die Indikatoren Prozess: Private Bytes für VirtualBox, VBoxSvc und auch VirtualBox # 1, # 2 usw. auswählen (eine für jede ausgeführte VM). Es gibt auch den Speicher: Committed Bytes-Zähler für alles.
quelle
Informationen zur Prozessarchitektur von VirtualBox finden Sie unter
Die VirtualBox-Architektur :
In Bezug auf den Speicher heißt es im Benutzerhandbuch :
Dies bedeutet, dass der Gast aus dem Host herausnimmt:
Es ist immer möglich, dass das VirtualBox-Handbuch mehrere Versionen hinter sich hat und dass die neuesten Techniken zur Speicheroptimierung nicht dokumentiert sind.
Darüber hinaus optimiert VirtualBox möglicherweise die Speichernutzung, indem nicht der gesamte definierte VM-Speicher zugewiesen wird.
Das Zuweisen von Speicher nach Bedarf ist eine Optimierung, die viel physischen Speicher einsparen kann, speicherintensive Prozesse in der VM können jedoch durch den häufigen Bedarf von VirtualBox, mehr Hostspeicher anzufordern, verlangsamt werden.
quelle
Dies scheint ein Windows-Problem zu sein. Den dritten Beitrag finden Sie hier: http://forum.sysinternals.com/pe-is-not-showing-all-memory-used-by-virtualbox_topic23886.html
Die Verwendung eines Programms wie VMMap zeigt definitiv, dass der Speicher, den Sie VBox zuweisen, tatsächlich verwendet wird. Keine Ahnung, warum es für den Task-Manager oder den Prozess-Explorer nicht sichtbar ist.
quelle
Die in TaskManager angezeigten Einträge gelten nicht für Ihre virtuelle Maschine, sondern für die VirtualBox-GUI. Auf der Registerkarte "Leistung" sehen Sie deutlich, wie viel Ihres gesamten Arbeitsspeichers verwendet wird, ohne jedoch die Prozesse zu differenzieren. Ich persönlich würde gerne sehen, dass VBox nur das verwendet, was es benötigt, aber ich bin mir einig, dass es wichtig ist, dass es in der Lage ist, so viel zu verwenden, wie es erwartet, daher das Ring-Fencing.
quelle
Könnte mit den VirtualBox Guest Additions zusammenhängen.
Meine Ubuntu-Installation verwendet derzeit ~ 20 MB, wie von WinXP gemeldet. Dies ist mit VBoxAdditions.
Meine Lubuntu-Installation verwendet derzeit ~ 90 MB, wie von WinXP gemeldet. Einfach installiert; VBoxAdditions wurden nicht installiert.
Die Speichernutzung hängt davon ab, was die VM tut. Ich habe meine Ubuntu-Installation mit ziproxy; Wenn ich etwas mache, das mit ziproxy kommuniziert, nimmt die Speichernutzung mit zunehmender Nutzung der VM um einige Megabyte zu.
Im Allgemeinen ist die Virtualisierung jedoch so weit fortgeschritten, dass die für den Gast erkennbaren Spezifikationen nicht vollständig vom Host zugewiesen werden müssen. Scheint dynamische Zuordnung und starkes Paging zu verwenden.
quelle
Sie suchen, was wird verwendet , auf dem Host, nicht das, was wird zugewiesen . Der Gast verwendet (noch) nicht mehr als 400 MB RAM des Hosts.
Es reserviert 1 GB RAM, es wird jedoch möglicherweise deutlich weniger RAM verbraucht. Wenn der Gast einen Teil dieses Speichers nicht verwendet, kann der Host-RAM für viele andere Zwecke verwendet werden (z. B. zum Zwischenspeichern sauberer Datenträgerseiten), obwohl er für den Gast reserviert ist. Und selbst wenn der Gast einen Teil dieses Speichers verwendet, kann er durch opportunistisches Austauschen aus dem physischen Speicher entfernt werden, wenn er nicht ausreichend lange darauf zugreift.
Leider sind Sie in ein äußerst komplexes Thema geraten, und es würde viele Seiten dauern, um es wirklich zu erklären. Die Antworten auf diese Frage enthalten viele falsche Informationen.
quelle
Sie können es mit der großartigen Anwendung VMMap von SysInternals sehen :
VBoxSVC.exe
. Er sollte mehrere untergeordnete Prozesse haben,VBoxHeadless.exe
wenn eine VM ausgeführt wirdVBoxHeadless.exe
Prozessen. Wählen Sie den richtigen Zweig aus, indem Sie die Befehlszeile des Prozesses überprüfen. Sie enthält eine Kennung Ihrer VMVBoxHeadless.exe
Wert in der Branche (dh er hat keine Kinder mehr, nur einen Elternteil, also ein Blatt). Erinnern Sie sich an die PIDVBoxHeadless.exe
Prozess anhand seiner PID aus und klicken Sie auf OKIn meinem Fall berichtet alle privaten Bytes , Arbeitssatz und Committed Speicher von VMMap fast genau die Größe des Speichers an die VM in VirtualBox zugewiesen übereinstimmen.
quelle