The HBA LUN queue depth determines how many commands the HBA is willing to accept and process per LUN and target.
ESXi 5.x the ddefault value for ql2xmaxqdepth=64, if a single VM is issuing IO, the queue Depth setting is applicable.
When multiple VM's are simultaneously issuing IO's to the LUN, the ESX parameter Disk.SchedNumReqOutstanding (DSNRO) value becomes the leading parameter, and HBA Queue Depth is ignored.
Increading the Queue Depth value without changing the Disk.SchedNumReqOutstanding setting will only be beneficial when one VM is issuing commands. It is considered best paactice to use the same value for the Queue Depth and DSNRO.
Type esxtop and press d:disk adapter:
The value listed under AQLEN is the queue depth of the storage adapter. This is the maximum number of ESX VMKernel active commands that the adapter driver is configured to support.
Type esxtop and press u: disk device:
DQLEN limits the commands per storage device.
The value listed under DQLEN is the queue depth of the storage device. This is the maximum number of ESX VMKernel active commands that the device is configured to support.
So basically I can multiply the LUN queue with the number of connected datastores to know how much active commands my host is allowed to issue down to the storage. This value will be limit by AQLEN to 2176 per vmhba.
What’s the Best Setting for Queue Depth?
VMware default settings are usually preferred. However, It is highly unlikely that all hosts perform at their maximum level at any one time. Changing the defaults can improve throughput, but most of the time it is just a shot in the dark. Although you are configuring your ESX hosts with the same values, not every load on the ESX server is the same.. Please do not change the default settings unless directed to by VMware in conjunction with the storage vendor. Changing these settings without analyzing the environment can be more harmful than useful.