Dedicated CPU instances on the cloud
The cloud is notoriously expensive compared to the comparative on-prem hardware available in the market1. Of course, the cloud is not only about cost, but also about ease of use and available features like managed databases and security services. Yet, sometimes all you need is a simple, powerful Linux machine. Luckily, there is a large list of options outside of the big three cloud provides that compete mostly on pricing (although some of them have a respectable services catalog).
In this post I will explore the available dedicated CPU instances in several cloud instances. The test will run Yet Another Bench Script on a clean machine with Ubuntu 22.04 LTS. I’m not touching any configuration on the machine and hope the image doesn’t contain any shenanigans. Sadly, I’ve only tested the low-end instances while what was more interesting for me was the most powerful one available. I did this because most cloud provides require manual unlocking of more powerful machines and I didn’t want to go through that process for each provider, maybe in the future. I hope to update this post anyway once in a while with more providers.
Provider | Machine Type | CPU Vendor | CPUs Count | RAM | Price |
---|---|---|---|---|---|
Hetzner | Dedicated vCPU | Intel | 2 | 8GB | €21.85 |
Hetzner | Dedicated vCPU | AMD | 2 | 8GB | €21.85 |
DigitalOcean | General Purpose | Intel | 2 | 8GB | $60.00 |
Linode | Dedicated CPU | AMD | 2 | 4GB | $36.00 |
Vultr | Dedicated CPU | AMD | 2 | 8GB | $60.00 |
Scaleway | Workload Optimized | AMD | 2 | 4GB | €40.00 |
Graphs
YABS have two benchmarks we are interested at: CPU and IO performance. I’m ignoring the internet benchmark because we mostly care about computation here.
CPU
First, let’s look at the CPU benchmark, which in our case is Geekbench 6. It’s important to remember that real world usage might vary but the benchmark can give us rough estimates. So without further ado, this is the graph:
The results are quite surpring. Scaleway won in the single-threaded test but lost to Vultr in the multi-threaded test. There’s also seem to be a huge gap between the worst performer and the best performers, more than 100% different between the best and worst in multi-threaded tests. But good performance is not enough, was it worth it? We can look at the points per dollar2 graph below:
Now Vultr instance is only doing okay at the fourth place while both Hetzner AMD and Intel instances are the winners. Interesting to note, that while in single-threaded performance, the Intel and AMD variants of Hetzner are kinda close, in the multi-threaded benchmark the AMD variant got a lot faster.
Read
Disk IO is also an important factor so let’s start with reads:
Vultr again is kinda good, a bit faster than the Intel variant of Hetzner. But the AMD variant of Hetzner is leaving dust for everyone else. While in small chunks it lost to Vultr, with 64k chunks it’s already faster than anyone else, at any size. Unlike other instances which get blocked by IOPS with 64k chunks, Hetzner AMD is still able to double it’s throughput with 512k chunks. Of course with the per dollar graph we won’t be surprised:
Hetzner is the cheapest but this time it’s also the fastest so the graph leaves no question if you care about Disk IO performance.
Write
While reading is very important, and the more common use case, there are some write-heavy applications, which are harder to horizontally scale, so disk write performance can be vital. Again, the winner is standing out of the crowd:
Hetzner again, is leaving dust for all the rest. And again, the performance per dollar will only make it more visible:
Table Results
Here are the results in a table format for whoever prefer to look at it that way:
Instance | Single Threaded (Absolute) | Multi Threaded (Absolute) |
---|---|---|
DigitalOcean | 925 | 1296 |
Hetzner Intel | 1121 | 1319 |
Hetzner AMD | 1503 | 2034 |
Vultr | 1654 | 3013 |
Linode | 816 | 1020 |
Scaleway | 1763 | 2190 |
Instance | read 4k | read 64k | read 512k | read 1m |
---|---|---|---|---|
DigitalOcean | 144.30 | 414.35 | 633.05 | 685.89 |
Hetzner Intel | 205.93 | 1210 | 1310 | 1350 |
Hetzner AMD | 233.43 | 1900 | 3990 | 3910 |
Vultr | 473.84 | 1610 | 1640 | 1850 |
Linode | 74.26 | 586.71 | 656.66 | 701.54 |
Scaleway | 20.52 | 332.11 | 396.52 | 391.58 |
Instance | write 4k | write 64k | write 512k | write 1m |
---|---|---|---|---|
DigitalOcean | 144.68 | 416.53 | 666.69 | 731.57 |
Hetzner Intel | 206.48 | 1210 | 1380 | 1440 |
Hetzner AMD | 234.05 | 1910 | 4210 | 4170 |
Vultr | 475.09 | 1620 | 1720 | 1970 |
Linode | 74.45 | 589.80 | 691.55 | 748.26 |
Scaleway | 20.54 | 333.86 | 417.59 | 417.66 |
Personal Observations
Some of the results are expected but there were some interesting results. A few notes I found surprising:
- Hetzner is the clear winner in term of bang for the buck. Depending on your workload, Vultr can give you better performance but it will cost you.
- The differences between different vendors are huge, you can double your performance with the same cores count and RAM simply by switching a cloud provider.
- Hetzner AMD instances are a lot faster than the comparative Intel instances. Like, unless AMD is doing something iffy to cheat in the Geekbench and fio tests, there are ridiculous differences.
- Vultr is freaking fast but when we look at performance per dollar, they are just okay. Of course, when we talk about larger instances, it can be important to utilize each core better.
Updates
2023-07-26 - Added Scaleway workload optimized