VPS Disk Performance, Digital Ocean vs. Linode
irj972.co.uk
irj972.co.uk
You don't get fraction of a millisecond random reads from spinning disks without caching... period. So whatever you think your measuring you aren't.
My experience with performance measurements is that the vast majority of people don't measure what they think they are measuring or don't measure what is actually relevant for the use case (and all related use cases that need to be considered). And if you don't know what the expected result is they can be equally useless because you can't know that your results don't fit reality or the speed of light or whatever.
I wish I had a great answer for how you can get started doing performance work, but it starts with understanding the orders of magnitude of various operations. Flash seeks are hundreds of micros for crappy flash, spindles are ~4 milliseconds and that is with fast spindles. If you are working in memory you should know the difference between instructions (for instructions branching and stalled execution vs continuous execution) and cache misses and the various kinds of cache misses (different tiers, remote NUMA) as well as what happens when you have contended mutual exclusion or CAS primitives.
1. OS issues write to RAID HBA, write is stored to NVRAM (or battery-backed RAM on older cards).
2. RAID HBA issues write command to disk.
3. Disk accepts write into onboard buffer, acknowledges it as committed.
4. RAID controller releases cached pages.
5. Power loss.
...and you've lost data.EDIT: Notice that the write never actually touches disk in this scenario. Once a disk drive acknowledges a write, the RAID controller releases the data that was "written" from its cache. Disk writes take milliseconds, while memory writes take microseconds, and usually just nanoseconds. That leaves a relatively huge window during which the power could go out, but before which a write has been safely persisted to disk.
The problem is that the disks they're managing don't. (EDIT: barring SSDs with supercaps, but that's an entirely other discussion.)
If a write has been accepted by the disk and acknowledged as written — but in reality has only been stored in the disk's on-board cache — and you suffer a power loss before the write can be flushed to permanent storage (be it spinning rust or NAND cells), then you have lost that data.
This is exactly why a RAID controller worth using will disable a drive's onboard cache. Because disks lie.
Was my first comment somehow unclear?
There is no reason for the RAID controller to not let the on-disk cache and scheduling work while it is doing writeback, it only needs acknowledgement at the end before it flushes it's non-volatile cache.
This could also be something that I don't know about. Maybe in the world of disks write barriers are < some disable write caching command? Can controllers issue writes large enough to make up for the lack of caching + write barriers? I have no idea, how SATA works.
Again this gets into why it is hard to know what to expect from a disk IO benchmark. You have to know how the caches are operating and there are many of them and configuration can vary.
Minor point though: Digital Ocean at least advertises SSD for their servers, not spinning disk. Fraction of a ms random reads seem within the realm of possibility.
Both providers are likely to have certain host servers which are relatively empty, and others where a number of busy servers are going to really skew your results.
The one thing I'd recommend is to install monitoring which can keep an eye on your servers to ensure the performance hasn't dropped significantly since you first provisioned it. Munin http://munin-monitoring.org/ graphs disk IO latency by default, keeping a track of this allows you to make a decision on if you want to migrate a virtual machine elsewhere on the same provider - to see if you can avoid the noisy neighbours problem.
Never assume that you'll get the same performance on a daily basis.
Brendan Gregg has excellent info on these topics,
http://www.joyent.com/blog/benchmarking-the-cloud http://dtrace.org/blogs/brendan/2011/05/11/file-system-laten... http://dtrace.org/blogs/brendan/2012/10/23/active-benchmarki...
I'm guessing the smallest DO may have more competition for disk IO than the smallest Linode or the DO box could have had aggressive neighbors while the Linode didn't.
I usually use gnome-disks, hdparm, dd and iozone.
For me it wasn't solely performance or price, but additional features. Linode's control panel has a fair few features, and they have an API, but there doesn't seem to be many major users of that API.
Being able to deploy test machines to DO via Vagrant and then build my real boxes with Packer is a huge, huge plus for me as a solo dev. I'm also sitting on a 4Mbit/.8Mbit DSL pipe here in Australia and not having to upload an entire machine image is obviously a positive. And worst case, if DO somehow falls over, I can change a couple of lines and deploy to EC2 to keep things running. Building images for Linode wouldn't give me anywhere near that flexibility.
DigitalOcean $5/mo plan - http://serverbear.com/1990-2gb-ssd--2-cpu-digitalocean
DO $10/mo plan - http://serverbear.com/1989-1gb-ssd--1-cpu-digitalocean
DO $20/mo plan - http://serverbear.com/1990-2gb-ssd--2-cpu-digitalocean
Linode $20/mo plan - http://serverbear.com/10-linode-1gb-linode
That site also gives each product a score out of 100 which scales depending on how much it costs. DO seems to do really well at the low end.
2. I dont think Linode has officially roll out their new Storage System yet which is SSD + HDD Based but not using SSD for cache. At first I was skeptic of why not solely using SSD instead. But the results speaks for themselves, although one should note this is still in beta and not being used in Production so performance could degrade once the mass majority are on it. Compare to DO which is a real world performance.
3. There are whole loads of other things Linode does better then DO. Linode has pooled bandwidth, which to this date DO still haven't got round to implement. Different Linode are on different Hardware by default. Which DO is only just started doing it in a few cases. Bandwidth and Latency on Linode are far better. Linode has IPv6. Linode has a very decent Nodebalancer.
DO wins on memory / price and Control Panel. Other then that Linode wins. Linode now also offer metered per hour billing ( in beta ).
The only way to test this is to get a random sampling of servers (which in of itself may be difficult) and then re-do the testing.
That is to say, on a VPS you aren't the only customer using i/o.
Linode on the other hand is Direct Attached, similar to Rackspace Cloud (but they don't use SAS which are 15k5 RPM where as regular SATA drives are 7200RPM).
It's hard to beat a DAS RAID-10 SAS for performance and reliability. If DO offered a DAS RAID-10 SSD, then I'm sure their $5/month plan would increase to atleast $30/month.
If DO really wants to be the coolest kid on the block, they should offer DAS RAID-10 Intel S3500 SSDs and offer it for $5/month on a Ivy Bridge Intel E5-26xx's. Now that'll blow away the competition for sure. :D But that setup would atleast cost $100/month for perhaps 20gb of data.
TLDR: You get what you pay for.
Consumer SSDs are now at 50-100K IOPS. How on earth do people think that 2000 IOPS is "marginally better" than 50000? And I am just comparing one SSD to a RAID array.
I think you just must be completely unaware of random access disk performance and the massive disparity there.
The results were close because either the Linode host he was testing on actually had SSD storage or more likely because of some caching which indicates that the benchmark did not actually test random reads or writes or seeks.
You also write "SAS which are 15k5 RPM", but SAS does not dictate rotational speed (nor, as mentioned, that the drives use spinning platters at all). They are usually higher RPM if they are regular hd's as it doesn't make much sense to buy SAS controllers and SAS drives if you're going to opt for cheap consumer level performance. But my usual source of drives have both 7200 rpm and 10k RPM SAS drives.
Spending on SSD's for SAN/NAS storage would make absolutely zero sense unless your connectivity to said SAN/NAS is extremely low latency and high throughput - it'd be like burning money, so I very much doubt that's the bottleneck.
Between this, no IPV6 (in 2014, really?), censorship and the security fails, nobody should use Digital Ocean.
Regarding your other points, personally I'm not affected by the lack of IPv6 support (yet), and I don't know anybody else who is. I also think it's rich mentioning censorship and security considering Linode's history.
Doesn't make it any less embarrassing though.
For me personally, no provider is worth a second look that only provides legacy connectivity.