has_many :codes
Tips and walkthroughs on web technologies and digital life

Disk/CPU performance: Linode vs DigitalOcean vs UpCloud vs Hetzner vs Terrahost vs Scaleway

Published  

I've been a happy Hetzner customer for a few years now, but I decided to benchmark other providers as well, out of curiosity, so in this post I will share the results. There are some surprises here, but the goal of the tests was to see what kind of performance these providers can offer for around $40/mo. This post is all about numbers, so if you want more information about these providers I suggest you do your research before buying because performance is not the only important thing when choosing a provider. But benchmarking for a comparison is a bit difficult because you need to have an account with each provider. 

The contenders

Hetzner - https://www.hetzner.com/

Hetzner is by far the cheapest provider in the group, so in this case I have included three different options in the test all under or around $40/mo:

1 - Cloud server CPX31: VPS with 4 shared vCores, 8GB of RAM and 160GB of NVME storage. Price: €12.40/mo

2 - Cloud server CCX22: VPS with 4 dedicated vCores, 16GB of RAM and 160GB of NVME storage. Price: €34.90/mo

3 - Dedicated server AX41-NVME: this is the only dedicated server in the group and I have included it to show you what you can get from Hetzner for the same money compared to the other providers. This server has 6 Ryzen 5 3600 cores (so 12 vCores, for a comparison with the others), 64GB of RAM and 2x 512GB NVME storage in RAID 1. Keep these numbers in mind, as well as the price: €34.00/mo (Helsinki, Finland location, otherwise €39.00 / mo in Falkenstein, Germany; normally there's a setup fee but it has been waived for the month of September).

Linode - https://www.linode.com/

Tested: cloud server with 4 shared vCores, 8GB of RAM and 160GB of SSD storage. Price: $40/mo.

DigitalOcean - https://www.digitalocean.com/

Tested: cloud server with 4 shared vCoes, 8GB of RAM and 160GB of SSD storage. Price: $40/mo.

UpCloud - https://upcloud.com/

Tested: cloud server with 4 shared vCoes, 8GB of RAM and 160GB of SSD storage. Price: $40/mo.

Terrahost - https://terrahost.no/

Terrahost is perhaps the smallest provider of the group, but I tested it after reading some positive reviews in some forums, and in fact I was totally impressed. Tested: VPS with 4 shared vCores, 8GB of RAM and 160GB of NVME storage. Price: $40/mo. Please note that this virtual server comes with Ryzen 5950X cores, so it's not a surprise to see how high the CPU scores are for this one, as we'll see in a minute.

Scaleway - https://www.scaleway.com/en/

Tested: cloud server with 4 shared vCores, 12GB of RAM and 120GB of SSD storage. This is a particular one, because Scaleway now is the most expensive in the group after raising their prices not long ago, so I had to pick a DEV instance to remain within the budget. 

First benchmark: https://yabs.sh

I choose two very popular benchmarking scripts often used to test servers. For the first one I have used this command:

curl -sL yabs.sh | bash -s -- -r9

You can find the complete results here:

Linode: https://gist.github.com/vitobotta/7604d7a38e96824a5d0b6d398498433e

DigitalOcean: https://gist.github.com/vitobotta/f7fa54900d47b8e6ed3e4681499fdbb7

UpCloud: https://gist.github.com/vitobotta/416215a4906e689192b73163f696556f

Hetzner, cloud server with shared cores: https://gist.github.com/vitobotta/135c35db9938d94298a5c06f66029d42

Hetzner, cloud server with dedicated cores: https://gist.github.com/vitobotta/675a704a69cd5c12bfc5a7921a55a4d3

Hetzner, dedicated server: https://gist.github.com/vitobotta/3d943ce63208046c8e5d9c967ea3daf6

Terrahost: https://gist.github.com/vitobotta/58ca0e0e97b583c86951721b86a56cb9

Scaleway: https://gist.github.com/vitobotta/07c430e72bf3c5f9d48b8b73266043b8

Disk performance

Please note that all the charts in this post must be interpreted as "higher is better", with no exception.

1. fio disk block size 4K - read throughput

As you can see, the most impressive is Terrahost. The difference with the others - excluding the dedicated server from Hetzner - is massive. I suspect that my virtual servers ended up on brand new hosts with very few or no other customers, as suggested by the names of the hosts (host1, host2, host3) and the sequential IDs of the virtual servers. So it's totally likely that the performance might be different with more load on the hypervisors, but the difference with the others is so big that I am pretty sure the performance would be awesome anyway.

The one which disappointed me here is UpCloud, because they claim to have the fastest cloud servers in the world and the fastest disks with their MaxIOPS technology. Well, to be honest I don't see this here. I mean their servers are still pretty fast, but definitely not the fastest.

2. fio disk block size 4K - read IOPS

Again, Terrahost is super impressive, followed by the dedicated server from Hetzner. UpCloud is disappointing again because of their claim, but not bad. DigitalOcean and Linode are also very disappointing, considering how popular they are.

3. fio disk block size 4K - write throughput

Same story for write throughput with 4k block size.

4. fio disk block size 4K - write IOPS

Again, no difference.

5. fio disk block size 512K - read throughput

With a larger block size Hetzner's dedicated server takes the lead and is by far the best performing. Hetzner's virtual server with dedicated cores does pretty well too, as well as Terrahost.

6. fio disk block size 512K - read IOPS

Here surprisingly Hetzner's virtual server with shared cores performs better than all the other virtual servers and not far from the dedicated server. UpCloud is again very, very disappointing, as well as DigitalOcean. I am not too surprised about Scaleway because to stay within the budget I had to choose a DEV instance, but still in this case it does better than UpCloud and DigitalOcean.

7. fio disk block size 512K - write throughput

Again very solid performance from Hetzner's cloud server with shared cores, surprisingly better than the one with dedicated cores. In IOPS Linode performs much better.

8. fio disk block size 512K - write IOPS

This was the last test for disks I created a graph, but the trend is similar with a 1M block size.

CPU performance

For the CPU performance I find particularly interesting the Geekbench 5 score. 

Single core

Here you can see what I meant about Terrahost. The Ryzen 5950X is a monster and it shows, even though these are shared cores. The single core performance is better than that of Hetzner's dedicated server which has a Ryzen 3600 CPU, so it's expected if you don't take into account the shared vs dedicated difference for one moment - like I said the Terrahost hypervisors were likely new/empty. Hetzner's cloud servers were also impressive, considering that they beat UpCloud and cost much less. Surprisingly, the DEV instance from Scaleway did better than DigitalOcean and Linode, which is kinda weird and unexpected, because The DynaBlogger Rails app seemed slower on Scaleway when I tested it.

Multi core

Not surprisingly, the dedicated server's multi core score is higher than that of the Terrahost virtual servers, because it has 6 cores vs 4. Terrahost is still impressive though. I was surprised to see Hetzner's cloud server with shared cores do better than the one with dedicated cores. UpCloud did better in this benchmark than in others, and DigitalOcean as well as Linode were quite disappointing.

Second test: nench.sh

For this test I didn't create graphs because the trend was similar, but you can find the results at the links below. The command I have used is 

curl -s wget.racing/nench.sh | bash; curl -s wget.racing/nench.sh | bash

Linode: https://gist.github.com/vitobotta/561c9ffab8992b625390965c2e54f9a9

DigitalOcean: https://gist.github.com/vitobotta/f7fa54900d47b8e6ed3e4681499fdbb7

UpCloud: https://gist.github.com/vitobotta/416215a4906e689192b73163f696556f

Hetzner, cloud server with shared cores: https://gist.github.com/vitobotta/135c35db9938d94298a5c06f66029d42

Hetzner, cloud server with dedicated cores: https://gist.github.com/vitobotta/675a704a69cd5c12bfc5a7921a55a4d3

Hetzner, dedicated server: https://gist.github.com/vitobotta/3d943ce63208046c8e5d9c967ea3daf6

Terrahost: https://gist.github.com/vitobotta/58ca0e0e97b583c86951721b86a56cb9

Scaleway: https://gist.github.com/vitobotta/07c430e72bf3c5f9d48b8b73266043b8

Conclusions

It's difficult to choose a server these days given the availability of many different providers, but I wanted to see what some of them would offer for roughly the same money. I actually tested many more providers before, but unfortunately I didn't take notes. Given the results of the tests I am sharing here, I stayed with Hetzner, but now I have switched from their cloud servers to their dedicated ones. The AX41-NVME servers offer awesome performance and A TON of resources, compared with the others, for the same money. And they are dedicated, meaning more stable/predictable performance so you don't have to worry about noisy neighbours. 

Among the cloud servers I would still pick Hetzner because the performance/price ration is just so much better than that of the others. DigitalOcean, Linode, UpCloud and Terrahost offer 4 shared vCores, 8GB of RAM and 160GB of storage for $40/mo, while Hetzner offers the same specs for just €12.40/mo, which is roughly $14/mo. I mean, what a difference. Hetzner is unbeatable from a performance/price standpoint. And even more so if you consider how much resources you get with a dedicated server for the same price others offer virtual servers with shared resources. Just incredible. Having said that, I almost switched completely to Terrahost because of the awesome performance in general, especially the CPU. Unfortunately I had some weird issues with etcd; for some reason I couldn't figure out, etcd performance was very poor despite the disk performance looked absolutely stunning otherwise. So I was sad it didn't work out in the end, but I'd like to take the opportunity to thank Andreas from support for his help and for being very friendly.

But I am happy anyway that I stayed with Hetzner in the end and switched to dedicated servers. I now have 3 dedicated servers to run DynaBlogger and and many other apps, and I still have so many resources available it's ridiculous.

But I like managing everything myself in Kubernetes, so I don't use any managed services. Therefore all I need is compute. If you prefer using managed databases, or things like managed Kubernetes, then DigitalOcean or Scaleway would be a better option unless you have the cash to pay the ridiculous fees of AWS/GCP/Azure (or need more managed services that are not available with DO or SCW). Also, the location may be important. Hetzner has only locations in Europe (Germany and Finland), as so do Scaleway (France, Netherlands, Poland) and Terrahost (Norway).

So if latency is a concern you may want to go with a provider that offers a location closer to the majority of your users. My servers are now in Falkenstein, Germany, so it's great for Europe but latency is decent for US users as well. YMMV.

I hope that these tests can help you choose a good solution for your projects. Of course keep in mind that most of the servers tested here have shared resources, so it is totally possible that you get different results if you repeat the tests yourself. Nevertheless, these figures should give you an idea of what kind of performance to expect from these providers. Cheers

Vito Botta

I am a passionate web developer based in Espoo, Finland. I am the founder and developer of www.dynablogger.com, a new blogging platform. Besides computing, I love boxing, martial arts, and good food!
© Vito Botta
powered by DynaBlogger