Linode vs. Digital Ocean: The Not-So-Scientific Way

UPDATE 2014-04-17: This post is now largely obsolete as Linode announced some big changes. I’m keeping it around for old times’ sake.

When Linode announced their 2013 NextGen upgrades, some people commented that this was high time because Digital Ocean had surpassed them in almost every aspect and was rapidly becoming a fierce competitor. Note that I am not specifically quoting anyone here. I might be overstating a little. Still, being the loyal-but-not-quite-stupid Linode customer that I am, I set up a demo account with Digital Ocean to see what was up. Maybe I could save me some money by going with the admittedly cheaper alternative.
Turns out I was overstating after all…

Before diving into a quick and dirty comparison, I would like to point out that

  • there are so many hosting providers out there that I will have to restrict myself to this single one. Totally unfair, I know.
  • I have specific needs (or just irrational wishes?). If a hosting provider doesn’t match these, that doesn’t mean they’re no good for others.
  • I’m only comparing these two providers because of some comments I read (scroll down a tad). I am not really interested in switching providers.

Now for the real thing. There are a number of reasons not to opt for Digital Ocean even before going on a trial run with one of their virtual machines. Most notably, their website, to me, feels like the company are profiling themselves as oriented towards tinkerers on a budget who really dig Linode big time.
… But they don’t use Xen. Instead, they’re going with KVM (QEMU), which at the time of writing means that you cannot use your own kernels (they are adding this feature soon, though). Linode has had the ever-wonderful pv-grub for years.
This also means you can’t say “I am hosted on Xen!” Really, I like Xen for its name. I can’t do KVM. For an apparent Linode clone, this is an interesting choice of virtualization technology.

But even if I could set my aestethic problems aside and also run my own kernel, Digital Ocean falls short. Yes, they are also significantly cheaper and they are definitely still working hard on improving their infrastructure. But I am writing this now, and right now I am missing some biggies in their list of features. I’m also not sure I like how they’re scrambling to add (almost) everything Linode can already pride themselves over, FOR HALF THE PRICE.
Anyway, so here’s a condensed list of things that stung me as I had a go at their virtual machines.

  • They do not offer an openSUSE image for you to deploy. This single-handedly turned me away. (Really, it did, there is evidence that I like them.) For you not to have an openSUSE image is for me not to host with you. Yes I’m making a big deal out of this. Peh.
  • They do not yet support IPv6. Wut?!
  • They do not yet offer private networking, so no hogging with all your happy friends.
  • Their Europe-based datacenter keeps running out of IPv4 addresses. Seems that the Internet Protocol is tricky to get working under water (this is my idea of a funny reference to the name Digital Ocean, didn’t work).
  • You can’t roll your own images, so I can’t run my fave distro (or FreeBSD!). At least, not in an officially documented way. The shared kernel is also a limiting factor here.
  • They don’t have Lish. Come to think of it, neither do they have Lassie or Finnix. Yeah, Linode is sure big on cuddly pet names for kicker services.
  • I don’t think they have something like StackScripts either. I never used them and don’t plan on using them, but if you’re a hosting provider whose frontpage starts by saying “Built for developers”, then I say you should have something like this.

So is Digital Ocean a sub-standard hosting provider? Nay!

  • They are cheap.
  • They gave me a free trial that will last me a month on their 1 GB plan, which is mostly why I am writing this post. Much better than Linode’s “spend four hours with our premium services, then pay our premium fee” approach.
  • They offer free backups (that is really absurdly cool).
  • They even have off-site backups.
  • They are certainly innovating ’round the clock. Maybe too much so?
  • Their KVM-based virtual machines are very fast to reboot, minimizing downtime and, more to the point, agitation on my end.
  • KVM in general is very efficient (but see below for processor limitations).

The problem is, I’d rather run my own backups if that future-proofs me (IPv6), allows me a single point of definition (DNS Manager) and gives me more control over my virtual machine (Lish, Finnix, pv-grub). Frankly, Linode was getting a wee bit rusty and slightly too elite, money-wise, but the recent NextGen upgrades made up for a lot of it. I, like many, was especially thrilled about the RAM and network upgrades. The UK Linode infra is a friendly thing. The Dutch (woohoo!) Digital Ocean facilities are great too, if only they could stop running out of IPv4’s.

