A VPS spec sheet lists cores, RAM, and SSD size — but none of those numbers tell you how the server actually performs under your workload. Two $20 plans from different providers can differ by 3x in CPU throughput and 10x in disk latency, because hypervisor configuration, neighbor contention, and storage architecture are invisible in the marketing materials. Benchmarking is the only way to find out what you’re really paying for. This guide shows you how to test CPU, disk, and network with the three tools that matter — sysbench, fio, and iperf3 — and how to interpret the results.
Prepare Your Benchmark Environment
Install the tools and make sure the server is otherwise idle. A benchmark running next to a production web server tells you nothing about the machine’s ceiling:
sudo apt update && sudo apt install -y sysbench fio iperf3
# Confirm you're on the latest kernel (needed for modern NVMe behavior)
uname -r
# Check current load — should be near zero before you start
uptime
nproc
Record nproc and your RAM size — you’ll need them to interpret the results. Run every test three times and take the median; a single run on a shared host can be skewed by a noisy neighbor.
CPU: sysbench Prime Number Test
sysbench’s CPU test computes prime numbers, which exercises integer arithmetic and the scheduler without touching disk or network. Run it single-threaded first to measure raw per-core speed, then multithreaded to check scaling:
# Single-thread: per-core speed (events/sec)
sysbench cpu --threads=1 --time=30 --cpu-max-prime=20000 run
# Multithread: scale with your vCPU count
sysbench cpu --threads=$(nproc) --time=30 --cpu-max-prime=20000 run
What to look for: the single-thread events per second tells you the CPU generation — modern EPYC/Xeon vCPUs typically score 1500–2500 events/sec on this workload, while older or heavily throttled vCPUs fall under 1000. Compare the multithreaded result to the single-thread result: with 4 vCPUs you should see roughly 3.5–4x. If the scaling factor is far below the core count, you’re likely hitting CPU steal or an oversubscribed host — check %st in top during the run.
Disk: fio Random Reads and Writes
fio is the industry-standard storage benchmark. The two tests that matter for typical VPS workloads are 4 KiB random reads (database/application files) and sequential writes (logs, backups). Use --direct=1 to bypass the page cache so you measure the storage, not RAM:
# 4 KiB random reads — the database pattern
fio --name=randread --ioengine=libaio --iodepth=32 --rw=randread \
--bs=4k --size=1G --numjobs=4 --runtime=30 --direct=1 \
--group_reporting
# Sequential writes — the logging pattern
fio --name=seqwrite --ioengine=libaio --iodepth=16 --rw=write \
--bs=1M --size=1G --runtime=30 --direct=1 --group_reporting
What to look for: focus on IOPS for random reads and BW (bandwidth) for sequential writes. A shared-SSD VPS typically delivers 2,000–10,000 random-read IOPS; NVMe-backed plans reach 20,000–100,000+. The number that matters even more is latency (usec) — the p99 column. Sub-millisecond p99 on random reads is excellent; sustained p99 above 5 ms means the storage tier is throttled or contended.
Network: iperf3 Throughput and Latency
iperf3 measures real throughput between two endpoints, which captures the actual path your traffic takes. You need a second machine — a desktop, another VPS, or a free instance at a cloud provider:
# On the second machine (server side):
iperf3 -s
# On your VPS (client side), 30 seconds, 8 parallel streams:
iperf3 -c SERVER_IP -t 30 -P 8
# Reverse direction (uploads from the VPS):
iperf3 -c SERVER_IP -t 30 -P 8 -R
# Latency check from the VPS (10 packets):
ping -c 10 SERVER_IP
What to look for: a VPS with a 1 Gbps port should push 800–950 Mbps in both directions; 10 Gbps plans should clear 5+ Gbps with parallel streams. If throughput is symmetric but low (under 300 Mbps), check your plan’s port speed and the provider’s transit quality. Pair the throughput test with ping latency — sub-10 ms to a nearby city is good; 50+ ms to the provider’s own datacenter region suggests routing problems.
Putting It Together: The Three-Number Scorecard
After the tests, you should have three headline numbers: single-thread CPU events/sec, random-read IOPS, and bidirectional throughput. Save them with the date and provider in a file — this becomes your baseline for regression testing and your ammunition for comparing plans when renewal time comes:
cat <<'EOF' > ~/vps-benchmark-$(date +%F).txt
Provider: (name)
Plan: (specs)
CPU events/s: (single / multi)
4k randread: (IOPS / p99 latency)
seq write: (MB/s)
iperf3: (Mbps down / up)
EOF
What Your Numbers Mean for Provider Choice
Benchmarks exist to be compared. If your current VPS shows 800 single-thread events/sec and 3,000 random-read IOPS while a competitor at the same price shows 2,000 and 25,000, the performance gap is not your configuration — it’s the hardware tier and overcommit policy. Before you switch on price alone, compare VPS providers on our comparison table to see CPU model, storage type, and port speed side by side, then run the same three tests on any candidate before committing.
If you want a provider that consistently benchmarks well for the price, InterServer’s VPS plans use modern EPYC hardware with NVMe storage — worth adding to your test list. And if benchmarking sounds like work you’d rather skip, a managed platform like Cloudways pre-selects and maintains high-performing infrastructure for you.
Thirty minutes of benchmarking tells you more about a VPS than thirty days of speculation. Run sysbench, fio, and iperf3 once after you sign up, once before renewal, and once on any provider you’re considering — then let the numbers, not the marketing, make the decision. See the full specs and pricing across providers once you have your scorecard ready.




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