My blog website is currently hosted on DreamCompute. It’s a cloud compute platform similar to Amazon EC2. I’ve been looking at the possibility of relocating, DigitalOcean being one candidate. Then last week, DreamCompute announced an upgrade to an all-SSD infrastructure that caught my interest. But me being me, I must test and not just take their advertised word.
DigitalOcean also similarly boasted about their SSD cloud servers that can be deployed in 55 seconds. I have to test that right? I now have the opportunity to test DreamCompute against DigitalOcean, as well as, of course, the older DreamCompute setup that did not use SSDs.
I’ve got some interesting results. The short version of it is that it seems DreamCompute’s older cloud wasn’t that much worse than their new cloud. In fact, it was surprising that the use of SSDs didn’t lead to some huge all-around performance leap in disk I/O. With DigitalOcean, it was shocking that some disk I/O, which supposedly runs off SSDs, were even slower than DreamCompute’s older cloud that used conventional spinning disks.
Doing all the benchmarking as an end-user with no control and no visibility of the underlying infrastructure leaves many unknown variables that are unaccounted for. It’s the best I can do, however, since I’m just a customer on these platforms. I did rerun my tests many times, at different times of the day, on different days, and did not find largely varying results, at least not of the sort that would significant change any conclusion I’d draw from them. So I’ll do ahead and share what I have found anyway.
DigitalOcean proudly advertises their ability to spin up a server in 55 seconds. It sounds great until I realised that DreamCompute could do the same thing, faster, actually, on their old cloud. In their new all-SSD cloud, I spun up a Ubuntu 15.10 server in about 10 seconds. How cool is that?
There are many ways to benchmark servers. Since I run Linux servers, currently CentOS based but wanting to evaluate Ubuntu moving forward, I picked whatever was easy to do and which could also be easily installed from package repositories. That would be sysbench and bonnie++. I also used openssl speed tests for some alternate CPU performance comparisons.
So let me get on with some testing. All servers here are installed with Ubuntu 15.10 from the cloud provider’s imaging repository. It’s possible that they are slightly different (i.e. DreamCompute vs DigitalOcean), but they are close enough. They were virtual machines sized with 1 CPU and 1GB of RAM. I have two DreamCompute clouds, US-East-1 is the old one with conventional spinning disks, and US-East-2 with supposedly much faster processors and an all-SSD setup. At DigitalOcean, I used their Singapore data centre (DO-SGP in the tables below).
Sysbench CPU benchmarking was performed with the command: sysbench --test=cpu --cpu-max-prime=20000 run
. I capture the “total time” result. I ran OpenSSL speed tests, but since the results are quite lengthy, I just picked the 4096-bit RSA tests for comparison. This would be equivalent to the command: openssl speed rsa4096
, and I use the sign/verify operations per second metric.
Here are the CPU numbers.
US-East-1 | US-East-2 | DO-SGP | |
---|---|---|---|
sysbench-cpu | 30.7 | 33.5 | 36.4 |
openssl-rsa4096 | 54.8/3606.6 | 110.0/6972.8 | 96.8/6541.9 |
Interesting that DreamCompute’s US-East-2 supposedly faster processors lag a little behind US-East-1 in the sysbench-cpu numbers? Yeah, that’s why I wanted to look at an alternate metric. Overall, it seems DigitalOcean is slower than DreamCompute’s US-East-2.
I have two disk tests. Sysbench’s fileio test is mostly concerned with reading.
US-East-1 | US-East-2 | DO-SGP | |
---|---|---|---|
Time to prepare (sec) | 89 | 154 | 229 |
Throughput (MB/s) | 2.1614 | 3.1458 | 22.853 |
Requests/sec | 138.33 | 201.33 | 1462.58 |
Average request time | 1.82 | 1.01 | 0.18 |
95-percentile request time | 2.48 | 2.47 | 0.63 |
DigitalOcean’s numbers are astounding. It’s the slowest at preparing the test (writing the files), but when it came to reading, they were clearly the winner here, by a big margin. DreamCompute’s US-East-2 with SSD servers seems a bit better than their older US-East-1.
Then, let’s look at some selected metric from Bonnie++. Tests were run with bonnie++ -f -s 8G
. The selected fields are for the sequential block output throughput, sequential block rewrites throughput, sequential block input throughput and random seeks per second.
US-East-1 | US-East-2 | DO-SGP | |
---|---|---|---|
Sequential Output | 323595 | 213409 | 81117 |
Sequential Rewrite | 81482 | 23770 | 79907 |
Sequential Input | 141166 | 114943 | 299580 |
Random Seeks | 2723 | 3998 | ++++ |
The ++++ you see is what Bonnie++ prints when the test was too fast for the results to be meaningfully reported/compared. I.e., it was too good.
Looking at both sysbench and bonnie++, it’s clear that DigitalOcean’s SSDs are extremely fast with reads, but excruciatingly slow with writes. At DreamCompute, you’ll see US-East-1’s spinning disks actually performing writes very well. It’s like 4 times faster than DigitalOcean. Their spinning disks lose to SSDs when it came to reads and random seeks.
I think, in principle, for use cases like my blog website, reads are more important than writes, and looking at the above numbers, I could go with either DigitalOcean or DreamCompute’s US-East-2. DigitalOcean’s read performance is really impressive, and it could have been a really strong attraction for me to move over. On the other hand, I’m quite comfortable at DreamCompute, and their plans are more value-for-money (at least to me).
Another matter that draws me to hosting at DigitalOcean’s Singapore data centre is the network latency to where I am, and where a large readership of my blog is located. I’m looking at network latency, on IPv4, of 8ms thereabouts for DigitalOcean at Singapore, versus something like 280ms with DreamCompute.
However, oddly enough, DigitalOcean’s IPv6 connectivity is truly crappy. They run at roughly the latency as DreamCompute even though the former is in Singapore while the latter is in the U.S. It turns out that my traffic heads out to Hurricane Electric, where I guess it is tunnelled back to DigitalOcean because their own IPv6 peering is not quite as well established.
There are more things about price plans and included features that can be compared, but I think I’ll address those bits in another post. DreamCompute’s and DigitalOcean’s services are different enough that it isn’t too straight-forward to make an apples to apples comparison. Just the performance aspect alone, which is the main purpose of this post, already sounds complicated enough to compare.
The main takeaway, at least for me, is that SSDs sometimes won’t produce the kind of performance leap we’d expect them to do. In fact, DreamCompute’s US-East-2’s SSDs write slower than US-East-1’s spinning disks, and DigitalOcean has really excruciating slow SSD writes.