Game Server Sizing: Where CPU, RAM and NVMe Run Out at 50, 100 and 200 Players

A game server runs out of a single resource before the others, and the identity of that resource changes with player count. At 20 concurrent players a €60 VPS with four shared vCPUs and 8 GB of RAM is comfortable. At 200 players the same workload needs a 4.5 GHz-class core that is never stolen, 24–32 GB of resident memory and an NVMe device that keeps write latency under 1 ms during autosaves. This article maps where each budget closes first, using measured data from survival, sandbox and source-engine titles, so sizing decisions rest on numbers rather than the “recommended” column of a store page.

The Four Budgets That Decide Player Capacity

Every game server consumes four budgets simultaneously: single-thread CPU time per tick, resident memory, storage write latency during saves, and outbound bandwidth. Whichever budget is smallest in relative terms limits the slot count. Widening one budget without widening the others simply moves the bottleneck — doubling RAM on a CPU-bound server produces a longer uptime with identical tick spikes.

BudgetUnit of consumptionTypical close-out pointSymptom when exhausted
Single-thread CPUms of tick budget100–170 players (FPS/sandbox)Tick rate drops, rubber-banding
Resident memoryGB per 10 players40–90 players on modded worldsOOM kill or heavy GC pauses
NVMe write latencyms at queue depth 1Save cycles above 2 GBFreeze spikes every autosave
Outbound uplinkMbps per player80–120 players at 1 GbpsClient packet loss, lag spikes
Rule-of-thumb thresholds for 2026 dedicated hardware

CPU: The Tick Loop Is Single-Threaded

At a 60 Hz tick rate the loop has 16.6 ms per tick. Entity replication is the dominant cost: budget roughly 0.06–0.12 ms per connected player once per-client visibility filtering and snapshot delta encoding are included. At 0.08 ms, 140 players consume 11.2 ms, leaving 5.4 ms for physics, AI and script execution. That margin disappears at 170 players, and the tick rate does not crash — it slides to 34–40 Hz and clients render the deficit as stutter.

Core choice matters more than core count. A Ryzen 7 7700 at 5.3 GHz boost will hold a 100-player sandbox world that an older 16-core Xeon Silver 4310 cannot, because the Xeon settles near 2.9 GHz under sustained load. Practical ranking for 2026 game nodes: Ryzen 9 7950X (5.7 GHz boost), Core i9-14900K, Ryzen 7 7700, then EPYC 4004 series at 4.5 GHz. When core count is the dominant requirement — many instances per box — prefer EPYC 9354P class parts and accept the lower clock, then cap each instance to 60 slots to stay inside the budget.

Virtualization adds a second variable: CPU steal. Shared plans with a 3:1 vCPU oversubscription show steal spikes of 4–15% exactly when a world save or mod scan runs. Anything above 64 slots needs committed cores with no ballooning, which is the difference between a dedicated server with published clocks and committed cores and a nominally identical VPS plan.

Memory: Where the Real Multiplier Sits

Vanilla Minecraft with 10 players sits near 2.5 GB resident. A 200-mod Forge pack with the same population sits at 11–14 GB, and memory climbs another 1.2–1.8 GB per additional 20 players because chunk and entity caches grow. Palworld, Valheim and Enshrouded follow similar curves: 4 GB baseline, plus roughly 30–60 MB per player, plus a fixed per-mod allocation.

  • Vanilla survival: 4 GB for up to 30 players, 8 GB for up to 60.
  • Modded (Forge/NeoForge 200+ mods): 12 GB for 20 players, 20 GB for 50.
  • Palworld dedicated: 8 GB for 8 players, 16 GB for 32.
  • Rust with 150-slot pop: 16–24 GB depending on entity count after wipe.
  • ARK ASA cluster node: 12–16 GB per map plus 2–4 GB for the transfer data cache.

Memory speed is not a tuning detail either. DDR5-5600 in dual channel delivers roughly 85 GB/s; DDR4-2666 in quad channel delivers 55 GB/s. The gap shows up as a 6–11% improvement in tick stability on large AI populations, because pathfinding iterations and entity transforms are memory-latency bound.

Storage: Save Cycles Are the Hidden Spike

Sector writes are the metric that matters, not sequential throughput. A 3 GB world save written in 2 MB chunks needs around 1,500 sequential operations, which any SATA SSD handles. Concurrent autosaves across four instances plus log flush produce thousands of random 4K writes, and that is where consumer NVMe drives fall to 300–800 µs of queue-depth-1 latency and produce visible freezes.

Player countWorld sizeRequired NVMe classSave freeze target
Up to 501–3 GBConsumer NVMe acceptable< 400 ms
50–1203–10 GBEnterprise NVMe with PLP< 250 ms
120–20010–25 GBEnterprise NVMe, RAID 1 recommended< 150 ms
Any, 4+ instances25 GB+Tiered drives or NVMe RAID 10< 100 ms per instance
Save-freeze targets for a 2 GB world at 30-second autosave intervals

Bandwidth: 1 Gbps Is Enough Until It Isn’t

Average per-player throughput is modest — 40–90 kbps for a survival title, 120–200 kbps for a 64-tick shooter with voice chat. The peak multiplies during mod downloads at login and during snapshot-heavy moments. Budget 2.5–3 Mbps per player at peak if the server hosts workshop content, which puts 150 players at 375–450 Mbps and comfortably inside a 1 Gbps port with 95th percentile billing.

Putting the Three Counts Together

A realistic 2026 configuration matrix, priced against current market rates on bare metal:

TargetCPURAMStorageUplinkMonthly cost
50 players, vanilla/modded survivalRyzen 5 3600 6c/12t16 GB512 GB NVMe1 Gbps / 10 TB$55–75
100 players, source-engine shooterRyzen 7 5800X32 GB1 TB NVMe1 Gbps unmetered$90–120
150 players, Rust or sandboxRyzen 9 5950X64 GB2 TB NVMe1 Gbps unmetered$140–190
200 players, clustered worldsRyzen 9 7950X64 GB ECC2x 2 TB NVMe RAID 12 x 1 Gbps bonded$200–280
Multi-instance host, 8 nodesEPYC 9354P 32c256 GB ECC4 TB NVMe10 Gbps$500–700
Typical EU/US pricing ranges for ready-to-deploy game nodes, 2026

Cost per slot lands between $0.90 and $1.60 on these configurations. A hosting plan that advertises 200 slots for $35 per month is either oversubscribing the CPU by a factor of six or counting slots that will never be online at once. Before committing, test the node rather than the sheet: run a 15-minute sustained single-thread load and check effective clock, then verify the write latency at queue depth 32. Providers who publish those figures can be compared side by side on the main site and shortlisted without a sales call.

For anything past 200 concurrent players, the answer stops being a bigger box. Sharding by region or by world, with a proxy layer holding persistent player state, spreads the CPU budget across nodes and keeps each tick loop inside its deadline. That architecture costs roughly 1.3–1.5 times a single large node but removes the single-thread ceiling that no amount of RAM will fix.

Leave a Reply