← Proxmox VE memory calculator

How the Proxmox VE calculator works

This page walks through how the Proxmox VE calculator turns your usage data into a VM's memory and ballooning minimum. Both start from the shared sizing model; this page covers what happens after that. Statements backed by the Proxmox documentation or source end with a Proxmox docs link to it. Choices the documentation doesn't make for us are explained and marked Assumption, which links to its row in the table of all of them.

01 Memory and minimum memory

  • Memory (memory) is the RAM online for the VM, in MiB, and the most it can have when the balloon device is used. It's at least 16 MiB and defaults to 512. Proxmox source
  • Minimum memory (balloon) is the target RAM for the VM in MiB; 0 turns the balloon driver off. Proxmox docs

With both equal, the VM gets exactly that much. With the minimum lower, Proxmox always keeps the minimum available and adds memory up to the maximum as the host allows. Proxmox docs That's the shared model's request and limit, so the minimum comes from the average and memory from the peak.

02 From usage to the two values

minimum memory = average × (1 + request margin)                      rounded up to a whole MiB
memory         = max(peak × (1 + limit margin), minimum memory, 16)   rounded up to a whole MiB

The margins come from the sensitivity, workload type and environment you choose; the sizing model explains them, and they are assumptions too.

Proxmox refuses a balloon value larger than the assigned memory, so when the peak is so close to the average that the peak-based memory falls below the minimum, memory is raised to it. Proxmox source

Worked example

Average 410 MiB, peak 630 MiB, generic workload, medium sensitivity, production:

minimum memory410 MiB × 1.30 = 533 MiB533 MiB
memory630 MiB × 1.30 = 819 MiB819 MiB

A steady cache, averaging 1000 MiB with a 1020 MiB peak, where the minimum decides memory:

minimum memory1000 MiB × 1.35 = 1350 MiB1350 MiB
memory1020 MiB × 1.30 = 1326 MiB, below the minimum1350 MiB

03 Auto-ballooning

  • While host RAM usage is below a target, 80% by default, Proxmox adds memory to the guest up to its maximum. When the host needs memory back, the guest's balloon driver gives it up, which can make the guest swap or, as a last resort, run its OOM killer. Proxmox docs
  • Linux distributions released after 2010 include the balloon driver. On Windows it has to be installed, can slow the guest down, and isn't recommended for critical systems. Leave about 1 GB of RAM for the host itself. Proxmox docs

So the minimum is what the VM can count on, and the memory above it is only there while the host has room. The calculator assumes ballooning is on; with it off, set both values to the memory result. Assumption

04 What the calculator writes

qm set <vmid> --memory 819 --balloon 533
  • qm set takes --memory and --balloon, both in MiB. Proxmox docs
  • In the web UI, the same values are Memory (MiB) and, under Advanced, Minimum memory (MiB) with Ballooning Device on. Proxmox source

05 Every warning, and why

Message aboutShown whenBasis
Memory raised to the minimum warning The peak-based memory came out below the minimum Proxmox refuses a balloon above memory. Proxmox source
Peak below average error The peak you entered is lower than the average Impossible with real samples; it usually means two different series. See the sizing model.

06 What to paste

node_memory_MemTotal_bytes{instance="vm1:9100"}
  - node_memory_MemAvailable_bytes{instance="vm1:9100"}
  • Measured inside the guest with node_exporter: total memory minus MemAvailable, the kernel's estimate of memory available for new applications without swapping. Kernel docs
  • With ballooning active, the host's view shows what Proxmox lent the VM rather than what it needed, so the calculator asks for the guest's own numbers. Assumption

The vSphere guide sizes a memory value and a reservation from the same guest-side measurement.

07 All assumptions in one place

Besides the margins of the shared sizing model:

Our default: a value we chose. Our reading: how we read documentation that isn't explicit. About your setup: something we take for granted about your data or cluster.

AssumptionKindWhyIf it doesn't hold
Ballooning is on ↩About your setupThe minimum only means something with the balloon driverWithout it the VM has the full memory all the time; set both values to the memory result.
Measure inside the guest ↩Our defaultThe host sees what it lent the VM, not what the VM neededHost-side numbers would size the VM to whatever ballooning gave it.

Values you can change

The calculator’s Advanced: margins and defaults section, closed by default, lets you replace these values when your setup differs. Each field’s “?” says how it moves the result; a value outside the range is used at its nearest end, and “Reset to defaults” puts them all back.

ValueDefaultRangeWhere the default comes from
Request marginfrom the profile0–200%MemoryLimit’s default, from sensitivity, workload type and environment (sizing model); sizes the minimum memory (balloon)
Limit marginfrom the profile0–200%MemoryLimit’s default, from sensitivity, workload type and environment (sizing model); sizes the memory

08 References

← Back to the Proxmox VE calculator