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

Josh Sherman
8 min read
VPS Showdown
HEADS-UP: A ton has changed since this post was originally published!
Why not check out the latest comparison?

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.

Or if you’re feeling really generous, show off your favorite tech stack by picking up a shirt!

Join the Conversation

Good stuff? Want more?

Weekly emails about technology, development, and sometimes sauerkraut.

100% Fresh, Grade A Content, Never Spam.

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.

Currently Reading

Parasie Eve

Previous Reads

Buy Me a Coffee Become a Sponsor

Related Articles