1 Homelab Sizing
Eric Hendricks edited this page 2026-08-19 04:49:39 +00:00

Homelab Sizing and Capacity

Purpose: the current Proxmox host (itg) has roughly six months left before the new homelab is funded. This doc tracks what the fleet actually allocates versus what it actually uses, so the next box is specced from data instead of guesses. The allocation numbers are exact; the usage numbers are a single snapshot taken 2026-08-19 and will be replaced with peak and percentile data once monitoring (issue #2) lands. That distinction matters: these workloads are bursty (Plex transcodes, CI builds, game sessions), so a quiet snapshot understates real need. Treat the usage column as a floor, not a ceiling.

The current host (itg)

  • CPU: 2x Intel Xeon E5-2690 v2, 20 cores / 40 threads total @ 3.0 GHz. Old, power-hungry, but plenty of threads.
  • RAM: 135 GB.
  • Proxmox OS disk (local): 74 GB.

Storage pools:

Pool Type Total Used Free Role
slow-media zfspool 35.8 TB 33.2 TB (93%) 2.6 TB the media library (NFS export)
vg-fast lvm 4.26 TB full - backs the fast-vmstore thin pool
fast-vmstore lvmthin 1.65 TB 1.04 TB (63%) 606 GB VM and app disks
bootc dir 2.61 TB 85 GB 2.52 TB bootc image store
local-lvm lvmthin 151 GB 27 GB 125 GB misc
local dir 74 GB 11 GB 63 GB Proxmox OS

The one pool under real pressure is slow-media at 93% full. Media growth, not VM sprawl, is what forces the storage decision on the next box.

Per-VM allocation vs live usage (snapshot 2026-08-19)

VMID Host vCPU RAM alloc RAM used (snap) OS disk Data disks Notes
199 itg-net-opn 2 6 GB 5.9 GB (99%) 32 G - OPNsense pet; genuinely uses its RAM
201 itg-prd-bast 2 4 GB 0.5 GB (12%) 32 G - bastion
202 itg-prd-arr 4 12 GB 2.7 GB (23%) 32 G 100 G + 1000 G 1 TB SAB scratch
203 itg-prd-mtrx 4 8 GB 2.0 GB (24%) 32 G 200 G Synapse workers
204 itg-prd-game 12 32 GB 5.6 GB (18%) 32 G 100 G bursts hard during sessions
205 itg-prd-plex 8 16 GB 1.1 GB (7%) 32 G 100 G RTX 2070 passthrough; bursts on transcode
206 itg-prd-book 4 8 GB 3.5 GB (44%) 34 G 100 G
207 itg-prd-web 2 4 GB 0.8 GB (19%) 32 G - SWAG
208 itg-prd-forge 2 4 GB 1.3 GB (31%) 34 G 100 G the fleet SPOF
209 itg-prd-run01 8 16 GB 3.9 GB (25%) 32 G 100 G CI runner; bursts on builds
210 itg-prd-run02 8 16 GB 2.3 GB (15%) 32 G 100 G CI runner
211 itg-prd-tail 2 4 GB 0.6 GB (15%) 32 G - Tailscale subnet router
301 itg-dev-bootc 2 4 GB 0.5 GB (14%) 34 G - dev box

Stopped and not counted: template-fedora (100), template-stream09 (103), coulson (200, being decommissioned).

The totals, and the real constraint

  • vCPU: 60 allocated across running VMs against 40 physical threads, so 1.5x overcommit on paper. Live CPU load is low and bursty; nothing is CPU-starved at rest, but runners and transcodes spike.
  • RAM: roughly 134 GB allocated against 135 GB physical, essentially 100% committed on paper. But live usage totals only about 31 GB, around 23%. The per-VM allocations are far larger than the workloads actually touch (game reserves 32 GB and uses 5.6; plex reserves 16 and uses 1.1).

The honest read: this box is RAM over-allocated, not RAM-starved. The next homelab should be sized on measured peaks plus headroom, not on these inflated reservations. Measuring those peaks is exactly what issue #2 is for.

What's coming (new demand)

  • itg-prd-mktg (in progress): M tier, roughly +4 vCPU / +8 GB / +100 G, for Postiz and Cal.com.
  • From the board: Immich (#27, wants a GPU for ML and large storage for photos), self-hosted AI (#33, wants a GPU and real RAM for models), Paperless (#28), the monitoring stack itself (#2), RSS (#30), and more.
  • GPU is the interesting axis. Plex already owns the RTX 2070 by passthrough. Immich ML and local LLMs both want GPU too, so the next box likely needs more GPU capacity or deliberate sharing, and if LLMs get serious the constraint becomes VRAM.

Sizing the next box (working notes, refine with monitoring data)

  • RAM: real usage is ~31 GB idle today. With bursts plus the photo and AI workloads coming, 128 GB is a comfortable target and 256 GB if local LLMs become a real habit. Do not anchor on the current 134 GB allocation; anchor on measured peaks plus the new services.
  • CPU: 40 threads is more than enough at current load. A modern single-socket 16 to 24 core part would match or beat the dual E5-2690 v2 at a fraction of the power and heat, which matters in a COLO.
  • GPU: at least one modern card with generous VRAM to cover Plex transcode, Immich ML, and local inference. VRAM is the ceiling if AI matters.
  • Storage: media is the driver. slow-media is 33 TB used and climbing toward its 35.8 TB pool; plan the next media pool well past 40 TB, plus fast NVMe for VM and app data (fast-vmstore is 63% used and will keep filling as services land).
  • Power and noise: the dual E5-2690 v2 is a space heater. A modern platform cuts idle draw substantially, a real operating-cost win in a colo.

To fill in once monitoring lands (#2)

Replace the single-snapshot usage column above with peak and 95th-percentile CPU and RAM per VM from Prometheus / VictoriaMetrics over a representative window (at least a full week that includes a game session, a CI-heavy day, and a Plex transcode). That is the data that turns "sized on a guess" into "sized on evidence."