So then, there is one thing about Digital Ocean that, as far as game-changers go, is rather a hefty asset. It can best be described as follows:
THEY OFFER SSD CLOUD HOSTING!!!
Shocking. Or is it? Let’s see.

For this to be as fair as possible I’ll use Leonard’s Linode as it is running Arch Linux latest.greatest (2013.04 no doubt) and that is something Digital Ocean provides as an image, so I’m in luck. For your reference:

root@do:~# cat /proc/version
Linux version 3.8.4-1-ARCH (tobias@T-POWA-LX) (gcc version 4.7.2 (GCC) ) #1 SMP PREEMPT Wed Mar 20 22:10:25 CET 2013
root@do:~# free -m | head -2
             total       used       free     shared    buffers     cached
Mem:           998         56        942          0          4         23
root@linode:~# cat /proc/version
Linux version 3.8.7-1-ARCH (tobias@T-POWA-LX) (gcc version 4.8.0 20130411 (prerelease) (GCC) ) #1 SMP PREEMPT Sat Apr 13 09:01:47 CEST 2013
root@linode:~# free -m | head -2
             total       used       free     shared    buffers     cached
Mem:           991        859        132          0        148        473

Hard disks first. I’m not going to run extended benchmarks, and timing the execution of certain I/O-intensive commands isn’t fair because of differences in CPU, filesystem, percentage of free space, and a jolly lot of other things that could be dismissed as silly excuses for my lack of scientific evidence. Suffice it to say that for device reads, which is what I mostly care about because it makes your disks look real fast, there is a bit of a difference:

root@do:~# hdparm -t /dev/sda
/dev/sda:
 Timing buffered disk reads: 868 MB in  3.00 seconds = 289.29 MB/sec
root@linode:~# hdparm -t /dev/xvda
/dev/xvda:
 Timing buffered disk reads: 410 MB in  3.02 seconds = 135.57 MB/sec

It should be noted that Linode’s disk performance is still top-notch, and they use real, reliable disks. I find that a comforting thought. You’re also not the only guest on their host machine, so these speeds are not bad at all. It’s not that Linode is just as fast as Digital Ocean, it’s that I’ve never found myself wishing for quicker I/O. That said, I’ve seen device reads of up to 700 MB/s on my virtual machine, so you definitely don’t have to be ashamed.
Long story short: Digital Ocean wins here, but I/O has never bothered me unless performing a full filesysstem search. But Linux is good at caching, so even that isn’t a big problem.

Then the CPU. Digital Ocean isn’t exactly forthcoming with model numbers. According to them they’re using “Intel Hex Cores”. Aha. Linode used to have dual Intel Xeon L5520 CPU’s, among others, and the NextGen upgrade upped this to a dual Intel Xeon E5-2670 setup. Let’s do a PHP benchmark.

--------------------------------------
|        PHP BENCHMARK SCRIPT        |
--------------------------------------
Start : 2013-04-22 11:43:42
Server : Digital Ocean
PHP version : 5.4.14
Platform : Linux
--------------------------------------
test_math                 : 1.429 sec.
test_stringmanipulation   : 1.511 sec.
test_loops                : 1.078 sec.
test_ifelse               : 0.786 sec.
--------------------------------------
Total time:               : 4.804 sec.
--------------------------------------
|        PHP BENCHMARK SCRIPT        |
--------------------------------------
Start : 2013-04-22 13:41:15
Server : Linode
PHP version : 5.4.14
Platform : Linux
--------------------------------------
test_math                 : 2.051 sec.
test_stringmanipulation   : 2.066 sec.
test_loops                : 1.297 sec.
test_ifelse               : 1.096 sec.
--------------------------------------
Total time:               : 6.51 sec.

So Digital Ocean is way fast. But there’s one problem:

root@do:~# cat /proc/cpuinfo | grep processor
processor       : 0
root@linode:~# cat /proc/cpuinfo | grep processor
processor       : 0
processor       : 1
processor       : 2
processor       : 3
processor       : 4
processor       : 5
processor       : 6
processor       : 7

