We recently were required to set our Queue Depth to 16 mb, We had an older, slower storage array EVA 8300 that was experiencing heavy latency on reads and writes at the default 0x20 (32mb Queue Depth Size), we implemented a performance trending and health check solution that pointed to reducing the queue depth to better handle storage traffic. Typically this is not an issue, but until we implement our new IB SAN that has all the capabilities to handle all the transactions, this helped optimize our setup to get us through in the mean time.
Here are the steps... This is for the Qlogic QLA2562 cards, You can also use SAN SURFER in the full version of ESX with a service console, to perform the task without rebooting, but not on ESXi .
1. list the hba types ; /usr/sbin/esxcfg-module -l | grep -i ql
2.list the hba's on server ; ls /proc/scsi/qla2xxx/ … in our case will see 1 and 2
3. display the information to verify current queue depth ; cat /proc/scsi/qla2xxx/1 then 2
4. view and verify the loaded modules ; /usr/sbin/esxcfg-module -g qla2xxx
5. Display the current queue depth ; cat /proc/scsi/qla2xxx/1 and 2 | grep -i "queue depth"
6. Change the queue depth to 32 ; /usr/sbin/esxcfg-module -s ql2xmaxqdepth=32 qla2xxx
7. Check changes are reflected in esx.conf ; cat /etc/vmware/esx.conf | grep -i ql
9. Display current queue depth to verify; cat /proc/scsi/qla2xxx/1 and 2 | grep -i "queue depth" "32" in hex is "0x20"