DigitalOcean vs Vultr vs UpCloud vs Linode Shootout: Part 1

DigitalOcean vs Vultr vs UpCloud vs Linode Shootout: Part 1

I'm looking for solid VPS hosting on a modern developer-friendly and budget-friendly cloud. I use AWS heavily at work for enterprise-grade development but the price is just too high to justify personal or small project use.

My Criteria

I'm looking for a good configuration for development and tinkering.

  • API-based cloud providers with Infrastructure-as-Code support (terraform)
  • Not AWS / Google Cloud / Azure
  • Low Cost for personal / home lab / startup use
  • Good price-to-performance ratio
  • Viability for running a Kubernetes cluster
  • Low-ping for almost-at-home latency (prefer Dallas area)

The Contenders

I'm looking for reputable, modern, developer-centered offerings that would serve an early startup well.

Digital Ocean

Digital Ocean (DO) is the big boy in the room. I have been using DO and have had a pretty flawless experience for the small things I've done. I feel like these are my people, they are legit developers building for developers. They are highly active in the Cloud Native community, and have a compelling Kubernetes zero-cost control plane offering which works quite well.

So why am I looking elsewhere? Although DO has a great value proposition, their hardware has always felt a little lacking for the droplets. I have a nagging feeling that I am overpaying for the hardware to pay for all the software development they are doing.

Also, their region selection for the US is terrible. As I'm located in the Dallas area, I'd like to see some more central locations, rather than just San Francisco and New Jersey (NY). Roundtrip latency for development is too high.

Special Offer: $100 in DigitalOcean credits for new users!

Vultr

I don't know much about Vultr, but have seen some good chatter about them so I've decided to take them for a spin.

Special Offer: $100 in Vultr credits for new users!

UpCloud

This is another provider that is new to me, but I have seen some good things about them. They claim to provide the highest price to performance ratio among AWS, DigitalOcean, Vultr, and Linode.

It appears one of UpCloud's strengths is cross-region connectivity options. Compared to other vendors in this class, it looks like they have a pretty strong emphasis in private connectivity.

Special Offer: $25 in UpCloud credits for new users!

Linode

Technically, I've been a customer since 2012, but haven't done anything with Linode for years. Linode has been around for a while in the VPS space, even predating AWS, but it recently has made some interesting advancements in becoming a legit cloud provider.

What is really compelling me to take a second look is they just released their managed Kubernetes service with zero-cost control plane. It looks like they are really showing up to play in the Cloud Native space, but still well behind Digital Ocean in that respect.

Special Offer: $100 in Linode credits for new users!

Why Not Hosting Provider X?

There are many hosting providers that have not made this list for good reason. I am only considering trusted companies with good track records. I also am excluding low-end hosting companies that do not provide modern cloud amenities such as API-based provisioning and hourly billing.

Single Instance Evaluation

I targeted a 2 vCPU option, since that's the smallest I would consider for a node that I might run Kubernetes on. I was happily surprised how well the providers have aligned their prices, this makes comparison very straightforward.

Spec DigitalOcean Vultr UpCloud Linode
Name Basic 80 GB SSD Simple Linode 4GB
vCPU 2 2 2 2
Memory 4 GB 4 GB 4 GB 4 GB
SSD 80 GB 80 GB 80 GB 80 GB
Bandwidth 4 TB 3 TB 4 TB 4 TB
Location San Francisco Dallas Chicago Dallas
Price $20/mo. $20/mo. $20/mo. $20/mo.

Internet Speed

Using fast speed test to check internet download speeds. There are obviously lots of variables that can influence this measurement, I just wanted a general idea of speeds to make sure they weren't terrible.

Spec DigitalOcean Vultr UpCloud Linode
Speed 2.5Gbps (fail) 850Mbps 1.5 Gbps

For some reason Vultr failed this test. Perhaps they have some network restrictions blocking this test.

CPU Test

We need to identify and test our CPUs. A quick look at the CPU info yields the following information about each system.

Stat DigitalOcean Vultr UpCloud Linode
vCPU 2 2 2 2
Chip Intel(R) Xeon(R) CPU E5-2650 v4 @ 2.20GHz Intel Xeon Processor (Skylake, IBRS) Intel(R) Xeon(R) Gold 6136 CPU @ 3.00GHz AMD EPYC 7542 32-Core Processor
Clock 2.2GHz 2.6GHz 3.0GHz 2.9GHz
Events/s 1487 2063 2333 3291

The surprise here is that the Linode with the AMD EPYC chip outperformed the UpCloud Intel Xeon processor.

Memory

DigitalOcean Vultr UpCloud Linode
Speed 4710 MiB/sec 4446 MiB/sec 4163 MiB/sec 5856 MiB/sec

File I/O