These might be “Intel Hex Cores”, but you get an “Intel Uni Core”. A speedy uni-core for sure, but a uni-core no less. I’d rather spend 650-700 ms serving eight requests than 8 × 480 ms = 3840 ms serving the same eight requests in a nice queue. (Yes that was a bit twisty, sorry.) I don’t really serve eight concurrent requests on a regular basis, but more cores are useful in other scenarios too.
GeekBench agrees with me:

Yes, Digital Ocean is cheaper, but a single-core solution is equally as outdated as a solution featuring 512 MB RAM. Also, for perfect clarity, these “cores” are really threads. But cores sounds better. I guess that’s where the “Hex Core” statement came from.

And finally, the network. Again, I’m talking Linode NextGen here. The previous hosts appeared to have a bit of a bottleneck or hard cap in this regard.

root@do:~# wget http://speedtest.newark.linode.com/100MB-newark.bin
--2013-04-22 12:07:23--  http://speedtest.newark.linode.com/100MB-newark.bin
Resolving speedtest.newark.linode.com (speedtest.newark.linode.com)... 50.116.57.237, 2600:3c03::4b
Connecting to speedtest.newark.linode.com (speedtest.newark.linode.com)|50.116.57.237|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 104857600 (100M) [application/octet-stream]
Saving to: '100MB-newark.bin'
100%[================================================================================================================================================================>] 104,857,600 39.4MB/s   in 2.5s
2013-04-22 12:07:26 (39.4 MB/s) - '100MB-newark.bin' saved [104857600/104857600]
root@linode:~# wget http://speedtest.london.linode.com/100MB-london.bin
--2013-04-22 14:05:06--  http://speedtest.london.linode.com/100MB-london.bin
Resolving speedtest.london.linode.com (speedtest.london.linode.com)... 2a01:7e00::4b, 176.58.107.39
Connecting to speedtest.london.linode.com (speedtest.london.linode.com)|2a01:7e00::4b|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 104857600 (100M) [application/octet-stream]
Saving to: ‘100MB-london.bin’
100%[================================================================================================================================================================>] 104,857,600 40.2MB/s   in 2.5s
2013-04-22 14:05:08 (40.2 MB/s) - ‘100MB-london.bin’ saved [104857600/104857600]

Very much up to par. I’d have liked to use Digital Ocean’s Amsterdam facility, but alas it ran out of IP’s for the cheaper plans.

So, to shorten a thoroughly long story:
If you are very much into rapid storage and/or low-cost machines, then Digital Ocean is your thing. If you are into anything else hardware- or service-related and you don’t mind the extra $10/month ($15/month including backups), then Linode is the answer, as it has been for years. Time will tell if I’m still here in another two years.

