Hoher RAM Verbraucht durch VMs?

Oct 21, 2019
28
2
23
Germany
Hallo

Mein Server besitzt 16 GB RAM.
Ich habe hier einen PVE Server mit 2 VMs drauf. Debian mit Seafile und eine OPNsense.
Jede VM hat 512 MB für den RAM zugewiesen bekommen. Ballooning ist aktiviert. Mindestgröße entspricht jedoch ebenfalls 512 MB.

Trotz allem liegt meine RAM Auslastung bei etwas über 5 GB aktuell. Kann sich das jemand erklären?

Laut htop ist der Memory wie folgt belegt:

Mem15.5G
used4.30G
buffers526M
shared70.5M
cache10.1G
available10.8G

Fahre ich die Debian VM herunter lande ich bei
Mem15.5G
used1.90G
buffers526M
shared67.4M
cache10.1G
available13.1G

Fahre ich zusätzlich die OPNsense VM herunter:
Mem15.5G
used1.27G
buffers521M
shared67.4M
cache10.1G
available13.8G

Somit interpretiere ich dies, dass die beiden VMs etwa 3 GB statt 1 GB (512+512 MB) verbrauchen.

Weiß jemand warum dem so ist oder wo mein Denkfehler liegt?

Danke schonmals und Viele Grüße
 
Welches Dateisystem hast du denn für dein Proxmox gewählt? Und in der VM siehts normal aus, vermute ich?
 
Das ist was balooining macht. VMs können wärend der Laufzeit mehr Speicher holen wenn sie den benötigen.
 
Can you post the config files of the vms located in /etc/pve/qemu-server?
 
Klar.

Code:
root@proxmox2:~# cat /etc/pve/qemu-server/104.conf
agent: 1
boot: order=virtio0;ide2
cores: 2
ide2: none,media=cdrom
memory: 512
meta: creation-qemu=7.2.0,ctime=1678486196
name: SeaFile
net0: virtio=DA:C1:3F:68:C1:F0,bridge=vmbr020,firewall=1
numa: 0
ostype: l26
scsihw: virtio-scsi-single
smbios1: uuid=90de41ea-1065-41a1-9b3d-99e437c206e3
sockets: 1
startup: order=2
virtio0: local-lvm:vm-104-disk-0,discard=on,format=raw,iothread=1,size=4G
virtio1: local-lvm:vm-104-disk-1,discard=on,format=raw,iothread=1,size=512M
virtio2: local-lvm:vm-104-disk-2,discard=on,format=raw,iothread=1,size=1G
virtio3: local-lvm:vm-104-disk-3,discard=on,format=raw,iothread=1,size=2G
vmgenid: d3662fb7-560b-410a-b745-6de6c977a0c1

Code:
root@proxmox2:~# cat /etc/pve/qemu-server/192.conf
bios: ovmf
bootdisk: virtio0
cores: 2
cpu: host,flags=+aes
efidisk0: local-lvm:vm-192-disk-0,efitype=4m,format=raw,pre-enrolled-keys=1,size=528K
memory: 512
name: OPNsense192
net0: virtio=6E:A6:D1:7A:D1:33,bridge=vmbr010
net1: virtio=CE:25:1D:04:EE:36,bridge=vmbr192
net2: virtio=8E:4D:ED:F8:2D:AB,bridge=vmbr020
net3: virtio=32:14:5F:20:FF:72,bridge=vmbr666
net4: virtio=EE:29:57:A0:E0:B8,bridge=vmbr021
net5: virtio=F2:1B:A9:97:D5:5D,bridge=vmbr0
numa: 0
onboot: 1
ostype: l26
sata0: none,media=cdrom
scsihw: virtio-scsi-pci
serial0: socket
smbios1: uuid=79239aa4-b94f-4258-b6a7-5354fc2cc5e8
sockets: 1
startup: order=1
tpmstate0: local-lvm:vm-192-disk-1,size=4M,version=v2.0
virtio0: local-lvm:vm-192-disk-2,format=raw,size=10G
vmgenid: e020650b-fc26-4c62-ae2d-6129eecc8ff5
 
Hatte den Server für ein paar Tage aus.
Aktuell sieht es wie folgt aus:
Code:
root@proxmox2:~# free -h
              gesamt       benutzt     frei      gemns.  Puffer/Cache verfügbar
