So 2021 was interesting. Not going to bore you with the details of my life, but
I am ready to bore you with the details of the world of virtual private servers!
I forgot to do my “Christmas wish list” last month as I have in the past, but
it’s never too late, I say!
So in doing these posts, I spin up each server manually instead of using
Terraform or some other infrastructure as code system. The reason for this is
because, even though I don’t report on it directly, I like to see what’s going
on with each provider’s web interface. Linode’s grown up a ton and if I was
scripting everything, I would have missed out on these updates.
That being said, my biggest gripe that I really wish would be implemented in the
next year would be the ability to spin up multiple instances at once on both
Linode and UpCloud. DigitalOcean, Vultr and even Lightsail offer the ability to
enter a quantity and you’re off to the races.
Worth nothing that this isn’t a feature that I need in my day to day server
administration duties, but something that would save me a bit of time every
month while doing those posts.
My own selfish desires aside, it’s been really great to see the different
providers grow over the last few years of monthly posts. Sounds like managed
databases are still on their way from Linode, which would leave Vultr as the
only provider without them.
If I had to attempt to predict the future, now that managed databases are
becoming a standard offering, I suspect container hosting will be the next big
feature we’ll see become more standard.
And if I had to go full Nostradamus, I’d say that at some point we’re going to
start seeing message queues (like AWS SQS) starting to show up at some point.
Message queues are extremely important for most major applications, especially
as they scale up and one of those things that AWS does really well, but nobody
else seems to be addressing.
Enough putting the pressure on the providers, there’s also a few things on my
wishlist (more like TODO list) that I’d like to get implemented this year.
First and foremost, with doing these posts monthly, I’d really like to start
showing some month-over-month and year-over-year data comparisons. The whole
point of doing these monthly is to see how things are going, and without any
sort of context it’s hard to say if things are getting better or worse.
The other thing I really want to get into the mix are some additional tests.
Getting MongoDB and PostgreSQL into the mix would be great and at some point,
maybe even starting to compare the managed database offerings from each
provider.
On top of databases, I’m curious to try my hand at getting something like
Node.js and PHP benchmarks in there. I know there’s other languages out there,
but those are the 2 I do 99% of my coding with.
Trying to figure out some way to test a real world application and/or WordPress
install would be pretty cool too.
But that’s all for a later date, this month is a bit more of the same. As per
the usual, I’ve spun up 3 server instances with each provider at the $5 price
point as well as at the “premium” $6 per month price point as well.
Each server is in or around the New York / New Jersey area and is running Ubuntu
20.04 LTS. Stats are then averaged where applicable.
Speaking of Ubuntu, as we’re back in an even numbered year, there will be a new
LTS release of Ubuntu for our testing pleasure. That will drop in April, but it
tends to take AWS a bit of time before they offer it up. In the past I’ve simply
omitted Lightsail for a while, but I think this year I’ll keep it in the mix,
but running the older LTS version of Ubuntu.
$5 VPS Showdown – DigitalOcean vs. Lightsail vs. Linode vs. UpCloud vs. Vultr”
Overview
DigitalOcean | Lightsail | Linode | UpCloud | Vultr | |
---|---|---|---|---|---|
Location | New York 1 | Virginia, Zone A | Newark, NJ | US-NYC1 | New York (NJ) |
Distro | Ubuntu 20.04 LTS | Ubuntu 20.04 LTS | Ubuntu 20.04 LTS | Ubuntu 20.04 LTS | Ubuntu 20.04 LTS |
Kernel | 5.4.0 | 5.4.0 | 5.4.0 | 5.4.0 | 5.4.0 |
MySQL | 8.0.27 | 8.0.27 | 8.0.27 | 8.0.27 | 8.0.27 |
Redis | 5.0.7 | 5.0.7 | 5.0.7 | 5.0.7 | 5.0.7 |
Base Price | $5/month | $5/month | $5/month | $5/month | $5/month |
Hourly Price | $0.007/hour | $0.007/hour | $0.0075/hour | $0.007/hour | $0.007/hour |
RAM | 1 GB | 1 GB | 1 GB | 1 GB | 1 GB |
CPU | 1 Core | 1 Core | 1 Core | 1 Core | 1 Core |
Storage | 25 GB | 40 GB | 25 GB | 25 GB | 25 GB |
Storage Type | SSD | SSD | SSD | SSD | SSD |
Transfer | 1 TB | 2 TB | 1 TB | 1 TB | 1 TB |
Transfer Overage | $0.01/GB | $0.09/GB | $0.01/GB | $0.01/GB | $0.01/GB |
Backups | $1/month | $2/month | $2/month | $1/month | $1/month |
DNS | Yes | Yes | Yes | No | Yes |
Firewall | Yes | Yes | Yes | Yes | Yes |
Load Balancer | $10/month | $18/month | $10/month | No | $10/month |
Block Storage | $0.1/GB | $0.1/GB | $0.1/GB | $0.223/GB | $0.1/GB |
Object Storage | $5/month | $0.023/GB | $5/month | $5/month | $5/month |
Managed Databases | MongoDB, MySQL, PostgreSQL, Redis | MySQL, PostgreSQL | Coming soon! | MySQL, PostgreSQL | No |
2FA/MFA | Yes | Yes | Yes | Yes | Yes |
One-click Apps | Yes | Yes | Yes | No | Yes |
Custom Images | Yes | No | Yes | Yes | Yes |
Kubernetes | Yes | Yes | Yes | No | Yes |
Container Registry | Yes | Yes | No | No | No |
Container Hosting | Yes | Yes | No | No | No |
CPU Info
Model Name | |
---|---|
DigitalOcean – All Instances | DO-Regular |
Lightsail – All Instances | Intel(R) Xeon(R) CPU E5-2676 v3 @ 2.40GHz |
Linode – Instance #1 | AMD EPYC 7501 32-Core Processor |
Linode – Instance #2 | AMD EPYC 7601 32-Core Processor |
Linode – Instance #3 | AMD EPYC 7542 32-Core Processor |
UpCloud – All Instances | AMD EPYC 7542 32-Core Processor |
Vultr – All Instances | Intel Core Processor (Haswell, no TSX, IBRS) |
DigitalOcean | Lightsail | Linode | UpCloud | Vultr | |
---|---|---|---|---|---|
CPU MHz | 2,195.53 | 2,399.91 | 2,366.66 | 2,894.56 | 2,400.00 |
Cache Size (KB) | 4,096.00 | 30,720.00 | 512.00 | 512.00 | 16,384.00 |
BogoMips | 2,728.33 | 3,200.33 | 3,266.33 | 3,859.67 | 3,199.67 |
CPU
DigitalOcean | Lightsail | Linode | UpCloud | Vultr | |
---|---|---|---|---|---|
Events per Second | 768.50 | 760.69 | 1,313.53 | 1,621.81 | 767.38 |
Minimum (ms) | 1.21 | 1.25 | 0.62 | 0.59 | 1.17 |
Average (ms) | 1.35 | 1.31 | 0.77 | 0.62 | 1.30 |
Maximum (ms) | 5.73 | 5.36 | 11.37 | 2.41 | 5.79 |
Memory
Read
DigitalOcean | Lightsail | Linode | UpCloud | Vultr | |
---|---|---|---|---|---|
Ops per Second | 3,734,465.91 | 524,874.22 | 4,170,829.76 | 5,395,204.62 | 3,597,467.35 |
Minimum (ms) | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
Average (ms) | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
Maximum (ms) | 1.14 | 1.71 | 4.17 | 0.26 | 5.58 |
Write
DigitalOcean | Lightsail | Linode | UpCloud | Vultr | |
---|---|---|---|---|---|
Ops per Second | 3,676,548.77 | 521,000.10 | 4,067,785.41 | 5,405,717.22 | 3,667,204.28 |
Minimum (ms) | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
Average (ms) | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
Maximum (ms) | 0.49 | 2.75 | 4.83 | 0.23 | 3.28 |
File I/O
DigitalOcean | Lightsail | Linode | UpCloud | Vultr | |
---|---|---|---|---|---|
Reads per Second | 1,651.69 | 916.70 | 2,163.49 | 2,551.48 | 2,004.72 |
Writes per Second | 1,101.11 | 611.13 | 1,442.32 | 1,700.97 | 1,336.50 |
Fsyncs per Second | 3,531.96 | 1,961.12 | 4,620.14 | 5,449.84 | 4,281.38 |
Minimum (ms) | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
Average (ms) | 0.18 | 0.29 | 0.13 | 0.10 | 0.13 |
Maximum (ms) | 11.41 | 37.07 | 28.72 | 6.09 | 6.16 |
MySQL
Read Only
DigitalOcean | Lightsail | Linode | UpCloud | Vultr | |
---|---|---|---|---|---|
Transactions per Second | 4,027.00 | 4,910.00 | 5,612.67 | 8,325.00 | 4,969.00 |
Queries per Second | 64,432.00 | 78,560.00 | 89,802.67 | 133,200.00 | 79,504.00 |
Minimum (ms) | 1.67 | 1.72 | 1.27 | 0.95 | 1.51 |
Average (ms) | 2.62 | 2.03 | 1.84 | 1.20 | 2.01 |
Maximum (ms) | 15.14 | 33.78 | 16.22 | 6.30 | 20.99 |
Write Only
DigitalOcean | Lightsail | Linode | UpCloud | Vultr | |
---|---|---|---|---|---|
Transactions per Second | 2,594.67 | 1,675.33 | 4,055.00 | 4,198.33 | 3,277.33 |
Queries per Second | 15,568.00 | 10,052.00 | 24,330.00 | 25,190.00 | 19,664.00 |
Minimum (ms) | 1.77 | 3.17 | 1.16 | 1.37 | 1.54 |
Average (ms) | 4.45 | 5.99 | 3.38 | 2.38 | 3.05 |
Maximum (ms) | 34.46 | 25.52 | 48.69 | 14.16 | 20.08 |
Read Write
DigitalOcean | Lightsail | Linode | UpCloud | Vultr | |
---|---|---|---|---|---|
Transactions per Second | 1,343.67 | 1,090.33 | 2,230.33 | 2,535.67 | 1,671.33 |
Queries per Second | 26,873.33 | 21,806.67 | 44,606.67 | 50,713.33 | 33,426.67 |
Minimum (ms) | 4.47 | 5.51 | 2.71 | 2.58 | 3.64 |
Average (ms) | 8.66 | 9.18 | 4.69 | 3.94 | 5.98 |
Maximum (ms) | 37.06 | 113.01 | 34.12 | 15.48 | 25.63 |
Redis
DigitalOcean | Lightsail | Linode | UpCloud | Vultr | |
---|---|---|---|---|---|
PING_INLINE | 32,269.90 | 45,936.33 | 63,185.95 | 63,946.56 | 25,434.83 |
PING_BULK | 35,453.66 | 45,469.22 | 57,432.57 | 61,944.78 | 23,807.46 |
SET | 37,460.91 | 45,502.19 | 59,899.40 | 65,817.06 | 25,525.81 |
GET | 36,743.77 | 45,461.89 | 58,894.37 | 63,445.63 | 24,495.00 |
INCR | 38,462.87 | 45,753.32 | 63,544.82 | 64,900.23 | 24,931.71 |
LPUSH | 38,059.82 | 46,090.55 | 60,875.75 | 68,900.56 | 26,438.02 |
RPUSH | 33,151.69 | 45,664.92 | 60,641.06 | 68,714.39 | 26,293.88 |
LPOP | 33,477.01 | 46,241.56 | 60,321.43 | 69,222.05 | 26,337.69 |
RPOP | 37,046.38 | 45,866.05 | 64,197.70 | 68,118.19 | 26,170.80 |
SADD | 38,475.57 | 45,669.46 | 67,488.31 | 64,600.37 | 25,520.66 |
HSET | 39,823.60 | 46,068.82 | 60,660.78 | 69,810.23 | 26,691.87 |
SPOP | 37,097.88 | 45,354.61 | 59,309.45 | 63,504.05 | 24,167.97 |
LRANGE_100 (first 100 elements) | 24,392.32 | 29,135.15 | 24,858.08 | 31,210.14 | 18,642.85 |
LRANGE_300 (first 300 elements) | 9,078.83 | 13,072.72 | 8,400.49 | 11,532.27 | 8,692.77 |
LRANGE_500 (first 500 elements) | 7,249.78 | 9,139.26 | 6,279.04 | 9,093.99 | 6,724.28 |
LRANGE_600 (first 600 elements) | 5,516.53 | 7,543.44 | 5,312.46 | 7,449.98 | 5,759.54 |
MSET (10 keys) | 31,786.36 | 37,252.71 | 28,671.35 | 67,398.11 | 32,199.18 |
$6 VPS Showdown – DigitalOcean – Premium Intel vs. DigitalOcean – Premium AMD vs. Vultr – High Frequency”
Overview
DigitalOcean – Premium Intel | DigitalOcean – Premium AMD | Vultr – High Frequency | |
---|---|---|---|
Location | New York 1 | New York 1 | New York (NJ) |
Distro | Ubuntu 20.04 LTS | Ubuntu 20.04 LTS | Ubuntu 20.04 LTS |
Kernel | 5.4.0 | 5.4.0 | 5.4.0 |
MySQL | 8.0.27 | 8.0.27 | 8.0.27 |
Redis | 5.0.7 | 5.0.7 | 5.0.7 |
Base Price | $6/month | $6/month | $6/month |
Hourly Price | $0.009/hour | $0.009/hour | $0.009/hour |
RAM | 1 GB | 1 GB | 1 GB |
CPU | 1 Core | 1 Core | 1 Core |
Storage | 25 GB | 25 GB | 25 GB |
Storage Type | NVMe | NVMe | NVMe |
Transfer | 1 TB | 1 TB | 1 TB |
Transfer Overage | $0.01/GB | $0.01/GB | $0.01/GB |
Backups | $1.2/month | $1.2/month | $1.2/month |
DNS | Yes | Yes | Yes |
Firewall | Yes | Yes | Yes |
Load Balancer | $10/month | $10/month | $10/month |
Block Storage | $0.1/GB | $0.1/GB | $0.1/GB |
Object Storage | $5/month | $5/month | $5/month |
Managed Databases | MongoDB, MySQL, PostgreSQL, Redis | MongoDB, MySQL, PostgreSQL, Redis | No |
2FA/MFA | Yes | Yes | Yes |
One-click Apps | Yes | Yes | Yes |
Custom Images | Yes | Yes | Yes |
Kubernetes | Yes | Yes | Yes |
Container Registry | Yes | Yes | No |
Container Hosting | Yes | Yes | No |
CPU Info
Model Name | |
---|---|
DigitalOcean – Premium Intel – All Instances | DO-Premium-Intel |
DigitalOcean – Premium AMD – All Instances | DO-Premium-AMD |
Vultr – High Frequency – All Instances | Intel Core Processor (Skylake, IBRS) |
DigitalOcean – Premium Intel | DigitalOcean – Premium AMD | Vultr – High Frequency | |
---|---|---|---|
CPU MHz | 2,494.13 | 1,997.49 | 3,696.00 |
Cache Size (KB) | 4,096.00 | 512.00 | 16,384.00 |
BogoMips | 3,325.67 | 2,661.67 | 4,928.00 |
CPU
DigitalOcean – Premium Intel | DigitalOcean – Premium AMD | Vultr – High Frequency | |
---|---|---|---|
Events per Second | 978.55 | 1,222.03 | 1,366.86 |
Minimum (ms) | 0.95 | 0.66 | 0.70 |
Average (ms) | 1.02 | 0.82 | 0.74 |
Maximum (ms) | 2.53 | 5.07 | 2.45 |
Memory
Read
DigitalOcean – Premium Intel | DigitalOcean – Premium AMD | Vultr – High Frequency | |
---|---|---|---|
Ops per Second | 4,593,379.14 | 3,882,034.35 | 6,564,430.90 |
Minimum (ms) | 0.00 | 0.00 | 0.00 |
Average (ms) | 0.00 | 0.00 | 0.00 |
Maximum (ms) | 0.73 | 3.06 | 0.22 |
Write
DigitalOcean – Premium Intel | DigitalOcean – Premium AMD | Vultr – High Frequency | |
---|---|---|---|
Ops per Second | 4,530,738.77 | 3,765,496.13 | 6,540,358.32 |
Minimum (ms) | 0.00 | 0.00 | 0.00 |
Average (ms) | 0.00 | 0.00 | 0.00 |
Maximum (ms) | 0.29 | 1.04 | 0.26 |
File I/O
DigitalOcean – Premium Intel | DigitalOcean – Premium AMD | Vultr – High Frequency | |
---|---|---|---|
Reads per Second | 2,127.53 | 1,651.44 | 4,695.29 |
Writes per Second | 1,418.35 | 1,100.98 | 3,130.17 |
Fsyncs per Second | 4,544.36 | 3,527.73 | 10,022.95 |
Minimum (ms) | 0.00 | 0.00 | 0.00 |
Average (ms) | 0.12 | 0.16 | 0.05 |
Maximum (ms) | 9.07 | 10.89 | 6.37 |
MySQL
Read Only
DigitalOcean – Premium Intel | DigitalOcean – Premium AMD | Vultr – High Frequency | |
---|---|---|---|
Transactions per Second | 6,397.00 | 4,637.00 | 9,010.33 |
Queries per Second | 102,352.00 | 74,192.00 | 144,165.33 |
Minimum (ms) | 1.16 | 1.45 | 0.92 |
Average (ms) | 1.58 | 2.16 | 1.12 |
Maximum (ms) | 10.49 | 14.90 | 10.67 |
Write Only
DigitalOcean – Premium Intel | DigitalOcean – Premium AMD | Vultr – High Frequency | |
---|---|---|---|
Transactions per Second | 4,611.67 | 3,382.67 | 9,375.67 |
Queries per Second | 27,670.00 | 20,296.00 | 56,254.00 |
Minimum (ms) | 0.87 | 1.05 | 0.58 |
Average (ms) | 2.20 | 3.00 | 1.08 |
Maximum (ms) | 16.48 | 24.02 | 8.07 |
Read Write
DigitalOcean – Premium Intel | DigitalOcean – Premium AMD | Vultr – High Frequency | |
---|---|---|---|
Transactions per Second | 2,233.67 | 1,242.33 | 3,777.33 |
Queries per Second | 44,673.33 | 24,846.67 | 75,546.67 |
Minimum (ms) | 2.48 | 3.57 | 1.73 |
Average (ms) | 4.49 | 8.49 | 2.68 |
Maximum (ms) | 21.29 | 42.06 | 15.47 |
Redis
DigitalOcean – Premium Intel | DigitalOcean – Premium AMD | Vultr – High Frequency | |
---|---|---|---|
PING_INLINE | 79,680.14 | 48,505.93 | 59,402.12 |
PING_BULK | 74,592.85 | 40,247.72 | 56,809.44 |
SET | 67,580.13 | 47,271.31 | 59,043.02 |
GET | 72,652.88 | 58,064.10 | 59,583.95 |
INCR | 76,667.56 | 62,174.58 | 59,001.97 |
LPUSH | 83,826.04 | 56,663.59 | 60,554.39 |
RPUSH | 84,235.04 | 60,285.23 | 59,296.28 |
LPOP | 83,159.75 | 59,006.58 | 57,697.09 |
RPOP | 82,782.93 | 62,842.44 | 59,068.40 |
SADD | 81,587.79 | 64,420.83 | 55,606.75 |
HSET | 83,285.31 | 53,114.75 | 60,769.16 |
SPOP | 77,239.11 | 51,717.78 | 57,396.77 |
LRANGE_100 (first 100 elements) | 39,731.66 | 24,029.04 | 42,386.13 |
LRANGE_300 (first 300 elements) | 14,035.87 | 11,210.92 | 16,868.35 |
LRANGE_500 (first 500 elements) | 10,370.49 | 6,261.47 | 11,749.13 |
LRANGE_600 (first 600 elements) | 8,501.29 | 5,687.42 | 9,904.29 |
MSET (10 keys) | 45,130.74 | 24,234.24 | 52,877.36 |
Conclusion
Fairly consistent results as we’ve seen recently. Would like to point out that I
think it’s great that Linode, UpCloud and even Lightsail are still advertising
the processors they are running on. Knowing that you “get what you get” when you
spin up a machine, it’s nice to have that level of transparency.
As always, these are just some raw benchmarks, you need to consider your own
application’s needs when choosing your hosting provider. If this post did happen
to help you in your search, be amazing and use one of my referral links below!