Performance

Queue Depth

Queue depth (also called I/O depth) is the number of I/O requests a host has submitted to a storage device that have not yet been completed. Higher queue depth allows storage devices to parallelize and reorder operations, maximizing throughput. NVMe supports up to 64,000 queues with 64,000 commands each — orders of magnitude more than legacy protocols.

Why Queue Depth Matters

NVMe SSDs contain thousands of NAND die that can service operations in parallel. To achieve peak IOPS, the host must keep the device's internal queues full — otherwise NAND dies sit idle waiting for the next command. This is why fio benchmarks use --iodepth=128 or higher.

Queue Depth Comparison

Protocol Max Queues Commands/Queue Total Commands
AHCI (SATA)13232
SAS / iSCSI (SCSI)1128128
Fibre Channel2,048~256~500K
NVMe / NVMe-oF65,53565,535~4 billion

Queue Depth in Applications

Most applications don't explicitly configure queue depth — the OS and storage driver manage it. However, databases like PostgreSQL and MySQL can be tuned to issue more concurrent I/O (via random_page_cost, connection pooling, and async I/O settings), effectively increasing the queue depth seen by the NVMe device and improving IOPS utilization.