White Papers

Modifying queue depth and timeouts
10 Dell EMC SC Series: Best Practices with VMware vSphere | 2060-M-BP-V
4 Modifying queue depth and timeouts
Queue depth is defined as the number of disk transactions that can be in flight between an initiator and a
target. The initiator is an ESXi host HBA port or iSCSI initiator, and the target is the SC Series front-end port.
Since any given target can have multiple initiators sending it data, the initiator queue depth is used to throttle
the number of transactions. Throttling transactions keeps the target from becoming flooded with I/O. When
this flooding happens, the transactions start to pile up, causing higher latencies and degraded performance.
While increasing the queue depth can sometimes increase performance, if it is set too high, there is an
increased risk of overdriving the storage array.
When data travels between the application and the storage array, there are several places where the queue
depth can be set to throttle the number of concurrent disk transactions. The most common places where
queue depth can be modified are listed in Table 2.
Areas for setting queue depth
Area
The application itself
The virtual SCSI card driver in the guest
The virtual machine file system (VMFS) layer
(DSNRO)
The HBA VMkernel Module driver
The HBA BIOS
The remainder of this section explains how to set the queue depth in each layer.
Caution: The appropriate queue depth for a host may vary due to several factors. As a best practice, only
increase or decrease the queue depth if necessary. See appendix A for determining the proper queue depth.
4.1 Host bus adapter queue depth
When configuring the host bus adapter, the Execution Throttle or queue depth should be set to 255 as to not
gate the driver module queue depth. Depending on firmware version, the Execution Throttle variable in
QLogic cards is unavailable because it has been deprecated in favor of the variable being set in the driver
module. The queue depth variable within the VMkernel driver module loaded for each HBA in the system and
DSNRO ultimately regulate the host queue depth.
4.2 Storage driver queue depth and timeouts
The VMkernel driver module ultimately regulates the queue depth for the HBA if it needs to be changed. See
appendix A for information about determining the appropriate queue depth.
In addition to setting the queue depth in the driver module, the disk timeouts must also be set within the same
command. These timeouts need to be set for the ESXi host to properly survive an SC Series controller
failover. To configure these settings, refer to the section, Adjust Queue Depth for QLogic, Emulex, and
Brocade HBAs, in the document, vSphere Troubleshooting in the VMware vSphere Documentation.