[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20220601122007.1057-2-zhouchengming@bytedance.com>
Date: Wed, 1 Jun 2022 20:20:07 +0800
From: Chengming Zhou <zhouchengming@...edance.com>
To: tj@...nel.org, axboe@...nel.dk
Cc: linux-block@...r.kernel.org, linux-kernel@...r.kernel.org,
Chengming Zhou <zhouchengming@...edance.com>
Subject: [PATCH 2/2] blk-iocost: only flush wait and indebt stat deltas when needed
We only need to flush wait and indebt stat deltas when the iocg
is in these status.
Signed-off-by: Chengming Zhou <zhouchengming@...edance.com>
---
block/blk-iocost.c | 32 ++++++++++++++++----------------
1 file changed, 16 insertions(+), 16 deletions(-)
diff --git a/block/blk-iocost.c b/block/blk-iocost.c
index b1f2305e8032..502425b44475 100644
--- a/block/blk-iocost.c
+++ b/block/blk-iocost.c
@@ -2174,28 +2174,28 @@ static int ioc_check_iocgs(struct ioc *ioc, struct ioc_now *now)
spin_lock(&iocg->waitq.lock);
- /* flush wait and indebt stat deltas */
- if (iocg->wait_since) {
- iocg->stat.wait_us += now->now - iocg->wait_since;
- iocg->wait_since = now->now;
- }
- if (iocg->indebt_since) {
- iocg->stat.indebt_us +=
- now->now - iocg->indebt_since;
- iocg->indebt_since = now->now;
- }
- if (iocg->indelay_since) {
- iocg->stat.indelay_us +=
- now->now - iocg->indelay_since;
- iocg->indelay_since = now->now;
- }
-
if (waitqueue_active(&iocg->waitq) || iocg->abs_vdebt ||
iocg->delay) {
/* might be oversleeping vtime / hweight changes, kick */
iocg_kick_waitq(iocg, true, now);
if (iocg->abs_vdebt || iocg->delay)
nr_debtors++;
+
+ /* flush wait and indebt stat deltas */
+ if (iocg->wait_since) {
+ iocg->stat.wait_us += now->now - iocg->wait_since;
+ iocg->wait_since = now->now;
+ }
+ if (iocg->indebt_since) {
+ iocg->stat.indebt_us +=
+ now->now - iocg->indebt_since;
+ iocg->indebt_since = now->now;
+ }
+ if (iocg->indelay_since) {
+ iocg->stat.indelay_us +=
+ now->now - iocg->indelay_since;
+ iocg->indelay_since = now->now;
+ }
} else if (iocg_is_idle(iocg))
iocg_deactivate(iocg, now);
--
2.36.1
Powered by blists - more mailing lists