VPS Showdown – October 2020 – DigitalOcean vs. Linode vs. Vultr

Switching things up a bit for Spooktober (doot doot) by running some benchmarks
on the CPU-centric plans. Unfortunately, Lightsail and UpCloud are lacking this
sort of offering, so they are omitted this month.

It’s also worth noting that even though all of the plans are touting a dedicate
CPU, it’s not nearly as cut and dry of a comparison as the shared plans are.
Each provider has their own naming and definition around what is “dedicated CPU”
and in terms of what they offer.

As you’ll see below, that the storage and RAM offerings vary greatly. The
consistent metric is the CPU which I targeted plans that offered 2 cores.

Something else I had learned while doing this month’s post, is that DigitalOcean
offers dedicated CPUs outside of their CPU-Optimized plan, if you opt for
General Purpose droplet.

As per usual, I spun up 3 instances with each provider, running Ubuntu 20.04 LTS
and averaged the results.

Overview

  DigitalOcean Linode Vultr
Location New York 1 Newark, NJ New York (NJ)
Plan CPU-Optimized Dedicated CPU Dedicated Cloud
RAM 4 GB 4 GB 8 GB
CPU 2 Cores 2 Cores 2 Cores
Storage 25 GB SSD 80 GB SSD 120 GB SSD
Transfer 4 TB 4 TB 10 TB
Base Price $40/month $30/month $60/month
Backups $8/month $5/month N/A
Transfer Overage $0.01/GB $0.01/GB $0.01/GB
Load Balancer $10/month $10/month $10/month
Block Storage $0.10/GB $0.10/GB $0.10/GB
Object Storage Yes Yes Yes
Managed Databases Yes On 2020 Roadmap No
2FA/MFA Yes Yes Yes
One-click Apps Yes Yes Yes
Custom Images Yes Yes Yes

As mentioned, the plans actually vary quite a bit. It’s kind of hard to cut
through the noise since everybody uses their own marketing speak and have sliced
up their plans in a variety of different ways.

If going on this data alone, Linode is the least expensive, with Vultr offering
the most memory, storage and bandwidth.

Vultr also doesn’t offer automated backups the way they do with their shared
plans, so you would have to roll your own solution.

CPU Info

  DigitalOcean Linode Vultr
CPU MHz 2693.67 2666.66 3566.67
Cache Size (KB) 4096.00 512.00 16384.00
BogoMips 3591.67 3866.33 4734.00

CPU

  DigitalOcean Linode Vultr
Events per Second 1106.16 1531.07 1048.47
Minimum (ms) 0.87 0.64 0.88
Average (ms) 0.90 0.66 0.95
Maximum (ms) 5.83 5.06 2.46

Memory (Read)

  DigitalOcean Linode Vultr
Ops per Second 5094289.12 3975149.27 5817321.15
Minimum (ms) 0.00 0.00 0.00
Average (ms) 0.00 0.00 0.00
Maximum (ms) 0.40 5.48 0.87

Memory (Write)

  DigitalOcean Linode Vultr
Ops per Second 5100399.83 3971784.60 5700781.33
Minimum (ms) 0.00 0.00 0.00
Average (ms) 0.00 0.00 0.00
Maximum (ms) 0.17 2.13 0.78

File I/O

  DigitalOcean Linode Vultr
Reads per Second 2003.89 5762.53 5053.47
Writes per Second 1335.92 3841.68 3368.98
Fsyncs per Second 4284.09 12298.75 10787.80
Minimum (ms) 0.00 0.00 0.00
Average (ms) 0.13 0.06 0.05
Maximum (ms) 23.28 19.32 14.77

MySQL

  DigitalOcean Linode Vultr
Transactions per Second 2420.67 2692.67 3001.67
Queries per Second 48413.33 53853.33 60033.33
Minimum (ms) 2.55 2.83 2.34
Average (ms) 4.17 4.29 3.35
Maximum (ms) 63.29 20.48 29.17

Redis

  DigitalOcean Linode Vultr
PING_INLINE 89284.39 117996.66 108871.57
PING_BULK 88759.92 118254.15 105547.96
SET 90692.49 118869.29 110511.94
GET 88496.62 119651.53 113264.30
INCR 91005.31 119695.11 108119.24
LPUSH 92945.98 120347.78 110116.96
RPUSH 92202.63 122027.63 112728.57
LPOP 92722.92 121448.60 113522.00
RPOP 91732.82 118374.13 111238.60
SADD 91386.93 119803.38 110876.15
HSET 93438.05 124217.81 110985.49
SPOP 90229.81 119803.74 112000.44
LRANGE_100 (first 100 elements) 50068.06 58536.91 73253.70
LRANGE_300 (first 300 elements) 18699.89 21746.83 34034.45
LRANGE_500 (first 500 elements) 12414.00 14587.64 24051.02
LRANGE_600 (first 600 elements) 10017.71 11585.54 20027.79
MSET (10 keys) 66928.76 88184.31 109750.60

Apache Benchmark (against nginx on the servers)

  DigitalOcean Linode Vultr
Requests per Second 213.61 243.27 183.66
Time per Request (ms) (mean) 2394.50 2066.90 3039.19
Transfer Rate (Kbyte/sec) 179.19 204.07 154.07

Conclusion

Because this month’s comparison isn’t nearly as apples to apples as my
comparison of the shared plans, I’m not feeling too comfortable (or confident)
in saying one provider performed the very best.

Each had their strengths and weaknesses, and as always, you should make a
decision on a provider based around you and your application’s needs and not on
raw benchmarks alone.


If you have found these posts informative and helpful in searching for a new hosting provider, please consider using one of the links below when signing up:

  • DigitalOcean, new accounts receive $200 in credit (good for 60 days)
  • Linode, new accounts receive $100 in credit (also good for 60 days)
  • Vultr, new accounts also receive $100 in credit (good for only 14 days)
  • UpCloud, new accounts receive €25 in credit (yes, that’s in Euros)
Josh Sherman - The Man, The Myth, The Avatar

About Josh

Husband. Father. Pug dad. Musician. Founder of Holiday API, Head of Engineering and Emoji Specialist at Mailshake, and author of the best damn Lorem Ipsum Library for PHP.


If you found this article helpful, please consider buying me a coffee.