Maximum HBA port queue depth in an all Flash Array

Per port queue depths is a common question we hear and how we compare to these limits other vendors publish based on array model. 

Pure does not have queue depths assigned on a per port basis and we do not modify the Qlogic HBA per port queue depth of 4096.  We also do not issue SCSI “busy” responses back to hosts (instead, we will queue all I/O in the array) there is occasionally some host queue depth adjustments needed for some environments.  The goal is to not unnecessarily limit outstanding I/O’s to the array during normal steady state, but also to avoid a  situation in cases of massive bursts of I/O from many hosts concurrently.

With legacy mechanical disk arrays, it was important to have as many outstanding I/O’s as possible due to the seeking and rotating going on.  

With all flash arrays, and Pure in particular, it is not necessary to keep the queues full and the I/O responses are returned much faster as well, meaning it’s pretty hard to keep the queues full (at least for most organic workloads).  One of the key values for Pure is the simplicity – you should not have to do the same types of computations and planning like you are used to with mechanical disk storage.  In some cases, there may be some adjustments in aggregate for all hosts connected to the same array to mitigate a IO storm (ensuring host-level fairness), in most cases it is not necessary as we remove the need to do per-port planning.