[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <175627713512.1920.8854712203683421367.tip-bot2@tip-bot2>
Date: Wed, 27 Aug 2025 06:45:35 -0000
From: "tip-bot2 for Juri Lelli" <tip-bot2@...utronix.de>
To: linux-tip-commits@...r.kernel.org
Cc: Yuri Andriaccio <yurand2000@...il.com>, Juri Lelli <juri.lelli@...hat.com>,
"Peter Zijlstra (Intel)" <peterz@...radead.org>,
Valentin Schneider <vschneid@...hat.com>, x86@...nel.org,
linux-kernel@...r.kernel.org
Subject: [tip: sched/urgent] sched/deadline: Always stop dl-server before
changing parameters
The following commit has been merged into the sched/urgent branch of tip:
Commit-ID: bb4700adc3abec34c0a38b64f66258e4e233fc16
Gitweb: https://git.kernel.org/tip/bb4700adc3abec34c0a38b64f66258e4e233fc16
Author: Juri Lelli <juri.lelli@...hat.com>
AuthorDate: Mon, 21 Jul 2025 15:01:42 +02:00
Committer: Peter Zijlstra <peterz@...radead.org>
CommitterDate: Tue, 26 Aug 2025 10:46:00 +02:00
sched/deadline: Always stop dl-server before changing parameters
Commit cccb45d7c4295 ("sched/deadline: Less agressive dl_server
handling") reduced dl-server overhead by delaying disabling servers only
after there are no fair task around for a whole period, which means that
deadline entities are not dequeued right away on a server stop event.
However, the delay opens up a window in which a request for changing
server parameters can break per-runqueue running_bw tracking, as
reported by Yuri.
Close the problematic window by unconditionally calling dl_server_stop()
before applying the new parameters (ensuring deadline entities go
through an actual dequeue).
Fixes: cccb45d7c4295 ("sched/deadline: Less agressive dl_server handling")
Reported-by: Yuri Andriaccio <yurand2000@...il.com>
Signed-off-by: Juri Lelli <juri.lelli@...hat.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@...radead.org>
Reviewed-by: Valentin Schneider <vschneid@...hat.com>
Link: https://lore.kernel.org/r/20250721-upstream-fix-dlserver-lessaggressive-b4-v1-1-4ebc10c87e40@redhat.com
---
kernel/sched/debug.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c
index 3f06ab8..02e16b7 100644
--- a/kernel/sched/debug.c
+++ b/kernel/sched/debug.c
@@ -376,10 +376,8 @@ static ssize_t sched_fair_server_write(struct file *filp, const char __user *ubu
return -EINVAL;
}
- if (rq->cfs.h_nr_queued) {
- update_rq_clock(rq);
- dl_server_stop(&rq->fair_server);
- }
+ update_rq_clock(rq);
+ dl_server_stop(&rq->fair_server);
retval = dl_server_apply_params(&rq->fair_server, runtime, period, 0);
if (retval)
Powered by blists - more mailing lists