All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gabriel Krisman Bertazi <krisman@collabora.com>
To: Jens Axboe <axboe@kernel.dk>
Cc: Ming Lei <tom.leiming@gmail.com>,
	linux-block <linux-block@vger.kernel.org>,
	kernel@collabora.com
Subject: [PATCH v2] block: Consider only dispatched requests for inflight statistic
Date: Wed, 02 Sep 2020 16:19:28 -0400	[thread overview]
Message-ID: <87r1rkorsf.fsf_-_@collabora.com> (raw)
In-Reply-To: <d3dd1d80-ea30-f9df-9812-05b846a76f21@kernel.dk> (Jens Axboe's message of "Tue, 1 Sep 2020 16:39:09 -0600")

Jens Axboe <axboe@kernel.dk> writes:

> We just need to decide if this makes sense or not. I think we should
> apply this for 5.10, with Ming's suggestion of using
> blk_mq_request_started(). Then I guess we'll see what happens...

Hello,

Here is the second version, then.  But, instead of
blk_mq_request_started as suggested on the review, this uses
blk_mq_rq_state to access the state attribute, since we don't want to
include MQ_RQ_COMPLETE.

Also, improved the commit message a bit.

Thanks,

>8

According to Documentation/block/stat.rst, inflight should not include
I/O requests that are in the queue but not yet dispatched to the device,
but blk-mq identifies as inflight any request that has a tag allocated,
which, for queues without elevator, happens at request allocation time
and before it is queued in the ctx (default case in blk_mq_submit_bio).

In addition, current behavior is different for queues with elevator from
queues without it, since for the former the driver tag is allocated at
dispatch time.  A more precise approach would be to only consider
requests with state MQ_RQ_IN_FLIGHT.

This effectively reverts commit 6131837b1de6 ("blk-mq: count allocated
but not started requests in iostats inflight") to consolidate blk-mq
behavior with itself (elevator case) and with original documentation,
but it differs from the behavior used by the legacy path.

Signed-off-by: Gabriel Krisman Bertazi <krisman@collabora.com>
---
Changes Since v1:
  - Use blk_mq_rq_state to fetch req->state
  - Improve commit message

 block/blk-mq.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/block/blk-mq.c b/block/blk-mq.c
index 0015a1892153..bee55f80fb69 100644
--- a/block/blk-mq.c
+++ b/block/blk-mq.c
@@ -105,7 +105,7 @@ static bool blk_mq_check_inflight(struct blk_mq_hw_ctx *hctx,
 {
 	struct mq_inflight *mi = priv;
 
-	if (rq->part == mi->part)
+	if (rq->part == mi->part && blk_mq_rq_state(rq) == MQ_RQ_IN_FLIGHT)
 		mi->inflight[rq_data_dir(rq)]++;
 
 	return true;
-- 
2.28.0



  reply	other threads:[~2020-09-02 20:19 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-08-31 15:31 [PATCH] block: Fix inflight statistic for MQ submission with !elevator Gabriel Krisman Bertazi
2020-08-31 15:33 ` Jens Axboe
2020-08-31 15:50   ` Gabriel Krisman Bertazi
2020-09-01  1:18 ` Ming Lei
2020-09-01  3:42   ` Jens Axboe
2020-09-01  6:36     ` Ming Lei
2020-09-01 22:37       ` Jens Axboe
2020-09-01 18:37   ` Gabriel Krisman Bertazi
2020-09-01 22:39     ` Jens Axboe
2020-09-02 20:19       ` Gabriel Krisman Bertazi [this message]
2020-09-15 16:11         ` [PATCH v2] block: Consider only dispatched requests for inflight statistic Gabriel Krisman Bertazi

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=87r1rkorsf.fsf_-_@collabora.com \
    --to=krisman@collabora.com \
    --cc=axboe@kernel.dk \
    --cc=kernel@collabora.com \
    --cc=linux-block@vger.kernel.org \
    --cc=tom.leiming@gmail.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.