Size Nova compute capacity using the cpu and ram allocation ratios, reserved host memory and a chosen flavor.
The Nova scheduler's core filters multiply each node's physical resources by the allocation ratios to produce a schedulable pool, after subtracting reserved_host_memory_mb from RAM. Instance count is then the pool divided by the flavor, taken as the smaller of the CPU and memory answers — and because placement is per-node, a fragmented cluster will hit the wall before the arithmetic says so. Nova ships with cpu_allocation_ratio 16.0 and ram_allocation_ratio 1.5, which will happily oversubscribe a production cloud into swap; setting these deliberately is one of the highest-impact configuration decisions in an OpenStack deployment.
OpenStack Nova Capacity
schedulable vCPUs = nodes × cores × cpu_allocation_ratio; schedulable RAM = nodes × (node RAM − reserved_host_memory) × ram_allocation_ratio; instances is the lower of each divided by the flavor.
schedulable vCPUs = nodes × cores × cpu_allocation_ratio; schedulable RAM = nodes × (node RAM − reserved_host_memory) × ram_allocation_ratio; instances is the lower of each divided by the flavor. The Nova scheduler's core filters multiply each node's physical resources by the allocation ratios to produce a schedulable pool, after subtracting reserved_host_memory_mb from RAM. Instance count is then the pool divided by the flavor, taken as the smaller of the CPU and memory answers — and because placement is per-node, a fragmented cluster will hit the wall before the arithmetic says so.
Nova ships with cpu_allocation_ratio 16.0 and ram_allocation_ratio 1.5, which will happily oversubscribe a production cloud into swap; setting these deliberately is one of the highest-impact configuration decisions in an OpenStack deployment.
This calculator takes 8 inputs: Compute nodes, Physical cores per node, cpu_allocation_ratio, Memory per node, ram_allocation_ratio, reserved_host_memory_mb, vCPUs in the flavor, Memory in the flavor. The pre-filled defaults are a realistic starting point — replace them with figures from your own environment for a result you can act on.
Nova places instances on whole nodes, so capacity spread thinly across many nodes may not accommodate a large flavor even when the cluster total looks sufficient. This fragmentation effect is why operators keep a per-node headroom target as well as a cluster one.