Search the VMware Knowledge Base (KB)
View by Article ID

Controlling LUN queue depth throttling in VMware ESX 3.5 Update 4 (1010922)

  • 5 Ratings


This article provides steps to throttle the LUN queue depth in VMware ESX 3.5 Update 4.


VMware ESX 3.5 Update 4 introduces 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.
Note: The QFullSampleSize and QFullThreshold are system-wide configuration parameters. If the system has different vendor storage arrays connected, all the arrays will experience the throttling effect if one LUN/port from any array returns the QUEUE FULL or BUSY errors.

By default, this algorithm is disabled.
To enable the algorithm:
  1. Using VMware Infrastructure (VI) Client, navigate to the Configuration tab of the ESX host you want to modify.
  2. Click Advanced Settings.
  3. Click Disk.
  4. Set QFullSampleSize to a value larger than zero. The usable range is between 0 and 64.

    Note: For a NetApp storage array, set the QFullSampleSize value to 32.
  5. Set QFullThreshold to a value smaller than or equal to QFullSampleSize. The usable range is between 1 and 16.

    Note: For a NetApp storage array, set the QFullThreshold value to 8.

These settings take effect immediately. You do not need to reboot the ESX host.

Note: Careful consideration is needed if multiple hosts access the same LUN or array ports. For the adaptive queue depth algorithm to be effective, all hosts accessing the LUN/port need to have some form of adaptive queue depth algorithm. In the case where some hosts run the adaptive queue depth algorithm while others do not, the hosts not running the algorithm may consume the resources/slots on the array that are freed up by the adaptive hosts. This causes the hosts running the algorithm to exhibit lower disk I/O throughput. This may also increase the I/O congestion that initially triggered the adaptive algorithm.

If hosts running operating systems other than ESX are connected to array ports that are being accessed by ESX hosts, and the latter are configured to use the adaptive algorithm, either make sure the operating systems use an adaptive queue depth algorithm or isolate them on different ports on the storage array.

Request a Product Feature

To request a new product feature or to provide feedback on a VMware product, please visit the Request a Product Feature page.


  • 5 Ratings

Did this article help you?
This article resolved my issue.
This article did not resolve my issue.
This article helped but additional information was required to resolve my issue.

What can we do to improve this information? (4000 or fewer characters)

Please enter the Captcha code before clicking Submit.
  • 5 Ratings