Player capacity is not a single number you can print on a sales page. It is the result of four hard limits: CPU clock on the simulation thread, RAM per player, world/entity count, and uplink packet rate. This guide gives you measured benchmarks and a sizing table so you can predict where a node will buckle before players complain.
The Four Limits That Decide Capacity
Most operators size by player count alone and then wonder why a 64-slot server stutters at 30 players. The bottleneck is almost always one of these, in order of frequency:
- Single-thread clock — the tick loop is one thread. At 5.0 GHz you get roughly 15–25% more simulated entities than at 4.2 GHz headroom-limited parts.
- RAM per player — wildly game dependent, from 30 MB (small survival) to 400 MB+ (heavy modpacks with dynamic entities).
- World/entity count — 5,000 loose entities cost more than 20 connected players.
- Uplink packet rate — tick rate multiplied by bytes/player, capped by your NIC and the 95th-percentile commit.
Measured Player Capacity by Game
| Game | RAM / player | Practical max per node | Binding limit |
|---|---|---|---|
| Minecraft (vanilla, Paper) | 60–90 MB | 120–200 | Single-thread TPS |
| Minecraft (heavy modpack) | 250–450 MB | 40–70 | RAM + GC pauses |
| Rust | 120–200 MB | 200–300 | Entity count + CPU |
| ARK: Survival Ascended | 800 MB–1.5 GB | 70–100 | RAM |
| Valheim | 150–250 MB | 60–100 | World instance memory |
| Counter-Strike 2 (128-tick) | 40–60 MB | 24–40 | Tick CPU + network |
How to Convert This Into a Hardware Decision
Take your target player count, multiply by RAM per player, then add 25% headroom for world saves, chunk caching, and OS page cache. For a 100-player Rust node: 100 × 160 MB = 16 GB, plus 25% = 20 GB, rounded to 32 GB DIMMs for channel balance. Then confirm the CPU: Rust at 100 players wants roughly 3.5–4.0 GHz on two to three high-clock cores, not sixteen slow ones. If you are unsure which platform fits, our dedicated server comparison breaks down per-core cost versus per-player cost so you are not overpaying for core count you cannot use.
Step-by-Step Capacity Validation
- Deploy with the RAM figure from the table above, plus 25%.
- Run a synthetic load test at 50% and 80% of target player count.
- Watch per-thread CPU: if one core is pinned above 85% while others idle, you are clock-bound.
- Watch GC or entity-tick time: sustained growth means RAM pressure.
- Add players in 10% increments until tick time degrades more than 15%.
- Record the resulting peak and keep 20% of the machine free for spikes and wipes.
Network Capacity Is the Forgotten Ceiling
At 30 Hz with 60 bytes per player per tick, 100 players generate about 5.4 MB/s outbound — trivial for 1 Gbps. But ARK modded can push 200+ bytes/player/tick at 60 Hz, tripling that. Always check the 95th-percentile commit on your plan, not the headline burst speed. Our high-traffic hosting configurations include unmetered options for exactly this case.
CPU Clock vs Core Count: The Capacity Multiplier
Minecraft, Rust, and CS2 all run their simulation on one to three primary threads. A 24-core 2.4 GHz server will not hold 200 players if a single thread saturates first. In practice, every 100 MHz of sustained boost clock buys roughly 2–3% additional simulated capacity. That means a 5.0 GHz part handles about 20% more entities than a 4.3 GHz part at the same core count — a bigger real-world difference than doubling cores.
| CPU class | Boost clock | Relative capacity | Best use |
|---|---|---|---|
| 8c @ 5.0 GHz | 5.0 GHz | 1.20x | Single heavy world |
| 16c @ 4.5 GHz | 4.5 GHz | 1.10x | Two worlds + web |
| 24c @ 3.6 GHz | 3.6 GHz | 0.90x | Many light instances |
Worked Example: A 200-Player Rust Node
- Target: 200 players at 160 MB each = 32 GB, plus 25% = 40 GB. Choose 64 GB for channel balance.
- CPU: two to three threads at high clock; pick an 8–16 core part at 4.5 GHz+.
- Storage: NVMe for world saves; Rust writes 200–400 GB/day on active servers.
- Network: 30 Hz × 200 players × ~90 bytes = 16.8 MB/s; ensure your commit covers it.
- Validate: load-test to 160 players, confirm no core exceeds 85% and save latency stays under 40 ms.
Signals That You Are Clock-Bound, Not RAM-Bound
- One CPU core pinned at 90%+ while RAM usage sits below 60%.
- Tick time rises steadily with player count but GC pauses stay flat.
- Adding RAM changes nothing; adding MHz changes everything.
- Entity-heavy areas stutter only when many players cluster together.
Planning for Peak, Not Average
Capacity tables describe steady state. Real servers see peaks during events, wipes, and updates, when 1.5x the normal player count logs in at once. Size for 130–150% of your busiest historical hour, and keep an overflow node ready to absorb spillover. That headroom is the difference between a lag spike and a lost community. If you would rather buy the headroom up front, our high-traffic hosting configurations are provisioned with exactly this margin.
Monitoring Capacity in Production
A capacity plan is only useful if you can see it drifting. Track four metrics continuously and alert on trend, not on incident. First, per-thread CPU saturation — if your busiest thread has averaged above 80% for fifteen minutes, you are within one event of dropped ticks. Second, tick time delta against a 50 ms baseline; a sustained rise above 55 ms means the simulation is falling behind real time. Third, save latency from the game’s own logging; anything above 40 ms during peak indicates storage pressure. Fourth, outbound packet rate per player; a rising figure usually means a mod or plugin is sending redundant updates and can be tuned away before you buy more bandwidth.
Set thresholds at 80% of the values in the sizing table, not 100%. Warning at 80% gives you weeks to plan a migration, while alerting at 100% gives you hours to explain downtime. Keep a written record of the player count at which each threshold first fires; that number becomes your true, measured capacity, and it is worth more than any published benchmark because it reflects your mods, your world, and your player behaviour.
When to Add a Second Node
Adding RAM or a faster CPU has diminishing returns once one thread is pinned. At that point the only real growth path is horizontal: split the community across two nodes using a proxy, or shard the world by region. A proxy adds a few hundred microseconds of latency but removes the hard ceiling of a single simulation thread. Plan the split before you need it — migrating a live community of 200 players mid-season costs trust that takes months to rebuild, whereas opening a second shard at 150 players feels like growth rather than an emergency.
Bottom Line
Capacity equals the minimum of clock, RAM, entity, and network headroom. Size the weakest link first, add 25% RAM and 20% CPU headroom, and validate with a real load test rather than a spec sheet. That single discipline prevents more downtime than any tuning trick.



Leave a Reply
You must be logged in to post a comment.