I have been doing some reading around SIOC (Storage IO Control) and have decided to put together my understanding of common questions and answers the people would come across before implementing it... Are you able to help us confirm these answers are correct? This applies to vSphere 5.0 Env.
Q1\What if I do not enable SIOC?
Answer: VMs will push IOPS freely; no throttling of queues takes place
Q2\What if I enable SIOC for “some” datastores and leave shares as normal? (Threshold = 30ms)
Answer: VMs in those datastores will have equal shares of I/O once latency hits 30ms, VMs in the other Datastores will push IOPS freely with no throttling of queues taking place.
Q3\What if SIOC is enabled across all Datastores with shares set to normal?
Answer: All VMs in one datastore will get fair amount of I/O shares once latency hits 30ms on that datastore.
Q4\What happens for a VM that runs on an ESXi server that is throttling queues for a different noisy VM that resides on a different datastore?
Answer:The VM is not impacted and no throttling occurs against it. Throttling occurs against VMs I/O and not against an entire ESXi host.
Q5\In a multi-tenanted VMWare environment where each tenant have their own datastores, SIOC should be enabled against all datastores in the environment and not against a specific tenant’s datastores. Otherwise it would be unfair for one tenant to have their VM queues throttled but not for another tenant.
Q6\SIOC requires knowledge of the VM workloads, otherwise putting high IO VMs in one datastore and enabling SIOC on it versus putting low IO VMs in one datastore and enabling SIOC might result in the high IO datastore is more vulnerable to I/O queue throttling than the low IO datastores.
Answer: Correct, VMs should be placed in datastores in a way that the expected IO is balanced across all datastores.
Thanks for posting your understanding.
As per my understanding,
-Correct. SIOC will throttle the queue depth only when it hits latency threshold. SIOC is datastore wide scheduler. It will throttles IOs if SIOC is enabled on that datastore. If SIOC is not there, only IO scheduler there we can have is ESXi local scheduler. Also there is other scheduler on datastore i.e. Adaptive queing
-Yes . correct
-Yes. SIOC is datastore wide schedular & can be enabled on per datastore. IOPS will be distributed across host based on the total shares on each ESXi host . Once it distributes IOPS based on shares to ESXi host, local ESXi IO scheduler will come in picture from there on.
- Yes. Correct. If there are high IO intensive VMs, it is likely that latency threshold will hit. Once it hits, there will be throttling.