RAM Auslastung Host

houdap

Member
Feb 21, 2020
22
0
6
45
Moin Moin,

ich arbeite seit längerem mit Proxmox und hab da mal ne Frage bzgl. der RAM Auslastung.

Ich habe eine Windows Server 2016 Maschine auf dem Host und die läuft seit Jahren super.

Wie im Bild jedoch zu sehen, ist die RAM Auslastung bei 71% - also 11 von 16GB werden in Anspruch genommen. Die Windows Maschine selbst verwendet aktuell 3,5GB RAM

Die ARC Geschichte hab ich auch schon eingestellt mit options zfs zfs_arc_max=8589934592

Ist es so, dass der Host automatisch beim Starten der Virtuellen Maschine den kompletten RAM des zugewiesenen RAMS (hier 10GB) reserviert oder wie kann ich das beheben, dass unter dem Host mir die tatsächliche Auslastung angezeigt wird?

Aktuell ist die 7.4 Version installiert.

Lieben Dank
 

Attachments

  • proxmox.png
    proxmox.png
    17.6 KB · Views: 11
Ist es so, dass der Host automatisch beim Starten der Virtuellen Maschine den kompletten RAM des zugewiesenen RAMS (hier 10GB) reserviert oder wie kann ich das beheben, dass unter dem Host mir die tatsächliche Auslastung angezeigt wird?
Hängt davon ab wie du "tatsächliche Auslastung" definierst. Wenn du deinem Win 10GB RAM zuteilst, dann wird Win auch immer versuchen die vollen 10GB zu verbraten. Wenn es den RAM nicht für Anwendungen/Dienste braucht, dann wird es den RAM für Caching verprassen. Caching ist aber auch benutzer physischer RAM, der tatsächlich nicht leer ist. Das spiegelt dann auch die Node Übersicht von PVE wieder, da es den tatsächlich verwendeten physichen RAM anzeigt.
PVE gibt der VM nur den RAM, den sie auch wirklich nutzt. Es werden da also nicht sofort die vollen 10GB vergeben. Ausnahme ist wenn du PCI passthrough benutzt. Da würden dann wegen DMA die vollen 10GB direkt vergeben werden und die VM wird immer die vollen 10GB zugeteilt haben. Ballooning und KSM klappt dann mit PCI Passthrough ebenfalls nicht.

Was deine Win VM als RAM-Auslastung im WebUI anzeigt hängt davon ab, ob du den QEMU Guest Agent installier hast oder nicht.
Hast du den installiert und aktiviert, dann wird PVE im webUI das anzeigen, was es von Windows zurückgemeldet bekommt und dann wird für Caching benutzer RAM "fälschlicherweise" als freier RAM angezeigt. Das webUI sollte dann das wiederspiegeln, was du auch in Windows siehst.
Nutzt du keinen QEMU Guest Agent fällt PVE auf den RAM-Verbrauch des KVM-Prozesses zurück, der dein Win virtualisiert. Dann zeigt das webUI für die VM den tatsächlichen verbrauchten RAM der VM (wo für Caching benutzer RAM dann als benutzt und nicht als frei zählt).
 
Last edited:
Linux und Windows sind sich nicht einig, welche Speicherbelegung als "Frei" bzw. "In Verwendung" zu zaehlen ist (sh. linuxatemyram.com). Zusaetzlich wird einmal angefasster RAM (der damit der VM zugewiesen ist) nicht automatisch wieder hergegeben, d.h. die Auslastung im Gast und am Host decken sich nie. Es gibt den Ballooning Treiber der sowohl mehr Informationen ueber die Auslastung aus dem Gast liefert als auch ein "Schrumpfen" des zugewiesenen RAMs bei Erreichen gewisser Auslastungsgrenzwerte ermoeglicht.
 
@Dunuin vielen Dank. Qemu Guest Agent ist installiert. Alle Treiber vorhanden. Windows selbst zeigt im Ressourcen Manager eine Speicherrauslastung von 3,5GB an.

@fabian falls es so ist, kann ich die anzeige also ignorieren? Den Balloon Treiber habe ich damals auch installiert...

