Storage IO Controller is used to manage the IO on VM in an efficient way. We can consolidate our storage by using SIOC, It will allow more VMs which we can map on the datastore.
Every VM disk has its own share of storage resource and using SIOC we can manage these shares. The VM has more share then more throughput and low latency.
When we want to give preference to a particular VM we can enable SIOC on datastore and then assign more shares to that VM.
SIOC will be enabled on Datastore level and it will monitor its end to end latency.
SIOC is supported to storage which is connected through iSCSI ,FC and NFS. SIOC will get into the picture when there is certain latency on VM. Disk shares are reserved for IO operations.
SIOC will ensure that every VM gets its own share so that it is not going to affect the performance of the VM.
SIOC will reduce the higher latency by given low priority to VMs which has a huge IO operation. But some time these VMs need excessive IO. We can just add high share value to VMDK file of the VM which will not cause any congestion on IO operations on storage.
SIOC will ensure that every VM will get it storage resource by tuning the share values.
Let’s take an example, we have 3 VMS : VM01, VM02 and VM03 that are created on one ESXi host and each has 1000 disk shares.
All 3 VM have 100 shares. Now VM02 is using 100% resources which is present in the ESXi host. The Other VM will not be able to use ESXi resource in an efficient way. This situation occurrs when SIOC is disabled.
If we switch ON the SIOC on datastore which has these 3 VMs, it will monitor the datastore. As soon as a certain latency threshold is reached, the datastore will come into action to balance the resource usage among VMs.
It will try to have limitations on IO operations on that host. For this it has to know what the limit is. It will add shares of every VMDK file. After this, datastore-wide disk scheduler will calculate the I/O slot entitlement based on the host level shares and it will throttle the resource usage queue. It will balance the IO operations on the VMs.
This mechanism has pros and cons:
SIOC will limit the resource and all the users can give preference to certain VMs and increase their performance
But by limiting the resources, the VMs will not be allowed to use more resources, even if resources for that host is utilized less.