it-swarm.com.de

Wie funktioniert die Speichernutzung von VirtualBox?

Ich habe mehrere VMs mit VirtualBox ausgeführt und die Speichernutzung wurde aus verschiedenen Perspektiven gemeldet. Außerdem kann ich nicht feststellen, 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
  • Der 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 zur VirtualBox zu gehören scheinen:
    1. VirtualBox.exe (1) mit 60 MB Arbeitsspeicher (dieser scheint die meiste CPU-Auslastung zu haben)
    2. VirtualBox.exe (2) mit 20 MB Arbeitsspeicher
    3. 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?

Update:

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 auf dem Host-Rechner:

VirtualBox task manager

37
DrFredEdison

Um die Prozessarchitektur von VirtualBox zu verstehen, siehe
Die VirtualBox-Architektur :

Sobald Sie eine virtuelle Maschine (VM) über die GUI starten, haben Sie zwei Fenster (das Hauptfenster und die VM), aber drei Prozesse laufen. Wenn Sie Ihr System über den Task-Manager (unter Windows) oder einen Systemmonitor (unter Linux) betrachten, sehen Sie Folgendes:

  1. VirtualBox, die GUI für das Hauptfenster;
  2. Ein weiterer VirtualBox-Prozess, der mit dem Parameter -startvm gestartet wurde. Dies bedeutet, dass sein GUI-Prozess als Shell für eine VM fungiert.
  3. VBoxSVC, der oben erwähnte Dienst, der im Hintergrund ausgeführt wird, um alle beteiligten Prozesse im Auge zu behalten. Dies wurde automatisch vom ersten GUI-Prozess gestartet.

In Bezug auf den Speicher heißt es in der Bedienungsanleitung :

Grundspeicher

Dies legt die Menge an RAM fest, die dem VM zugewiesen und gegeben wird, wenn es ausgeführt wird. Die angegebene Speichermenge wird vom Host-Betriebssystem angefordert. Sie muss daher verfügbar sein oder als freier Speicher auf dem Host verfügbar gemacht werden, wenn versucht wird, VM zu starten, und steht dem Host während des Starts nicht zur Verfügung VM wird ausgeführt. Dies ist die gleiche Einstellung, die im Assistenten "Neue virtuelle Maschine" festgelegt wurde, wie oben in den Richtlinien unter "Erstellen einer virtuellen Maschine" beschrieben.

Dies bedeutet, dass der Gast den Host verlässt:

  • So viel Speicher, wie es mit deklariert wurde
  • Jedes VM ist auch eine VirtualBox-ausführbare Datei, daher müssen Sie ihren Speicher hinzufügen.

Es ist immer möglich, dass das VirtualBox-Handbuch mehrere Versionen zurückliegt 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, mit der viel physischer Speicher eingespart werden kann. Speicherintensive Prozesse in VM können jedoch durch die häufige Anforderung von mehr Hostspeicher durch VirtualBox verlangsamt werden.

12
harrymc

Der einzige Bereich im Task-Manager, der den gesamten Betrag wiederzugeben scheint, befindet sich auf der Registerkarte Leistung. Der Wert für die Gesamteingabegebü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 sowie 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.

12
MartW

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.

4
RandomInsano

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, jedoch ohne Detailgenauigkeit in Bezug auf Prozesse. 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 Ringfencing.

2
Rob Vanstone

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?

Sie sehen, was auf dem Host verwendet wird und nicht, was zugewiesen wird . Der Gast verwendet (noch) nicht mehr als 400 MB des RAM des Hosts.

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?

Es reserviert 1 GB RAM, es wird jedoch möglicherweise deutlich weniger RAM verbraucht. Wenn der Gast einen Teil dieses Speichers nicht verwendet, kann 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.

1
David Schwartz

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 der VM tut. Ich habe meine Ubuntu-Installation mit ziproxy; Wenn ich etwas tue, das mit ziproxy kommuniziert, steigt die Speichernutzung um einige Megabyte, wenn VM verwendet wird.

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.

1
helping-hand