Engineering Field guide

Size a game server VPS from the actual workload

Size a game server VPS from actual workload demands: single-core IPC over core count, tiered RAM budgeting, and NVMe IOPS throughput.

Size a game server VPS from the actual workload

Renting a virtual private server for multiplayer games often ends in disappointment: an inexpensive plan boasting 8 virtual cores (vCPU) can experience unplayable lag with just 15 connected players, whereas a 2-core instance on a modern high-frequency processor runs with perfect tick rates. The explanation lies in game engine architecture, where the primary simulation loop cannot be parallelized across multiple cores.

This capacity planning guide targets Linux administrators hosting Minecraft, Rust, CS2, Valheim, or Factorio. As of October 28, 2026, single-core instructions per cycle (IPC), raw clock frequency, and disk write latency remain the primary performance criteria.

Single-thread performance versus core count#

The primary game loop in nearly all dedicated multiplayer engines calculates physics, player positions, projectile ballistics, and collisions sequentially. Each game tick depends strictly upon the calculated outcome of the preceding tick:

  • Minecraft: entity logic, mob AI, redstone, and chunk events execute on the dedicated Server thread.
  • Counter-Strike 2: sub-tick calculation is tightly bound to the master server thread.
  • Rust: Unity physics simulation and network entity serialization execute in the main loop.
  • Factorio: factory update ticks (UPS) are deterministically single-threaded.

Consequently, a virtual machine with 2 vCPUs running at 4.5–5.0 GHz (such as modern AMD Ryzen 7000/9000 or high-frequency Intel Core/Xeon E) provides a vastly smoother player experience than an 8-core virtual machine on an older 2.0–2.2 GHz Xeon processor.

Verify CPU model and peak operating frequencies on your Linux instance:

bash
lscpu | grep -E 'Model name|CPU MHz|CPU max MHz'

If peak core frequency falls below 3.0 GHz, the host is poorly suited for real-time multiplayer titles with dense player counts.

Memory budgeting: base OS overhead and entity scaling#

RAM allocation for a dedicated game server comprises three distinct layers:

  1. Host operating system overhead (OS + Docker + metrics): requires 1.5 to 2.0 GB of RAM for the Linux kernel, logging daemons, and system services.
  2. Game engine baseline: an empty dedicated instance consumes from 2 GB (CS2, Factorio) to 6–8 GB (Rust, Palworld, modded Minecraft).
  3. Dynamic scaling: budget 100 to 250 MB per active player to cover active chunk caches, inventory tables, and surrounding entity structures.

Evaluate actual free memory and buffer caches on your host:

bash
free -h

Always maintain at least 2 GB of unallocated physical RAM above the game's anticipated peak footprint to protect the instance from the Linux kernel Out-of-Memory (OOM) Killer.

Key VPS selection criteria: high single-core clock rates, three-tiered RAM budgeting, and low-latency NVMe storage for auto-saves.

Storage I/O throughput and auto-save micro-stutters#

If your game server experiences recurring 1–2 second freezes every 10–15 minutes, low disk write performance during periodic world auto-saves is the root cause in the majority of cases.

Engines such as Rust, Project Zomboid, and Minecraft periodically flush gigabytes of world memory structures to persistent disk. If the server is hosted on mechanical HDDs or throttled virtual cloud disks with low IOPS (input/output operations per second), the game thread pauses until the write queue clears.

Benchmark random write throughput on your server using fio:

bash
fio --name=write-test --ioengine=libaio --rw=randwrite --bs=4k --size=512M --numjobs=1 --iodepth=32 --runtime=10 --time_based --group_reporting

Dedicated multiplayer hosts require random write throughput of at least 10,000 IOPS with completion latency (clat) under 1–2 milliseconds. Choose instances provisioned with local NVMe SSD storage.

Network packet rate limits (Packets Per Second)#

Multiplayer game traffic is characterized by a high volume of small, high-frequency UDP datagrams (64 to 100 packets per second per player), rather than massive sequential bandwidth.

Many budget cloud providers advertise gigabit network ports, but enforce hidden hypervisor-level packet-per-second (PPS) caps (such as 5,000 PPS per virtual machine). Exceeding these thresholds causes silent packet drops at the hypervisor layer, inducing severe rubberbanding and desynchronization.

If you manage your server cluster using Nexardo, monitor tick latency and storage write metrics through a centralized control plane: matching virtual machine resources to engine workloads minimizes hosting costs while ensuring uninterrupted gameplay.

Sources#