ARZENTIQ
IT & NETWORKING

VM & Container Capacity Planning

How many VMs or pods fit a node after reserve, headroom and overcommit, which resource binds, nodes needed with N + F spares, or what your nodes hold.

Usable CPU and memory per node, workloads per node by CPU, memory and pod limit, the binding resource, nodes needed plus spares, what your nodes hold after failures and the resulting utilisation.

Example: 16-CPU / 64 GB nodes with 10 % reserve and 20 % headroom hold 11 workloads of 1 CPU / 4 GB each; 100 workloads need 10 nodes, 11 to survive one failure, at 57 % utilisation.

v0.1.0 · last reviewed 21 September 2026
Loading the workspace…
BUILT TO BE UNDERSTOOD

Requests,
bin-packed onto nodes.

How usable capacity, workloads per node and node counts are derived, and what a scheduler does differently.

Usable node

A node cannot be filled to the brim: usable = capacity × (1 − system reserve) × (1 − headroom), the reserve being what the kubelet, hypervisor or OS keeps and the headroom what you leave for bursts. CPU can be overcommitted by a ratio (schedule more vCPU than cores); memory is not.

Per node and nodes needed

Workloads per node = the smallest of ⌊usable CPU ÷ CPU request⌋, ⌊usable memory ÷ memory request⌋ and any per-node limit — the resource that runs out first is the binding one, and the page shows what the other leaves idle. Nodes needed = ⌈workloads ÷ per node⌉ plus F spare nodes so that after F failures the survivors still hold everything (N + F). Given a node count instead, the page reports what it holds now and after F failures.

What is left out

This is arithmetic on requests, not on measured use. Real schedulers fragment (a node with room for 1.5 workloads takes one), honour affinity, taints and topology spread, and treat limits differently from requests; restarted workloads must also fit on the survivors one at a time. Reserve, headroom and overcommit are policy numbers you enter. Nothing leaves the browser; the same four anonymous usage counts as the rest of the site apply.

SOURCES

  • usable = capacity × (1 − reserve) × (1 − headroom) (CPU × overcommit); per node = min over resources of ⌊usable ÷ request⌋; nodes = ⌈workloads ÷ per node⌉ + F spares — bin-packing on requests

Last reviewed 21 September 2026. How results are checked: How we verify.