linux-block.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Christoph Hellwig <hch@infradead.org>
To: Xiaoguang Wang <xiaoguang.wang@linux.alibaba.com>
Cc: linux-block@vger.kernel.org, axboe@kernel.dk
Subject: Re: [RFC] blk-mq: complete request locallly if not in interrupt context
Date: Thu, 27 Jan 2022 01:54:55 -0800	[thread overview]
Message-ID: <YfJr76LOsSWLUqk2@infradead.org> (raw)
In-Reply-To: <20220127092143.1808-1-xiaoguang.wang@linux.alibaba.com>

On Thu, Jan 27, 2022 at 05:21:43PM +0800, Xiaoguang Wang wrote:
> 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.

Just use blk_mq_complete_request_direct for callers that know they are
not in interrupt context.

      reply	other threads:[~2022-01-27  9:54 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-01-27  9:21 [RFC] blk-mq: complete request locallly if not in interrupt context Xiaoguang Wang
2022-01-27  9:54 ` Christoph Hellwig [this message]

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=YfJr76LOsSWLUqk2@infradead.org \
    --to=hch@infradead.org \
    --cc=axboe@kernel.dk \
    --cc=linux-block@vger.kernel.org \
    --cc=xiaoguang.wang@linux.alibaba.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).