On 31/05/2019 03:27, Ming Lei wrote:
Hi,
The 1st patch introduces support hostwide tags for multiple hw queues
via the simplest approach to share single 'struct blk_mq_tags' instance
among all hw queues. In theory, this way won't cause any performance drop.
Even small IOPS improvement can be observed on random IO on
null_blk/scsi_debug.
By applying the hostwide tags for MQ, we can convert some SCSI driver's
private reply queue into generic blk-mq hw queue, then at least two
improvement can be obtained:
1) the private reply queue maping can be removed from drivers, since the
mapping has been implemented as generic API in blk-mq core
2) it helps to solve the generic managed IRQ race[1] during CPU hotplug
in generic way, otherwise we have to re-invent new way to address the
same issue for these drivers using private reply queue.
[1] https://lore.kernel.org/linux-block/20190527150207.11372-1-ming.lei@xxxxxxxxxx/T/#m6d95e2218bdd712ffda8f6451a0bb73eb2a651af
Any comment and test feedback are appreciated.
Thanks,
Ming
Hi Ming,
I think that we'll wait for a v2 to test this, since you gave some
updated patch for the megaraid performance testing.
Thanks,
John
Hannes Reinecke (1):
scsi: Add template flag 'host_tagset'
Ming Lei (8):
blk-mq: allow hw queues to share hostwide tags
block: null_blk: introduce module parameter of 'g_host_tags'
scsi_debug: support host tagset
scsi: introduce scsi_cmnd_hctx_index()
scsi: hpsa: convert private reply queue to blk-mq hw queue
scsi: hisi_sas_v3: convert private reply queue to blk-mq hw queue
scsi: megaraid: convert private reply queue to blk-mq hw queue
scsi: mp3sas: convert private reply queue to blk-mq hw queue
block/blk-mq-debugfs.c | 1 +
block/blk-mq-sched.c | 8 +++
block/blk-mq-tag.c | 6 ++
block/blk-mq.c | 14 ++++
block/elevator.c | 5 +-
drivers/block/null_blk_main.c | 6 ++
drivers/scsi/hisi_sas/hisi_sas.h | 2 +-
drivers/scsi/hisi_sas/hisi_sas_main.c | 36 +++++-----
drivers/scsi/hisi_sas/hisi_sas_v3_hw.c | 46 +++++--------
drivers/scsi/hpsa.c | 49 ++++++--------
drivers/scsi/megaraid/megaraid_sas_base.c | 50 +++++---------
drivers/scsi/megaraid/megaraid_sas_fusion.c | 4 +-
drivers/scsi/mpt3sas/mpt3sas_base.c | 74 ++++-----------------
drivers/scsi/mpt3sas/mpt3sas_base.h | 3 +-
drivers/scsi/mpt3sas/mpt3sas_scsih.c | 17 +++++
drivers/scsi/scsi_debug.c | 3 +
drivers/scsi/scsi_lib.c | 2 +
include/linux/blk-mq.h | 1 +
include/scsi/scsi_cmnd.h | 15 +++++
include/scsi/scsi_host.h | 3 +
20 files changed, 168 insertions(+), 177 deletions(-)