I recently needed to have a look at moving some services to a different VPS provider for redundancy so I decided to benchmark my options to compare them.
The plan selected was whichever had 16GB of RAM (though Google is 15GB). The selected datacenter was always London (Azure only says UK South). The fastest storage options were selected. The OS was CentOS 7 since that was mostly supported (Amazon and VPS.net do not support CentOS 8).
For Amazon and DigitalOcean I tested 2 options; for Amazon I was curious as to how Lightsail stacked up against vanilla EC2 and I also wondered if the 50% hike in price for DigitalOcean General Purpose was worth it versus the Standard VPSs from them that I’d used in the past.
The test were generally run a few times and averaged out. I used the latest sysbench to measure CPU speed, File I/O and MySQL transaction speed for comparison.
Provider | Plan | vCPU cores | RAM (GB) | CPU Events/s | Read MiB/s | Write MiB/s | MySQL tran/s |
---|---|---|---|---|---|---|---|
Amazon | EC2 t3a.xlarge | 4 | 16 | 514.79 | 18.84 | 12.56 | 1099.59 |
Amazon | Lightsail 16GB | 4 | 16 | 337.44 | 15.55 | 10.37 | 1603.31 |
Azure | B4MS | 4 | 16 | 358.03 | 3.57 | 2.38 | 448.60 |
DigitalOcean | General Purpose 16GB | 4 | 16 | 434.46 | 20.85 | 13.90 | 1328.43 |
DigitalOcean | Standard 16GB | 6 | 16 | 304.37 | 10.79 | 7.19 | 1078.46 |
Google Cloud Compute | n1-standard-4 | 4 | 15 | 345.23 | 11.89 | 7.93 | 976.040 |
Hostworld | VPS-6 | 8 | 16 | 541.27 | 21.60 | 14.40 | 1428.03 |
Kamatera | Custom (Availability) | 4 | 16 | 413.75 | 36.96 | 24.64 | 2634.97 |
Linode | Shared 16GB | 6 | 16 | 501.91 | 43.21 | 28.80 | 1728.78 |
OVH Cloud | Elite | 8 | 16 | 267.67 | 31.00 | 20.67 | 1729.30 |
UK2 | SSD VPS V6-20 | 4 | 16 | 254.33 | 23.37 | 15.58 | 1317.89 |
UpCloud | 16GB | 6 | 16 | 449.89 | 51.10 | 34.04 | 2204.81 |
VPS.net | V6-19 | 4 | 16 | 248.31 | 3.91 | 2.61 | 630.87 |
VPSServer | Standard 16GB | 8 | 16 | 156.23 | 16.82 | 11.21 | 844.11 |
Vultr | Cloud Compute 16GB | 6 | 16 | 403.37 | 35.20 | 23.46 | 1691.64 |
For disk I/O UpCloud is the clear winner and Azure and VPS.net are VERY distant losers – and this is with Azure’s Premium SSD option. Hostworld just wins the CPU crown, but its I/O is less impressive. Of the rest I’d say Linode is a pretty solid performer. There are some distinctly average performances from some of these. I was quite surprised by some of the numbers and ran them a few extra times to make sure (VPSServer’s terrible CPU speed and Azure and VPS.net’s shocking I/O for example).
YMMV.
Price-wise, the top 4 in terms of speed have very similar pricing (that’s UpCloud, Linode, Kamatera and Vultr in order of read speed), then OVH and Hostworld are both significantly cheaper. Hostworld is actually the cheapest in the list with the fastest CPU but only mid-range disk I/O.
The commands used to benchmark were as follows:
For CPU Events per second:sysbench cpu --cpu-max-prime=20000 run
For read and write performance in MiB/s (after creating 150GB of files):sysbench fileio --file-total-size=150G --file-test-mode=rndrw --time=300 --max-requests=0 run
For MySQL transactions per second (after creating a test database with 1 million rows):sysbench oltp_read_write --table-size=1000000 --db-driver=mysql --mysql-db=test --time=60 --max-requests=0 --threads=8 run
Hetzner Cloud cpu results:
# sysbench cpu –cpu-max-prime=20000 run
sysbench 1.0.20 (using system LuaJIT 2.1.0-beta3)
Running the test with following options:
Number of threads: 1
Initializing random number generator from current time
Prime numbers limit: 20000
Initializing worker threads…
Threads started!
CPU speed:
events per second: 348.83
General statistics:
total time: 10.0028s
total number of events: 3490
Latency (ms):
min: 2.67
avg: 2.86
max: 16.78
95th percentile: 3.30
sum: 9995.97
Threads fairness:
events (avg/stddev): 3490.0000/0.00
execution time (avg/stddev): 9.9960/0.00