How to Benchmark a VPS in 2026: CPU, Disk, and Network
A practical checklist and copy-paste commands to benchmark any VPS: CPU model, fio disk I/O, and basic network throughput.
- Dataset size: 1,257 plans across 12 providers. Last checked: 2026-01-28.
- Change log updated: 2026-02-16 ( see updates).
- Latency snapshot: 2026-01-23 ( how tiers work).
- Benchmarks: 60 run(s) (retrieved: 2026-01-23). Benchmark your own VPS .
- Found an issue? Send a correction .
How to Benchmark a VPS in 2026 (CPU, Disk, Network)
If you’re comparing VPS providers, specs alone don’t tell the full story. Two “4 vCPU / 8 GB / NVMe” plans can behave very differently due to CPU models, storage backends, throttling, and noisy neighbors. This guide gives you a practical, repeatable way to benchmark a VPS so you can compare plans fairly.
The 3 rules of trustworthy VPS benchmarks
- Test more than once. Run the same test 2-3 times and repeat later (peak hours vs off-peak).
- Avoid fake disk benchmarks. Don’t run fio in
/tmpif it’s mounted astmpfs(RAM). - Compare like-for-like. Same region, similar plan class, and similar pricing model. If you just want to shortlist first, use:
- VPS Finder: /en/vps-finder
- NVMe plans: /en/route-tags/nvme
- CPU-optimized plans: /en/route-tags/cpu-optimized
- Unmetered egress: /en/route-tags/unmetered-egress
Step 1: Record basic system info (30 seconds)
uname -a
cat /etc/os-release
uptime
# CPU model + vCPU count
lscpu | egrep "Model name|CPU\\(s\\)|Thread|Core|Socket"
# Memory
free -h
# Disk + filesystem
lsblk
df -hT
mount | grep -E " on /(tmp|var) | on / "
Tip: On shared-CPU VPS, high steal time can kill performance. Keep an eye on top / htop during tests.
Step 2: CPU benchmark (sysbench)
CPU tests are most useful when you run them consistently. Sysbench is a good “good-enough” baseline.
sudo apt-get update && sudo apt-get install -y sysbench
# Single-thread (single-core sensitivity)
sysbench cpu --threads=1 --time=15 run
# Multi-thread (parallel throughput)
sysbench cpu --threads=$(nproc) --time=15 run
What to watch:
- Single-thread speed matters for many web apps and latency-sensitive workloads.
- Multi-thread throughput matters for builds, encoding, batch jobs, and parallel tasks. For deeper CPU comparisons, collect Geekbench (and keep the result URL), but treat it as one signal among many.
Step 3: Disk benchmark (fio)
For databases and I/O-heavy workloads, random 4K IOPS often matters more than sequential MB/s.
sudo apt-get update && sudo apt-get install -y fio
# Run in a real disk directory (not tmpfs). Example:
cd /root
# Random 4K read
fio --name=4k-randread --filename=fio-testfile --size=1G --rw=randread --bs=4k --iodepth=32 --direct=1 --time_based --runtime=30 --group_reporting
# Random 4K write
fio --name=4k-randwrite --filename=fio-testfile --size=1G --rw=randwrite --bs=4k --iodepth=32 --direct=1 --time_based --runtime=30 --group_reporting
# Sequential read (throughput)
fio --name=seq-read --filename=fio-testfile --size=1G --rw=read --bs=1m --iodepth=16 --direct=1 --time_based --runtime=30 --group_reporting
rm -f fio-testfile
Common pitfalls:
- Caching: use
--direct=1and a file size big enough to exceed RAM caches. - Burst vs sustained: some platforms burst high then drop. Repeat tests later.
Step 4: Network sanity checks
Network performance depends on routes and time of day. Avoid drawing conclusions from a single endpoint.
Latency (ping)
Use the site’s Latency tiers to shortlist regions first: /en/latency Then validate from your VPS:
ping -c 10 1.1.1.1
ping -c 10 8.8.8.8
Throughput (quick download test)
curl -L -o /dev/null -s -w "download: %{speed_download} bytes/sec\\n" "https://speed.cloudflare.com/__down?bytes=100000000"
Notes:
- Single-connection downloads don’t fully represent multi-connection throughput.
- For serious bandwidth tests, use multiple targets and tools like iperf (where available).
Quick interpretation cheat sheet (what “good” looks like)
Use this as a fast sanity-check, not a strict pass/fail.
CPU
- If single-thread events/sec changes wildly between runs, the host may be noisy.
- If overall throughput is lower than expected, watch CPU steal (shared CPU) and sustained clock speed.
Disk (fio)
- 4K random read/write is the most informative for databases.
- If results are very high for a few seconds and then drop, you may be seeing burst behavior.
- If write performance is great but latency spikes under load, real apps can still feel slow.
Network
- Look for packet loss and route instability (MTR is better than a single traceroute).
- Validate with at least 2 targets and test both peak and off-peak hours.
Fast decision tree (keep / retest / cancel)
After you run the steps above:
- Keep: results are consistent across runs, and your app feels stable.
- Retest: results vary but not catastrophically; repeat later (off-peak) and compare against another plan.
- Cancel: high packet loss, repeated timeouts, or sustained performance far below expectation.
If you bought a plan just to test, prefer refund-eligible options when possible: /en/route-tags/refund-eligible
Step 5: Compare results fairly
When comparing two VPS plans:
- Use the same test commands, test duration, and file size.
- Record date/time of each run.
- Prefer plans with similar region and pricing model (monthly vs annual). Then use this site to contextualize:
- Use /en/vps-finder to filter by region, storage type, IPv6, and more.
- Use plan pages to review sources & freshness, refund notes, and (when available) benchmark results.
Optional: Contribute benchmark data
If you want to help improve the dataset’s benchmark coverage, see:
- /en/methodology#benchmarks