I began to realise during early January that although I had started to optimise my original web site, there were some issues that could only be addressed by looking at the back end itself. My site was hosted on a shared hosting platform accessed via a cPanel and as a result my options for tuning were extremely limited. I started to research migrating to a dedicated server and the possibly co-locating a Mac mini. My site isn’t hit by a lot of traffic so it was tough to see value in the costs associated with purchasing a dedicated piece of hardware. During my research I stumbled across Digital Ocean, a relative new comer in the field of VPS’ who offer SSD based virtual servers starting at an insanely cheap $5 per month. Given the plethora of free trial vouchers scattered around the web and the fact they bill by the hour rather than month, it seemed like a great offer to explore the possibility of using a VPS. I signed up for their smallest VPS which included a single core, 512MB RAM and 20GB of SSD storage. I duplicated my existing site to the new virtual server and initiated some some testing. I was pleasantly surprised just how well this simple VPS coped even under some arduous web benchmarking and load testing sessions.
I started to wonder how some of the other VPS providers systems would compare to the $5 Digital Ocean system so I signed up with a bunch of the market leaders including Amazon, Rackspace and Linode and ran some benchmarks. I focused on key areas including CPU performance, disk & memory IO as well as internet connectivity. I tried to keep a relatively level playing field where possible so stayed with the lower priced systems.
Below is a summary of the systems I compared.
I used ‘sysbench’ to test the single core CPU’s with the following command
sysbench --test=cpu --cpu-max-prime=20000 run
Linode’s 8 core processor result is included in the data for completeness and was produced by adding a num-threads argument,
sysbench --test=cpu --cpu-max-prime=20000 --num-threads=8 run
The results were averaged over several runs.
cat /proc/cpuinfo provided details on VPS’ CPU configuration.
|VPS Host||CPU info||Best time|
|Digital Ocean||QEMU Virtual CPU version 1.4.0 @ 2.00Ghz, 4096MB cache, 4000 bogomips.||52.82s|
|Amazon||Intel Xeon CPU E5-2650 0 @ 2.00GHz 20480MB cache, 3600 bogomips.||47.64s|
|Linode||Intel Xeon CPU E5-2680 v2 @ 2.80GHz, 25600MB cache, 5602 bogomips.||30.31s (4.2s for 8 core)|
|Rackspace||AMD Opteron Processor 4170 HE @ 2.1Ghz, cache 512K, 4200 bogomips.||44.70s|
I used sysbench to generate memory relates results. I tried with both size at 1G and also 512M but there were negligible differences so I stuck with the 1G results for the test.
sysbench --test=memory --memory-total-size=1G run
This is the first test I performed that had a stand out result. Digital Ocean memory results are leagues ahead of the others. I want to do some further research into this and further check these results with some other benchmarks and real world tests to verify them.
|VPS Host||Memory Performance|
|Digital Ocean||1150.80 MB/sec|
Disk performance results were generated by
dd bs=1M count=512 if=/dev/zero of=test conv=fdatasync and also really surprised me. I expected the SSD based systems to outstrip the spinning platter systems of Linode but the results indicate otherwise. I suspect there’s some caching going on that the benchmark doesn’t take into account or Linode have upgraded their data centre in London to RAID’ed SSDs! Further research is required to confirm. Amazon felt as slow as the results showed.
|VPS Host||Disk Performance|
|Digital Ocean||264 MB/sec|
This is probably the hardest area to test equally but obviously its a critical area of importance for a server so I wanted to include it. I ran several tests to locate the closest speed node to each data centre and then ran a number of tests to that node and averaged the results over several runs.
I tried to run these tests at around the same time but due to geographical timezone issues there could be differences in local conditions. Results are included for download and upload speeds.
|VPS Host||Data Centre Connectivity|
|Digital Ocean||410MB/s - 107MB/s|
|Amazon||101 MB/sec - 103 MB/s|
|Linode||609 MB/sec - 231 MB/s|
|Rackspace||453 MB/sec - 38.25 MB/s|
Some of the more surprising results above (memory & disk specifically) will require further investigation to understand these numbers. Assuming these results are correct (they are easily repeatable) then its hard to pick a clear winner right now.
Amazon EC2 offer a reasonable CPU in their lowest spec VPS but its crippled by poor memory, disk and internet connection speeds.
Linode offers solid performance and probably leads this group in terms of actual performance. Even areas where I expected Linode to do poorly, i.e hard disk performance, the results currently indicate otherwise.
Digital Ocean turns in a respectable level of performance but when considering this droplet is priced at a fraction of Linodes $20 price, the value proposition is extremely high.
Whilst I investigate some of these results further, I’m going to leave my blog hosting on Digital Ocean for now.