Gaming VPS Performance Benchmark
Made by Salib Technologies
A production-quality CLI tool for benchmarking VPS performance specifically for game-server hosting (Minecraft and similar multiplayer servers).
Install VPSBench on any supported Linux VPS with one command:
curl -fsSL https://raw.githubusercontent.com/linux-system443/vpsbench/main/install.sh | bashThen run:
vpsbench quickNote: The installer requires root/sudo privileges to install system dependencies.
git clone https://github.com/linux-system443/vpsbench.git
cd vpsbench
pip install -e .
# Run quick benchmark (~2 minutes)
vpsbench quick
# Run specific benchmarks
vpsbench cpu --duration quick
vpsbench memory
vpsbench disk
vpsbench network
# Save results to JSON
vpsbench --json results.json| Command | Description | Duration |
|---|---|---|
vpsbench |
Full benchmark (all categories) | ~15 min |
vpsbench quick |
Quick benchmark (CPU, memory, disk, network) | ~2 min |
vpsbench cpu |
CPU only | ~15s-5min |
vpsbench memory |
Memory only | ~3s |
vpsbench disk |
Disk I/O only | ~10-60s |
vpsbench network |
Network latency/throughput | ~40s |
vpsbench docker |
Docker overhead (requires Docker) | ~30s |
vpsbench minecraft |
Minecraft server perf (requires Docker) | ~10 min |
| Option | Description |
|---|---|
--duration quick|normal|full |
Benchmark duration profile |
--profile gaming|minecraft|general |
Scoring profile |
--json FILE |
Save results to JSON file |
--config FILE |
Use custom config file |
--verbose, -v |
Enable verbose output |
- Single-core performance (most important for Minecraft)
- Multi-core throughput
- Sustained performance (detects throttling)
- CPU model, cores, threads, affinity, cgroup quota
- Read bandwidth (sysbench)
- Write bandwidth
- Copy bandwidth
- Latency
- Sequential read/write (1M blocks)
- Random 4K read/write IOPS
- Mixed workload (70/30 read/write)
- fsync latency
- Internet / Anycast Latency — ping to major DNS resolvers (Cloudflare, Google, OpenDNS, Quad9)
- Regional Game Server Latency — ping to fixed endpoints in known geographic locations (optional, configure in config)
- Jitter (standard deviation)
- Packet loss
- Throughput (iperf3, optional)
- Container creation overhead
- CPU/memory/filesystem overhead
- Container lifecycle
- TPS (ticks per second) stability
- MSPT (milliseconds per tick)
- CPU/memory usage under load
- Simulated player activity
Scores are 0-100 with documented reference ranges:
| Category | Weight (Gaming) | What It Measures |
|---|---|---|
| CPU | 25% | Single-core + multi-core + sustained |
| Memory | 10% | Bandwidth and latency |
| Disk | 25% | IOPS, latency, sequential throughput |
| Network | 20% | Latency, jitter, packet loss |
| Docker | 5% | Container overhead |
| Minecraft | 15% | TPS/MSPT under load |
| Score | Rating |
|---|---|
| 90-100 | EXCELLENT |
| 80-89 | VERY GOOD |
| 70-79 | GOOD |
| 60-69 | AVERAGE |
| 0-59 | POOR |
When only some categories are tested, the report clearly shows:
Status: Partial (3/6 categories)
The tool provides practical interpretation:
Gaming Suitability
Single-core CPU: Strong (score: 77/100)
CPU throttling: None detected (0.0%)
Disk IOPS: Poor (3k random 4K read)
Disk latency: Good (1.51 ms)
Network latency: Excellent (2 ms best)
Recommendation: This VPS may work for small game servers.
Create vpsbench.yaml or /etc/vpsbench/config.yaml:
profile: gaming
timeout: 600
cpu:
single_core_duration: 10
multi_core_duration: 10
sustained_duration: 300
operations_per_test: 1000000
disk:
test_size: "256M"
random_numjobs: 2
random_iodepth: 16
direct_io: true
network:
ping_count: 20
# Anycast endpoints (always tested)
regions:
Cloudflare: "1.1.1.1"
Google DNS: "8.8.8.8"
OpenDNS: "208.67.222.222"
# Regional endpoints (optional, configure with known fixed IPs)
# regional_endpoints:
# Singapore: "1.2.3.4"
# US East: "5.6.7.8"
minecraft:
version: "1.21.1"
ram: "2G"
simulated_player_counts: [0, 5, 10, 20, 30]{
"version": "1.0.0",
"timestamp": "2026-08-20T07:00:00+00:00",
"duration_seconds": 120.5,
"profile": "gaming",
"system": { "cpu": "AMD EPYC 7443P", "cores": 8, "threads": 8, ... },
"benchmarks": { "cpu": {...}, "memory": {...}, ... },
"scores": {
"cpu": 77, "memory": 100, "disk": 24, "network": 86,
"overall": 72, "classification": "GOOD",
"weights": { "cpu": 0.25, ... }
},
"status": {
"total_categories": 6,
"tested_categories": 4,
"tested": ["cpu", "memory", "disk", "network"],
"is_partial": true
}
}fio— disk I/O testingsysbench— memory testingping(iputils-ping) — network latency
docker— Docker and Minecraft benchmarksstress-ng— contention testingmtr— route tracingiperf3— network throughput
Install on Debian/Ubuntu:
sudo apt install fio sysbench iputils-ping stress-ng- Never modifies existing Docker containers
- Never deletes user data
- Uses temporary files in
/tmp/vpsbench_disk_test/ - All test files cleaned up after benchmarks
- Configurable timeouts prevent runaway tests
- Ctrl+C cleanly stops all benchmarks
- Disk benchmarks warn about I/O load
vpsbench/
├── src/vpsbench/
│ ├── cli.py # CLI entry point
│ ├── scoring.py # Scoring system
│ ├── report.py # Terminal + JSON reports
│ ├── benchmarks/
│ │ ├── base.py # Base benchmark class
│ │ ├── cpu.py # CPU benchmark
│ │ ├── cpu_detect.py # CPU topology/quota detection
│ │ ├── memory.py # Memory benchmark
│ │ ├── disk.py # Disk benchmark (fio)
│ │ ├── network.py # Network benchmark
│ │ ├── docker.py # Docker benchmark
│ │ ├── minecraft.py # Minecraft benchmark
│ │ └── contention.py # Contention test
│ ├── config/
│ │ ├── defaults.py # Default configuration
│ │ └── loader.py # Config file loader
│ └── utils/
│ ├── dependencies.py # Dependency detection
│ ├── formatting.py # Terminal colors/formatting
│ ├── shell.py # Command execution
│ └── system.py # System info detection
├── tests/ # 183 unit tests
├── config/example.yaml # Example config
├── pyproject.toml # Package config
├── README.md
├── LICENSE
├── INSTALL.md
└── CONTRIBUTING.md
MIT License