LG
 
Zusaetzlich wird einmal angefasster RAM (der damit der VM zugewiesen ist) nicht automatisch wieder hergegeben
Kannst du da etwas ins Detail gehen? Ich habe das noch nicht ganz durchschaut, was genau die Voraussetzungen sind, damit RAM wieder freigegeben wird.
Hier scheint es so, als würde der RAM Verbrauch des KVM-Prozesses auch wieder sinken (wenn ich mit htop auf die RES Spalte gucke). Teils aber auch nicht.

Ballooning kann den RAM wieder freigeben, ist meist aber keine Option, da Ballooning sich ja nicht dafür interessiert, ob das GastOS den RAM braucht oder nicht. Es nimmt sich den einfach und das GastOS muss zur Not Prozesse killen. Da darf man dann den "Min RAM" nicht unter das setzen, was das GastOS zu Peak-Zeiten immer mindestens braucht. Würde dann aber auch heißen, PVE könnte den RAM Verbrauch des KVM-Prozess nie unter den Wert von "Min RAM" senken, selbst wenn das GastOS den RAM inzwischen nicht mehr benutzt (auch nicht für Caching)?

Oft wurde auch von RAM Hotplugging gesprochen. In wie weit ist RAM Hotplugging nötig, damit RAM auch wieder gesenkt werden kann?

Und hat es überhaupt einen Vorteil bezüglich RAM-Verwaltung, wenn man Ballooning für eine VM aktiviert, wenn man dann aber "Min RAM" auf dem selben Wert wie "Max RAM" lässt?
 
@Dunuin vielen Dank. Qemu Guest Agent ist installiert. Alle Treiber vorhanden. Windows selbst zeigt im Ressourcen Manager eine Speicherrauslastung von 3,5GB an.
Den musst du aber auch richtig interpretieren. Hier mal als Beispiel an meinem Win11:
1679912843199.png
Windows sagt 12,5 von 32GB GB sind "in Verwendung". Tatsächlich "frei" sind aber nur 13,4GB. Benutzen tut Win also 18,6GB, da auf die 12,5GB noch die 6,1GB kommen, die für Caching benutzt werden.
 
Last edited:
Oft wurde auch von RAM Hotplugging gesprochen. In wie weit ist RAM Hotplugging nötig, damit RAM auch wieder gesenkt werden kann?

memory hotplug ist nochmal was anderes - tatsaechlich zur laufzeit den der VM zugewiesenen RAM (quasi in form von "virtuellen RAM-sticks") zu aendern. muss das gast betriebssystem auch koennen, genauso wie andere hotplug features. hier wird gerade in PVE einiges umgebaut um dieses feature flexibler zu machen :)

Und hat es überhaupt einen Vorteil bezüglich RAM-Verwaltung, wenn man Ballooning für eine VM aktiviert, wenn man dann aber "Min RAM" auf dem selben Wert wie "Max RAM" lässt?
das hat nur den vorteil dass dann ueber das "ballooning" interface die RAM auslastung ausgelesen werden kann, was bessere werte liefert als ohne.

https://pve.proxmox.com/pve-docs/chapter-qm.html#qm_memory

Even when using a fixed memory size, the ballooning device gets added to the VM, because it delivers useful information such as how much memory the guest really uses.

die rueckgabe von memory vom qemu prozess ans systems ist sehr komplex (und der memory verbrauch des qemu prozess besteht ja nicht nur aus dem gast-RAM, fluktuationen koennen auch aus anderen bereichen stammen).
 
  • Like
Reactions: Dunuin
und wie kann ich die Balloon Treiber korrekt zuweisen? Der Ursprungsbeitrag ist irgendwie weg...

Ich wollte noch mal erwähnen, dass in der VM Übersicht der RAM korrekt angezeigt wird.

Im Gesamtknoten wird zuviel angezeigt, nicht dass wir aneinander vorbeireden :)
 
Last edited:
sh verlinkte doku ;)

ich weiß nicht genau, was du mit "Gesamtknoten" meinst?
 
