← All break/fix scenarios in Proxmox VE
Memory ballooning is causing VM performance to collapse
Reported symptoms
- ●VMs report much less memory than they were allocated
- ●Inside the guest, free RAM is consistently low or near zero
- ●Applications show high swap activity
- ●Host memory pressure shows high usage in pve-top
Evidence
- · qm config <vmid> shows balloon: <low-value> (e.g., 512)
- · qm guest exec <vmid> "free -m" shows available memory below the configured balloon
- · pve-top shows host memory usage near 100%
- · cat /proc/meminfo on host shows low MemAvailable
Diagnosis and resolutionclick to reveal
Root cause
Memory overcommit is too aggressive. With ballooning enabled, PVE asks VMs to return unused memory to the host. If too many VMs are asking for memory at once, the host runs out and starts pressuring VMs to release more, sometimes below their actual needs.
Remediation
1. Check host memory pressure: `pve-top` (or `htop`) — see if host is at 100% memory 2. Identify the VMs that have ballooned the most: `pvesh get /cluster/resources --type vm | jq '.[] | select(.ballooninfo) | {vmid, balloon: .ballooninfo}'` 3. Options, in order of preference: a. Disable ballooning on memory-sensitive VMs: `qm set <vmid> --balloon 0` b. Increase the balloon minimum to prevent extreme pressure: `qm set <vmid> --balloon 2048` (set to 2 GB minimum) c. Add more memory to the host (if hardware budget allows) d. Move some VMs to other nodes 4. If the host has spare RAM but the allocator is being too aggressive, lower the overcommit ratio: `pvesh set /cluster/options --memory-ht-unlimited 0`
Verification
- VMs report their configured memory inside the guest - Free RAM inside the guest is reasonable (> 10% of total) - Swap activity inside the guest is near zero - Host memory usage is below 90%
Prevention
- Size VM memory based on actual workload, not hope - Use `--balloon 0` for memory-sensitive workloads (databases) - Monitor host memory pressure (alert > 85%) - Plan capacity with a 30% headroom for safety