Objective 3.5 – Set up and Configure Storage I/O Control (SIOC)

Here is the last of our objective 3 revision tasks; Objective 3.5 – Set up and Configure Storage I/O Control (SIOC).  As always this is linked to from the VCP6.5-DCV Blueprint.

Happy Revision

Simon

Objective 3.5 – Set up and Configure Storage I/O Control (SIOC)

Describe the benefits of SIOC

vSphere Storage I/O Control allows cluster-wide storage I/O prioritization, which allows better workload consolidation and helps reduce extra costs associated with over provisioning.

Storage I/O Control extends the constructs of shares and limits to handle storage I/O resources. You can control the amount of storage I/O that is allocated to virtual machines during periods of I/O congestion, which ensures that more important virtual machines get preference over less important virtual machines for I/O resource allocation.

When you enable Storage I/O Control on a datastore, ESXi begins to monitor the device latency that hosts observe when communicating with that datastore. When device latency exceeds a threshold, the datastore is considered to be congested and each virtual machine that accesses that datastore is allocated I/O resources in proportion to their shares. You set shares per virtual machine. You can adjust the number for each based on need.

The I/O filter framework (VAIO) allows VMware and its partners to develop filters that intercept I/O for each VMDK and provides the desired functionality at the VMDK granularity. VAIO works along Storage Policy-Based Management (SPBM) which allows you to set the filter preferences through a storage policy that is attached to VMDKs.

Enable and configure SIOC

Configuring Storage I/O Control is a two-step process:

  • Enable Storage I/O Control for the datastore.
  • Set the number of storage I/O shares and upper limit of I/O operations per second (IOPS) allowed for each virtual machine.

By default, all virtual machine shares are set to Normal (1000) with unlimited IOPS.

Configure/Manage SIOC

When you enable Storage I/O Control, ESXi monitors datastore latency and throttles the I/O load if the datastore average latency exceeds the threshold.

  • Browse to the datastore in the vSphere Web Client navigator.
  • Click theConfigure tab.
  • Click Settings and click General.
  • Click Edit for Datastore Capabilities.
  • Select the Enable Storage I/O Control check box.
  • Click OK.

Unless virtual machine workloads are very similar, shares do not necessarily dictate allocation in terms of I/O operations or megabytes per second. Higher shares allow a virtual machine to keep more concurrent I/O operations pending at the storage device or datastore compared to a virtual machine with lower shares. Two virtual machines might experience different throughput based on their workloads.

  • Find the virtual machine in the vSphere Web Client inventory.
    • To find a virtual machine, select a data center, folder, cluster, resource pool, or host.
    • Click the VMs tab.
  • Right-click the virtual machine and click Edit Settings.
  • Click the Virtual Hardware tab and select a virtual hard disk from the list. Expand Hard disk.
  • Select a VM storage policy from the drop-down menu.

If you select a storage policy, do not manually configure Shares and Limit – IOPS.

  • Under Shares, click the drop-down menu and select the relative amount of shares to allocate to the virtual machine (Low, Normal, or High).

You can select Custom to enter a user-defined shares value.

  • Under Limit – IOPS, click the drop-down menu and enter the upper limit of storage resources to allocate to the virtual machine.

IOPS are the number of I/O operations per second. By default, IOPS are unlimited. You select Low (500), Normal (1000), or High (2000), or you can select Custom to enter a user-defined number of shares.

  • Click OK.

Monitor SIOC

Use the datastore Performance tab to monitor how Storage I/O Control handles the I/O workloads of the virtual machines accessing a datastore based on their shares.

  • Datastore performance charts allow you to monitor the following information:
  • Average latency and aggregated IOPS on the datastore
  • Latency among hosts
  • Queue depth among hosts
  • Read/write IOPS among hosts
  • Read/write latency among virtual machine disks
  • Read/write IOPS among virtual machine disks

To view these performance metrics;

  • Browse to the datastore in the vSphere Web Client navigator.
  • Under the Monitor tab, click the Performance tab.
  • From the View drop-down menu, select Performance.

Differentiate between SIOC and Dynamic Queue Depth Throttling features

Dynamic Queue depth throttling, also known as Adaptive Queue Depth, can adjust the LUN queue depth. The algorithm engages when storage I/O congestion returns QUEUE FULL or BUSY status codes.  When these codes are received, the queue depth is cut in half.

Storage I/O Control uses proportional shares when there is congestion to allow for a proportional amount of I/Os.  Much in the same way share values can be assigned to CPU or RAM within DRS resource groups.

Determine a proper use case for SIOC

SIOC can be configured to ensure that all VMs gain a fair allocation of storage resources.  With SIOC enabled on a datastore, any one VM can be prevented from dominating the datastore, by monitoring device latency.  If latency is higher than configured values, SIOC reduces the latency by throttling back VMs that are using excessive IO.

Compare and contrast the effects of I/O contention in environments with and without SIOC

With SIOC enabled VMs will receive equal device queue depth and equal access to the same datastore.  The proportional algorithm comes into effect by enabling SIOC, additionally configuring reservations, shares and limits allows further management of Storage IO on the datastore.

Without SIOC a VM could dominate a datastore, especially likely if a VM request IO in bursts.

Understand SIOC metrics for Datastore Clusters and Storage DRS

The following metrics are available within datastore performance tab;

  • Average latency and aggregated IOPS on the datastore
  • Latency among hosts
  • Queue depth among hosts
  • Read/write IOPS among hosts
  • Read/write latency among virtual machine disks
  • Read/write IOPS among virtual machine disks