CLOUD
Guides

How to Benchmark Your Server: Step by Step

CLOUD|February 19, 2026|4 min read|478 views
How to Benchmark Your Server: Step by Step

CPU with sysbench, memory with memtester, storage with fio, network with iperf3. Real numbers — not feelings.

Why Benchmark Your Server?

Before choosing a hosting provider or upgrading server specifications, you need real numbers. Benchmarking gives you objective answers: Does this server suit my application? Is the upgrade worth the cost? How does it compare to other servers?

This guide covers standard measurement tools and how to interpret the results.

CPU Performance Benchmarking

Sysbench

# Install sysbench
apt install sysbench -y

# Single-thread CPU test
sysbench cpu --threads=1 run

# Multi-threaded test (equal to number of vCPUs)
sysbench cpu --threads=4 run

Example of a good result:

CPU speed:
 events per second: 2500+ ← good value for a single vCPU

UnixBench

# Install UnixBench
apt install git make gcc -y
git clone https://github.com/nicowillis/unixbench.git
cd unixbench && ./Run

# Provides comprehensive scores for all performance aspects

Memory (RAM) Performance Benchmarking

# sysbench memory test
sysbench memory --memory-total-size=10G run

# Good result: > 10 GB/sec for reads
# Alternative test with dd
dd if=/dev/zero of=/dev/null bs=1M count=10240 2>&1 | tail -1

Disk (SSD) Performance Benchmarking

Sequential Read Test

# fio - the standard tool for disk performance measurement
apt install fio -y

# Sequential read
fio --name=seq-read \
 --rw=read \
 --bs=1M \
 --size=4G \
 --numjobs=1 \
 --runtime=60 \
 --group_reporting

# Sequential write
fio --name=seq-write \
 --rw=write \
 --bs=1M \
 --size=4G \
 --numjobs=1 \
 --runtime=60 \
 --group_reporting

Random Read Test (Most Important for Databases)

# Random IOPS - most important for databases
fio --name=rand-read \
 --rw=randread \
 --bs=4k \
 --size=4G \
 --numjobs=4 \
 --runtime=60 \
 --group_reporting \
 --iodepth=32

Reference Benchmarks

Disk Type Sequential Read Sequential Write Random IOPS
SATA SSD 500-550 MB/s 400-500 MB/s 70K-100K
NVMe SSD 2,000-7,000 MB/s 1,000-5,000 MB/s 300K-1M
HDD 100-200 MB/s 80-150 MB/s 100-200

Network Performance Benchmarking

# Install iperf3
apt install iperf3 -y

# On the test server (server mode)
iperf3 -s

# On your server (client mode)
iperf3 -c server-ip -t 30

# Internet speed test
curl -s https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py | python3

# Ping test for your region
ping -c 20 riyadh-server-ip

Latency Test to cloud.net.sa Data Centers

# Latency to Riyadh and Jeddah (from within Saudi Arabia)
ping -c 20 cloud.net.sa

# traceroute to understand network path
traceroute cloud.net.sa
mtr cloud.net.sa # Better than traceroute

cloud.net.sa servers in Riyadh and Jeddah achieve latency very low latency for most Saudi users.

Web Performance (HTTP Load Testing)

Apache Bench (ab)

# Install
apt install apache2-utils -y

# 1000 requests, 100 concurrent
ab -n 1000 -c 100 https://yoursite.com/

# With custom headers
ab -n 1000 -c 100 -H "Accept-Encoding: gzip" https://yoursite.com/api/data

wrk (More Powerful Than ab)

# Install
apt install wrk -y

# 30 seconds, 12 threads, 400 concurrent connections
wrk -t12 -c400 -d30s https://yoursite.com/

# With Lua script for POST requests
wrk -t12 -c400 -d30s -s post.lua https://yoursite.com/api

k6 (Most Modern and Powerful)

// load-test.js
import http from 'k6/http';
import { check, sleep } from 'k6';

export const options = {
 stages: [
 { duration: '2m', target: 100 }, // ramp-up
 { duration: '5m', target: 100 }, // stay at 100
 { duration: '2m', target: 0 }, // ramp-down
 ],
};

export default function {
 const res = http.get('https://yoursite.com/');
 check(res, { 'status was 200': (r) => r.status === 200 });
 sleep(1);
}
k6 run load-test.js

Interpreting Results

Key HTTP Metrics

Metric Excellent Good Needs Improvement
P50 Latency < 50ms < 100ms > 200ms
P95 Latency < 200ms < 500ms > 1s
P99 Latency < 500ms < 1s > 2s
Requests/sec > 1000 > 500 < 100
Error Rate 0% < 0.1% > 1%

Comprehensive Benchmark Script

#!/bin/bash
# cloud-benchmark.sh - comprehensive server benchmark

echo "=== CPU Benchmark ==="
sysbench cpu --threads=$(nproc) run 2>&1 | grep "events per second"

echo ""
echo "=== Memory Benchmark ==="
sysbench memory --memory-total-size=5G run 2>&1 | grep "transferred"

echo ""
echo "=== Disk Sequential Write ==="
dd if=/dev/zero of=/tmp/testfile bs=1G count=2 2>&1 | tail -1

echo ""
echo "=== Disk Sequential Read ==="
dd if=/tmp/testfile of=/dev/null bs=1G 2>&1 | tail -1
rm /tmp/testfile

echo ""
echo "=== Network Latency ==="
ping -c 10 8.8.8.8 | tail -2
chmod +x cloud-benchmark.sh
./cloud-benchmark.sh

Summary

Systematic measurement gives you facts instead of guesses. Before complaining about server slowness, run these tests and identify where the actual bottleneck is. In most cases, the problem is not in the server — it is in the code or database. On cloud.net.sa, performance is documented and measurable.


Get Started

Want to try it yourself? Choose the right hosting plan or build your custom server with the specs you need.

Share