I’ve done quite a few of these comparison posts and I have always stuck with
the inexpensive plans. I figured, what the hell, let’s see how Linode and
DigitalOcean stack up when running larger, comparably priced plans! The price
point for this comparison is 640$ per month or around 96¢ per hour.
Right out of the gate, Linode and DigitalOcean have slightly different pricing
in regard to hourly billing. Linode is adverting a flat 96¢ while DigitalOcean
is at 95.2¢ per hour. If you are paying monthly they both come out to 640$.
Linode also advertises a larger plan than this but this is DigitalOcean’s
largest advertised plan. It does appear that DigitalOcean can provide a larger
plan if you contact them, but that seemed a bit out of scope for this article.
Before we get into the benchmarks, let’s take a look at what you’ll be getting
for 640$ a month:
Linode | DigitalOcean | |
---|---|---|
Monthly Rate | 640$ | 640$ |
Hourly Rate | 96¢ | 95.2¢ |
RAM | 64 GB | 64 GB |
CPU | 20 cores | 20 cores |
SSD Storage | 1,536 GB | 640 GB |
Transfer | 20 TB | 9 TB |
Network In | 40 Gbps | 1 Gbps |
Network Out | 8,000 Mbps | 1 Gbps |
No advantage for either hosting company for RAM and CPU cores but Linode takes
every other category. What’s most interesting is the amount of SSD storage that
Linode is able to provide for the price considering they were initially quite
slow to offer SSD storage.
Please keep in mind that the network in/out for DigitalOcean may not be
accurate as I used the same values as my last comparison. DigitalOcean still
doesn’t advertise their network speeds on their site the way that Linode does.
Would be awesome if someone from DO could clarify this in the comments below.
Thanks to Michael Guerin (from DO) for the network in/out clarification!!
So now that we know what we’re getting, let’s check out how each server
performs. Setting each each server only took a few minutes. DigitalOcean’s
setup is a bit faster (clocking in at under 1 minute) because you don’t have to
manually deploy your distro the way you do with Linode. Even though Linode took
a bit longer, less than 3 or 4 minutes, the time it took was quite tolerable.
One interesting thing to note is that while Linode allows you to scale boxes
up and down, DigitalOcean only lets you scale a droplet up. This is quite the
shortcoming if you are scaling up to handle a spike in traffic and then would
like to scale back down afterwards.
Before getting into the benchmarks, I wanted to note that to enable the larger
plans with DigitalOcean, you must open a support ticket to request
verification. The process was quick (less than 5 minutes I think) and quite
painless. You simply provide a bit of information and you’ll be on your way!
To ensure that this is an apples to apples review, I opted to spin up bot
server instances in London, England because that was the only location that
both companies have a data center. Both boxes are running the latest Ubuntu LTS
release, 14.04, 64-bit edition. As always, I went ahead and made sure that both
servers were up to date and installed the necessary packages for the benchmarks
and rebooted:
sudo apt-get update && apt-get upgrade
sudo apt-get install sysbench mysql-server
sudo reboot
I also disabled swap on the Linode box since DigitalOcean doesn’t create a swap
partition as part of their setup wizard:
swapoff -a
Let’s take a look at the benchmark results for each category. The sysbench
commands are also provided in case you want to try these benchmarks out for
yourself.
CPU
sysbench --test=cpu run
Linode | DigitalOcean | |
---|---|---|
Number of Events | 10,000 | 10,000 |
Execution Time | 9.7577s | 12.8024s |
Minimum Request | 0.93ms | 1.16ms |
Maximum Request | 1.14ms | 2.92ms |
Average Request | 0.97ms | 1.28ms |
Memory (read)
sysbench --test=memory run
Linode | DigitalOcean | |
---|---|---|
Number of Events | 104,857,600 | 104,857,600 |
Execution Time | 348.2640s | 86.3729s |
Minimum Request | 0.00ms | 0.00ms |
Maximum Request | 1.88ms | 0.52ms |
Average Request | 0.00ms | 0.00ms |
MB/second | 294.03 MB/s | 1,184.19 MB/s |
Memory (write)
sysbench --test=memory --memory-oper=write run
Linode | DigitalOcean | |
---|---|---|
Number of Events | 104,857,600 | 104,857,600 |
Execution Time | 346.2093s | 83.6330s |
Minimum Request | 0.00ms | 0.00ms |
Maximum Request | 0.30ms | 0.44ms |
Average Request | 0.00ms | 0.00ms |
MB/second | 295.77 MB/s | 1,224.40 MB/s |
File I/O
sysbench --test=fileio --file-total-size=100G prepare
sysbench --test=fileio --file-total-size=100G --file-test-mode=rndrw run
sysbench --test=fileio --file-total-size=100G cleanup
Linode | DigitalOcean | |
---|---|---|
Number of Events | 10,000 | 10,000 |
Execution Time | 1.3770s | 4.4776s |
Minimum Request | 0.01ms | 0.01ms |
Maximum Request | 4.60ms | 20.72ms |
Average Request | 0.09ms | 0.25ms |
Requests/second | 7,262.01 Req/s | 2,233.34 Req/sec |
MySQL
sysbench --test=oltp --oltp-table-size=10000000 --mysql-db=test --mysql-user=root --mysql-password=password prepare
sysbench --test=oltp --oltp-table-size=10000000 --mysql-db=test --mysql-user=root --mysql-password=password run
sysbench --test=oltp --oltp-table-size=10000000 --mysql-db=test --mysql-user=root --mysql-password=password cleanup
Linode | DigitalOcean | |
---|---|---|
Number of Events | 10,000 | 10,000 |
Execution Time | 33.2434s | 52.0775s |
Minimum Request | 2.21ms | 2.30ms |
Maximum Request | 29.16ms | 56.02ms |
Average Request | 3.32ms | 5.20ms |
Read/write Requests/second | 5,715.42 Req/sec | 3,648.41 Req/sec |
Conclusion
As you can see from the benchmarks, Linode’s CPU and SSD offerings perform
better than DigitalOcean’s. Where DigitalOcean excels is reading and writing
from RAM. This is pretty consistent with what I observed on the lower plans,
thus both hosts scale predictably. Depending on what you plan to do with the
server, you realistically could make the case for either hosting company.
Even though Linode fell short on memory reads and writes, the maximum time to
execute was lower than DigitalOcean for writes. If nothing else, it would
appear that Linode’s write performance is a bit more predictable albeit slower.
If I had to pick a winner, I would have to say that the high volume server from
Linode performs better across the board than DigitalOcean’s comparable droplet.
If your application is heavy on RAM reading and writing, DigitalOcean may
better suit your needs as the server was capable of moving 4 times the
megabytes per second than the Linode server.
As always, YMMV as these are simply benchmarks and not necessarily indicative
of real world usage.
Referral Links
If you found the article helpful, please help me out by using my referral links
for Linode and/or DigitalOcean.