DigitalOcean Vultr UpCloud Linode
Rand Read 81 MiB/s 122 MiB/s 101 MiB/s 150 MiB/s
Rand Write 54.04 MiB/s 81.99 MiB/s 67.77 MiB/s 100.44 MiB/s
Seq Read 7277 MiB/s 6482 MiB/s 6325 MiB/s 12702 MiB/s
Seq Write 233 MiB/s 238 MiB/s 220 MiB/s 348 MiB/s

Geekbench

I noticed UpCloud touts its Geekbench score, so I thought I'd replicate their results on the node size I am targeting. I've picked a few metrics from this benchmark which represent the kinds of operations I expect to run.

Overall Score

| | DigitalOcean | Vultr | UpCloud | Linode |
| --- | --- | --- | --- | --- | --- |
| Single Core Score | 564 | 763 | 935 | 889 |
| Multi-Core Score | 1079 | 1528 | 1785 | 1722 |

Single Core Scores

DigitalOcean Vultr UpCloud Linode
Crypto Score 848 1068 1293 1627
Integer Score 511 699 881 770
Floating Point Score 631 850 991 1023
Text Compression 478 546 823 775
Image Compression 574 857 960 861
SQLite 526 696 917 681
Clang 533 754 989 887

Multi-Core Scores

DigitalOcean Vultr UpCloud Linode
Crypto Score 1744 2281 2477 2932
Integer Score 969 1425 1658 1514
Floating Point Score 1207 1626 1945 1970
Text Compression 963 1158 1318 1488
Image Compression 1223 1659 1895 1697
SQLite 827 1485 1770 1369
Clang 1106 1568 1966 1687

Price to Performance Results

Obviously any benchmarking is fraught with potential problems when comparing different systems, but this is the best way to try to get an apples-to-apples comparison of performance without setting up complex workloads in all environments.

I'm going to ignore the internet speed test, since it has a lot of external variables and isn't really a well-controlled test.

Relative Measures

I've plotted the performance for each test relative to the lowest performing system.

To ensure we don't give excess weight to any one component, I'm averaging the I/O scores, and Geekbench scores. These four components will be averaged to produce our final comparison score: CPU, Memory, I/O and Geekbench.

Overall System Performance Comparison

Averaging all those scores, this is my back-of-the-napkin comparison of the clouds based on performance of similar spec'd machines.

DigitalOcean Vultr UpCloud Linode
Ratio 1.0x 1.22x 1.28x 1.68x

The ordering I gave to these items before I ran the tests was apparently a foreshadowing of the end result.

Price to Performance Ratio

Since these systems happen to all be priced the same ($20), the ratios above can be used to illustrate relative price to performance.

The numbers show a 20-30% better price to performance ratio for Vultr and UpCloud compared to DigitalOcean. And a whopping 68% better price-to-performance ratio for Linode.

What this means in practice is you'll be spending more money at Digital Ocean for the same performance elsewhere. This performance difference shouldn't be much of a surprise since after getting CPU details, we discovered that our DO node was a 2.2GHz clock speed where the others were at 2.6GHz-3.0GHz.

To get comparable performance, you probably will have to run one size larger on DO when compared to the others. This makes DO more expensive for the actual hardware.

It just illustrates that a vCPU is not an industry standard measure, and you have to know what you are buying to get the best deal.

Price Isn't Everything

We shouldn't overplay the importance of price. DigitalOcean has a very compelling portfolio of products that go far beyond raw performance. Similar to AWS, Azure, and Google Cloud, you pay a premium for high-quality production ready solutions.

If money was no object, we wouldn't be having this discussion now, and I'd just pay for AWS or Google Cloud. But the point of this exercise is to see how thrifty we can be and still build a solid product.

Next Steps:  Feature Analysis

This series continues in Part 2 where I will continue my evaluation of these options by looking at the total offering and start to make some eliminations.

Appendix: Test Methods

If you'd like to reproduce my results, this section will provide you with the commands.

Install Tools

The following script sets up the dependencies for the test. All nodes were loaded with Ubuntu 20.04 LTS and had all updates installed and a reboot performed prior to testing.

#!/bin/bash

cd ~
apt update
apt upgrade -y
apt install -y sysbench
wget https://github.com/ddo/fast/releases/download/v0.0.4/fast_linux_amd64 -O fast
chmod +x fast
wget https://cdn.geekbench.com/Geekbench-5.3.1-Linux.tar.gz
tar zxvf Geekbench-5.3.1-Linux.tar.gz

Commands

Fast

./fast

Sysbench

CPU

sysbench --test=cpu --threads=2 run

Memory

sysbench --test=memory --threads=2 --time=60 run

File I/O

sysbench --test=fileio --threads=2 --time=60 --events=0 --file-test-mode=rndrw prepare

sysbench --test=fileio --threads=2 --time=60 --events=0 --file-test-mode=seqrd run

sysbench --test=fileio --threads=2 --time=60 --events=0 --file-test-mode=seqrw run

Geekbench

Geekbench-5.3.1-Linux/geekbench5

Subscribe to kekoav

Sign up now to get access to the library of members-only issues.
Jamie Larson
Subscribe