I often hear people making comments around Storage IO Control and Storage DRS IO Load Balancing being one and the same thing. It has been one of those myths that has been floating around for a long time now, and with this article I am going to try to stop it.
I guess where this myth comes from is that when you create a Datastore Cluster and you enable Storage DRS IO Load Balancing then it configures Storage IO Control for you automatically on all datastores which are part of that particular Datastore Cluster. This seems to give people the impression that they are the same thing.
I have heard people making these claims especially around interoperability discussions. For example, one of the common made mistakes is that you should not enable Storage IO Control on a datastore which has auto-tiering (like EMC FAST for instance) enabled. Now the thing is that in the Storage DRS Interop white paper it is listed that when using an auto-tiering array you should disable IO Load Balancing when using Storage DRS. However, let is be clear Storage IO Control and Storage DRS Load Balancing are not one and the same thing and Storage IO Control is supported in those scenarios!
Storage DRS uses Storage IO Control to retrieve the IO metrics required to create load balancing recommendations. So lets repeat that, Storage DRS leverages Storage IO Control. Storage IO Control works perfectly fine without Storage DRS. Storage IO Control is all about handling queues and limiting the impact of short IO spikes. Storage DRS is about sustained latency and moving virtual machines around to balance out the environment.
I guess I can summarize this article in just one sentence:
Storage IO Control != Storage DRS IO Load Balancing
Good article that you wrote about how SIOC works that may help others understand better: http://www.yellow-bricks.com/2010/09/29/storage-io-fairness/
Would it be right to say that SIOC takes host-based actions and DRS Load Balancing does datastore-based actions?
SIOC effectively limits the queue depth of a host to prevent VMs from overworking shared storage while SDRS LB moves storage workloads around on the datastores.
Duncan Epping says
Storage IO Control is a datastore wide scheduler! Storage DRS is not a scheduler, but rather a load balancing solution.
I’m confused, you say even in your own blog post that SIOC works by changing the host depth queue:
“After SIOC has been enabled it will start monitoring the datastore. If the specified latency threshold has been reached (Default: Average I/O Latency of 30MS) for the datastore SIOC will be triggered to take action and to resolve this possible imbalance. SIOC will then limit the amount of I/Os a host can issue. It does this by throttling the host device queue which is shown in the diagram and labeled as “Device Queue Depth”. As can be seen the queue depth of ESX02 is decreased to 16. Note that SIOC will not go below a device queue depth of 4.”
I’m not sure the disagreement on SDRS LB as we both said the same thing. SDRS LB moves VMDK files around to balance load on the datastores.
Please help me understand if you feel I still am not right in my understanding of the two.
Irfan Ahmad says
I believe your understanding is sound. Still, let me clarify as the former tech lead on both those features.
Indeed, SIOC works by taking host-based actions. However, that is just implementation details. What it accomplishes is the datastore-centric proportional sharing of storage performance. In other words, all VMs running on a datastore with SIOC enabled will be protected from noisy neighbors, even those on different hosts. SIOC is an extremely cool distributed system 🙂
Storage DRS, no less cool, works across datastores and provides performance load balancing in a datastore cluster (among other awesome features like maint. mode, affinity rules, out-of-space avoidance, etc.). As you said, it uses live migration to accomplish this.
I like these short articles that clear up confusion.
Isn’t ‘false myths’ a double negative?
Hi Duncan Epping,
I am going to work on DRS/SDRS/SIOC features soon, earlier I was working on MSCS .
After reading some of your articles, I could not stop to order your book (Clustering deepdive 5.1).
My query is ,,,if I have this book, do not I need to read all other articles on same features?. Does this book covers everything that I could find in articles? It will save my time. (though reading it is not a problem)…
Articles that contain an outtake from the boo typically have a disclaimer. Most of the content of the book cannot be found on the website though. Some articles might read familiar because it is the same person writing it, with the same knowledge :-).
I would always suggest to also read the newer articles on the topics of our interest as there might be new info in there.
The VMware vSphere Design Workshop documentation states “…if Storage DRS is configured, Storage IO Control is enabled”. Based on this article and my own experience I believe this is accurate only when SDRS I/O load balancing is enabled (not when SDRS capacity only is enabled). However I haven’t found any documentation that states this clearly.
Duncan Epping says