It is important to ensure the maximum queue depth of the HBA is configured to meet the manufacturer and VMware recommendations, which may dependant on the combination of ESXi version and the HBA model and version.
For QLogic HBAs, the default queue depth values are configured as below:
To view a list of loaded modules on the host system, invoke the following from the vSphere Command Line interface:
esxcli system module list
In my example the module loaded for the HBA is a using QLogic native drivers so I can search the output for a match for the module name:
esxcli system module list | grep qln
In order to determine the current queue depth for a HBA, we will need to identity the device name of the HBA by selecting a host in the vSphere Web Client and browsing to Manage > Storage > Storage Adapters.
Once we have identified the device name of the HBA we will use esxtop from the ESXi shell to determine the current queue depth.
1) Press ‘d’ to display statistics for storage adapters.
2) Press ‘f’ to display the available fields and press ‘D’ to select ‘Queue_Stats’ (AQLEN) and press enter to return the the statistics.
In order to configure the maximum queue depth we will require to retrieve the configuration parameter for the particular module loaded, in my example ‘qlnativefc’
esxcli system module parameters list -m qlnativefc
From the output of the parameters we can determine the the parameter that we require to modify is ‘ql2xmaxqdepth’ and can be performed as below, to set the maximum queue depth value to be ’32’.
esxcli system module parameters set -p ql2xmaxqdepth=32 -m qlnativefc
It is recommended to maintain configuration settings for all the host systems HBAs in a cluster, therefore by making the above change on one host system you should ensure that this is implemented on all host systems containing identical HBAs in the cluster. In the event that the host systems in a cluster are of mixed HBAs it is recommended to configure the maximum queue depth value is uniform accross all hosts.