CPU speed decides how fast PHP renders a page, how many requests a Node app serves, how quickly code compiles and how smoothly a game server ticks. sysbench and Geekbench are the two most common ways to put a number on it. Each has strengths, and neither replaces testing your own application.
Know your CPU first
lscpu | grep -E 'Model name|^CPU\(s\)|Thread|MHz'
nproc
On a VPS, nproc shows your vCPUs. Each one is a thread on the host’s physical CPU. The model name tells you the CPU generation, which affects per-core speed as much as clock frequency does. See CPU info and how many CPU cores you need.
sysbench: quick and scriptable
sudo apt install sysbench # or: dnf install sysbench (EPEL)
sysbench cpu --threads=1 --time=30 run
sysbench cpu --threads=$(nproc) --time=30 run
Look at:
CPU speed:
events per second: 1452.31
- threads=1 — single-core performance.
- threads=nproc — total throughput. Ideally close to single-core × cores.
sysbench’s CPU test calculates prime numbers. It’s simple and repeatable, but it exercises only a narrow part of the CPU. It’s great for comparing the same test across servers, not for absolute claims.
Compare versions too. Results from sysbench 0.4 and 1.x aren’t comparable.
Geekbench: broad and comparable
Geekbench runs many realistic workloads (compression, image processing, HTML parsing, cryptography, machine learning) and gives single-core and multi-core scores you can compare with a public database of results.
wget https://cdn.geekbench.com/Geekbench-6.x-Linux.tar.gz # get the current link from geekbench.com
tar xf Geekbench-*-Linux.tar.gz
cd Geekbench-*-Linux
./geekbench6
Results are uploaded to the Geekbench Browser, and the command prints a link. Notes:
- The free version uploads results publicly. A paid licence allows offline use.
- A run takes a few minutes, and needs a few GB of RAM for some tests.
- Single-core score is the best predictor for typical web workloads (PHP, WordPress, most interpreted languages).
Steal time: the VPS factor
On a VPS, another kind of measurement matters: consistency. Watch steal time while benchmarking:
vmstat 1 # 'st' column
top # '%st' in the CPU line
Steal is time your vCPU wanted to run but the hypervisor scheduled another guest. A few percent is normal. Consistently high steal, especially if benchmark results vary a lot between runs, means CPU contention on the host. See load average.
Comparing fairly
- Same benchmark version, same OS and kernel family.
- Several runs, at different times of day. Use the median.
- Note the vCPU count and RAM. Multi-core scores scale with cores, so compare per-core when plans differ.
- Turbo and boost behaviour differs between hosts. Sustained runs (60 s+) are more realistic than bursts.
When synthetic scores mislead
| Your workload | Better test |
|---|---|
| WordPress / PHP site | Time uncached page loads (curl -w '%{time_total}') or wrk against a test page |
| Node.js API | wrk or k6 against real endpoints |
| Compiling code | Time a real build (time make -j$(nproc)) |
| Minecraft / game server | Tick time (MSPT) under a typical player load |
| Database | sysbench oltp_* or pgbench, which also depends on disk and RAM |
| Video encoding | Time an ffmpeg encode of a sample file |
A CPU with a better Geekbench score usually wins these too, but real tests reveal the bottlenecks benchmarks miss: disk latency, memory size, PHP-FPM settings and caching. See benchmark a VPS and website speed optimization.
Quick reference
| Task | Command |
|---|---|
| CPU model and cores | lscpu, nproc |
| Single-core (sysbench) | sysbench cpu --threads=1 run |
| All cores (sysbench) | sysbench cpu --threads=$(nproc) run |
| Geekbench | ./geekbench6 |
| Steal time | vmstat 1 (st) |
| Real workload | time your build or encode, wrk your site |
Related: fio disk benchmark and high CPU usage.