Speicher:       15Gi       2,6Gi        12Gi        67Mi       704Mi        12Gi
Swap:          4,0Gi          0B       4,0Gi

Laut Proxmox GUI verbaucht der Seafile Server ~382 MiB RAM und die OPNsense 180 MiB.

Im Normalfall läuft der RAM innerhalb kurzer Zeit hoch.
Melde mich sobald dies wieder der Fall sein wird.
 
Ich vermute der RAM der dir fehlt ist einfach was das System sonst so benötigt um eine VM zu betreibe (also z. B.: was qemu benötigt).

Läuft nur benutzt hoch oder geht auch verfügbar runter? Wenn Verfügbar hoch bleibt siehe hier
 
So nun sind inzwischen 4,64 GiB laut GUI belegt.

Die Free Befehle zeigen folgendes an:
Code:
root@proxmox2:~# free -h && free -m
              gesamt       benutzt     frei      gemns.  Puffer/Cache verfügbar
Speicher:       15Gi       4,4Gi       8,0Gi        67Mi       3,4Gi        11Gi
Swap:          4,0Gi          0B       4,0Gi
              gesamt       benutzt     frei      gemns.  Puffer/Cache verfügbar
Speicher:      15838        4556        8241          67        3460       11282
Swap:           4095           0        4095


Ich nun die Debian VM (512M RAM davon laut GUI 390-410 MB in Benutzung) heruntergefahren:
Code:
root@proxmox2:~# free -h && free -m
              gesamt       benutzt     frei      gemns.  Puffer/Cache verfügbar
Speicher:       15Gi       2,3Gi        10Gi        67Mi       3,4Gi        13Gi
Swap:          4,0Gi          0B       4,0Gi
              gesamt       benutzt     frei      gemns.  Puffer/Cache verfügbar
Speicher:      15838        2374       10422          67        3460       13463
Swap:           4095           0        4095

Und dann noch meine OPNsense (512 MB RAM davon laut GUI 146 MiB in Benutzung):
Code:
root@proxmox2:~# free -h && free -m
              gesamt       benutzt     frei      gemns.  Puffer/Cache verfügbar
Speicher:       15Gi       1,7Gi        10Gi        67Mi       3,4Gi        13Gi
Swap:          4,0Gi          0B       4,0Gi
              gesamt       benutzt     frei      gemns.  Puffer/Cache verfügbar
Speicher:      15838        1721       11080          67        3455       14117
Swap:           4095           0        4095



Ich habe nun auch mal die Grafik angeschaut für den Speicherverbrauch.
Hier bemerke ich, dass ab 2 Uhr Nachts der RAM auf einmal mehr benutzt wird. Um 2 Uhr läuft auch immer mein Backup auf einen ProxmoxBackupServer (anderer Server). Ab da bleibt der Arbeitsspeicher auch weiterhin "voll".
23_08_09-13_49_09__proxmox1_-_Proxmox_Virtual_Environment_-_Profil_1_.png

Habe nun die VMs wieder gestartet und ein Backup durchgeführt. Kurz nach dem Start des Backups rennt der RAM Verbrauch über 4,7 GByte.
Daher meine neue Vermutung: Liegt es irgendwie am Backup? Wird hier irgendwo der RAM nicht freigegeben oder so?
 
Naja der Arbeitsspeicher bleibt nicht wirklich voll. Es gibt einen Unterschied zwischen benutzt und puffert/Cache. Beim letzten würde Speicher nur weiterhin reserviert.
 
Ja das ist mir bewusst.

Warum habe ich aber auf einmal 2181 MB (13463 - 11282) mehr Speicher verfügbar wenn ich eine VM mit 512 MB Speicher (welche davon ~446MB Benutzt) herunterfahre?
Und wenn ich die andere VM herunterfahre welche 512 MB zugewiesen hat und davon ~146 MB verbraucht dann noch 654 MB Verfügbar bekomme?

Bei der Debian VM bedeutet dies, dass ich den 4fachen (!) RAM Verbrauch habe. Wenn ich nun noch mehr VMs (was geplant ist) erstelle, sagen wir einfach insgesamt 10 weitere mit jeweils 512 MB RAM dann bräuchte ich statt ca. 6 GB über 24 GB an RAM?

