Linode vs. Digital Ocean, performance benchmarks

I mentioned the in my last Linode vs. Digital Ocean
post that I would be doing a performance comparison of the two in the near
future and here it is! I used sysbench with some pretty basic settings to
compare a 2GB server from both hosting companies. Apples to apples, both plans
weigh in at 20$ a month and are pretty comparable when looking at what you get
for the money. Both servers are running Ubuntu 14.04 LTS (64-bit) and were brand
new servers (no upgrades applied). The Linode server was configured with 512MB
of RAM and the Digital Ocean server with none (as configuring a swap partition
is not part of their setup interface).

Before I started, I did install sysbench and mysql-server:

sudo apt-get install sysbench mysql-server

CPU

sysbench --test=cpu run
Linode Digital Ocean
Number of Events 10000 10000
Execution Time 11.7520s 14.6590s
Min. Request 1.16ms 1.32ms
Avg. Request 1.18ms 1.47ms
Max. Request 1.80ms 2.92ms

Memory (Read)

sysbench --test=memory run
Linode Digital Ocean
Number of Events 104857600 104857600
Execution Time 316.8781s 286.5839s
Min. Request 0.00ms 0.00ms
Avg. Request 0.00ms 0.00ms
Max. Request 1.18ms 1.07ms
MB/sec 241.71 265.55

Memory (Write)

sysbench --test=memory --memory-oper=write run
Linode Digital Ocean
Number of Events 104857600 104857600
Execution Time 327.8409s 303.7926s
Min. Request 0.00ms 0.00ms
Avg. Request 0.00ms 0.00ms
Max. Request 0.90ms 5.38ms
MB/sec 235.96 254.30

File I/O

sysbench --test=fileio --file-total-size=4G prepare
sysbench --test=fileio --file-total-size=4G --file-test-mode=rndrw run
sysbench --test=fileio --file-total-size=4G cleanup
Linode Digital Ocean
Number of Events 10000 10000
Execution Time 0.1041s 0.1583s
Min. Request 0.01ms 0.01ms
Avg. Request 0.01ms 0.02ms
Max. Request 0.06ms 0.21ms
Requests/sec 7144.83 3503.19

MySQL

sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=test --mysql-user=root --mysql-password=password prepare
sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=test --mysql-user=root --mysql-password=password run
sysbench --test=oltp --oltp-table-size=1000000 --mysql-db=test --mysql-user=root --mysql-password=password cleanup
Linode Digital Ocean
Number of Events 10000 10000
Execution Time 29.5509s 57.0191s
Min. Request 2.21ms 2.97ms
Avg. Request 2.96ms 5.70ms
Max. Request 87.60ms 1003.54ms
Read/write Requests/sec 6417.08 3326.50

Conclusion

Obviously YMMV when running the same tests (hence providing the commands) but
from where I’m sitting, Linode performs considerably better in nearly every
category. Digital Ocean fared better in both reading and writing from memory but
at the end of the day, you will most likely be leveraging all aspects of the
server and not just RAM. Digital Ocean still wins out when you need an
inexpensive server (as their plans start at 5$) but I’m not sure that I would
rely on them when attempting to scale up your infrastructure.

As always, if you are interested in signing up for either of these companies,
please please please sign up with my referral link for
Linode
and/or DigitalOcean.


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.