und wie kann ich die Balloon Treiber korrekt zuweisen? Der Ursprungsbeitrag ist irgendwie weg...

Ich wollte noch mal erwähnen, dass in der VM Übersicht der RAM korrekt angezeigt wird.

Im Gesamtknoten wird zuviel angezeigt, nicht dass wir aneinander vorbeireden :)
Vermutlich meinst du den RAM Verbrauch pro PVE Node.
Bei mir sieht das so aus:1679988695490.png
Wenn ich den angezeigten RAM Verbrauch der VMs zusammenrechne, habe ich nur 13,6 GiB verbraucht.
Nur der Host braucht etwas RAM, ZFS braucht etwas und bei mir kommen die Ceph Deamons auch hinzu.
Und zum Schluss fehlen immer noch ein paar GB, die sind in der Windows VM als Cache belegt.
Wenn du dir deinen Taschenrechner schnappst, den Verbrauch in den VMs incl. Cache addierst und dann die Dienste auf dem Host hinzurechnest, sollte genau der Verbrauch wie in der Anzeige rauskommen.
 
Hallo Falk, ja genau den mein ich. Hab den Taschenrechner ausgepackt. Siehe Bild:

Auf der Windows Maschine liegt der RAM inkl. Cache bei knapp 3,3GB
In der Node werden 19GB mehr Auslastung gezeigt. ARC ZFS ist auf 6GB eingestellt.
 

Attachments

  • RAM.png
    RAM.png
    25.6 KB · Views: 12
  • proxmox.png
    proxmox.png
    25.5 KB · Views: 12
Hallo Falk, ja genau den mein ich. Hab den Taschenrechner ausgepackt. Siehe Bild:

Auf der Windows Maschine liegt der RAM inkl. Cache bei knapp 3,3GB
In der Node werden 19GB mehr Auslastung gezeigt. ARC ZFS ist auf 6GB eingestellt.
Hi, mit
Code:
ps -o pid,user,%mem,command ax | sort -b -k3 -r
bekommst du den Verbrauch nur in % ausgeworfen, aber du siehst schon mal welcher Prozess auf deinem Host viel RAM verbraucht.
 
Hängt davon ab wie du "tatsächliche Auslastung" definierst. Wenn du deinem Win 10GB RAM zuteilst, dann wird Win auch immer versuchen die vollen 10GB zu verbraten. Wenn es den RAM nicht für Anwendungen/Dienste braucht, dann wird es den RAM für Caching verprassen. Caching ist aber auch benutzer physischer RAM, der tatsächlich nicht leer ist. Das spiegelt dann auch die Node Übersicht von PVE wieder, da es den tatsächlich verwendeten physichen RAM anzeigt.
PVE gibt der VM nur den RAM, den sie auch wirklich nutzt. Es werden da also nicht sofort die vollen 10GB vergeben. Ausnahme ist wenn du PCI passthrough benutzt. Da würden dann wegen DMA die vollen 10GB direkt vergeben werden und die VM wird immer die vollen 10GB zugeteilt haben. Ballooning und KSM klappt dann mit PCI Passthrough ebenfalls nicht.

Was deine Win VM als RAM-Auslastung im WebUI anzeigt hängt davon ab, ob du den QEMU Guest Agent installier hast oder nicht.
Hast du den installiert und aktiviert, dann wird PVE im webUI das anzeigen, was es von Windows zurückgemeldet bekommt und dann wird für Caching benutzer RAM "fälschlicherweise" als freier RAM angezeigt. Das webUI sollte dann das wiederspiegeln, was du auch in Windows siehst.
Nutzt du keinen QEMU Guest Agent fällt PVE auf den RAM-Verbrauch des KVM-Prozesses zurück, der dein Win virtualisiert. Dann zeigt das webUI für die VM den tatsächlichen verbrauchten RAM der VM (wo für Caching benutzer RAM dann als benutzt und nicht als frei zählt).
Danke für die Erklärung. Jetzt verstehe ich, warum meine RAM-Auslastung als so hoch angezeigt wird.
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!