Skip to main content

The host, and the numbers

The whole lab runs on a single Proxmox host with, roughly:

  • 64 CPU threads
  • ~125 GiB usable RAM
  • A few hundred GB of fast local disk for the OS, plus a multi-TB ZFS pool for VM disks

CPU stays comfortable — 64 threads is far more than the VMs will ever simultaneously peg — and the ZFS pool started with terabytes to spare. (Disk has since grown tight as the database and storage VMs claimed their space, so the pool is now a number worth watching too — more on that in the lessons — but it was never the binding constraint.) So the planning is almost entirely a RAM exercise.

There's one important wrinkle that shapes everything: there is no swap on the host. That's a deliberate choice for a virtualization host — you don't want the hypervisor swapping VM memory to disk, because the performance cliff is brutal and unpredictable. But it also means there's no safety cushion: if committed memory exceeds physical memory and the VMs actually use it, the kernel's OOM killer starts shooting processes. So the rule becomes simple and strict:

Committed VM memory + host overhead must stay under physical RAM. There is no margin to borrow from.

The rest of this book is how that rule played out as the platform grew.