public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/2] sched/fair: Limit access to overutilized
@ 2024-02-29 10:40 Shrikanth Hegde
  2024-02-29 10:40 ` [PATCH v3 1/2] sched/fair: Add EAS checks before updating overutilized Shrikanth Hegde
  2024-02-29 10:40 ` [PATCH v3 2/2] sched/fair: Use helper function to access rd->overutilized Shrikanth Hegde
  0 siblings, 2 replies; 5+ messages in thread
From: Shrikanth Hegde @ 2024-02-29 10:40 UTC (permalink / raw)
  To: mingo, peterz, vincent.guittot
  Cc: sshegde, yu.c.chen, dietmar.eggemann, linux-kernel, nysal,
	aboorvad, srikar, vschneid, pierre.gondois, morten.rasmussen,
	qyousef

When running a ISV workload on a large system (240 Cores, SMT8), it was
observed from perf profile that newidle_balance and enqueue_task_fair
were consuming more cycles. Perf annotate showed that most of the time
was spent on accessing overutilized field of root domain.

Aboorva was able to simulate similar perf profile by making some
changes to stress-ng --wait. Both newidle_balance and enqueue_task_fair
consume close to 5-7%. Perf annotate shows that most of the cycles are spent
in accessing rd,rd->overutilized field.

Overutilized was added for EAS(Energy aware scheduler) to decide whether
to do load balance or not. Simultaneous access to overutilized by
multiple CPUs lead cache invalidations due to true sharing. Updating
overutilized is not required for non-EAS platforms. Since overutilized and
overload are part of the same cacheline, there is false sharing as well.

Patch 1/2 is the main patch. It helps in reducing the above said issue.
Both the functions don't show up in the profile. With patch comparison is in
changelog. With the patch stated problem in the ISV workload also got
solved and throughput has improved.
Patch 2/2 is only code refactoring to use the helper function instead of
direct access of the field

Detailed perf annotate can be found in cover letter of v1.

v3 -> v2:
- Pierre and Dietmar suggested we could add one more EAS check before
calling cpu_overutilized. That makes sense since that value is not used
anyway in Non-EAS case.
- Refactored the code as dietmar suggested to avoid additional call to
sched_energy_enabled().
- Minor edits to change log.
v2 -> v1:
Chen Yu pointed out minor issue in code. Corrected that code and updated
the changelog.

v1: https://lore.kernel.org/lkml/20240223150707.410417-1-sshegde@linux.ibm.com/
v2: https://lore.kernel.org/lkml/20240228071621.602596-1-sshegde@linux.ibm.com/


Shrikanth Hegde (2):
  sched/fair: Add EAS checks before updating overutilized
  sched/fair: Use helper function to access rd->overutilized

 kernel/sched/fair.c | 61 ++++++++++++++++++++++++++++++---------------
 1 file changed, 41 insertions(+), 20 deletions(-)

--
2.39.3


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

end of thread, other threads:[~2024-03-01 14:15 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-29 10:40 [PATCH v3 0/2] sched/fair: Limit access to overutilized Shrikanth Hegde
2024-02-29 10:40 ` [PATCH v3 1/2] sched/fair: Add EAS checks before updating overutilized Shrikanth Hegde
2024-03-01  9:26   ` Srikar Dronamraju
2024-03-01 14:14   ` Shrikanth Hegde
2024-02-29 10:40 ` [PATCH v3 2/2] sched/fair: Use helper function to access rd->overutilized Shrikanth Hegde

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox