Wie funktioniert RAM in einer virtuellen Maschine?

1068
Commissar Vasili Karlovic

Ich habe eine virtuelle Linux-Maschine mit VBox eingerichtet und das Host-Betriebssystem ist Windows. Ich möchte verstehen, wie RAM auf der virtuellen Maschine arbeitet.

  • Weist der Host den verwendeten Gast-RAM als einen einzigen Dienst zu?
  • oder wird der RAM direkt vom Gast zugewiesen?

Kurz gesagt, sieht der Host den Gast als eine einzige Anwendung aus oder weist das Gastsystem seine Anforderungen direkt der Hardware zu? Ich habe weder Informatik studiert noch so etwas, daher sehe ich das Problem wie folgt:

  • Wenn ich eine einzige Berechnung im Gastsystem durchführe und das Hostsystem den Gast als einen einzigen Service wahrnimmt, wird die Berechnung einer der vielen Services sein, die der Gast zu diesem Zeitpunkt ausführt, und meine Berechnung wird eine Verzögerung haben.
  • Wenn sich der Gast direkt mit dem RAM verbindet, sind die anderen Dienste bereits im RAM zugewiesen und schwanken, und die neuen Dienste werden schneller zugewiesen.
1
Dem Hypervisor-Programm wird RAM zugewiesen. RAM kann sich nicht zuordnen, was absolut keinen Sinn macht. Wie Hypervisoren funktionieren, hängt davon ab, um welchen Typ es sich handelt und von welchem ​​Hypervisor Sie sprechen. In diesem Fall wurde in einer Box dokumentiert, wie sie funktionieren, und es wird auch der Typ des Hypervisors angegeben Ramhound vor 6 Jahren 4

1 Antwort auf die Frage

2
Jamie Hanrahan

Erstens: Die Zuweisung von RAM unterliegt immer der endgültigen Kontrolle des Host-Betriebssystems.

Darüber hinaus kommt es darauf an.

Mit einem einfachen Hypervisor teilen Sie dem Hypervisor lediglich mit, wie viel RAM jede VM erhält. Dieser Betrag wird vom verfügbaren RAM auf Ihrem Hostsystem abgezogen, wenn die VM gestartet wird und vom Hypervisor "in Verwendung" ist, solange die VM läuft. Das in der VM ausgeführte Betriebssystem funktioniert wie immer, um den Prozessen und den Betriebssystemverwendungen RAM zuzuweisen. Der alte Microsoft "Virtual PC", der in Windows 7 häufig für den "XP-Modus" verwendet wurde, funktioniert auf diese Weise. VirtualBox tut das auch. Wenn Sie in beiden Fällen eine VM für 1 GB RAM konfigurieren und starten, hat Ihr Host plötzlich 1 GB weniger RAM "verfügbar". Es ist normalerweise nicht sehr effizient beim RAM, aber es ist einfach zu implementieren.

Bei einem komplexeren Hypervisor ist der Betrag, den Sie der VM zuweisen, lediglich eine Obergrenze. Das Gastbetriebssystem sieht so viel RAM als "total" an, aber hinter den Kulissen könnten einige oder sogar die meisten davon, was der Gast für RAM hält, für den Host virtuell sein. Dies gilt insbesondere für das, was Windows als "freies" oder "nullloses" RAM im Gast bezeichnet - da es keinen interessanten Inhalt hat, ist es nicht erforderlich, es irgendwo zu speichern. Aber selbst RAM, das der Gast als "in Verwendung" sieht, kann im Host virtuell sein, der Inhalt ist in einer Auslagerungsdatei oder einer zugeordneten Datei.

Das Gastbetriebssystem verarbeitet den Arbeitsspeicher weiterhin wie immer. Wenn sich jedoch das Gastbetriebssystem auf einen Teil des noch nicht vorhandenen Arbeitsspeichers bezieht, kann der Hypervisor dem Gast mehr aktuellen Arbeitsspeicher zuweisen. (Mit anderen Worten, eine Speicherreferenz, die scheinbar ohne Seitenfehler im Gastsystem zu funktionieren scheint, kann einen Seitenfehler im Host verursachen.) Innerhalb des insgesamt verfügbaren Arbeitsspeichers und der konfigurierten Grenzwerte passt der Hypervisor die Größe des Arbeitsspeichers an, der "in" ist. das Gastbetriebssystem versucht, die Seitenfehlerrate im Host niedrig zu halten.

Dies wird allgemein als "Thin Provisioning" bezeichnet. Die Implementierung im Hypervisor ist komplexer, führt jedoch zu einer effizienteren Verwendung des Arbeitsspeichers des Hosts.

Es gibt eine andere Technik, die von Virtualbox und VMware für einige Gastbetriebssysteme unterstützt wird. Diese Funktion wird auch als "Memory Ballooning" bezeichnet. Dies ermöglicht es dem Gast, die Größe des Arbeitsspeichers zu ändern, es ist jedoch keine Thin Provisioning phuclv vor 6 Jahren 0
Wie ich es gesehen habe, ist "Ballonfahren" eher ein Mechanismus, der _part of_ Thin Provisioning ist. Dadurch kann der HV dem Gast den RAM leicht entziehen oder die dem Gast zugewiesene RAM erweitern. "Ballooning" bezieht sich auf die verwendete Methode: Zuweisung und Referenzierung einer ganzen Menge virtuellen Speichers, was zu einer privaten Zuweisung von RAM führt. Danach kann der HV diesen RAM auf die andere Seite "verschieben". Wenn Sie _nicht_ Thin-Provisioning durchführen, dh wenn der gesamte RAM, der für den Gast zulässig ist, tatsächlich dem Gast zugewiesen wird, wenn der Gast startet, wäre das "Ballonfahren" völlig sinnlos. Jamie Hanrahan vor 6 Jahren 0