IaaS IOPs Test – Azure Vs. AWS

I was curious recently about comparing disk IOPs between AWS and Microsoft Azure for IaaS Virtual Machines and the one thing that really surprised me was how much control and configurability you had when tuning and configuring disks. I decided to setup equivalent test labs in Azure and AWS, run some disk performance tests and compare the results. No doubt I am sure there is something I missed and further tweaks I can make. For the most part I kept things as the default where possible to keep the tests comparable.

Here are the two test lab configurations I used:


  • Azure VM: A4 – 8 cores, 14GB memory
  • OS: Windows Server 2012 Datacenter
  • Region: East Asia
  • VHD attached disk – Size: 100GB – NTFS Formatted. Host Cache Preference: None


  • AWS EC2: c3.2xlarge 8vCPUs 15GB memory 2X80 SSDs
  • OS: Microsoft Windows Server 2012 Base – ami-ab563191
  • Region/AZ: Sydney – ap-southeast-2a
  • EBS attached disk – Size: 100GB – NTFS Formatted, General purpose SSD, IOPS 300 / 3000

The tool that I ran to generate the results was CrystalDiskMark. One factor that no doubt skewed the test results was the fact that AWS has EBS volumes backed by SSDs whereas Azure doesn’t have SSDs for their VHD attached disks as yet. This may change in the future so for now Azure has 500 IOPS per disk as a hardcoded limit. One way around this limit is to have multiple volumes and create a striped volume, something I will try in the future.

The tests themselves were very simple, start with a 100MB sample data file, then use a 500MB file then increase it to a 1000MB file. For the Azure part of the test I both enabled and disabled the host cache preference setting on the attached disk and the results proved to be very interesting.

For the tests I simply attached a VHD for Azure and an EBS volume for AWS that was mounted as an empty drive in the VM to test against. I didn’t use any striping of volumes but that may come in another follow up article. The volumes are formatted as NTFS simple volumes.

So for now here are the results:

Test Cloud Provider Read [MB/S]- Seq Read [MB/S]- 512K Read [MB/S]- 4K Read [MB/S]- 4K QD32 Write [MB/S]- Seq Write [MB/S]- 512K Write [MB/S]- 4K Write [MB/S]- 4K QD32
Test 1 – 100MB file Azure 21.57 17.18 0.227 2.035 14.26 9.271 0.466 2.005
Test 2 – 500MB file Azure 17.64 12.20 0.157 1.921 12.45 11.42 0.476 1.988
Test 3 – 1000MB file Azure 23.56 12.80 0.162 20.31 12.46 11.13 0.483 2.041
Test 1 – 100MB file AWS 136.7 136.6 12.53 12.53 116.9 112.0 6.574 12.53
Test 2 – 500MB file   AWS 136.7 136.8 12.53 12.54 118.9 115.6 6.659 12.53
Test 3 – 1000MB file)   AWS 136.7 136.9 12.45 12.53 119.4 112.9 6.706 12.54

So from the above it appears that AWS is the clear winner..but when I enabled the host cache preference setting in Azure for the attached VHD volume, the results took a slight turn in Azure’s favour, especially in Disk Read operations. Very Interesting. One thing that I will try in the next round of my tests is to take a look at the provisioned IOPs that AWS has to offer, no doubt these will change things significantly.

Here are the results in Azure when I enabled the Host cache preference: Read/write for the attached VHD volume:

Test Cloud Provider Read [MB/S]- Seq Read [MB/S]- 512K Read [MB/S]- 4K Read [MB/S]- 4K QD32 Write [MB/S]- Seq Write [MB/S]- 512K Write [MB/S]- 4K Write [MB/S]- 4K QD32
Test 1 – 100MB file Azure 1041 943.7 52.42 183.5 23.51 45.60 2.034 2.038
Test 2 – 500MB file Azure 1055 916.3 49.96 181.7 12.17 56.38 2.039 2.034
Test 3 – 1000MB file Azure 1081 940.2 48.90 182.9 12.82 48.67 2.035 2.032

Take from these results what you will and these are just some initial observations. I will have a look at doing some SQL IaaS disk performance comparisons between AWS and Azure in a future article.





About Aaron Saikovski

Aaron Saikovski is a Microsoft certified technology specialist, consultant, developer, trainer and cloud solution architect with over 20+ years commercial information technology experience. He has consulted and worked with an incredibly diverse number of both local and international clients across the banking and financial services, utilities, oil and mining, telecommunications, logistics, construction/property, pharmaceutical, transport/airline and FMCG sectors. He has also consulted on a variety of projects to both Federal and State governments in high-profile portfolios such as Prime Minister and Cabinet, Department of Defence, Taxation Office, Department of Education and Training, Department of Employment & Workplace Relations and the Department of Health. Aaron’s skills revolve around the Microsoft platform stack with a core skillset based on the SharePoint platform. He has been involved in some of the largest SharePoint deployments in the world and was a member of the Global SharePoint Ranger team within Microsoft Corporation and was actively involved with the SharePoint Customer Advisory Team (SPCAT) to provide guidance and best practices to the largest Microsoft enterprise global customers. He was also an active MSDN article reviewer and contributor during his time at Microsoft. He has very broad and deep experience with architecting, developing and deploying complex customer solutions leveraging the Microsoft Office365 and Azure cloud platforms. Some of the key cloud customers he has been involved with are Qantas, Caltex, and Fujitsu/Westpac to name a few. He assists customers with their journey to the cloud and provides guidance and best practices to assist in identifying workloads that are suitable candidates to be migrated or redeveloped. These include IaaS, SaaS and PaaS solutions that solve a particular business requirement while providing the best technical outcome for the customer. Aaron is a regular presenter at such events as SharePoint Saturday (http://www.spsevents.org), Microsoft TechEd and is a regular presenter at user groups and conferences. He presents on a wide and varied range of topics that encompass the complete end to end Microsoft solution stack such as Windows 8 App development through to deploying Azure IaaS solutions with PowerShell. Aaron has an active social media profile. He was the founding member of OzMoss (http://www.codify.com/lists/OzMOSS), a very active and prominent online SharePoint community and he can be followed on Twitter at @RuskyDuck72. He blogs regularly at https://aaronsaikovski.wordpress.com/ Aaron is also an active affiliate member of the Institute of Electrical and Electronics Engineers (www.ieee.org) Outside of work Aaron is a very active volunteer for DoggieRescue (www.doggierescue.com) where he volunteers his time to maintain and improve their IT systems to keep them running as optimally and efficiently as possible. ** OPINIONS EXPRESSED ARE MY OWN VIEWS AND NOT THOSE OF MY EMPLOYER **
This entry was posted in AWS, Microsoft Azure and tagged , , , , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s