From: Tejun Heo <tj@kernel.org>
To: Chengming Zhou <chengming.zhou@linux.dev>
Cc: Jens Axboe <axboe@kernel.dk>,
hch@lst.de, linux-block@vger.kernel.org,
linux-kernel@vger.kernel.org, ming.lei@redhat.com,
zhouchengming@bytedance.com
Subject: Re: [PATCH v5] blk-mq: fix start_time_ns and alloc_time_ns for pre-allocated rq
Date: Thu, 13 Jul 2023 07:58:24 -1000 [thread overview]
Message-ID: <ZLA7QAfSojxu_FMW@slm.duckdns.org> (raw)
In-Reply-To: <63f93f1c-98da-4c09-b3d8-711f6953d8b7@linux.dev>
Hello,
On Thu, Jul 13, 2023 at 08:25:50PM +0800, Chengming Zhou wrote:
> Ok, this version will only get time stamp once for one request, it's actually
> not worse than the current code, which will get start time stamp once for each
> request even in the batch allocation.
>
> But yes, maybe we can also set the start time stamp in the batch mode, and only
> update the time stamp in the block case, like you said, has better performance.
>
> The first version [1] I posted actually just did this, in which use a nr_flush counter
> in plug to indicate that we blocked & flushed plug. Tejun and I think it seems fragile.
> So go to this way that only set time stamp once when the request actually used.
>
> [1] https://lore.kernel.org/all/20230601053919.3639954-1-chengming.zhou@linux.dev/
>
> Another way I can think of is to make rq_qos_throttle() return a bool to indicate
> if it blocked. Tejun and Jens, how do you think about this way?
>
> Although it's better performance, in case of preemption, the time stamp maybe not accurate.
Trying to manually optimized timestamp reads seems like a bit of fool's
errand to me. I don't think anyone cares about nanosec accuracy, so there
are ample opportunities for generically caching timestamp so that we don't
have to contort code to optimzie timestamp calls.
It's a bit out of scope for this patchset but I think it might make sense to
build a timestamp caching infrastructure. The cached timestamp can be
invalidated on context switches (block layer already hooks into them) and
issue and other path boundaries (e.g. at the end of plug flush).
Thanks.
--
tejun
next prev parent reply other threads:[~2023-07-13 17:58 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-07-10 10:55 chengming.zhou
2023-07-10 12:11 ` Christoph Hellwig
2023-07-10 19:42 ` Tejun Heo
2023-07-10 19:47 ` Jens Axboe
2023-07-13 12:25 ` Chengming Zhou
2023-07-13 17:58 ` Tejun Heo [this message]
2023-07-13 18:13 ` Jens Axboe
2023-07-14 11:31 ` Chengming Zhou
2023-07-14 14:43 ` Jens Axboe
2023-07-14 14:49 ` Chengming Zhou
2023-07-13 18:31 ` Jens Axboe
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=ZLA7QAfSojxu_FMW@slm.duckdns.org \
--to=tj@kernel.org \
--cc=axboe@kernel.dk \
--cc=chengming.zhou@linux.dev \
--cc=hch@lst.de \
--cc=linux-block@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=ming.lei@redhat.com \
--cc=zhouchengming@bytedance.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
all inboxes | Powered by JetHome®