Earlier this month I posted yet another of my $10 Showdown posts comparing Linode, DigitalOcean and the newcomer, Amazon Lightsail. The response was freakin’ amazing, I got a ton of great feedback and I figured I may as well follow up with a comparison of a larger plan.
Instead of doing a dollar for dollar comparison, I thought it would be fun to
compare similar memory offerings. I went with 8GB of RAM because Amazon doesn’t offer anything larger than that and all of the companies I’ll be comparing offer that size plan at the sub-$100 mark.
Also, I am now including Vultr in these comparisons because everytime I do one of these posts somebody squaks about them in the comments and on Twitter. Pun intended 😉
Overview
Linode | DigitalOcean | Lightsail | Vultr | |
---|---|---|---|---|
Memory | 8GB | 8GB | 8GB | 8GB |
Processor | 4 Cores | 4 Cores | 2 Cores | 6 Cores |
Storage | 96GB SSD | 80GB SSD | 80GB SSD | 150GB SSD |
Transfer | 4TB | 5TB | 5TB | 5TB |
Overage | $0.02/GB | $0.02/GB | $0.09/GB | $0.02+/GB |
Network In | 40Gbps | 1Gbps | ??? | ??? |
Network Out | 1000Mbps* | 1Gbps | ??? | ??? |
Price | $40/month | $80/month | $80/month | $80/month |
$0.06/hour | $0.119/hour | $0.108/hour | $0.119/hour |
Right out of the gate you get more bang for your buck with Linode at half the
price of the other guys!
Like Lightsail, I couldn’t find any formal documentation on Vultr’s network
speeds. Their marketing material touts them as being 4x the speed of their
competitors. Their benchmarks only show them in comparison to Rackspace and AWS (I assume EC2, not Lightsail servers).
Vultr does excel in the number of CPUs and amount of storage but they are still
twice as much as Linode. They also price their bandwidth overage based on which region you are in. North America is $0.02 per gig but some regions are as much as $0.10 per gig. They also calculate bandwidth as either incoming or
outgoing, whichever is larger.
* On 2/14/2016 Linode announced $5 plans, high memory instances and bumped network out from 500Mbps to 1000Mbps for their Linode 8GB instances.
CPU Info
Somebody had suggested showing the output from /proc/cpuinfo
. I thought it was a good idea but I didn’t want to show all of the output as it’s quite lengthy. All of the companies showed a vendor ID of GenuineIntel and here’s some data from /proc/cpuinfo
that I thought was the most relevant / important:
cat /proc/cpuinfo
ZshModel Name | CPU MHz | Cache Size | BogoMips | |
---|---|---|---|---|
Linode | Intel Xeon E5-2680 v2 | 2,799.998 | 4096 KB | 5,602.32 |
DigitalOcean | Intel Xeon E5-2650L v3 | 1,799.998 | 30720 KB | 3,599.99 |
Lightsail | Intel Xeon E5-2676 v3 | 2,394.516 | 30720 KB | 4,789.03 |
Vultr | Virtual CPU x7769a6388d5 | 2,394.454 | 4096 KB | 4,788.90 |
Not entirely sure what Vultr’s CPU is compared to the others but the other
providers have fairly comparable chips. Linode and DigitalOcean are both touting 4 cores while Lightsail is only 2 and Vultr comes in ahead with 6 cores. Linode wins out if you’re concerned with the per-core speeds.
I thought it was interesting that both DigitalOcean and Lightsail had a significantly higher cache size compared to Linode and Vultr.
CPU Benchmarks
We know what kind of CPUs everybody is offering (well sorta… looking at you
Vultr 😉 but how do they stack up in a benchmark?
sysbench --test=cpu run
ZshLinode | DigitalOcean | Lightsail | Vultr | |
---|---|---|---|---|
Number of Events | 10,000 | 10,000 | 10,000 | 10,000 |
Total Time | 11.8893s | 15.5159s | 11.3562s | 12.4066s |
Event Execution | 11.8870s | 15.5128s | 11.3544s | 12.4039s |
Minimum Request | 1.16ms | 1.31ms | 1.03ms | 1.08ms |
Average Request | 1.19ms | 1.55ms | 1.14ms | 1.24ms |
Maximum Request | 1.67ms | 2.12ms | 1.34ms | 5.94ms |
Lightsail’s CPU performance squeaked by Linode’s by a few tenths of a second.
Almost too close to call. Vultr was a half second behind Linode for third while DigitalOcean brought up the rear 3 seconds slower than Vultr.
Even though Vultr’s average request wasn’t too bad, the maximum request was
nearly three times that of DigitalOcean’s.
Memory Benchmarks
Memory Reads
sysbench --test=memory run
ZshLinode | DigitalOcean | Lightsail | Vultr | |
---|---|---|---|---|
Number of Events | 104,857,600 | 104,857,600 | 104,857,600 | 104,857,600 |
Total Time | 42.5862s | 101.7082s | 74.5845s | 57.1285s |
Execution Time | 35.2345s | 80.7922s | 59.2416s | 46.3418s |
Minimum Request | 0.00ms | 0.00ms | 0.00ms | 0.00ms |
Average Request | 0.00ms | 0.00ms | 0.00ms | 0.00ms |
Maximum Request | 4.64ms | 4.59ms | 0.09ms | 1.95ms |
Operations/sec | 2,462,244.11 | 1,030,965.05 | 1,405,890.46 | 1,835,469.80 |
MB/sec | 2,404.54 | 1,006.80 | 1,372.94 | 1,792.45 |
Memory Writes
sysbench --test=memory --memory-oper=write run
ZshLinode | DigitalOcean | Lightsail | Vultr | |
---|---|---|---|---|
Number of Events | 104,857,600 | 104,857,600 | 104,857,600 | 104,857,600 |
Total Time | 42.8455s | 102.1230s | 74.4461s | 59.5757s |
Execution Time | 35.4619s | 81.1366s | 59.1153s | 48.3579s |
Minimum Request | 0.00ms | 0.00ms | 0.00ms | 0.00ms |
Average Request | 0.00ms | 0.00ms | 0.00ms | 0.00ms |
Maximum Request | 4.65ms | 0.85ms | 0.08ms | 2.13ms |
Operations/sec | 2,447,343.98 | 1,026,777.30 | 1,408,503.45 | 1,760,072.84 |
MB/sec | 2,389.98 | 1,002.71 | 1,375.49 | 1,718.82 |
Linode blew everybody away in both memory read and write performance even with having the highest maximum request time. Vultr was about 13 seconds behind with Lightsail another 11 seconds behind them. Yet again, DigitalOcean came in a distant last place.
File I/O Benchmarks
sysbench --test=fileio prepare
sysbench --test=fileio --file-test-mode=rndrw run
sysbench --test=fileio cleanup
ZshLinode | DigitalOcean | Lightsail | Vultr | |
---|---|---|---|---|
Number of Events | 10,000 | 10,000 | 10,000 | 10,000 |
Total Time | 1.9160s | 1.4093s | 3.0151s | 1.5636s |
Execution Time | 0.1436s | 0.1780s | 0.0600s | 0.1272s |
Minimum Request | 0.00ms | 0.00ms | 0.00ms | 0.01ms |
Average Request | 0.01ms | 0.02ms | 0.01ms | 0.01ms |
Maximum Request | 0.26ms | 0.18ms | 0.13ms | 0.40ms |
Requests/sec | 5,219.18 | 7,095.61 | 3,316.66 | 6,395.59 |
MB/sec | 81.55 | 110.87 | 51.823 | 99.931 |
When I compared hosts at the $10 level, Linode performed twice as well as DigitalOcean (which was #2 in that benchmark). This time around, DigitalOcean
was able to handle the most requests and the most megabytes per second.
What was interesting was that the event execution time for DigitalOcean was more than everybody else even though it appeared to perform better.
MySQL Benchmarks
mysql -uroot -e "CREATE DATABASE sbtest;"
sysbench --test=oltp --oltp-table-size=1000000 --mysql-user=root prepare
sysbench --test=oltp --oltp-table-size=1000000 --mysql-user=root run
sysbench --test=oltp --oltp-table-size=1000000 --mysql-user=root cleanup
ZshLinode | DigitalOcean | Lightsail | Vultr | |
---|---|---|---|---|
Number of Events | 10,000 | 10,000 | 10,000 | 10,000 |
Total Time | 33.4307s | 41.6779s | 39.5449s | 51.3936s |
Execution Time | 33.3771s | 41.6069s | 39.5024s | 51.2897s |
Minimum Request | 2.36ms | 2.40ms | 2.14ms | 2.13ms |
Average Request | 3.34ms | 4.16ms | 3.95ms | 5.13ms |
Maximum Request | 26.13ms | 65.62ms | 30.92ms | 1,667.56 |
Read/write Requests/sec | 5,683.40 | 4,558.77 | 4,804.67 | 3,696.96 |
I feel like reading and writing to MySQL is one of the best metrics because not
only is it more of a real world use case, but because it is a combination of file I/O, memory and CPU.
Linode was able to handle more read / write requests per second than the others. Lightsail was the runner up with DigitalOcean just behind them. Vultr was at the tail end and had a terrible maximum request time, orders of magnitude slower than the others.
Apache Benchmarks
ab -kc 1000 -n 10000 http://127.0.0.1/
ZshLinode | DigitalOcean | Lightsail | Vultr | |
---|---|---|---|---|
Concurrency Level | 1,000 | 1,000 | 1,000 | 1,000 |
Time taken | 5.702s | 1.410s | 1.420s | 5.802s |
Completed Requests | 10,000 | 10,000 | 10,000 | 10,000 |
Failed Requests | 569 | 303 | 178 | 456 |
Requests/sec | 1,753.72 | 7,090.77 | 7,044.18 | 1,723.59 |
Time per request | 570.216ms | 141.028ms | 141.961ms | 580.185ms |
Transfer rate Kbyte/sec | 18,768.15 | 78,099.35 | 78,585.94 | 18,698.25 |
This is a new benchmark I haven’t included in the past. I slapped Apache on the
server and ran ab
against the local host with 1,000 concurrency and keep-alive
for 10,000 requests.
With this benchmark, DigitalOcean seemed to handle requests the fastest and
Lightsail was able to transfer the most per second. Linode and Vultr brought up
the rear.
Network Benchmarks
In the past I’ve run speedtest-cli
without specifying a server, resulting in
inconsistent results. This time around I opted to use the Houston server (keeping it local ;). Unfortunately, since not every company has a datacenter in
the same place, the results are still a bit mixed.
Other than Lightsail (which only offers instances in the Virginia datacenter) the other servers are in / around the New York / New Jersey area.
./speedtest-cli --server=7340
ZshLinode | DigitalOcean | Lightsail | Vultr | |
---|---|---|---|---|
Download Mbit/sec | 313.37 | 519.12 | 339.60 | 705.47 |
Upload Mbit/sec | 91.51 | 81.80 | 88.45 | 101.35 |
Vultr’s major claim is that they are 4x faster than Rackspace and AWS. These
results show them being faster than the competition, but not quite the 4x
multiple they are touting in their marketing material. They did come in first
for both upload and download speeds.
DigitalOcean came in second for downloads but last for uploads while Linode and Lightsail were somewhere in the middle.
Conclusion
Even with a mixed lot of data (most favoring Linode) it’s hard to skirt over the
fact that at the 8GB of RAM tier, Linode was half the price of everybody else.
That said, Linode was at the top end of the benchmark (either first or second)
more than another other company while DigitalOcean was consistently at the lower end of the benchmarks. Lightsail and Vultr fought it out in the middle.
Considering you can get comparable specs and performance for half the price,
Linode would be where I’d put my money for an 8GB server. Good chance that
Linode would blow everybody out of the water at the $80 price point considering it would be doubling everybody else’s offerings. Perhaps an $80 showdown in the future?
Something else worth noting was that when I was running benchmarks, the first time through with DigitalOcean on a fresh droplet was absurdly slow. So slow that I thought maybe something was terribly borked with the instance, so I trashed it and started over. It ran better the next time but I’ve never run into anything like that in the last few years of running these tests.
As mentioned in the past, your YMMV with these benchmarks and I may not have included something that you feel strongly about (like say, downtime or customer support or the option for block storage). I live for feedback, so comment below if there’s something I should be including for next time.