VMware Cloud Community
mattkr
Contributor
Contributor

Set Queue Depth on QLogic qla4xxx driver

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.

0 Kudos
5 Replies
RParker
Immortal
Immortal

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.

0 Kudos
mcowger
Immortal
Immortal

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

--Matt VCDX #52 blog.cowger.us
0 Kudos
MPCDI
Enthusiast
Enthusiast

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.

0 Kudos
admin
Immortal
Immortal

ql4xmaxqdepth is not a modparam in esx 4.0. What is you're use case for using this?

0 Kudos
MPCDI
Enthusiast
Enthusiast

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.

0 Kudos