From: Kashyap Desai <kashyap.desai@broadcom.com>
To: Ming Lei <ming.lei@redhat.com>, Damien Le Moal <Damien.LeMoal@wdc.com>
Cc: Hannes Reinecke <hare@suse.de>, Jens Axboe <axboe@kernel.dk>,
linux-scsi@vger.kernel.org,
"Martin K. Petersen" <martin.petersen@oracle.com>,
James Bottomley <james.bottomley@hansenpartnership.com>,
Christoph Hellwig <hch@lst.de>,
linux-block@vger.kernel.org,
Hans Holmberg <Hans.Holmberg@wdc.com>,
Hannes Reinecke <hare@suse.com>
Subject: RE: [PATCH 2/2] blk-mq: always call into the scheduler in blk_mq_make_request()
Date: Thu, 19 Sep 2019 21:18:41 +0530 [thread overview]
Message-ID: <935518233f147da073414dcbcdb2abb5@mail.gmail.com> (raw)
In-Reply-To: <20190919142344.GB11207@ming.t460p>
> > > - } else if (plug && (q->nr_hw_queues == 1 || q->mq_ops-
> >commit_rqs)) {
> > > + } else if (plug && q->mq_ops->commit_rqs) {
> > > /*
> > > * Use plugging if we have a ->commit_rqs() hook as well,
as
> > > * we know the driver uses bd->last in a smart fashion.
> > > @@ -2020,9 +2019,6 @@ static blk_qc_t blk_mq_make_request(struct
> request_queue *q, struct bio *bio)
> > > blk_mq_try_issue_directly(data.hctx,
same_queue_rq,
> > > &cookie);
> > > }
> > > - } else if ((q->nr_hw_queues > 1 && is_sync) || (!q->elevator &&
> > > - !data.hctx->dispatch_busy)) {
> > > - blk_mq_try_issue_directly(data.hctx, rq, &cookie);
Hannes -
Earlier check prior to "commit 6ce3dd6eec114930cf2035a8bcb1e80477ed79a8"
was only (q->nr_hw_queues > 1 && is_sync).
I am not sure if check of nr_hw_queues are required or not at this place,
but other part of check (!q->elevator && !data.hctx->dispatch_busy) to
qualify for direct dispatch is required for higher performance.
Recent MegaRaid and MPT HBA Aero series controller is capable of doing
~3.0 M IOPs and for such high performance using single hardware queue,
commit 6ce3dd6eec114930cf2035a8bcb1e80477ed79a8 is very important.
Kashyap
> >
> > It may be worth mentioning that blk_mq_sched_insert_request() will do
> > a direct insert of the request using __blk_mq_insert_request(). But
> > that insert is slightly different from what
> > blk_mq_try_issue_directly() does with
> > __blk_mq_issue_directly() as the request in that case is passed along
> > to the device using queue->mq_ops->queue_rq() while
> > __blk_mq_insert_request() will put the request in ctx->rq_lists[type].
> >
> > This removes the optimized case !q->elevator &&
> > !data.hctx->dispatch_busy, but I am not sure of the actual performance
> > impact yet. We may want to patch
> > blk_mq_sched_insert_request() to handle that case.
>
> The optimization did improve IOPS of single queue SCSI SSD a lot, see
>
> commit 6ce3dd6eec114930cf2035a8bcb1e80477ed79a8
> Author: Ming Lei <ming.lei@redhat.com>
> Date: Tue Jul 10 09:03:31 2018 +0800
>
> blk-mq: issue directly if hw queue isn't busy in case of 'none'
>
> In case of 'none' io scheduler, when hw queue isn't busy, it isn't
> necessary to enqueue request to sw queue and dequeue it from
> sw queue because request may be submitted to hw queue asap without
> extra cost, meantime there shouldn't be much request in sw queue,
> and we don't need to worry about effect on IO merge.
>
> There are still some single hw queue SCSI HBAs(HPSA, megaraid_sas,
...)
> which may connect high performance devices, so 'none' is often
required
> for obtaining good performance.
>
> This patch improves IOPS and decreases CPU unilization on
megaraid_sas,
> per Kashyap's test.
>
>
> Thanks,
> Ming
next prev parent reply other threads:[~2019-09-19 15:48 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-09-19 9:45 [RFC PATCH 0/2] blk-mq I/O scheduling fixes Hannes Reinecke
2019-09-19 9:45 ` [PATCH 1/2] blk-mq: fixup request re-insert in blk_mq_try_issue_list_directly() Hannes Reinecke
2019-09-19 14:19 ` Ming Lei
2019-09-20 6:42 ` Hannes Reinecke
2019-09-19 14:52 ` Guoqing Jiang
2019-09-19 9:45 ` [PATCH 2/2] blk-mq: always call into the scheduler in blk_mq_make_request() Hannes Reinecke
2019-09-19 10:21 ` Damien Le Moal
2019-09-19 14:23 ` Ming Lei
2019-09-19 15:48 ` Kashyap Desai [this message]
2019-09-19 16:13 ` Damien Le Moal
2019-09-21 15:26 ` [blk] b91f4a426e: fio.write_bw_MBps -9.3% regression kernel test robot
2019-09-21 15:26 ` kernel test robot
2019-09-19 9:56 ` [RFC PATCH 0/2] blk-mq I/O scheduling fixes Liu, Sunny
2019-09-19 10:03 ` Damien Le Moal
[not found] ` <BJXPR01MB0296594F3E478B5BFD4DA2ABF4890@BJXPR01MB0296.CHNPR01.prod.partner.outlook.cn>
2019-09-19 12:44 ` Damien Le Moal
2019-09-19 12:54 ` Liu, Sunny
2019-09-19 12:57 ` Hans Holmberg
2019-09-19 17:48 ` Jens Axboe
2019-09-19 21:11 ` Damien Le Moal
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=935518233f147da073414dcbcdb2abb5@mail.gmail.com \
--to=kashyap.desai@broadcom.com \
--cc=Damien.LeMoal@wdc.com \
--cc=Hans.Holmberg@wdc.com \
--cc=axboe@kernel.dk \
--cc=hare@suse.com \
--cc=hare@suse.de \
--cc=hch@lst.de \
--cc=james.bottomley@hansenpartnership.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-scsi@vger.kernel.org \
--cc=martin.petersen@oracle.com \
--cc=ming.lei@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.