18 thoughts on “Linode vs. Digital Ocean: The Not-So-Scientific Way”

  1. Nice benchmarks …
    I’ve been using both. I agree with you that service-wise Linode fairs better than Digital Ocean and the latter cost-wise.

    1. It means that the Linode is actually in use (running this very site!) while Digital Ocean’s server was sitting there in an out-of-the-box state.

  2. Thanks for the detailed analysis, I’ve been looking for something like this for awhile today. Finally found it! I’ve got a couple $40 Linodes running various apps for various clients… I am considering seeing how a DigitalOcean box fares for the same $40 price. A little more HD space (and SSH) plus double the RAM. Wonder how it will look with 1/4 of the CPU!

    My benchmarks are solely going to be on web requests. So I’m going to use apache ab or the like to benchmark and hammer identical apps on the two $40 servers and see what happens. I have a feeling Linode will win because of your comment about serving consecutive requests faster… but we will see.

    Tyler

  3. I use Digital Ocean and they’re pretty good for the buck.
    here’s my cpuinfo on DigitalOcean $80 one…
    each core is 2 GHz and it’s quite powerful…

    root@DO [~]# cat /proc/cpuinfo | grep processor
    processor : 0
    processor : 1
    processor : 2
    processor : 3
    root@alpha [~]#

  4. Thanks for your “non-scientific” post. I also received a one-month trial for DO but never had the chance to test the system.

    I have a client on a 16GB plan with Linode and was looking to see if there were other cheaper alternatives that offered similar performance. The free backups sound pretty nice.

  5. Another shirtcoming of DO is that they only allow one ip per server, and no IP failover. Makes it impossible to implement any kind of HA

  6. Digital Ocean are a great provider. Can’t reccomend them enough! To anyone who is interested they have just launched their new data center in NY! Use the promo NY2SSD5 at http://www.digitalocean.com to get a 512MB free droplet for one month in NY!

  7. I can’t reccomend Digital Ocean enough. My employer has been using them for a year and a half with no downtime. I’ve been using them personally for four months also with no downtime. Their support is great and the web UI is easy on the eyes. I am yet to find a better VPS provider than Digital Ocean. Their only competitor is Linode but they cost twice as much and don’t have SSD hard drives! Digital Ocean also accept Paypal which is handy.

    Update: Digital Ocean have recently launched their New York data center and are offering $5 in credit for new users. Use the promo code NY2SSD5 at http://www.digitalocean.com to get a 512MB VPS free for one month!

  8. I know the title of the post is “not-so-scientific”, but as someone that is in the hosting business and does not host with either company (so no vested interests), it seems that the comparison is along the lines of “because I like linked better” instead of any proper technical reason. Saying that KVM is worst than Xen is misinformed, saying that the CPU is faster but lists as one is not a fair comparison, as it isn’t to compare a fully loaded van with a brand new one. Just saying… 🙂

  9. I’m hosting with both Linode and Digital Ocean right now. I also designed and run a data center based on KVM (for my employer, who is not Linod or Digital Ocean). So my opinion:

    1) Linode has *much* better tools. If your virtual boot disk gets corrupted, for example, you just boot into a rescue disk and fsck it. Problem solved. Digital Ocean has nothing near the tools Linode has developed over the past six years that I’ve been hosting with them.
    2) The reason I went with KVM rather than Xen on my data center is simple: KVM has much better memory management and process scheduling than Xen. It’s not enough better to be worth migrating off of Xen if you’re already on Xen, but for anything new, you should go KVM.
    3) KVM allows you to run any kernel you wish. Unlike Xen paravirtualization, it uses whatever kernel is inside the virtual machine, it doesn’t require a kernel outside the virtual machine. Just install your kernel inside your virtual machine, edit your grub.conf to make that kernel the default, reboot, and voila. Looking at the qemu-kvm command lines being generated by my infrastructure to spawn off virtual machines, there isn’t even a kernel specified — and no way to specify one.
    4) There are indeed hexacore (6-core) Xeon processors. No, this is not counting threads. Best practice is to turn off processor threads on machines used to host virtual machines because the processor threads mess up cache consistency and actually slow things down. I’m using quad-core Xeon processors on my own infrastructure because they’re cheap, but I’m not CPU-limited on my own infrastructure, I’m memory limited.
    5) Xen and KVM schedule processor time differently. Xen will show you 8 cores on the smallest Linode, true. But you can’t use all 8 cores. You’ll get throttled by the Xen scheduler, which has been set to give you only a fixed percentage of the total CPU available. An older version of KVM like what DIgital Ocean appears to be using doesn’t have its own scheduler, it uses the Linux scheduler, and the Linux scheduler has no throttle ability in older kernels. Thus they give you one core on their smallest instance — but it’s unthrottled. Which approach is better for you depends on your application.

    The main reason I’m sticking with Linode for my main server is because Linode has IPv6 support and Digital Ocean doesn’t, and the availability of the recovery tools to handle a filesystem corruption event is important to me. But for throw-away things like, say, a DNS backup server, or a mail relay server, where you have backups of the few files changed from the default configuration and deploying a new copy is no big deal, Digital Ocean works just fine.

  10. DO is down for me “every so often” (1/month? 2/month?) for 5 minutes or what not. So there may be some small stability concerns too. But I’ll take it for $5/month 🙂

  11. I’ve been with Linode for a while, many servers. I decided to use Digital Ocean for an email only server. initially my email and one customer. As soon as we started using it, we discovered Yahoo were blocking the IP address allocated to my server. Wouldn’t remove it. Moved back to Libode and no problems at all.

    Others DO customers have reported Yahoo blocking emails from their DO servers.

Comments are closed.