All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] sched/fair: Return early from update_tg_cfs_load() if delta == 0
@ 2021-06-01  8:36 Dietmar Eggemann
  2021-06-01 14:11 ` Vincent Guittot
  2021-06-18  8:46 ` [tip: sched/core] " tip-bot2 for Dietmar Eggemann
  0 siblings, 2 replies; 3+ messages in thread
From: Dietmar Eggemann @ 2021-06-01  8:36 UTC (permalink / raw)
  To: Ingo Molnar, Peter Zijlstra, Vincent Guittot
  Cc: Juri Lelli, Steven Rostedt, Ben Segall, Mel Gorman,
	Daniel Bristot de Oliveira, linux-kernel

In case the _avg delta is 0 there is no need to update se's _avg
(level n) nor cfs_rq's _avg (level n-1). These values stay the same.

Since cfs_rq's _avg isn't changed, i.e. no load is propagated down,
cfs_rq's _sum should stay the same as well.

So bail out after se's _sum has been updated.

Signed-off-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
---

This patch is against current tip/sched/urgent, commit f268c3737eca
("tick/nohz: Only check for RCU deferred wakeup on user/guest entry
when needed").
It needs commit 7c7ad626d9a0 ("sched/fair: Keep load_avg and load_sum
synced"). 

 kernel/sched/fair.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index e7c8277e3d54..ce8e0e10e5d4 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -3548,9 +3548,12 @@ update_tg_cfs_load(struct cfs_rq *cfs_rq, struct sched_entity *se, struct cfs_rq
 	load_sum = (s64)se_weight(se) * runnable_sum;
 	load_avg = div_s64(load_sum, divider);
 
+	se->avg.load_sum = runnable_sum;
+
 	delta = load_avg - se->avg.load_avg;
+	if (!delta)
+		return;
 
-	se->avg.load_sum = runnable_sum;
 	se->avg.load_avg = load_avg;
 
 	add_positive(&cfs_rq->avg.load_avg, delta);
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] sched/fair: Return early from update_tg_cfs_load() if delta == 0
  2021-06-01  8:36 [PATCH] sched/fair: Return early from update_tg_cfs_load() if delta == 0 Dietmar Eggemann
@ 2021-06-01 14:11 ` Vincent Guittot
  2021-06-18  8:46 ` [tip: sched/core] " tip-bot2 for Dietmar Eggemann
  1 sibling, 0 replies; 3+ messages in thread
From: Vincent Guittot @ 2021-06-01 14:11 UTC (permalink / raw)
  To: Dietmar Eggemann
  Cc: Ingo Molnar, Peter Zijlstra, Juri Lelli, Steven Rostedt,
	Ben Segall, Mel Gorman, Daniel Bristot de Oliveira, linux-kernel

On Tue, 1 Jun 2021 at 10:36, Dietmar Eggemann <dietmar.eggemann@arm.com> wrote:
>
> In case the _avg delta is 0 there is no need to update se's _avg
> (level n) nor cfs_rq's _avg (level n-1). These values stay the same.
>
> Since cfs_rq's _avg isn't changed, i.e. no load is propagated down,
> cfs_rq's _sum should stay the same as well.
>
> So bail out after se's _sum has been updated.
>
> Signed-off-by: Dietmar Eggemann <dietmar.eggemann@arm.com>

Reviewed-by: Vincent Guittot <vincent.guittot@linaro.org>

> ---
>
> This patch is against current tip/sched/urgent, commit f268c3737eca
> ("tick/nohz: Only check for RCU deferred wakeup on user/guest entry
> when needed").
> It needs commit 7c7ad626d9a0 ("sched/fair: Keep load_avg and load_sum
> synced").
>
>  kernel/sched/fair.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
> index e7c8277e3d54..ce8e0e10e5d4 100644
> --- a/kernel/sched/fair.c
> +++ b/kernel/sched/fair.c
> @@ -3548,9 +3548,12 @@ update_tg_cfs_load(struct cfs_rq *cfs_rq, struct sched_entity *se, struct cfs_rq
>         load_sum = (s64)se_weight(se) * runnable_sum;
>         load_avg = div_s64(load_sum, divider);
>
> +       se->avg.load_sum = runnable_sum;
> +
>         delta = load_avg - se->avg.load_avg;
> +       if (!delta)
> +               return;
>
> -       se->avg.load_sum = runnable_sum;
>         se->avg.load_avg = load_avg;
>
>         add_positive(&cfs_rq->avg.load_avg, delta);
> --
> 2.25.1
>

^ permalink raw reply	[flat|nested] 3+ messages in thread

* [tip: sched/core] sched/fair: Return early from update_tg_cfs_load() if delta == 0
  2021-06-01  8:36 [PATCH] sched/fair: Return early from update_tg_cfs_load() if delta == 0 Dietmar Eggemann
  2021-06-01 14:11 ` Vincent Guittot
@ 2021-06-18  8:46 ` tip-bot2 for Dietmar Eggemann
  1 sibling, 0 replies; 3+ messages in thread
From: tip-bot2 for Dietmar Eggemann @ 2021-06-18  8:46 UTC (permalink / raw)
  To: linux-tip-commits
  Cc: Dietmar Eggemann, Peter Zijlstra (Intel),
	Vincent Guittot, x86, linux-kernel

The following commit has been merged into the sched/core branch of tip:

Commit-ID:     83c5e9d573e1f0757f324d01adb6ee77b49c3f0e
Gitweb:        https://git.kernel.org/tip/83c5e9d573e1f0757f324d01adb6ee77b49c3f0e
Author:        Dietmar Eggemann <dietmar.eggemann@arm.com>
AuthorDate:    Tue, 01 Jun 2021 10:36:16 +02:00
Committer:     Peter Zijlstra <peterz@infradead.org>
CommitterDate: Thu, 17 Jun 2021 14:11:42 +02:00

sched/fair: Return early from update_tg_cfs_load() if delta == 0

In case the _avg delta is 0 there is no need to update se's _avg
(level n) nor cfs_rq's _avg (level n-1). These values stay the same.

Since cfs_rq's _avg isn't changed, i.e. no load is propagated down,
cfs_rq's _sum should stay the same as well.

So bail out after se's _sum has been updated.

Signed-off-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Vincent Guittot <vincent.guittot@linaro.org>
Link: https://lore.kernel.org/r/20210601083616.804229-1-dietmar.eggemann@arm.com
---
 kernel/sched/fair.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index 198514d..06c8ba7 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -3502,9 +3502,12 @@ update_tg_cfs_load(struct cfs_rq *cfs_rq, struct sched_entity *se, struct cfs_rq
 	load_sum = (s64)se_weight(se) * runnable_sum;
 	load_avg = div_s64(load_sum, divider);
 
+	se->avg.load_sum = runnable_sum;
+
 	delta = load_avg - se->avg.load_avg;
+	if (!delta)
+		return;
 
-	se->avg.load_sum = runnable_sum;
 	se->avg.load_avg = load_avg;
 
 	add_positive(&cfs_rq->avg.load_avg, delta);

^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-06-18  8:46 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-06-01  8:36 [PATCH] sched/fair: Return early from update_tg_cfs_load() if delta == 0 Dietmar Eggemann
2021-06-01 14:11 ` Vincent Guittot
2021-06-18  8:46 ` [tip: sched/core] " tip-bot2 for Dietmar Eggemann

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.