Dieses Beispiel welches ich aktuell habe, habe ich auch auf einem anderen Proxmox Server mit 13 VMs drauf.
Hier bekomme ich regelmäßig Out-of-Memory Kills.
Der Host hat 16 GB RAM.
Alle VMs zusammen haben 8960 MB (~9GB) RAM zugewiesen. Somit könnte sich Proxmox für alles andere im Hintergrund noch ~7 GB genehmigen. Aber dies reicht wohl nicht aus. Und nun ist die Frage warum dem so ist und wie und ob man dies optimieren könne.
 
Ist der verbrauch in der Vm oder außerhalb?

Du könntest dir den genauen Speicherverbrauch mit htop mal anschauen
 
Last edited:
  • Like
Reactions: CoolTux
Also der Verbrauch in der VM ist immer in Ordnung. Er ist auch nicht höher als das zugewiesene.

Der Verbrauch um den es mir geht, ist der Verbrauch den man sieht wenn man auf den Host geht:
Hier habe ich den "Produktiven" Host.
23_08_09-15_58_24__proxmox1_-_Proxmox_Virtual_Environment_und_1_weite.png

Zähle ich den RAM der (eingeschalteten) VMs zusammen:
Code:
root@proxmox1:/etc/pve/qemu-server# grep memory *
101.conf:memory: 512
103.conf:memory: 512
105.conf:memory: 512
107.conf:memory: 320
108.conf:memory: 320
109.conf:memory: 384
110.conf:memory: 1024
112.conf:memory: 256
114.conf:memory: 1024
116.conf:memory: 2048
191.conf:memory: 1024
Komme ich auf 7936 MB.

htop zeigt mir folgendes:
23_08_09-16_02_49__mRemoteNG_-_confCons.xml_-_proxmox1.png

Kann ich irgendwie in htop herausfinden oder herauslesen wie viel RAM von einem Prozess wirklich benutzt werden?

Vielleicht hilft das weiter?
Habe hier mal nach MEM% sortiert:
1691590197615.png
VM116 ist (da erst heute morgen gestartet und noch kein Backup der VM stattfand) bei <2048 MB.
Aber VM110 hat wohl 1982 MB in Benutzung obwohl diese nur 1024 MB zugewiesen hat.
VM101 ebenso, hat 1904MB in Benutzung obwohl nur 512 MB in der Konfiguration zugewiesen sind.
 
Code:
root@proxmox1:/etc/pve/qemu-server# cat 101.conf
agent: 1
bootdisk: virtio0
cores: 2
cpu: host
ide2: none,media=cdrom
memory: 512
name: OMV5
net0: virtio=D2:45:17:4E:E7:37,bridge=vmbr020
numa: 0
onboot: 1
ostype: l26
scsihw: virtio-scsi-pci
serial0: socket
smbios1: uuid=a3c34b44-a055-4d28-94ee-bf00e18699f4
sockets: 1
virtio0: local-lvm:vm-101-disk-0,discard=on,iothread=1,size=7G
virtio1: local-lvm:vm-101-disk-1,discard=on,iothread=1,size=512M
virtio2: local-lvm:vm-101-disk-2,discard=on,iothread=1,size=9G
virtio3: local-lvm:vm-101-disk-4,backup=0,discard=on,iothread=1,size=110G
virtio4: local-lvm:vm-101-disk-3,backup=0,discard=on,iothread=1,size=30G
vmgenid: d31e42a6-0876-4494-98bb-b40236134407
Code:
root@proxmox1:/etc/pve/qemu-server# cat 110.conf
agent: 1
bios: ovmf
boot: order=virtio0;ide2;net0
cores: 1
efidisk0: local-lvm:vm-110-disk-0,efitype=4m,format=raw,pre-enrolled-keys=1,size=528K
ide2: none,media=cdrom
memory: 1024
meta: creation-qemu=6.1.1,ctime=1647942136
name: UniFi
net0: virtio=C6:3B:8D:D8:63:1D,bridge=vmbr020
net1: virtio=8A:83:FE:3E:B4:CB,bridge=vmbr0
numa: 0
onboot: 1
ostype: l26
scsihw: virtio-scsi-pci
smbios1: uuid=f69aac45-df6c-40d5-9a01-f4a043863ddd
sockets: 1
virtio0: local-lvm:vm-110-disk-1,discard=on,format=raw,iothread=1,size=6G
virtio1: HDD-proxmox1-diskimage:110/vm-110-disk-0.qcow2,iothread=1,size=1G
vmgenid: 7ff7a7f3-864c-4a8a-afef-760338201884
 

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!