From: Xiaoguang Wang <xiaoguang.wang@linux.alibaba.com>
To: linux-block@vger.kernel.org
Cc: axboe@kernel.dk
Subject: [RFC] blk-mq: complete request locallly if not in interrupt context
Date: Thu, 27 Jan 2022 17:21:43 +0800 [thread overview]
Message-ID: <20220127092143.1808-1-xiaoguang.wang@linux.alibaba.com> (raw)
For block devices that call blk_mq_complete_request() to end request
in process context, it's pointless to redirect the completion to be
done in block soft-irq, also blk_mq_raise_softirq() isnt't a very
light operation, which contains preempt and hard irq disable, wake
up ksoftirqd in non-interrupt context.
I found this issue while I use tcm_loop and tcmu(backstore is file)
to evaluate performance, tcm_loop end request in workqueue.
Without this patch: libaio engine, direct io, randwrite, io size 128k
job0: (groupid=0, jobs=1): err= 0: pid=20876: Thu Jan 27 15:33:45 2022
write: IOPS=15.7k, BW=1966MiB/s (2062MB/s)(115GiB/60001msec); 0 zone resets
slat (nsec): min=5675, max=83552, avg=8689.69, stdev=996.96
clat (usec): min=231, max=99977, avg=498.89, stdev=501.69
lat (usec): min=291, max=99986, avg=507.70, stdev=501.69
With this patch:
job0: (groupid=0, jobs=1): err= 0: pid=12813: Thu Jan 27 15:50:46 2022
write: IOPS=16.8k, BW=2101MiB/s (2203MB/s)(123GiB/60001msec); 0 zone resets
slat (usec): min=5, max=125, avg=14.12, stdev=10.31
clat (usec): min=306, max=65380, avg=460.78, stdev=506.24
lat (usec): min=341, max=65389, avg=475.04, stdev=505.27
Which improves throughput and reduces lat.
Signed-off-by: Xiaoguang Wang <xiaoguang.wang@linux.alibaba.com>
---
block/blk-mq.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/block/blk-mq.c b/block/blk-mq.c
index 8874a63ae952..9fdffc65d7ba 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -974,6 +974,9 @@ bool blk_mq_complete_request_remote(struct request *rq)
return true;
}
+ if (!in_interrupt())
+ return false;
+
if (rq->q->nr_hw_queues == 1) {
blk_mq_raise_softirq(rq);
return true;
--
2.14.4.44.g2045bb6
next reply other threads:[~2022-01-27 9:21 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-01-27 9:21 Xiaoguang Wang [this message]
2022-01-27 9:54 ` [RFC] blk-mq: complete request locallly if not in interrupt context Christoph Hellwig
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=20220127092143.1808-1-xiaoguang.wang@linux.alibaba.com \
--to=xiaoguang.wang@linux.alibaba.com \
--cc=axboe@kernel.dk \
--cc=linux-block@vger.kernel.org \
/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.