There have been a number of changes to the advanced parameters QFullSampleSize and QFullThreshold recently that I wanted to call out. Initially, these parameters were set globally, which meant that every LUN from every array accessed by the ESXi host were affected by changes to these parameters. In 5.1, we introduced a mechanism to change these setting on a per device basis via esxcli. This was great when there were multiple arrays presenting LUNs to a host since you could set the parameters for all LUNs from one array only. However, with the release of VMware ESXi 5.1, Patch ESXi510-201212401-BG, we once again have the ability to set these parameters globally. And you can also set them on a per device basis as well as globally. So what do these parameters do?
QFullSampleSize and QFullThreshold are required to enable the adaptive queue depth algorithm. From KB 1008113, VMware ESX 3.5 Update 4 introduced an adaptive queue depth algorithm that adjusts the LUN queue depth in the VMkernel I/O stack. This algorithm is activated when the storage array indicates I/O congestion by returning a BUSY or QUEUE FULL status. These status codes may indicate congestion at the LUN level or at the port (or ports) on the array. When congestion is detected, VMkernel throttles the LUN queue depth. The VMkernel attempts to gradually restore the queue depth when congestion conditions subside.
This algorithm can be activated by changing the values of the QFullSampleSize and QFullThreshold parameters. When the number of QUEUE FULL or BUSY conditions reaches the QFullSampleSize value, the LUN queue depth reduces to half of the original value. When the number of good status conditions received reaches the QFullThreshold value, the LUN queue depth increases one at a time.
Therefore, if you upgraded to vSphere 5.1 and wanted to tune the adaptive queue depth parameters, be sure to install Patch ESXi510-201212401-BG which will allow you to tune them globally once again.
Get notification of these blogs postings and more VMware Storage information by following me on Twitter: @VMwareStorage