Performance impact of queuing on the storage array and host
There are several storage queues:
Device driver queue
Kernel queue
Storage array queue
The device driver queue is used for low-level interaction with the storage device. This queue controls the number of active commands that can be on a LUN at the same time. This number is effectively the concurrency of the storage stack. If you set the device queue to 1 then each storage command becomes sequential.
The kernel queue is an overflow queue for the device driver queues. This queue enables features that optimize storage (it doesn't include them; they are built using the queue). These features include multi-pathing for failover and load balancing, prioritization of storage activities, which is based on virtual machine and cluster shares, and optimizations to improve efficiency for long sequential operations.
For example, batching several incoming read requests and doing hashes 1, 4-7, and 14 together because they're all on nearby parts of the...