All of lore.kernel.org
 help / color / mirror / Atom feed
From: Shrikanth Hegde <sshegde@linux.ibm.com>
To: mingo@kernel.org, peterz@infradead.org, vincent.guittot@linaro.org
Cc: sshegde@linux.ibm.com, yu.c.chen@intel.com,
	dietmar.eggemann@arm.com, linux-kernel@vger.kernel.org,
	nysal@linux.ibm.com, aboorvad@linux.ibm.com,
	srikar@linux.ibm.com, vschneid@redhat.com,
	pierre.gondois@arm.com, qyousef@layalina.io
Subject: [PATCH v6 0/3] sched/fair: Limit access to overutilized
Date: Thu,  7 Mar 2024 14:27:22 +0530	[thread overview]
Message-ID: <20240307085725.444486-1-sshegde@linux.ibm.com> (raw)

When running an 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. Similar perf profile
was simulated by making some changes to stress-ng --wait. Both
newidle_balance and enqueue_task_fair consume close to 5-7%.

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/3 - 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/3 - Code refactoring to use the helper function instead of
direct access of the field. Keeping this patch so patch 3/3 becomes
easier to understand. Depends on 1/3.
Patch 3/3 - Refactoring the code since most of the patterns are observed
are eas && !overutilzed. Changed the helper function accordingly.
Depends on 2/3.

More details can be found in cover letter of v1.

v5 -> v6:
- Mades minor changes for !CONFIG_SMP cases as pointed out by Vincent.
v4 -> v5:
- Added EAS check inside helper functions instead of sprinkling it
around. EAS check is static branch at best. So that keeps the code
simpler.
- added EAS check inside cpu_overutilized as suggested by Qais.
- Added patch 3 since most of the code does eas && !overutilized
pattern as suggested by Vincent.
v3 -> v4:
- corrected a mistake where EAS check was missed.
v2 -> v3:
- 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.
v1 -> v2:
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/
v3: https://lore.kernel.org/lkml/20240229104010.747411-1-sshegde@linux.ibm.com/
v4: https://lore.kernel.org/lkml/20240301151725.874604-1-sshegde@linux.ibm.com/
v5: https://lore.kernel.org/lkml/20240306102454.341014-1-sshegde@linux.ibm.com/

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

 kernel/sched/fair.c | 72 ++++++++++++++++++++++++++++-----------------
 1 file changed, 45 insertions(+), 27 deletions(-)

--
2.39.3


             reply	other threads:[~2024-03-07  8:59 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-07  8:57 Shrikanth Hegde [this message]
2024-03-07  8:57 ` [PATCH v6 1/3] sched/fair: Add EAS checks before updating overutilized Shrikanth Hegde
2024-03-07 16:50   ` Vincent Guittot
2024-03-26  8:06   ` [tip: sched/core] sched/fair: Add EAS checks before updating root_domain::overutilized tip-bot2 for Shrikanth Hegde
2024-03-07  8:57 ` [PATCH v6 2/3] sched/fair: Use helper function to access rd->overutilized Shrikanth Hegde
2024-03-07 16:50   ` Vincent Guittot
2024-03-26  8:06   ` [tip: sched/core] sched/fair: Introduce is_rd_overutilized() helper function to access root_domain::overutilized tip-bot2 for Shrikanth Hegde
2024-03-07  8:57 ` [PATCH v6 3/3] sched/fair: Combine EAS check with overutilized access Shrikanth Hegde
2024-03-07 16:50   ` Vincent Guittot
2024-03-26  7:58   ` Ingo Molnar
2024-03-26  8:26     ` Vincent Guittot
2024-03-26 12:25       ` Shrikanth Hegde
2024-03-26 14:12         ` Vincent Guittot
2024-03-26 14:49           ` Shrikanth Hegde
2024-03-14 16:47 ` [PATCH v6 0/3] sched/fair: Limit access to overutilized Valentin Schneider

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240307085725.444486-1-sshegde@linux.ibm.com \
    --to=sshegde@linux.ibm.com \
    --cc=aboorvad@linux.ibm.com \
    --cc=dietmar.eggemann@arm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@kernel.org \
    --cc=nysal@linux.ibm.com \
    --cc=peterz@infradead.org \
    --cc=pierre.gondois@arm.com \
    --cc=qyousef@layalina.io \
    --cc=srikar@linux.ibm.com \
    --cc=vincent.guittot@linaro.org \
    --cc=vschneid@redhat.com \
    --cc=yu.c.chen@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.