This article is part of a series of 9 where I am talking about storage benchmarks performed on Microsoft Azure and on-premises. For a better understanding please make sure you read also the other parts:
- Describe what does the Iometer benchmarks will consist of.
- Describe how I configured the Azure VM and the benchmark results for the A3 Standard VM using a single disk hosted by Standard Locally Redundant Storage (LRS).
- Describe how I configured the Azure VM and the benchmark results for the A3 Standard VM using multiple (eight) disks in a RAID-0 (striped) configuration hosted by Standard Locally Redundant Storage.
- Describe how I configured the Azure VM and the benchmark results for the DS3 Standard VM using a single Premium P10 disk hosted by Premium Locally Redundant Storage (LRS).
- Describe how I configured the Azure VM and the benchmark results for the DS3 Standard VM using a single Premium P30 disk hosted by Premium Locally Redundant Storage (LRS).
- Describe how I configured the Azure VM and the benchmark results for the DS3 Standard VM using multiple (two) disks in a RAID-0 (striped) configuration hosted by Premium P30 Locally Redundant Storage.
- Describe how I configured the Azure VM and the benchmark results for the DS3 Standard VM using multiple (eight) disks in a RAID-0 (striped) configuration hosted by Standard Locally Redundant Storage.
- Describe how I configured the Hyper-V on-premises VM and the benchmark results using local HDD and SSD.
- IOPS benchmark detailed conclusions (on-premises and Azure IaaS).
IOPS benchmark detailed conclusions (on-premises and Azure IaaS)
- Don’t negligee the storage! It is one of the most common bottlenecks. The CPU and RAM are handling processing with whom in terms of speed most of the time the storage cannot keep with.
- Consider Azure Premium Storage (P20 and P30) in your cost estimations because there is a limited set of applications who fit the workloads Standard Azure storage and Standard A, D, G VM series can handle.
- Azure storage is not slow, but it is necessary to properly size the VMs and choose the correct storage type. As seen, there are multiple variables involved: VM series, VM size, VM bandwidth, storage type, disk type, host caching … A good Azure provisioning involves a correct understanding of the previously mentioned parameters.
- If we compare the performance obtained using a single disk hosted by Azure Standard Locally Redundant storage with the performance obtained on-premises with a single virtual disk limited to max 500 IOPS hosted by a single consumer class HDD (Western Digital Scorpio Black WD5000BEKT 500GB) we can clearly see the Azure storage is overall a better performer, but not significant. The biggest problem I see with the disks hosted by Azure Standard storage is that are limited to 300 and 500 IOPS each (depending on what VM series you will use). As seen, for 8 KB IOPS the throughput is between 3.40 and 4.07 MBps. In my opinion this storage limitation is actually too low and fit only specific workloads.
Exactly here the main problem occurs – the A3 Standard VM is the Azure Portal recommended VM and a single additional Azure disk will not provide the performance a single disk on-premises will provide.
In the majority of the cases when a VM is provisioned on-premises, no storage QOS is applied, case in which the overall storage performance can be much better.
- If the situation requires the usage of Azure VMs who support only Standard storage, or when is necessary to host large volumes of data at lower costs, the primary method to achieve good performance in Azure is to combine the power of multiple disks (RAID-0 / striped configuration). As seen in the A3 Standard VM using multiple (eight) disks (in RAID-0 striped configuration) hosted by Standard Locally Redundant Storage case the storage performance improved at least 8 times the performance obtained using a single disk.
Another way to improve the VMs storage performance when using Azure Standard storage is to change the disk host caching from the default value (None) to Read/Write or Read Only. (I first recommend to try combining the power of multiple disks before changing the host caching setting). Usually the host caching adjustments should be done when the application storage usage is understood and the software recommendations encourage it.
- The Azure Premium P10 disks should carefully be taken in consideration. The 500 IOPS limit per disk is a performance killer (for exclusive 8 KB write IOPS the throughput is not higher than 4.18 MBps). The performance for read operations is very good, but we should not forget these disks are coming by default configured with Read Only host caching. A single P10 disk is usually suitable for specific types of workloads (ideally for systems focused to provide very fast read-only access to data, or test & development VMs where speed is essential but costs should be kept down as possible). The Azure consumer expectation is premium storage is called Premium with a reason and by default will solve any encountered storage performance issues, but the Premium P10 disks are by far not as fast as we think in terms of write operations.
The Azure Premium storage I/O unit size is 256 KB. Ideally the application who is consuming this type of storage should work with I/Os in size of 256 KB (or higher) -> to be able to use at maximum the Azure Premium storage. However, in general the existing server software solutions are working with lower size I/Os – so don’t be tempted to use P10 disks unless you are sure it fits your usage.
- The Azure Premium P20 and P30 disks should be considered when hosting any kind of heavy production VMs. In case a single P20 or P30 disk is not enough for the amount of storage workload your VM will handle, then RAID-O / striped configuration of the same type of disks will considerably improve the results (better throughput and lower latency times).
- It is very hard to do a 1-to-1 comparison between the Azure Premium storage and the on-premises consumer SSD performance because in Azure we have to deal with variables like: bandwidth, VM size, Premium Storage Disk type, host caching … As mentioned before – in the majority of the cases when a VM is provisioned on-premises, no storage QOS is applied, case in which the overall storage performance can be much better than Azure. Moving the on-premises VM with the same disk layout in Azure doesn’t guarantee same, or better performance.
- There are no considerable performance improvements if Azure standard disks are attached to DS series VMs.
- In the majority of the cases the storage is the most cost driven factor. We also have to take in consideration the lifetime of the hosted VM. Strictly from computing resources point of view the costs with a short lifetime (1 month) VM with very fast P30 storage are smaller in Azure than on-premises (especially if on-premises you don’t have the storage available and purchase/lease is required). The same VM, but for long periods of time (more than one year) will become much cheaper on-premises and as seen in the benchmarks sometimes much better in terms of performance. Of course this will require proper sizing and very good understanding of the hosted system.