From: Tejun Heo <tj@kernel.org>
To: axboe@kernel.dk
Cc: linux-block@vger.kernel.org, cgroups@vger.kernel.org,
kernel-team@fb.com, linux-kernel@vger.kernel.org,
Tejun Heo <tj@kernel.org>
Subject: [PATCH 3/5] iocost: recalculate delay after debt reduction
Date: Thu, 17 Sep 2020 20:44:54 -0400 [thread overview]
Message-ID: <20200918004456.593983-4-tj@kernel.org> (raw)
In-Reply-To: <20200918004456.593983-1-tj@kernel.org>
Debt sets the initial delay duration which is decayed over time. The current
debt reduction halved the debt but didn't change the delay. It prevented
future debts from increasing delay but didn't do anything to lower the
existing delay, limiting the mechanism's ability to reduce unnecessary
idling.
Reset iocg->delay to 0 after debt reduction so that iocg_kick_waitq()
recalculates new delay value based on the reduced debt amount.
Signed-off-by: Tejun Heo <tj@kernel.org>
---
block/blk-iocost.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/block/blk-iocost.c b/block/blk-iocost.c
index c0499c294da9..ffcb78126ab7 100644
--- a/block/blk-iocost.c
+++ b/block/blk-iocost.c
@@ -1984,7 +1984,8 @@ static void transfer_surpluses(struct list_head *surpluses, struct ioc_now *now)
* up blocked paying its debt while the IO device is idle.
*
* The following protects against such cases. If the device has been
- * sufficiently idle for a while, the debts are halved.
+ * sufficiently idle for a while, the debts are halved and delays are
+ * recalculated.
*/
static void ioc_forgive_debts(struct ioc *ioc, u64 usage_us_sum, int nr_debtors,
struct ioc_now *now)
@@ -2002,6 +2003,7 @@ static void ioc_forgive_debts(struct ioc *ioc, u64 usage_us_sum, int nr_debtors,
if (iocg->abs_vdebt) {
spin_lock(&iocg->waitq.lock);
iocg->abs_vdebt /= 2;
+ iocg->delay = 0; /* kick_waitq will recalc */
iocg_kick_waitq(iocg, true, now);
spin_unlock(&iocg->waitq.lock);
}
--
2.26.2
next prev parent reply other threads:[~2020-09-18 0:45 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-18 0:44 [PATCHSET for-5.10/block] iocost: improve debt forgiveness logic Tejun Heo
2020-09-18 0:44 ` [PATCH 1/5] iocost: factor out ioc_forgive_debts() Tejun Heo
2020-09-18 0:44 ` [PATCH 2/5] iocost: replace nr_shortages cond in ioc_forgive_debts() with busy_level one Tejun Heo
2020-09-18 0:44 ` Tejun Heo [this message]
2020-09-18 0:44 ` [PATCH 4/5] iocost: reimplement debt forgiveness using average usage Tejun Heo
2020-09-18 0:44 ` [PATCH 5/5] iocost: add iocg_forgive_debt tracepoint Tejun Heo
2020-09-18 18:41 ` [PATCH 6/5] iocost: consider iocgs with active delays for debt forgiveness Tejun Heo
2020-09-25 14:35 ` [PATCHSET for-5.10/block] iocost: improve debt forgiveness logic 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=20200918004456.593983-4-tj@kernel.org \
--to=tj@kernel.org \
--cc=axboe@kernel.dk \
--cc=cgroups@vger.kernel.org \
--cc=kernel-team@fb.com \
--cc=linux-block@vger.kernel.org \
--cc=linux-kernel@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox