VPS Showdown – June 2024 – DigitalOcean vs. Linode vs. Vultr

School’s out and summer is in full swing. As mentioned last month, I’m trying something a bit different. In a vain attempt to get a more “apples to apples” comparison, I went with AMD processors for my instances. This ended up resulting in instances priced between $5 and $7, with no two providers at the same exact price.

Additionally, Linode (Akamai Connected Cloud) was the only provider only offering SSDs. DigitalOcean and Vultr touted NVMe when opting for an AMD processor. Linode did make a huge commitment to NVMe for their block storage offering a while back. Sadly, I couldn’t find any information supporting this across their entire product line.

As always, I spun up 3 instances with each provider. Each one running Ubuntu 24.04 LTS, and I averaged the results where appropriate.

Overview – DigitalOcean vs. Linode vs. Vultr

Linux DistroUbuntu 24.04 LTS
Kernel Version6.8.0
MySQL Version8.0.36
Redis Version7.0.15
DigitalOceanLinodeVultr
LocationNew York 1Newark, NJNew York (NJ)
Monthly Price$7/month$5/month$6/month
Hourly Price$0.01/hour$0.0075/hour$0.009/hour
RAM1 GB1 GB1 GB
CPU1 Core1 Core1 Core
Storage25 GB25 GB25 GB
Storage TypeNVMeSSDNVMe
Transfer1 TB1 TB1 TB
Transfer Overage$0.01/GB$0.01/GB$0.01/GB
Backups$1.4/month$2/month$1.2/month

CPU Info

Model Name
DigitalOcean – All InstancesDO-Premium-AMD
Linode – Instance #1AMD EPYC 7713 64-Core Processor
Linode – Instance #2AMD EPYC 7542 32-Core Processor
Linode – Instance #3AMD EPYC 7713 64-Core Processor
Vultr – Instance #1AMD EPYC-Rome Processor
Vultr – Instance #2AMD EPYC-Milan Processor
Vultr – Instance #3AMD EPYC-Rome Processor
DigitalOceanLinodeVultr
CPU MHz1,996.252,300.002,414.16
Cache Size (KB)512.00512.00512.00
BogoMips2,661.672,666.332,661.67

CPU

DigitalOceanLinodeVultr
Events per Second1,371.922,742.253,448.21
Minimum (ms)0.640.380.26
Average (ms)0.730.400.29
Maximum (ms)4.166.097.62

Memory

Read

DigitalOceanLinodeVultr
Ops per Second4,129,563.175,243,553.054,830,662.99
Minimum (ms)0.000.000.00
Average (ms)0.000.000.00
Maximum (ms)0.442.469.64

Write

DigitalOceanLinodeVultr
Ops per Second4,214,689.394,995,909.414,973,296.50
Minimum (ms)0.000.000.00
Average (ms)0.000.000.00
Maximum (ms)0.342.261.45

File I/O

DigitalOceanLinodeVultr
Reads per Second1,432.362,297.782,231.56
Writes per Second954.881,531.861,487.70
Fsyncs per Second3,062.434,904.474,765.90
Minimum (ms)0.000.000.00
Average (ms)0.180.110.12
Maximum (ms)15.8713.5420.47

MySQL

Read Only

DigitalOceanLinodeVultr
Transactions per Second3,681.004,884.004,925.33
Queries per Second58,896.0078,144.0078,805.33
Minimum (ms)1.601.311.18
Average (ms)2.722.072.15
Maximum (ms)12.6212.6126.95

Write Only

DigitalOceanLinodeVultr
Transactions per Second1,595.334,277.333,096.67
Queries per Second9,572.0025,664.0018,580.00
Minimum (ms)2.121.091.28
Average (ms)6.312.363.31
Maximum (ms)57.4317.2641.28

Read Write

DigitalOceanLinodeVultr
Transactions per Second828.331,741.331,555.67
Queries per Second16,566.6734,826.6731,113.33
Minimum (ms)4.982.963.13
Average (ms)12.085.747.02
Maximum (ms)55.7449.6484.40

Redis

DigitalOceanLinodeVultr
PING_INLINE28,904.0138,261.4234,366.39
PING_MBULK28,397.3738,252.0334,277.52
SET29,166.7836,896.6833,321.11
GET30,296.6535,538.7133,249.63
INCR31,137.0836,969.3034,328.16
LPUSH31,177.7937,683.5534,461.86
RPUSH30,001.7137,994.5033,435.80
LPOP28,559.2338,248.3833,474.69
RPOP27,082.2938,410.3135,596.15
SADD29,443.5138,496.0435,094.62
HSET30,940.8937,143.3334,481.71
SPOP31,369.5336,288.1335,153.18
LRANGE_100 (first 100 elements)19,203.0826,618.3422,871.77
LRANGE_300 (first 300 elements)11,436.8414,994.2912,537.24
LRANGE_500 (first 500 elements)7,528.9610,560.649,619.92
LRANGE_600 (first 600 elements)6,732.239,725.538,340.94
MSET (10 keys)26,358.2034,043.2332,229.00

Conclusion

The first thing to jump out was that DigitalOcean continues to tout their generically named CPU. I’m not a fan, as this gives no indication of what you’re actually running. Also, both Linode and Vultr ended up having different processors between unique instances.

Friendly reminder, it’s always good to spin up multiple instances with a provider before committing to one. This allows you the chance to compare the hardware the instances are running on. There can definitely be variances, even in the same data center.

Aside from that, the results were about where I’d expect them to be. Linode and Vultr duking it out, depending on the category. Since it seemed like Linode’s storage offering may be slower (SATA vs NVMe) I was surprised to see Linode pull out in the file I/O category.

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.