Monday, February 9, 2009

VMware queue depth

I know every ESX admin has dealt with storage performance issues at some point. Most detailed research includes modifying the HBA queue depth.

Basically queue depth is the number of outstanding requests between the HBA and storage. I believe the default is 32. This is normally fine, but with VMware you are sharing the HBA so if you have a multitude of high i/o servers, you may have more than 32 requests.

When the queue length is reached there is basically a SCSI reset and communications is briefly halted. This can cause performance issues if it happens often.

You can use ESXTOP in disk mode to see your queues. If you decide to change them you can use esxcfg-module as per below (from http://communities.vmware.com/message/790859#790859):

Set the HBA queue length to 64 on all adapters

to get driver: vmkload_mod -l | grep qla for q logic
vmkload_mod -l | grep lpfcdd for exmulex
to change q logic
esxcfg-module -s "ql2xmaxqdepth=nn"
esxcfg-boot -b or esxcfg-boot -m
reboot
to change on emulex
esxcfg-module -s "lpfc0_lun_queue_depth=nn lpfc1_lun_queue_depth=nn"
esxcfg-boot -b or esxcfg-boot -m
reboot

No comments: