Messages in this thread Patch in this message | | | From | Srikar Dronamraju <> | Subject | [PATCH 01/10] sched/fair: Update affine statistics when needed | Date | Thu, 22 Apr 2021 15:53:17 +0530 |
| |
wake_affine_idle() can return prev_cpu. Even in such a scenario, scheduler was going ahead and updating schedstats related to wake affine. i.e even if the task is not moved across LLC domains, schedstats would have accounted.
Hence add a check before updating schedstats.
Cc: LKML <linux-kernel@vger.kernel.org> Cc: Gautham R Shenoy <ego@linux.vnet.ibm.com> Cc: Parth Shah <parth@linux.ibm.com> Cc: Ingo Molnar <mingo@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Valentin Schneider <valentin.schneider@arm.com> Cc: Dietmar Eggemann <dietmar.eggemann@arm.com> Cc: Mel Gorman <mgorman@techsingularity.net> Cc: Vincent Guittot <vincent.guittot@linaro.org> Cc: Rik van Riel <riel@surriel.com> Signed-off-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com> --- kernel/sched/fair.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 794c2cb945f8..a258a84cfdfd 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -5884,8 +5884,10 @@ static int wake_affine(struct sched_domain *sd, struct task_struct *p, if (target == nr_cpumask_bits) return prev_cpu; - schedstat_inc(sd->ttwu_move_affine); - schedstat_inc(p->se.statistics.nr_wakeups_affine); + if (!cpus_share_cache(prev_cpu, target)) { + schedstat_inc(sd->ttwu_move_affine); + schedstat_inc(p->se.statistics.nr_wakeups_affine); + } return target; } -- 2.18.2
| |