Command Palette

Search for a command to run...

GitHubRun the benchmark
Benchmarks / Compute

Compute benchmarks

CPU, memory, disk and network performance — plus steal time, run-to-run variance and the other overselling signals hiding behind the spec sheet.

CPU all-core vs. monthly price
4 / 4 plans

Cross-host P50 against the net monthly price (EUR, excluding VAT — tax depends on the buyer, not the provider). Ringed dots sit on the efficient frontier: no cheaper measured plan is faster on this metric. Points are deliberately never connected.

View
CPU all-core versus monthly price. Lower prices and higher values are better. Points are not connected.0501001502002,0002,5003,0003,5004,000Monthly price (EUR net of VAT, linear scale)CPU all-core (MB/s)Hetzner cx23 · NBG1Hetzner ccx13 · NBG1Hetzner cpx22 · HEL1Vercel 2 vCPU / 4 GB · IAD1
Ringed dots are on the efficient frontier for this metric.Faded points need 10 independent fresh hosts before ranking.

Raw performance

Identical deterministic workloads on every machine — differences are the hardware, never the benchmark.

CPU · single core

Cross-host P50 · MB/s · higher is better · whiskers span P10–P90

What this measures

SHA-256 over 64 KiB buffers on one core for 3 s. Cache-resident and deterministic; uses the CPU's crypto extensions where present. source →

providerbench run -t cpu
CPU · all cores

Cross-host P50 · MB/s · higher is better · whiskers span P10–P90

What this measures

The same SHA-256 workload running on every core simultaneously for 3 s — what the machine sustains when you actually use all the vCPUs you pay for. source →

providerbench run -t cpu
Memory · copy bandwidth

Cross-host P50 · GB/s · higher is better · whiskers span P10–P90

What this measures

Copies between two 256 MiB buffers for 2 s — far beyond any CPU cache, so this is DRAM bandwidth, not cache tricks. source →

providerbench run -t memory
Memory · random access

Cross-host P50 · ns · lower is better · whiskers span P10–P90

What this measures

Pointer chase through a randomly permuted 64 MiB array (fixed seed). Every load depends on the previous one, so prefetching can't hide the true latency. source →

providerbench run -t memory
Disk · random 4K read

Cross-host P50 · IOPS · higher is better · whiskers span P10–P90

What this measures

Random 4 KiB direct-I/O reads at queue depth 4 for 2 s across the 1 GiB file — the access pattern of databases and busy filesystems. source →

providerbench run -t disk
Network · download

Cross-host P50 · Mbps · higher is better · whiskers span P10–P90

What this measures

Sequential 50 MiB downloads from speed.cloudflare.com for up to 10 s (200 MiB max), counted at the socket. source →

providerbench run -t network

The overselling report

On honest hardware, identical work takes identical time. These metrics catch the difference between the cores you rent and the cores you get.

Consistency · variation

Cross-host P50 · CV % · lower is better · whiskers span P10–P90

High spread = noisy neighbors or burst throttling.

What this measures

400 identical ~20 ms hashing units back to back; this is the coefficient of variation of their runtimes. On honest hardware, identical work takes identical time. source →

providerbench run -t steal
CPU steal time

Cross-host P50 · % · lower is better · whiskers span P10–P90

Above ~2% sustained is an oversold host. Linux only.

What this measures

Steal ticks from /proc/stat while all cores are saturated for 5 s — the kernel's own record of CPU time the hypervisor gave to other tenants. source →

providerbench run -t steal
Tail latency · p99 / median

Cross-host P50 · ratio · lower is better · whiskers span P10–P90

Burstable instances show their credit cliff here.

What this measures

How much slower the worst 1% of those 400 identical units ran compared to the median. 1.0 is perfect. source →

providerbench run -t steal
Disk · fsync latency (p50)

Cross-host P50 · ms · lower is better · whiskers span P10–P90

Suspiciously low values can mean the storage acknowledges before data is durable.

What this measures

Median of 50 rounds of a 4 KiB write followed by fsync — the durability path every database commit waits on. source →

providerbench run -t disk

Full comparison

Every headline metric side by side — click a provider for its full report.

Provider / plan€/moPerf.indexValueindexCPU 1-coreMB/sCPU all-coreMB/sMem BWGB/sSeq writeMB/s4K readIOPSfsync p50msDownloadMbpsConsistencyCV %Steal%
Hetznercloud-vps · cx23 · cheap · nbg1 · 2 vCPU10 independent hosts · 30 runsmeasured 24 Jul 2026 UTC5.990.0096/h68.9100.01,374μ993 · p10 2503,027μ2,060 · p10 48612.2μ9.8 · p10 3.01,177μ1,203 · p10 85315,679μ16,158 · p10 12,9141.03μ1.00 · p90 1.31 · p99 1.342,036μ2,019 · p10 1,80915.8μ13.9 · p90 24.7 · p99 29.70.00bestμ0.00 · p90 0.00 · p99 0.00
Hetznercloud-vps · ccx13 · nbg1 · 2 dedicated vCPU10 independent hosts · 30 runsmeasured 24 Jul 2026 UTC43.490.0697/h89.217.81,788bestμ1,785 · p10 1,7793,460μ3,388 · p10 3,37424.5bestμ24.4 · p10 23.51,241μ1,230 · p10 1,19423,928μ24,489 · p10 21,5370.62μ0.54 · p90 0.71 · p99 0.722,174bestμ2,086 · p10 1,70111.2μ11.2 · p90 11.5 · p99 12.50.00bestμ0.00 · p90 0.00 · p99 0.00
Hetznercloud-vps · cpx22 · medium · hel1 · 2 vCPU10 independent hosts · 30 runsmeasured 24 Jul 2026 UTC19.990.0320/h88.138.31,756μ1,734 · p10 1,6743,560bestμ3,531 · p10 3,51923.8μ23.6 · p10 22.51,240μ1,236 · p10 1,07225,464μ25,232 · p10 21,6610.73μ0.79 · p90 1.18 · p99 1.232,091μ1,967 · p10 1,59513.6μ14.1 · p90 17.5 · p99 19.50.00bestμ0.00 · p90 0.00 · p99 0.00
VercelSandbox · 2 vCPU / 4 GB · usage-based · iad1 · 2 vCPU10 independent hosts · 30 runsmeasured 24 Jul 2026 UTC218.380.2992/h100.04.01,314μ933 · p10 3522,637μ1,874 · p10 7086.7μ5.5 · p10 3.51,607bestμ1,514 · p10 1,31269,839bestμ62,647 · p10 47,3770.04bestμ0.04 · p90 0.05 · p99 0.061,882μ1,946 · p10 1,6523.0bestμ3.4 · p90 5.3 · p99 6.40.60μ0.53 · p90 0.61 · p99 0.69

Raw reports: data/results/ · every chart links its benchmark source