VPS Showdown – April 2024 – DigitalOcean vs. Linode vs. Vultr
This post is old news – Get fresh benchmarks at VPS Showdown (daily updates!)
All right y'all, the second quarter of 2024 is upon us. Been a bit all over the place on my end, doubly so with it being the high holiday known as WrestleMania Weekend. #CodyCryBabies
I mentioned last month that I'd be trying to include MongoDB benchmarks. I did a bit of research and came to the conclusion that it was going to be a bit more trouble than it's worth right now.
Not ruling it out in the future, but I think there's a higher likelihood of including PostgreSQL and/or SQLite benchmarks down the road.
Depending on how quickly everybody adds support for Ubuntu 24.04 LTS, this may be the last post featuring Ubuntu 22.04 LTS.
As always, I've spun up 3 instances with each provider. All instances were in or around the New York / Newark area. Each instance is at or around the $5 price point. Data was averaged together where applicable.
Overview - DigitalOcean vs. Linode vs. Vultr
| Version | |
|---|---|
| Linux Distro | Ubuntu 22.04 LTS |
| Kernel Version | 5.15.0 |
| MySQL Version | 8.0.36 |
| Redis Version | 6.0.16 |
| DigitalOcean | Linode | Vultr | |
|---|---|---|---|
| Location | New York 1 | Newark, NJ | New York (NJ) |
| Monthly Price | $6/month | $5/month | $5/month |
| Hourly Price | $0.009/hour | $0.0075/hour | $0.007/hour |
| RAM | 1 GB | 1 GB | 1 GB |
| CPU | 1 Core | 1 Core | 1 Core |
| Storage | 25 GB | 25 GB | 25 GB |
| Storage Type | SSD | SSD | SSD |
| Transfer | 1 TB | 1 TB | 1 TB |
| Transfer Overage | $0.01/GB | $0.01/GB | $0.01/GB |
| Backups | $1.2/month | $2/month | $1/month |
CPU Info
| Model Name | |
|---|---|
| DigitalOcean - All Instances | DO-Regular |
| Linode - All Instances | AMD EPYC 7713 64-Core Processor |
| Vultr - All Instances | Intel Core Processor (Broadwell, no TSX, IBRS) |
| DigitalOcean | Linode | Vultr | |
|---|---|---|---|
| CPU MHz | 2,263.07 | 2,000.00 | 2,394.45 |
| Cache Size (KB) | 4,096.00 | 512.00 | 16,384.00 |
| BogoMips | NaN | 2,666.67 | 3,192.33 |
CPU
| DigitalOcean | Linode | Vultr | |
|---|---|---|---|
| Events per Second | 833.74 | 3,514.80 | 853.26 |
| Minimum (ms) | 1.03 | 0.25 | 1.13 |
| Average (ms) | 1.23 | 0.28 | 1.17 |
| Maximum (ms) | 6.48 | 4.73 | 3.73 |
Memory
Read
| DigitalOcean | Linode | Vultr | |
|---|---|---|---|
| Ops per Second | 3,437,138.24 | 5,549,685.19 | 4,131,166.76 |
| Minimum (ms) | 0.00 | 0.00 | 0.00 |
| Average (ms) | 0.00 | 0.00 | 0.00 |
| Maximum (ms) | 4.92 | 2.30 | 0.39 |
Write
| DigitalOcean | Linode | Vultr | |
|---|---|---|---|
| Ops per Second | 3,447,958.44 | 5,426,018.07 | 4,097,991.25 |
| Minimum (ms) | 0.00 | 0.00 | 0.00 |
| Average (ms) | 0.00 | 0.00 | 0.00 |
| Maximum (ms) | 3.38 | 3.01 | 1.88 |
File I/O
| DigitalOcean | Linode | Vultr | |
|---|---|---|---|
| Reads per Second | 697.44 | 3,182.46 | 2,268.14 |
| Writes per Second | 464.94 | 2,121.61 | 1,512.10 |
| Fsyncs per Second | 1,489.50 | 6,796.08 | 4,843.94 |
| Minimum (ms) | 0.00 | 0.00 | 0.00 |
| Average (ms) | 0.38 | 0.08 | 0.11 |
| Maximum (ms) | 128.80 | 4.77 | 11.62 |
MySQL
Read Only
| DigitalOcean | Linode | Vultr | |
|---|---|---|---|
| Transactions per Second | 2,843.00 | 7,821.67 | 4,684.33 |
| Queries per Second | 45,488.00 | 125,146.67 | 74,949.33 |
| Minimum (ms) | 1.53 | 0.99 | 1.61 |
| Average (ms) | 3.65 | 1.28 | 2.14 |
| Maximum (ms) | 45.51 | 11.51 | 24.07 |
Write Only
| DigitalOcean | Linode | Vultr | |
|---|---|---|---|
| Transactions per Second | 832.67 | 7,314.33 | 3,644.67 |
| Queries per Second | 4,996.00 | 43,886.00 | 21,868.00 |
| Minimum (ms) | 4.18 | 0.69 | 1.26 |
| Average (ms) | 12.36 | 1.36 | 2.93 |
| Maximum (ms) | 240.62 | 11.19 | 47.49 |
Read Write
| DigitalOcean | Linode | Vultr | |
|---|---|---|---|
| Transactions per Second | 537.67 | 3,225.33 | 1,828.67 |
| Queries per Second | 10,753.33 | 64,506.67 | 36,573.33 |
| Minimum (ms) | 7.01 | 1.91 | 3.17 |
| Average (ms) | 19.07 | 3.10 | 5.47 |
| Maximum (ms) | 266.60 | 16.66 | 22.01 |
Redis
| DigitalOcean | Linode | Vultr | |
|---|---|---|---|
| PING_INLINE | 24,533.75 | 50,133.43 | 25,896.15 |
| PING_BULK | 23,138.10 | 48,298.53 | 24,509.57 |
| SET | 24,516.21 | 51,749.54 | 25,775.52 |
| GET | 23,246.40 | 51,519.42 | 25,365.94 |
| INCR | 23,389.16 | 52,824.08 | 25,656.31 |
| LPUSH | 24,839.91 | 56,273.73 | 26,730.81 |
| RPUSH | 24,227.49 | 55,517.91 | 26,731.01 |
| LPOP | 23,044.27 | 55,026.63 | 27,038.36 |
| RPOP | 25,501.12 | 53,527.81 | 26,300.85 |
| SADD | 23,841.71 | 50,172.20 | 24,930.87 |
| HSET | 23,834.18 | 52,110.35 | 26,757.30 |
| SPOP | 22,093.15 | 48,027.15 | 24,778.28 |
| LRANGE_100 (first 100 elements) | 14,291.09 | 21,610.73 | 19,638.87 |
| LRANGE_300 (first 300 elements) | 6,617.78 | 10,174.87 | 8,935.35 |
| LRANGE_500 (first 500 elements) | 5,181.73 | 7,861.65 | 6,753.52 |
| LRANGE_600 (first 600 elements) | 4,357.90 | 6,558.51 | 5,759.20 |
| MSET (10 keys) | 26,483.19 | 60,319.68 | 29,542.58 |
Conclusion
This was one of those months where I really needed to scrutinize the results because Linode absolutely obliterated DigitalOcean and Vultr in terms of raw speed and performance.
Best as I can tell, everything was on the up and up. In fact, as I monitored my scripts, all of the Linode instances completed up before either DigitalOcean or Vultr had one instance finish.
Definitely curious to see if this continues in the coming months.
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)
- UpCloud, new accounts receive €25 in credit (yes, that’s in Euros)
- Vultr, new accounts also receive $100 in credit (good for only 14 days)
:wq
Like this drivel? There's a whole RSS feed of it, or subscribe via email.