Disk/CPU performance: Linode vs DigitalOcean vs UpCloud vs Hetzner vs Terrahost vs Scaleway
The contenders
Hetzner - https://www.hetzner.com/
Linode - https://www.linode.com/
DigitalOcean - https://www.digitalocean.com/
UpCloud - https://upcloud.com/
Terrahost - https://terrahost.no/
Scaleway - https://www.scaleway.com/en/
First benchmark: https://yabs.sh
curl -sL yabs.sh | bash -s -- -r9
You can find the complete results here:
Disk performance
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
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
curl -s wget.racing/nench.sh | bash; curl -s wget.racing/nench.sh | bash
Conclusions
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