Virtuelle Maschienen und vRAM

4luc4rd

Lt. Junior Grade
Registriert
Mai 2007
Beiträge
419
Seit langem überlege ich hin und her zum Thema RAM und Virtuelle Computer.
Wenn ich einen Hypervisor aufsetzte und darauf mehrer Virtuelle Maschienen laufen habe wie sinvoll haltet ihr es das diese Virtuelle PCs einen Virtuellen Arbeitsseicher haben. Wenn dieser von den VMs genutzt wird schreiben sie ja auf ihre virtuellen Platten. Ich bin mir unsicher um wieviel das die Geschwindigkeit beeinflusst.

Was ist eure Meinung dazu oder wie macht ihr das?
HyperVisor vRAM ja/nein und VMs vRam Ja/nein und warum.

besten Dank
 
Zuletzt bearbeitet:
Kann mich #2 nur anschließen, was ist los?!

Meine VM(s) nutzen den RedHat VirtIO Treiber mit KVM/QEMU - tolle performance.
Die 1050TI wird durchgereicht, hat also kompletten Zugriff auf den vram.
 
Keine redet von Grakas mit geht es um den Virtuellen Arbeitsspeicher der Virtuellem Machienen. Ob es sinvoll ist denen Welchen zu geben.
 
Da ich von Virtuellem Arbeitsspeicher sprach dachte ich das ergibt sich aus dem zusammenhang -.-
 
a4luc4rd, ich bin mir nicht sicher, ob du so sicher im Thema Virtualisierung bist.

Virtuelle Maschinen sind vollständige Betriebssysteme, die aufgrund ihrer Darstellung als Softwarecode in beliebiger Anzahl auf einem Host laufen können.

Nehmen wir nun an, du möchtest eine solche virtuelle Maschine auf deinem Host erstellen, dann musst du dir die selbe Frage stellen, als wenn du einen PC neu aufsetzen würdest. Wie viel RAM, welche Prozessorressourcen werden zugewiesen, soll es eine oder zwei Netzwerkkarten sein... Hier unterscheidet sich die VM nicht von einem nicht-virtualisierten System.

So gesehen wirst du nicht umhin kommen, deiner VM RAM zuzuweisen, die diese dann von deinem Host anfragt. Dieser RAM ist nicht immer permanent und exklusiv der jeweiligen VM zugeordnet, vielmehr kann eine VM mit 2GB RAM maximal 2GB benutzen - nutzt sie aber nur 200mb, werden auch nur diese vom Host zugewiesen. Hier sind die einzelnen Virtualisierungslösungen sehr unterschiedlich (bei vmware gibt es z.B. noch TPS als RAM-Deduplikation über mehrere VMs etc), aber du kannst den zugewiesenen RAM erstmal als "obere Grenze" betrachten.
 
ich denke das mit "vram" haben wir ausreichend beleuchtet und ich denke es ist jetzt klar was ich meine -.-

BTT

Das ich den VMs RAM geben muss ist mir klar und auch nicht die frage.
Die fragen ist ob VMs Virtuellen Arbeitsspeicher (pagefile.sys oder swap partition) haben sollten.
 
Danke für den Hinweis, was du eigentlich meintest. Das hilft schon mal etwas bei der Einschränkung des Themas. Leider ist die Antwort auf deine Frage "Kommt drauf an". Genauer: "Kommt drauf an, was du vorhast". Dir ist insofern schwer zu helfen.

Angenommen, du verwendest auf deiner VM spezialisierte Software mit einem klaren RAM-Limit, z.B. einen Java-Prozess mit exakt definierter Speichergrenze. Dazu hat deine VM ein Linux-System mit ca 50mb RAM-Bedarf. Hier würden dir Java-RAM + OS-RAM + etwas Puffer reichen und du bräuchtest keinen Swap anlegen. Selbst für Dateicaching und Pufferung wäre es kein Problem, da der Kernel bei zu hoher RAM-Nutzung (die bei dir in diesem konstruierten Beispiel nicht auftritt) im Zweifelsfall das Caching zurückfährt, um aktiven RAM freigeben zu können, wenn Prozesse ihn haben wollen.

In Fall 2 haben wir eine VM, die einen Terminalserver für zig Benutzer bereitstellt, die morgens allesamt ihre Bürosoftware aufmachen. Jeder eine Instanz von Word. Manche von ihnen machen auch noch einen Browser auf, kaum jemand benutzt sein Mailprogramm. Aber einer kommt auf die Idee, auf dem Terminalserver in seiner Sitzung Witcher3 zu spielen. Brauchst du hier Möglichkeiten zur Auslagerung? Vermutlich schon - es sei denn, du dimensionierst deine VM so, dass du niemals und unter keine Umständen je in ein RAM-Limit laufen würdest.

Insofern kannst du kaum erwarten, eine sinnvolle Antwort auf deine Frage zu erhalten. Ohne deine exakten Anforderungen kannst du dich eigentlich nur zwischen "Better safe than sorry - Ich erlaube pagefile.sys / Swap" und "Klappt schon, kein pagefile.sys / Swap" entscheiden.

Jetzt frage ich mich natürlich: Was für eine Antwort erwartest du von den Forenmitgliedern? Denn die obigen Fälle sind ja Selbstverständlichkeiten, nur scheint das nicht das zu sein, was du suchst.
 
Ich versuche lediglich Erfahungen auszutauschen und da ich nicht weis wen ich fragen sollte darum machte ich hier ein Thema auf.

