Don’t trust us. Watch the graphs.

One Dell R640, four ways to slice it: bare metal, our Virtual Node, a VDS and a VPS. Every result comes from the same open script, and you can run it on your own server.

36%

faster than a VPS on average, under realistic load.

Up to 92% on Redis · 29% faster than a VDS

0.25%

CPU steal at the 99th percentile, realistic load.

VPS: 7.76% · VDS: 4.06%

42 µs

Scheduler wake-up at the 99.99th percentile, realistic load.

VPS: 2,414 µs · VDS: 111 µs

Results

Same hardware. Very different results.

CPU steal, 99th percentile

share of time the hypervisor took the core away · lower is better

Bare metal0%
Virtual Node0.25%
VDS4.06%
VPS7.76%

Virtual Node: 97% lower than a VPS

Scheduler wake-up, 99.99th percentile

microseconds · lower is better

Bare metal18.4 µs
Virtual Node41.7 µs
VDS111.3 µs
VPS2,414 µs

Virtual Node: 98% lower than a VPS

Scheduler wake-up, median (p50)

microseconds, typical response · lower is better

Bare metal9 µs
Virtual Node11.1 µs
VDS32 µs
VPS29 µs

Virtual Node: 62% lower than a VPS

Redis GET

operations per second · higher is better

Bare metal93,604 ops/s
Virtual Node62,086 ops/s
VDS38,551 ops/s
VPS32,324 ops/s

Virtual Node: 92% more than a VPS

PostgreSQL read/write

pgbench, transactions per second · higher is better

Bare metal11,854 tx/s
Virtual Node6,934 tx/s
VDS5,219 tx/s
VPS5,619 tx/s

Virtual Node: 23% more than a VPS

PostgreSQL read-only

pgbench, transactions per second · higher is better

Bare metal85,573 tx/s
Virtual Node53,309 tx/s
VDS46,873 tx/s
VPS45,809 tx/s

Virtual Node: 16% more than a VPS

HTTP throughput

requests per second · higher is better

Bare metal185,841 req/s
Virtual Node124,206 req/s
VDS112,478 req/s
VPS106,174 req/s

Virtual Node: 17% more than a VPS

Linux kernel build

wall-clock seconds · lower is better

Bare metal333.8 s
Virtual Node466.1 s
VDS523.5 s
VPS525.6 s

Virtual Node: 11% lower than a VPS

Why a VPS can win on an idle host

A VPS’s 8 vCPUs are threads the hypervisor can place on any free core. On an empty host they often land on 8 different physical cores, while a Virtual Node always runs on its 4 dedicated cores with 2 threads each. Once the host is under realistic load, those spare cores are gone, and the VPS falls behind.

Every result, both load levels

Test Host Bare metal Virtual Node VDS VPS
CPU steal, 99th percentile (less is better) Idle host 0% 0% 3.58% 0.13%
Realistic load — 0.25% 4.06% 7.76%
Scheduler wake-up, 99.99th percentile (less is better) Idle host 18.4 µs 28.3 µs 80.8 µs 113.8 µs
Realistic load — 41.7 µs 111.3 µs 2,414 µs
Scheduler wake-up, median (p50) (less is better) Idle host 9.0 µs 9.3 µs 26.6 µs 21.6 µs
Realistic load — 11.1 µs 32.0 µs 29.0 µs
Redis GET (more is better) Idle host 93,604 ops/s 80,235 ops/s 62,709 ops/s 63,884 ops/s
Realistic load — 62,086 ops/s 38,551 ops/s 32,324 ops/s
PostgreSQL read/write (more is better) Idle host 11,854 tx/s 8,971 tx/s 6,695 tx/s 9,365 tx/s
Realistic load — 6,934 tx/s 5,219 tx/s 5,619 tx/s
PostgreSQL read-only (more is better) Idle host 85,573 tx/s 72,549 tx/s 60,726 tx/s 77,977 tx/s
Realistic load — 53,309 tx/s 46,873 tx/s 45,809 tx/s
HTTP throughput (more is better) Idle host 185,841 req/s 160,086 req/s 145,837 req/s 186,905 req/s
Realistic load — 124,206 req/s 112,478 req/s 106,174 req/s
Linux kernel build (less is better) Idle host 333.8 s 349.5 s 365.3 s 244.6 s
Realistic load — 466.1 s 523.5 s 525.6 s
Method

How we tested.

Each platform runs on the same physical server, measured on an idle host and on a host under realistic load. Realistic load means other tenants running on the same host, because no VPS provider gives you a whole chassis for one VPS. Bare metal is the reference.

There’s no secret technology behind these numbers. We use the same open tools as everyone else, run them with discipline, and show our work. That’s why we publish the script: you can check every result yourself.

Hardware
Dell R640, dual Xeon Gold 6138, 256GB DDR4 @ 2400MHz
Allocation
4 cores / 8 threads for bare metal, VN and VDS. “8 vCPU” for VPS.
Baseline
Bare metal measured on an idle host, only the 4 cores / 8 threads tested.
Speed-up figure
Mean of PostgreSQL, MariaDB, Redis, HTTP and single-thread CPU results, Virtual Node vs VPS.
CPU steal
CPU steal, 99th percentile: share of time the hypervisor took the core away. Lower is better.
Scheduler wake-up
Scheduler wake-up, 99.99th percentile: microseconds. Lower is better.
Typical wake-up
Scheduler wake-up, median (p50): how long a woken-up task waits for the processor in a typical moment. Lower is better.
Redis GET
Redis GET: operations per second. Higher is better.
PostgreSQL read/write
PostgreSQL read/write: pgbench, transactions per second. Higher is better.
PostgreSQL read-only
PostgreSQL read-only: pgbench, transactions per second. Higher is better.
HTTP throughput
HTTP throughput: requests per second. Higher is better.
Linux kernel build
Linux kernel build: wall-clock seconds. Lower is better.
Run it yourself

Test your current server. Then compare.

Debian 13, runs as root, takes about three hours. Installs what it needs, writes an HTML report plus the raw output of every test. Works on any server, including someone else’s.

We’ll compare it with a Virtual Node for you, at no cost.

nodebench.sh
$ curl -fsSLO https://cdn.freerangeservers.com/public/scripts/nodebench.sh
$ sudo bash nodebench.sh