Talking to different Customers and even Architects in the Cloud Computing world, I noticed that Azure disks seem to have a bad reputation compared to AWS’s EBS volumes. There is a lot of chatter of how users tend to experience lots of latency when using Azure disks and experience performance issues that affect their applications. I have also heard that many customers prefer to go with AWS than Azure due to these disk performance issues.
So I decided to do a simple test and collect some numbers to separate the truth from the myth.
Things to take into account
Some customers expect cloud storage IO numbers to match what they currently have on-premise. In some cases, this might be possible due to old hardware and a non-optimized network but in most cases that would be very hard to accomplish.
The reason behind this is that in your server room/silo your physical storage is a few centimeters away from your server. Either you are using DAS ( directly attached storage), SAN (Storage array network) or NAS (Network Attached Storage). In all 3 cases, your storage is very close to your physical servers and you should not be experiencing much latency. In the Cloud Computing world, depending on your configuration your storage can even be hosted in a completely different datacenter/region (no one would do that but its possible). Even if the storage is within the same datacenter, it might be kilometers apart from your physical server. So that is something to keep in mind.
Also, Azure recently made Managed disks the default option for all VM disks, where you do not have to worry about creating a storage account for your disks and optimizing the connection route. Microsoft takes cares of all that for you.
For this quick test, I brought up a DS3-v2 (4 vCPU and 14 GB RAM) Windows VM in Azure with a Premium Disk. The monthly total coming to 229 US$ (Azure Hybrid benefit).
A m4.xlarge (4 vCPU and 16 GB RAM) Windows VM in AWS with a gp2 EBS volume, monthly total coming to 300 US$.
Note: I did not use the Provisioned IOPS SSD for EBS since its equivalent in Azure would be Ultra SSD. I went with the most popular disks for both.
I downloaded iometer for both OSes. An open-source application developed by MIT.
The first test for a Single threaded application with a 1 Gib File for 5 iterations.
The Second test for a multi threaded application with a 1 Gib file for 5 iterations.
I would like to first acknowledge that is a very basic test with no optimizations or any default settings being changed. But looking at the above screenshots, it is clear that the Azure VM disks are performing way better that the AWS VM disks.
For the multi-threaded Sequential read and writes, Azure is averaging 136.7 MB/s while AWS is averaging 94.65 MB/s, a 44.4% difference.
For the multi-threaded random read and writes, Azure is averaging 68.34 MB/s while AWS is averaging 12.66 MB/s, a 440% difference.
So this shows that Azure Windows VMs with Premium disks way out-perform AWS VMs with gp2 EBS volumes.
I am in no way a storage expert, so if I not taking something into account, please let me know.