HBA, Queue Depths and inflight IO.

 

I had recently received a question form one of my customers asking what is the recommended Queue Depths value for the HBA adapter.

This question was intriguing and drove me to do a little research on the subject; I’d like to share the information with you all.

Well, all the major/big organization are deploying there SQL using storage, SAN’s.

When we are planning a large scale SQL DB we need to plane and to have a good estimation on the amount of IO that our system will be generating.

In this post we will understand what HBA, Queue Depths, Inflight IO, SQLIO and some base recommendation on configuration and working with SQLIO.

HBA - In one sentence an HBA (Host Bus Adapter) is the adapter that connects your server to the storage. Each HBA has a limit for the number of simultaneous IO it can transfer from the server to the SAN.

Queue Depths – the definition of queue depths is the number of simultaneous IO that can be pass to the SAN; If the queue depth configured value is low then the SQL sub system will suffer from low performance, if the queue depth configured value is high, then it means that the storage is at an higher risk of been over whelmed (the probability for this to happen is higher if many servers are configured with high values of queue depth).

Always consider to check with your SAN administrator what will be the correct value for you environment.

By default the majority of the HBA cards set the queue depth to 32 which is fine for all general purpose servers.

Inflight IO –Represent the number of IO that were sent to the storage sub system and are not completed (yet).

In one of the next post I will talk about SQLIO and how to use it, how to read the output and how to format the output to excel.