Storage I/O Control is a new feature of vSphere 4.1 which allows a user to define the QoS prioritization for the I/O activity on a single host or a cluster of hosts. SIOC supports only VMFS volumes and the latency threshold is configured on a per VMFS datastore.

Currently, the only method of configuring SIOC is using the vSphere Client while connected to your vCenter Server, which can be tedious if you manage more than 1 VMFS datastore:

The following vSphere SDK for Perl script allows a user to bulk update SIOC across your vSphere infrastructure based on an input file that consists of the name of the VMFS datastores and the latency thresholds to be configured. The script requires that you connect to your vCenter server and provide the following input parameters:

–datastore_inputfile = Is the name of the datastore input file which contains the name of your VMFS datastore and the latency value

–operation = There are four supported operations (query|enable|disable|update)

–vihost = Name of the ESX(i) host to perform the operation on (you only need to perform the operation on 1 host within a cluster and the changes are taken place across all hosts)


Here is an example of the datastore input file:

[vi-admin@makalu scripts]$ cat datastorelist
# datastorename;latency_value
# e.g.
# mydatastore1; 35

Note: The latency threshold must be between 10-100 ms. The default value when you enable SIOC is 30 ms,

Example of query operation:

Example of enable operation:

Example of disable operation:

Example of update operation:

Before attempting to make any changes, make sure you consult with your storage vendor.

3 thoughts on “Script – Automate Storage I/O Control in vSphere 4.1 (

  1. The default value is 30ms. The feature would kick in and start doing prioritization as soon as the average device latency gets close to 30 ms.

    It used to be 35 ms in past.

  2. Hi William,
    I was just about to write you an email, but then figured out what I was doing wrong, so thought I would share the experience for others such as me (scripting-muppets)
    I kept getting an error than confounded me, right up to the point of writing you the email, then the answer jumped out of the email and smacked me round the face.
    The error was:
    Error: couldn’t open the at \ line 213

    being as green as I am at this whole scripting lark I wasn’t aware that the datastore file had to reside in the same location as the file
    Once I worked this out, your script worked a charm, as you would expect it to
    Will R (PSO – NEMEA)

  3. edit
    not sure what happened to the above post, the error path info seems to have been stripped out.
    The full error was:
    Error: couldn’t open the d:\source\datastores.txt at d:\source\scripts\ line 213

Thanks for the comment!