After testing disk performance in the new D-Series VM’s i decided to take a look at what other ways there were for maximizing performance on the disk system on an Azure VM.
First of some baseline needs to be establised, i attached a simple disk to the VM and initialized it as a GPT disk. Then i ran SQLIO as descriped in my previous post and to get something nice to look at, i included CrystalDiskMark, this was the result.
Where do we go from here? Well, we can create a storagepool from 2 or more disks and create a Virtual Disk across those two disks to, hopefully, gain some performance.
Initially we get more performance from the setup with two disks, but with only 3 outstanding IO’s, we see the performance of the single disk outperform the 2 disk setup.
How about with 3 disks:
It looks a bit better, but still not much better than one disk. But what if we create the Virtual Disk as a Parity disk?
Thats more like it, what if we create the VD as a Mirror?
This gives the same level of performance as the Simple config, so no real reason to use that in Azure, as your disks are allready 3 times redundant.
Remember the disk limitations when you plan your deployment, depending on the size of your VM, you are limited to a number of disks you can add. See this for more info
Now if we add more disks to the parity VD will that boost our performance?
Practically the same performance as with 3 disks. Up to now i have been running an A2 VM, but to add more disks i need to upgrade to an A4, this might create inconsistencies in comparing these with the previous tests.
This is a storagespace with 16 disks, and one VD configured as parity.
Not that impressive, it seems the parity algorithm maxes out beyond 3 disks.
By the way, dont create the disk in Computer Manager/disk manager as a dynamic disk:
To finish things off, here is a 4 disk parity, where the disks have read/write caching enabled.
Hope you can use these as a guide to what setup you should run on your VM’s to get the maximum performance.