[SOLVED] Ramverbrauch bleibt konstant.

TheCurano

Member
Nov 27, 2020
33
1
13
Hardware:
- 64 Ram DDR4 (16GB x 4)
- AMD Ryzen 5 3600
- 2 x Samsung SSD (SOFT RAID 1)

Problem:
Wenn ich eine VM starte, ist der Ramverbrauch auf dieser unterschiedlich. Manchmal steigt er, manchmal fällt er, ganz normal.
Der Ramverbrauch in der VM wie auch im Panel wird korrekt angezeigt,
jedoch wenn man auf das Hostsystem geht (HTOP etc.) sinkt der Ramverbauch nicht. NIE, keinen MB.

Versuche es zu lösen:
- Neuinstallation
- Ballooning Device
- Clear Cache (Command: free && sync && echo 3 > /proc/sys/vm/drop_caches && free)
 
Beides, der Verbrauch des Hostsystems kann runter gehen. Nur nicht der der VM im Hostsystem.

Zusatz: Beim Neustart der VM wird der Verbrauch resetet.
 
Hi, was den Guest Verbrauch angeht, schaue ich niemals in HTOP. Was die Hostauslastung angeht, passt das und wenn ich in der GUI die VMs anschaue auch.
Würde ich die ganzen Werte auf HTOP ernst nehmen, dann würden meine VMs und Ceph den RAM zu 110% füllen obwohl der Host nur zu 50% ausgelastet ist.
Es gibt bestimmt jemand, der dir erklären kann weshalb die ganzen Werte im HTOP nicht passen. Ich nehme das einfach hin, solange die GUI valide Werte anzeigt.
 
Hey, alles klar, danke. Problem ist nur, genau die gleichen Werte hab ich im Panel. Kann ich sonst irgendwie herausfinden wie die korrekten Werte sind?
 
Sollten Debian 10 VMs nicht spätestens nach dem Befehl etwas freigeben? Bei einem Freund ist das so, nur irgendwie bei meinem Hostsystem nicht.
 
Last edited:
Okay, vielen Dank. Könnte der Fehler irgendwie an der Virtualisierung liegen? Es scheint in der VM inkl Cache runter zu gehen. Nur nicht auf dem Hostsystem.
 
Wenn ich es richtig verstehe gibt KVM keinen RAM von VMs wieder frei, außer man startet die VM neu oder nutzt Ballooning (was der VM langsam den RAM raubt, dass aber auch nur, wenn sowohl ein "Min RAM" gesetzt ist was kleiner als der "Max RAM" der VM ist, also auch die RAM-Auslastung des Hosts die 80% überschreitet). Und nutzt du PCI PAssthrough mit der VM ist wegen DMA kein Ballooning möglich und die VM belegt immer den kompletten RAM.
 
PCI(e) Geräte müssen wegen einer Technik namens Direct Memory Access (DMA) jederzeit auf den kompletten RAM zugreifen können. so kann sich eine Grafikkarte z.B. direkt Daten aus dem RAM holen, ohne vorher den Umweg über das Betriebssystem machen zu müssen, was alles ausbremsen würde. Und weil daher immer der komplette RAM der VM permanent verfügbar sein muss, selbst wenn die VM den RAM garnicht aktiv belegt, verbraucht die VM dann immer den kompletten RAM, den du der VM zuteilst.
 
Okay, alles klar. Vielen Dank für diese genaue Beschreibung. Gibt es eine möglich den Ram Wert wieder zurückzusetzen?
 
Du kannst Ballooning benutzen, dann holt sich der Host den RAM von der VM zurück. Ballooning schert sich aber nicht darum, ob eine VM den RAM dringend braucht oder nicht. Hast du für eine VM 8GB Max RAM und 4 GB Min RAM eingestellt und die VM nutzt gerade 5GB für system/user Prozesse und 3GB für Caching, dann wird Ballooning langsam den RAM rauben bis die VM runter auf 4GB ist. Erst wird die VM dann den 3GB Cache leeren, aber nachdem der geleert ist hört Ballooning nicht auf und raubt noch ein weiteres GB RAM. Die VM nutzt dann also 1GB zu viel RAM, hat aber auch keine Caches mehr die verworfen werden können, also muss die VM so lange Prozesse killen (weil OOM), bis da 1GB frei geworden sind.

Fazit: RAM Overprovisioning klappt nicht wirklich. Man sollten den Gästen nicht mehr RAM zuordnen als der Host auch wirklich zur Verfügung hat. Und damit die Gäste nicht unnötig RAM durch Caching verschwenden, am besten den Gästen nur gerade so viel RAM zuteilen, wie sie gerade so brauchen, um laufen zu können.
 
Last edited:
Okay, vielen Dank. Das werde ich mir zu herzen nehmen. Warum tritt dieses Phänomen nur bei wenigen (inkl. mir) auf und nicht bei jedem Hoster?
 
Ist bei mir nicht anders mit dem:
Wenn ich eine VM starte, ist der Ramverbrauch auf dieser unterschiedlich. Manchmal steigt er, manchmal fällt er, ganz normal.
Der Ramverbrauch in der VM wie auch im Panel wird korrekt angezeigt,
jedoch wenn man auf das Hostsystem geht (HTOP etc.) sinkt der Ramverbauch nicht. NIE, keinen MB.
VMs laufen ja über KVM und der KVM Prozess startet mit einem kleinen Memoryfootprint welcher dem Gastsystem entspricht. KVM scheint aber nie RAM freizugeben. Der KVM Prozess kann also immer nur wachsen, wenn der Gast mehr RAM verwendet, aber nie wieder schrumpfen, wenn der Gast den RAM nicht mehr benötigt.

Gibst du deinen Gästen nicht mehr RAM als dein Server tatsächlich besitzt, dann ist es ja egal, wenn da der RAM nach einiger Laufzeit einfach immer voll belegt ist. Stören tut man sich daran dann nur, wenn man RAM-Overprovisioning haben will. Mehr als 56 GB oder 52 GiB RAM würde ich den Gästen in der Summe bei deiner Hardware nicht zuteilen (evtl 5-10GB mehr, je nachdem wieviel RAM dir KSM dedupliziert). Gibt du deinen Gästen in der Summe mehr RAM, dann betreibst du Overprovisioning und läufst Gefahr, dass dir da der OOM-Killer VMs killt.

Und wenn eine VM nicht alles an RAM für System/User Prozesse verwendet, dann ist der RAM ja nicht direkt verschwendet. Dann kann die VM den RAM immer noch zum Cachen benutzen was dann die Performance erhöht.
 
Last edited:
  • Like
Reactions: TheCurano

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!