> > > Hannes, > > Result I have posted last time is with merge operation enabled in block > layer. If I disable merge operation then I don't see much improvement > with > multiple hw request queues. Here is the result, > > fio results when nr_hw_queues=1, > 4k read when numjobs=24: io=248387MB, bw=1655.1MB/s, iops=423905, > runt=150003msec > > fio results when nr_hw_queues=24, > 4k read when numjobs=24: io=263904MB, bw=1759.4MB/s, iops=450393, > runt=150001msec Hannes - I worked with Sreekanth and also understand pros/cons of Patch #10. " [PATCH 10/10] mpt3sas: scsi-mq interrupt steering" In above patch, can_queue of HBA is divided based on logic CPU, it means we want to mimic as if mpt3sas HBA support multi queue distributing actual resources which is single Submission H/W Queue. This approach badly impact many performance areas. nr_hw_queues = 1 is what I observe as best performance approach since it never throttle IO if sdev->queue_depth is set to HBA queue depth. In case of nr_hw_queues = "CPUs" throttle IO at SCSI level since we never allow more than "updated can_queue" in LLD. Below code bring actual HBA can_queue very low ( Ea on 96 logical core CPU new can_queue goes to 42, if HBA queue depth is 4K). It means we will see lots of IO throttling in scsi mid layer due to shost->can_queue reach the limit very soon if you have <fio> jobs with higher QD. if (ioc->shost->nr_hw_queues > 1) { ioc->shost->nr_hw_queues = ioc->msix_vector_count; ioc->shost->can_queue /= ioc->msix_vector_count; } I observe negative performance if I have 8 SSD drives attached to Ventura (latest IT controller). 16 fio jobs at QD=128 gives ~1600K IOPs and the moment I switch to nr_hw_queues = "CPUs", it gave hardly ~850K IOPs. This is mainly because of host_busy stuck at very low ~169 on my setup. May be as Sreekanth mentioned, performance improvement you have observed is due to nomerges=2 is not set and OS will attempt soft back/front merge. I debug live machine and understood we never see parallel instance of "scsi_dispatch_cmd" as we expect due to can_queue is less. If we really has *very* large HBA QD, this patch #10 to expose multiple SQ may be useful. For now, we are looking for updated version of patch which will only keep IT HBA in SQ mode (like we are doing in <megaraid_sas> driver) and add interface to use blk_tag in both scsi.mq and !scsi.mq mode. Sreekanth has already started working on it, but we may need to check full performance test run to post the actual patch. May be we can cherry pick few patches from this series and get blk_tag support to improve performance of <mpt3sas> later which will not allow use to choose nr_hw_queue to be tunable. Thanks, Kashyap > > Thanks, > Sreekanth