mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Kemeng Shi <shikemeng@huawei.com>
To: <paolo.valente@linaro.org>, <axboe@kernel.dk>
Cc: <linux-block@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
	<shikemeng@huawei.com>
Subject: [PATCH 03/10] block, bfq: initialize bfqq->decrease_time_jif correctly
Date: Tue, 8 Nov 2022 12:52:17 +0800	[thread overview]
Message-ID: <20221108045224.19092-4-shikemeng@huawei.com> (raw)
In-Reply-To: <20221108045224.19092-1-shikemeng@huawei.com>

Currently, decrease_time_jif is initialized to 0 and will be updated in
function bfq_reset_inject_limit and bfq_update_inject_limit while these
two functions are called when jiffies pasts decrease_time_jif with some
extra time or think-time state changes. If jiffies is slightly larger
than MAX_JIFFY_OFFSET, it will take a long time to meet the first
condition. The second condition is heavily relies on process behavior. To
be more specific:

Function bfq_update_inject_limit maybe triggered when jiffies pasts
decrease_time_jif + msecs_to_jiffies(10) in bfq_add_request by setting
bfqd->wait_dispatch to true.

Function bfq_reset_inject_limit are called in two conditions:
1. jiffies pasts bfqq->decrease_time_jif + msecs_to_jiffies(1000) in
function bfq_add_request.
2. jiffies pasts bfqq->decrease_time_jif + msecs_to_jiffies(100) or
bfq think-time state change from short to long.

In worst case that jiffies is slightly larger than MAX_JIFFY_OFFSET
and think-time state never changes, the service injection may be not
triggered for a long time.

Fix this by initializing bfqq->decrease_time_jif to current jiffies
to trigger service injection soon when service injection conditions
are met.

Signed-off-by: Kemeng Shi <shikemeng@huawei.com>
---
 block/bfq-iosched.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/block/bfq-iosched.c b/block/bfq-iosched.c
index fc71181a7e5d..01fa16047eb5 100644
--- a/block/bfq-iosched.c
+++ b/block/bfq-iosched.c
@@ -5557,6 +5557,8 @@ static void bfq_init_bfqq(struct bfq_data *bfqd, struct bfq_queue *bfqq,
 
 	/* first request is almost certainly seeky */
 	bfqq->seek_history = 1;
+
+	bfqq->decrease_time_jif = jiffies;
 }
 
 static struct bfq_queue **bfq_async_queue_prio(struct bfq_data *bfqd,
-- 
2.30.0


  parent reply	other threads:[~2022-11-08  4:53 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-08  4:52 [PATCH 00/10] A few bugfix and cleancode patch for bfq Kemeng Shi
2022-11-08  4:52 ` [PATCH 01/10] block, bfq: correctly raise inject limit in bfq_choose_bfqq_for_injection Kemeng Shi
2022-11-08  4:52 ` [PATCH 02/10] block, bfq: remove unsed parameter reason in bfq_bfqq_is_slow Kemeng Shi
2022-11-08  4:52 ` Kemeng Shi [this message]
2022-11-08  4:52 ` [PATCH 04/10] block, bfq: use helper macro RQ_BFQQ to get bfqq of request Kemeng Shi
2022-11-08  4:52 ` [PATCH 05/10] block, bfq: remove unnecessary pointer reference to get async_bfqq Kemeng Shi
2022-11-08  4:52 ` [PATCH 06/10] block, bfq: remove redundant bfqd->rq_in_driver > 0 check in bfq_add_request Kemeng Shi
2022-11-08  4:52 ` [PATCH 07/10] block, bfq: remove redundant check in bfq_put_cooperator Kemeng Shi
2022-11-08  4:52 ` [PATCH 08/10] block, bfq: remove unnecessary goto tag in bfq_dispatch_rq_from_bfqq Kemeng Shi
2022-11-08  4:52 ` [PATCH 09/10] block, bfq: remove unused bfq_wr_max_time in struct bfq_data Kemeng Shi
2022-11-08  4:52 ` [PATCH 10/10] block, bfq: remove check of bfq_wr_max_softrt_rate which is always greater than 0 Kemeng Shi

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=20221108045224.19092-4-shikemeng@huawei.com \
    --to=shikemeng@huawei.com \
    --cc=axboe@kernel.dk \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=paolo.valente@linaro.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 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®