[PATCH V2 4/8] block: null_blk: introduce module parameter of 'g_global_tags'
From: Ming Lei <hidden>
Date: 2018-02-05 15:20:31
Also in:
linux-scsi
Subsystem:
block layer, the rest · Maintainers:
Jens Axboe, Linus Torvalds
This patch introduces the parameter of 'g_global_tags' so that we can test this feature by null_blk easiy. Not see obvious performance drop with global_tags when the whole hw depth is kept as same: 1) no 'global_tags', each hw queue depth is 1, and 4 hw queues modprobe null_blk queue_mode=2 nr_devices=4 shared_tags=1 global_tags=0 submit_queues=4 hw_queue_depth=1 2) 'global_tags', global hw queue depth is 4, and 4 hw queues modprobe null_blk queue_mode=2 nr_devices=4 shared_tags=1 global_tags=1 submit_queues=4 hw_queue_depth=4 3) fio test done in above two settings: fio --bs=4k --size=512G --rw=randread --norandommap --direct=1 --ioengine=libaio --iodepth=4 --runtime=$RUNTIME --group_reporting=1 --name=nullb0 --filename=/dev/nullb0 --name=nullb1 --filename=/dev/nullb1 --name=nullb2 --filename=/dev/nullb2 --name=nullb3 --filename=/dev/nullb3 1M IOPS can be reached in both above tests which is done in one VM. Cc: Arun Easi <redacted> Cc: Omar Sandoval <redacted>, Cc: "Martin K. Petersen" <martin.petersen@oracle.com>, Cc: James Bottomley <james.bottomley@hansenpartnership.com>, Cc: Christoph Hellwig <hch@lst.de>, Cc: Don Brace <redacted> Cc: Kashyap Desai <kashyap.desai@broadcom.com> Cc: Peter Rivera <redacted> Cc: Mike Snitzer <redacted> Tested-by: Laurence Oberman <redacted> Reviewed-by: Hannes Reinecke <hare@suse.de> Signed-off-by: Ming Lei <redacted> --- drivers/block/null_blk.c | 6 ++++++ 1 file changed, 6 insertions(+)
diff --git a/drivers/block/null_blk.c b/drivers/block/null_blk.c
index 287a09611c0f..ad0834efad42 100644
--- a/drivers/block/null_blk.c
+++ b/drivers/block/null_blk.c@@ -163,6 +163,10 @@ static int g_submit_queues = 1; module_param_named(submit_queues, g_submit_queues, int, S_IRUGO); MODULE_PARM_DESC(submit_queues, "Number of submission queues"); +static int g_global_tags = 0; +module_param_named(global_tags, g_global_tags, int, S_IRUGO); +MODULE_PARM_DESC(global_tags, "All submission queues share one tags"); + static int g_home_node = NUMA_NO_NODE; module_param_named(home_node, g_home_node, int, S_IRUGO); MODULE_PARM_DESC(home_node, "Home node for the device");
@@ -1622,6 +1626,8 @@ static int null_init_tag_set(struct nullb *nullb, struct blk_mq_tag_set *set) set->flags = BLK_MQ_F_SHOULD_MERGE; if (g_no_sched) set->flags |= BLK_MQ_F_NO_SCHED; + if (g_global_tags) + set->flags |= BLK_MQ_F_GLOBAL_TAGS; set->driver_data = NULL; if ((nullb && nullb->dev->blocking) || g_blocking)
--
2.9.5