How it works...

As mentioned earlier, SIOC enables communication between these local host schedulers so that I/O can be balanced between virtual machines running on separate hosts. It does so by maintaining a shared file in the datastore that all hosts can read/write/update. When SIOC is enabled on a datastore, it starts monitoring the device latency on the LUN backing the datastore. If the latency crosses the threshold, it throttles the LUN's queue depth on each of the ESXi hosts in an attempt to distribute a fair share of access to the LUN for all the virtual machines issuing the I/O.

The local scheduler on each of the ESXi hosts maintains an iostats file to keep its companion hosts aware of the device I/O statistics observed on the LUN. The file is placed in a directory (naa.xxxxxxxxx) on the same datastore.

For example, if there are six virtual machines running on three different ESXi hosts, accessing a shared LUN. Among the six VMs, four of them have a normal share value of 1,000 and the remaining two have high (2,000) disk share value set on them. These virtual machines have only a single VMDK attached to them. VM-C on host ESX-02 is issuing a large number of I/O operations. Since that is the only VM accessing the shared LUN from that host, it gets the entire queue's bandwidth. This can induce latency on the I/O operations performed by the other VMs: ESX-01 and ESX-03. If the SIOC detects the latency value to be greater than the dynamic threshold, then it will start throttling the queue depth:

The throttled DQLEN for a VM is calculated as follows:

DQLEN for the VM = (VM's Percent of Shares) of (Queue Depth)
Example: 12.5 % of 64 = (12.5 * 64)/100 = 8

The throttled DQLEN per host is calculated as follows:

DQLEN of the Host = Sum of the DQLEN of the VMs on it
Example: VM-A (8) + VM-B(16) = 24

The following diagram shows the effect of SIOC throttling the queue depth:

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset