I am trying to configure the max queue depth (ql4xmaxqdepth) option on a QMH4062 HBA running ESXi 4.0. I run through the following steps and the driver fails to load when using the ql4xmaxqdepth option. If I change the config option to be ql4xdiscoverwait the driver loads just fine. Can I not change the ql4xmaxqdepth on this card?
1. Connect to Service Console (unsupported)
2. Run vmkload_mod -l | grep qla
shows the driver to be qla4xxx
3. Run esxcfg-mod -s ql4xmaxqdepth=96 qla4xxx
4. Reboot
5. The driver no longer loads and /etc/sysboot.log shows...
Vmkload_mod: Can not load module qla4xxx: Bad parameter
6. From console run vmkload_mod qla4xxx ql4xmaxqdepth=96
Vmkload_mod: Can not load module qla4xxx: Bad parameter
7. From console run vmkload_mod qla4xxx ql4xdiscoverwait=60
It loads fine.
From console run vmkload_mod qla4xxx ql4xmaxqdepth=96 Vmkload_mod: Can not load module qla4xxx: Bad parameter
A) I am pretty sure this can't be HIGHER than 64.
B) With more ESX hosts EACH host should be LOWER queue depth not higher.
So with 2 hosts you should be at the default, which is around 32. If you have 8 hosts, you should be more like 8.
The depth goes DOWN with successive hosts attached to the same datastore NOT UP.
I'm rpretty sure parker is right about the max queue depth value.
That being said, your target value is related not solely to number of hosts, but number of hosts per storage array port AND the max queuedepth of the array ports.
So, if you have, say 8 hosts going into 1 port (1 path on each host), to an array with a queue depth of, say 1500 (like many 3PAR arrays), you'd want:
1500/8 = max of 187 (wihch is obviously more than the max of 64).
--Matt
VCP, vExpert, Unix Geek
If you had 3 ESX 4.0 host, then would the ql4xmaxqdepth be 16?
I was told to run the following command on all 3 ESX
esxcfg-module -s 'ql4xmaxqdepth=200 ql4xportdownretrycount=60' qla4xxx
However it took down the HBA to the point that it would not load the module, and after reading this post, now I know why.
So I decided to run the following on all 3 host.
+esxcfg-module -s '' qla4xxx (that is 2 apostrophes not a single quotation mark) +
This command brought the HBA's back online. Now I'm just curious what the settings should be.
ql4xmaxqdepth is not a modparam in esx 4.0. What is you're use case for using this?
The KATO cannot be changed to anything higher than its current value.
I have attempted to change it via the following command;
iscli -n 0 KeepAliveTO 120 iscli -n 1 KeepAliveTO 120
or
iscli -n 0 KeepAliveTO 60 iscli -n 1 KeepAliveTO 60
But when I run;
iscli -c 0 iscli -c 1
It shows it still at 14.
Also the command of 'esxcfg-module -s 'ql4xmaxqdepth=200 ql4xportdownretrycount=60' qla4022' does not work with ESX 4. I tried it and the qla4xxx module fails to load with a "Bad Parameter". The module is now known as qla4xxx. The parameters of ql4xmaxqdepth and ql4xportdownretrycount are not valid in qla4xxx. They currently had me run;
esxcfg-module -s "ka_timeout=120" qla4xxx
Which seems to be working.
FYI:
The current valid parameters for qla4xxx are (you can get this by running “vmkload_mod -s qla4xxx”);
heap_max: heap_initial: ka_timeout: recovery_tmo: cmd_timeout: extended_error_logging: ql4xdontresethba: ql4xdiscoverywait:
I hope this helps anyone else who is having issues.