$10 Showdown: Linode KVM vs. DigitalOcean

It’s been nearly 2 years since my original $10 Showdown post. In
that time both Linode and DigitalOcean have launched
new datacenters and made other improvements to their infrastructures. One of the
most notable improvements is Linode’s migration from XEN to KVM. Let’s see how
they stack up at the ten dollar price point!

Linode DigitalOcean
Memory 1GB 1GB
Processor 1 core 1 core
SSD Storage 24GB 30GB
Transfer 2TB 2TB
Bandwidth Overage $0.02/GB $0.02/GB
Network In 40Gbit 1Gbit
Network Out 125Mbit 1Gbit
Price $10/month $10/month
$0.015/hour $0.015/hour

DigitalOcean is still winning in the storage and network out departments. It
seems Linode has adjusted their bandwidth overage pricing and is now more in
line with DigitalOcean’s pricing. I have included both hourly and monthly
pricing as both companies offer it now.

Preparation

For this comparison, I spun up brand new ten dollars instances on Linode
(Newark, NJ) and DigitalOcean (New York 2) running Ubuntu 14.04 LTS x64. I then ran
(and timed) an update and upgrade and installed some software that I used for
the benchmarking below.

sudo apt-get update
Linode DigitalOcean
real 0m9.843s 0m10.622s
user 0m8.877s 0m9.974s
sys 0m0.787s 0m0.421s

Not much of a difference here. What’s interesting is that Linode deploys with
Ubuntu 14.04.1 LTS whereas DigitalOcean ships with 14.04.3 LTS. I suppose for
fetching the package list, there’s not much difference between minor versions.
Where it gets interesting is when I upgraded the boxes.

sudo apt-get upgrade -y
Linode DigitalOcean
real 0m47.545s 0m23.516s
user 0m18.993s 0m13.179s
sys 0m7.397s 0m6.992s

DigitalOcean took nearly half as long to upgrade. Obviously this data could be
thrown out considering Linode’s older release of Ubuntu required more packages
to be upgraded.

sudo apt-get install sysbench mysql-server -y

I timed this one but since MySQL kept prompting to set the root password, I
didn’t see the need in including the stats. They both took around 19 seconds but
the numbers were skewed based on my own reaction time.

After all of that, I rebooted both systems and got down to the business of
running benchmarks!

CPU

sysbench --test=cpu run
Linode DigitalOcean
Number of Events 10,000 10,000
Execution Time 12.4834s 17.0185s
Min. Request 1.24ms 1.38ms
Avg. Request 1.25ms 1.70ms
Max. Request 1.67ms 3.44ms

Linode’s CPU out performs DigitalOcean’s in every way.

Memory (read)

sysbench --test=memory run
Linode DigitalOcean
Number of Events 104,857,600 104,857,600
Execution Time 46.8098s 102.3185s
Min. Request 0.00ms 0.00ms
Avg. Request 0.00ms 0.00ms
Max. Request 0.38ms 0.67ms
MB/sec 2187.58 MB/sec 1000.80 MB/sec

Reading from memory was twice as fast on Linode as it was on DigitalOcean.

Memory (write)

sysbench --test=memory --memory-oper=write run
Linode DigitalOcean
Number of Events 104,857,600 104,857,600
Execution Time 46.8006s 125.8300s
Min. Request 0.00ms 0.00ms
Avg. Request 0.00ms 0.00ms
Max. Request 0.29ms 2.44ms
MB/sec 2188.01 MB/sec 813.80 MB/sec

Writing to memory had similar results. DigitalOcean’s writes were slower than
their reads while Linode actually was close to the same.

File I/O

sysbench --test=fileio prepare
Linode DigitalOcean
real 0m3.294s 0m12.723s
user 0m0.020s 0m0.014s
sys 0m1.973s 0m8.192s
sysbench --test=fileio --file-test-mode=rndrw run
Linode DigitalOcean
Number of Events 10,000 10,000
Execution Time 1.4986s 2.5595s
Min. Request 0.00ms 0.00ms
Avg. Request 0.08ms 0.13ms
Max. Request 7.34ms 11.83ms
Requests/sec 6672.84 Requests/sec 3906.99 Requests/sec
sysbench --test=fileio cleanup
Linode DigitalOcean
real 0m0.113s 0m0.130s
user 0m0.000s 0m0.000s
sys 0m0.110s 0m0.130s

Linode was able to perform more request per second in a shorter amount of time
than DigitalOcean. Clean up was about the same, but preparing the files was also
faster on Linode.

OLTP with MySQL

mysql -uroot -e "CREATE DATABASE sbtest;"
Linode DigitalOcean
real 0m0.009s 0m0.042s
user 0m0.003s 0m0.013s
sys 0m0.000s 0m0.000s
sysbench --test=oltp --oltp-table-size=1000000 --mysql-user=root prepare
Linode DigitalOcean
real 0m8.140s 0m18.305s
user 0m0.193s 0m0.316s
sys 0m0.023s 0m0.030s
sysbench --test=oltp --oltp-table-size=1000000 --mysql-user=root run
Linode DigitalOcean
Number of Events 10,000 10,000
Execution Time 26.5913s 51.9672s
Min. Request 1.83ms 2.52ms
Avg. Request 2.65ms 5.19ms
Max. Request 24.85ms 68.70ms
Read/write Requests/sec 7145.20 per sec. 3656.15 per sec.
sysbench --test=oltp --oltp-table-size=1000000 --mysql-user=root cleanup
Linode DigitalOcean
real 0m0.132s 0m0.225s
user 0m0.003s 0m0.008s
sys 0m0.003s 0m0.011s

Similar to the file I/O, preparing data took longer on DigitalOcean but this
time the cleanup took nearly twice as long as Linode. Linode wins out for
database requests.

Backups

DigitalOcean has since added a backup option for their droplets for only 20% the
price of the droplet (so $2 for the $10 droplet size). Backups are performed
weekly and you have the last 4 weeks of backups available. Linode has a similar
offering but is priced a bit higher at $2.50.

Conclusion

Congruent with my previous comparisons, Linode’s latest KVM offering out
performs DigitalOcean every step of the way at the ten dollar price point. Even
still, based on the number of referrals I have with each company, it seems that
most people that read my blog end up going with DigitalOcean.

Why would they do that if Linode performs better? Perhaps it’s because
DigitalOcean has a $5 a month tier which is sufficient enough for most people’s
needs. Or could it be because DigitalOcean offers a $10 credit for new sign ups?

Amendment: Dave Roesch, Director of Marketing for Linode reached out
to let me know that Linode does have a promo code (LINODE10) that gives new
signups a $10 credit on their account. It’s also worth pointing out that Linode
staff has always been very interactive with me on Twitter. I like that kind of
stuff.

That being said, if you found this article helpful and are ready to sign up,
please sign up using my referral link for Linode and/or
DigitalOcean. Remember you can get a $10 credit with both
DigitalOcean (automatically) AND Linode (using promo code LINODE 10)!

Comment below or tweet at me if you end up signing up!


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)
  • Vultr, new accounts also receive $100 in credit (good for only 14 days)
  • UpCloud, new accounts receive €25 in credit (yes, that’s in Euros)
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.