Update: Check out Part 2.
On an email distribution list yesterday someone commented on the disappointing IO performance they received while running a SharePoint Farm with VM roles in Windows Azure. As an Azure user I too had noticed the IO did feel a bit sluggish but with a super fast SSD in my laptop just about any VM these days feels that way. Just a few days earlier I was checking out Amazon™s EC2 pricing and it appears the cost to run a VM in EC2 vs. Azure appear to be about the same for about the same configuration. So naturally the next question is, of the two cloud services which offers better IO?
|Before I go any further let me be very clear this is not an end-to-end review which would take days if not weeks to conduct. The goal here is just to do a quick look-see and try to determine if there is any validity to the feeling the IO is a bit sluggish and if, as an Azure user, should I take a look at Amazon’s EC2. The Test|
When choosing a configuration I chose the EC2 Micro and the Azure Extra Small. In some configurations EC2 has a bit higher memory while in some cases Azure wins out but I decided to go with the entry level offerings for this test (I obviously could do these tests across every instance type but that is not what this is about see previous paragraph).
I setup both instances to run Windows 2008 R2 SP1 (x64) and did not install any additional software or do any tuning. For the test runner I used ATTO Disk Benchmark v2.46 and the image below details the results.
As you can see neither of the services are actually rocking it when it comes to IO. Amazon’s EC2 wins out on read operations (green bar) topping out at around 100 MB/sec which outperforms Azure by 3x or more with Azure topping out at about 28 MB/sec. Azure on the other hand did better when it came to write operations (red bar) reaching 64 MB/sec compared with Amazon consistent but slow ~32MB/sec top end.
To put these test results into perspective I decided to run this same test on a USB 2.0 8GB thumb drive running on my Windows 7 laptop. As you can see the device did not reach the write performance of either cloud offering but to my amazement my USB device outperformed Windows Azure on read performance by about 6 MB/sec. The USB was able to top out at about 34 MB/sec vs. Azure’s 28 MB/sec for read operations.
So if you are running your SharePoint Farm in either Azure or EC2 and you feel like your IO could be better you are probably right. While neither service won any contests on the IO performance at least Amazon labeled the tested configuration (t1.micro instance) as having low IO and offer configurations for higher IO applications. Whereas for Azure there is no such designator and no option to choose a higher IO configuration. So as we told our kids when they were younger “you get what you get and don’t throw a fit”. Now to be fair, Azure VM Roles are still in preview (“Beta” for you old timers) so maybe/hopefully/oh hear lord please, things will get better.