Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VPSBench

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).

Quick Start

One-Command Install

Install VPSBench on any supported Linux VPS with one command:

curl -fsSL https://raw.githubusercontent.com/linux-system443/vpsbench/main/install.sh | bash

Then run:

vpsbench quick

Note: The installer requires root/sudo privileges to install system dependencies.

Manual Install

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

Commands

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

Options

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

What It Measures

CPU

  • Single-core performance (most important for Minecraft)
  • Multi-core throughput
  • Sustained performance (detects throttling)
  • CPU model, cores, threads, affinity, cgroup quota

Memory

  • Read bandwidth (sysbench)
  • Write bandwidth
  • Copy bandwidth
  • Latency

Disk (fio)

  • Sequential read/write (1M blocks)
  • Random 4K read/write IOPS
  • Mixed workload (70/30 read/write)
  • fsync latency

Network

  • 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)

Docker (optional)

  • Container creation overhead
  • CPU/memory/filesystem overhead
  • Container lifecycle

Minecraft (optional, requires Docker)

  • TPS (ticks per second) stability
  • MSPT (milliseconds per tick)
  • CPU/memory usage under load
  • Simulated player activity

Scoring

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 Ranges

Score Rating
90-100 EXCELLENT
80-89 VERY GOOD
70-79 GOOD
60-69 AVERAGE
0-59 POOR

Partial Benchmarks

When only some categories are tested, the report clearly shows:

Status: Partial (3/6 categories)

Gaming Suitability

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.

Configuration

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]

JSON Output

{
  "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
  }
}

Dependencies

Required

  • fio — disk I/O testing
  • sysbench — memory testing
  • ping (iputils-ping) — network latency

Optional

  • docker — Docker and Minecraft benchmarks
  • stress-ng — contention testing
  • mtr — route tracing
  • iperf3 — network throughput

Install on Debian/Ubuntu:

sudo apt install fio sysbench iputils-ping stress-ng

Safety

  • 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

Project Structure

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

License

MIT License

About

Gaming VPS performance benchmark for CPU, memory, disk, network, Docker and Minecraft.

Topics

Resources

Contributing

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages