I had a customer reach out to me recently to discuss VMware’s Storage I/O Control behavior and Adaptive Queuing behavior and how it works with QLogic’s Execution Throttle feature. To be honest, I didn’t have a good understanding of the Execution Throttle mechanism from QLogic so I did a little research to see if this feature inter-operates with VMware’s own I/O congestion management features.
QLogic explain the execution throttle mechanism as follows in their “Execution Throttle and Queue Depth with VMware and QLogic HBAs” white paper:
“When the queue depth is reached, this status is called (QFULL), the storage controller issues an IO throttling command to the host to suspend further requests until space in the queue becomes available. The ESX host accepts the IO throttling command and decreases the LUN queue depth to the minimum value, which is 1! The QFULL condition is handled by the qlogic driver itself.“
This begs the question – if the QLogic HBA driver is handling the QFULL (queue full) condition by default and is sending throttling commands to the ESX host, what impact does this have on native vSphere features like SIOC and Adaptive queuing? Surely there are now multiple mechanism trying to do I/O congestion management?
After some discussions with QLogic, it seems that the QLogic white paper which contains the above description is outdated and that the QLogic Execution Throttle mechanism hasn’t been used with vSphere for some time (it could be as far back as ESX 3.5 since it was used). This outdated mechanism is now ignored by the QLogic driver. When the QLogic internal request queue runs out of space, the driver returns a BUSY for the queue command path (it doesn’t do any throttling). VMware’s SIOC & Adaptive queuing mechanisms may now kick in if configured to do so.
We have asked QLogic to add clarification to their paper for vSphere interop. I’ve since seen that the paper has been removed from the support.qlogic.com site. Hopefully an updated one with clarifications will appear soon.
[Update - January 16th, 2014] The QLogic Support Center document has been updated to accurately reflect the current status of this issue, which is that Execution Throttle is no longer used in VMware ESXi and is ignored by the QLogic FC/FCoE QLE2XXX driver and ESXi operating system. The updated support document can be found on the QLogic Support Center here.
Get notification of these blogs postings and more VMware Storage information by following me on Twitter: @CormacJHogan