In den meisten Fällen um die es mir geht geht es um hab ich einen HyperV Server sehen mit einem RAID drunter meisten RAID 1 wenn es gut Läuft mal ein RAID 5 oder ein RAID 6.
Viele davon sind aus gewachsenen Strukturen. Am anfang mal ein Virtueller DC dann kam mal noch ein Exchange dazu und Später noch ein DMS was halt gebraucht wurde.
Durch die steigende Anzahl an VMs steigt nun auch Anzahl der parallelzugriffe auf dem Host selbst.
Wenn jetzt eine der VMs Virtuellem Arbeitsspeicher braucht schreibt sie ihn jetzt auf die VHD. Die ist nunwieder auf dem Host.
Ich hab jetzt mehrere möglichkeiten:
Variante A: Ich weise der VM mehr RAM zu und der Host lagert das dann in seinen Virtuellen Arbeitsspeicher auf dem RAID.
Variante B: Die VM selbst schreibt es in seine Virtuellen Arbeitsspeicher auf die VHD welche nun auch auch dem RAID liegt
Variante C: beide nachen das parallel.

Das Variante C ausfällt wegen der vielen zum Teil unnötigen parallelen Zugriffe auf das RAID ist denke ich klar.
Aber was ist aus rein performacetechnischer sicht die bessere variante wenn ich nicht genug ram hab um alles so abzudecken das ich keinen Virtuellen Arbeitsspeicher brauche
 
Okay, danke für die Präzisierung deiner eigentlichen Frage.

Du hast jetzt nur die Wahl zwischen schlechten Möglichkeiten.
Variante A: Der Host swapt selbst auf Festspeicher und verlangsamt die Reaktionszeit für alle VMs (er wird die Auslagerung nicht nach VM unterscheiden)
Variante B: Die VM erzeugt mehr Last auf einem bestimmten Speichersegment
Variante C: Fällt wie du schon festgelegt hast weg

Hast du Zugriff auf den aangebundenen Speicher und kannst ihn umkonfigurieren? Im besten Fall könntest du z.B. ein wenig SSD-Speicher zusammenfassen und als dein Swap den VMs bereitstellen (und der Größe von den pagefile.sys die die eben haben). SSDs kommen mit willkürlichen und häufigen Zugriffen ja recht gut klar. Alternativ kannst du Speichergruppen einrichten, die dann bestimmte VMs bevorzugen (schneller Speicher) oder benachteiligen (langsamer Speicher), damit sie einzeln swappen können, aber nicht alle gleichmäßig davon betroffen sind.

Zusammenfassend: Ich würde Variante B nehmen wenns nicht anders geht, da du da über die Speicherverwaltung noch etwas rausholen könntest.
 
Danke für die Antwort.

Die Idee eine Extra Platte oder SSD für die swap sachen zu nehmen hatte ich auch schon wobei ich da einer einzelnen SSD nicht soweit Vertrauen würde hab aber auch leider nicht immer die Möglichkeit das so zu machen Wenn dann Intern schon alles voll belegt sein sollte.

Hab halt Teilweise das Problem ich Server habe am "besten" mit onboard RAID und dann zwei 7200 HDDs um drei oder mehr VMs zum teil mit Datenbanken. Da merkt man jeden zugriff auf Platten. Ich würde es halt gern ein wenig beschleunigen bzw die Zugriffe auf die Platten zu optimieren ohne sagen zu müssen das sie sich einen neuen Server kaufen sollen für einen vierstelligen Betrag.

Edit:
Bei Variante B dann aber ohne Virtuellen Arbeitsspeicher für den Host selbst oder seh ich das falsch?
 
Zuletzt bearbeitet:
Bei deinem Szenario würde ich zweistufig vorgehen:
1. RAM- und Swap-Verbrauch über einen Monat überwachen und rausfinden, ob es irgendwann mal zu RAM-Überbelegung kommt.
2. Wenn nein, virtuellen Arbeitsspeicher ausschalten
Das ist natürlich ziemlich riskant. Gerade Datenbanken nehmen dir das evtl sehr übel. Für solche Fälle brauchst du also einen guten Ausfallmechanismus (zwei Datenbanken, Snapshots...). Aber wenn es dir um die Reduktion der Zugriffe auf den Festspeicher geht, kommst du da nicht herum.

Du scheinst ja ein sehr kleines Setup zu haben, wenn du Onboardplatten als Raidgruppe benutzen musst, statt ein SAN zu haben. Insofern ist dann mein Vorschlag mit der Umkonfiguration des Speichers vmtl hinfällig.
 
Das gemeine bei Windwos ist ja gerade das er schon recht früh anfängt auszulagern so das ich in den meisten fällen immer auslangerungen habe

Es sind nicht meine setups das sind die setups von den leuten zu denen ich geschickt werde um die system zu warten/überarbeiten/verbessern die mal irgendjemand eingerichtet hat und dann Jahre vor sich hingelaufen sind. Das ist jetzt ein beispiel. Es kann auch sein ich Hardware vorgesetzt bekomme mit dem kommentar "mach neu" oder übernimm mal die Server auf die neue Hardware.
Das war auch der Grund warum ich es recht allgemein gehalten habe.
Die Frage stellt sichja auch beim neu Aufsetzten wie man den Viruellen Arbeitsspeicher am besten Plant. Das was ich einrichte läuft da mach ich mir keine Sorgen aber ich will mich halt verbessern und optimieren.
 
Zuletzt bearbeitet:
Zurück
Oben