mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "tip-bot2 for Ricardo Neri" <tip-bot2@linutronix.de>
To: linux-tip-commits@vger.kernel.org
Cc: Dietmar Eggemann <dietmar.eggemann@arm.com>,
	Ricardo Neri <ricardo.neri-calderon@linux.intel.com>,
	"Peter Zijlstra (Intel)" <peterz@infradead.org>,
	Zhang Rui <rui.zhang@intel.com>,
	x86@kernel.org, linux-kernel@vger.kernel.org
Subject: [tip: sched/core] sched/fair: Use the busiest group to set prefer_sibling
Date: Wed, 10 May 2023 13:49:13 -0000	[thread overview]
Message-ID: <168372655311.404.12627370082433827466.tip-bot2@tip-bot2> (raw)
In-Reply-To: <20230406203148.19182-7-ricardo.neri-calderon@linux.intel.com>

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

Commit-ID:     43726bdedd29797d8e1fee2e7300a6d2b9a74ba8
Gitweb:        https://git.kernel.org/tip/43726bdedd29797d8e1fee2e7300a6d2b9a74ba8
Author:        Ricardo Neri <ricardo.neri-calderon@linux.intel.com>
AuthorDate:    Thu, 06 Apr 2023 13:31:42 -07:00
Committer:     Peter Zijlstra <peterz@infradead.org>
CommitterDate: Mon, 08 May 2023 10:58:35 +02:00

sched/fair: Use the busiest group to set prefer_sibling

The prefer_sibling setting acts on the busiest group to move excess tasks
to the local group. This should be done as per request of the child of the
busiest group's sched domain, not the local group's.

Using the flags of the child domain of the local group works fortuitously
if both groups have child domains.

There are cases, however, in which the busiest group's sched domain has
child but the local group's does not. Consider, for instance a non-SMT
core (or an SMT core with only one online sibling) doing load balance with
an SMT core at the MC level. SD_PREFER_SIBLING of the busiest group's child
domain will not be honored. We are left with a fully busy SMT core and an
idle non-SMT core.

Suggested-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
Signed-off-by: Ricardo Neri <ricardo.neri-calderon@linux.intel.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Tested-by: Zhang Rui <rui.zhang@intel.com>
Link: https://lore.kernel.org/r/20230406203148.19182-7-ricardo.neri-calderon@linux.intel.com
---
 kernel/sched/fair.c | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c
index 4a9f040..3bb8934 100644
--- a/kernel/sched/fair.c
+++ b/kernel/sched/fair.c
@@ -10109,7 +10109,6 @@ static void update_idle_cpu_scan(struct lb_env *env,
 
 static inline void update_sd_lb_stats(struct lb_env *env, struct sd_lb_stats *sds)
 {
-	struct sched_domain *child = env->sd->child;
 	struct sched_group *sg = env->sd->groups;
 	struct sg_lb_stats *local = &sds->local_stat;
 	struct sg_lb_stats tmp_sgs;
@@ -10150,8 +10149,13 @@ next_group:
 		sg = sg->next;
 	} while (sg != env->sd->groups);
 
-	/* Tag domain that child domain prefers tasks go to siblings first */
-	sds->prefer_sibling = child && child->flags & SD_PREFER_SIBLING;
+	/*
+	 * Indicate that the child domain of the busiest group prefers tasks
+	 * go to a child's sibling domains first. NB the flags of a sched group
+	 * are those of the child domain.
+	 */
+	if (sds->busiest)
+		sds->prefer_sibling = !!(sds->busiest->flags & SD_PREFER_SIBLING);
 
 
 	if (env->sd->flags & SD_NUMA)
@@ -10461,7 +10465,10 @@ static struct sched_group *find_busiest_group(struct lb_env *env)
 			goto out_balanced;
 	}
 
-	/* Try to move all excess tasks to child's sibling domain */
+	/*
+	 * Try to move all excess tasks to a sibling domain of the busiest
+	 * group's child domain.
+	 */
 	if (sds.prefer_sibling && local->group_type == group_has_spare &&
 	    busiest->sum_nr_running > local->sum_nr_running + 1)
 		goto force_balance;

  reply	other threads:[~2023-05-10 13:50 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-04-06 20:31 [PATCH v4 00/12] sched: Avoid unnecessary migrations within SMT domains Ricardo Neri
2023-04-06 20:31 ` [PATCH v4 01/12] sched/fair: Move is_core_idle() out of CONFIG_NUMA Ricardo Neri
2023-05-10 13:49   ` [tip: sched/core] " tip-bot2 for Ricardo Neri
2023-04-06 20:31 ` [PATCH v4 02/12] sched/fair: Only do asym_packing load balancing from fully idle SMT cores Ricardo Neri
2023-05-10 13:49   ` [tip: sched/core] " tip-bot2 for Ricardo Neri
2023-04-06 20:31 ` [PATCH v4 03/12] sched/fair: Simplify asym_packing logic for " Ricardo Neri
2023-05-10 13:49   ` [tip: sched/core] " tip-bot2 for Ricardo Neri
2023-04-06 20:31 ` [PATCH v4 04/12] sched/fair: Let low-priority cores help high-priority busy " Ricardo Neri
2023-05-10 13:49   ` [tip: sched/core] " tip-bot2 for Ricardo Neri
2023-04-06 20:31 ` [PATCH v4 05/12] sched/fair: Keep a fully_busy SMT sched group as busiest Ricardo Neri
2023-05-10 13:49   ` [tip: sched/core] " tip-bot2 for Ricardo Neri
2023-05-12 18:41   ` [PATCH v4 05/12] " Shrikanth Hegde
2023-05-19  0:01     ` Ricardo Neri
2023-04-06 20:31 ` [PATCH v4 06/12] sched/fair: Use the busiest group to set prefer_sibling Ricardo Neri
2023-05-10 13:49   ` tip-bot2 for Ricardo Neri [this message]
2023-04-06 20:31 ` [PATCH v4 07/12] sched/fair: Do not even the number of busy CPUs via asym_packing Ricardo Neri
2023-05-10 13:49   ` [tip: sched/core] " tip-bot2 for Ricardo Neri
2023-04-06 20:31 ` [PATCH v4 08/12] sched/topology: Check SDF_SHARED_CHILD in highest_flag_domain() Ricardo Neri
2023-05-10 13:49   ` [tip: sched/core] " tip-bot2 for Ricardo Neri
2023-04-06 20:31 ` [PATCH v4 09/12] sched/topology: Remove SHARED_CHILD from ASYM_PACKING Ricardo Neri
2023-05-10 13:49   ` [tip: sched/core] " tip-bot2 for Ricardo Neri
2023-04-06 20:31 ` [PATCH v4 10/12] x86/sched: Remove SD_ASYM_PACKING from the SMT domain flags Ricardo Neri
2023-05-10 13:49   ` [tip: sched/core] " tip-bot2 for Ricardo Neri
2023-04-06 20:31 ` [PATCH v4 11/12] x86/sched/itmt: Give all SMT siblings of a core the same priority Ricardo Neri
2023-05-10 13:49   ` [tip: sched/core] " tip-bot2 for Ricardo Neri
2023-04-06 20:31 ` [PATCH v4 12/12] x86/sched: Add the SD_ASYM_PACKING flag to the die domain of hybrid processors Ricardo Neri
2023-05-10 13:49   ` [tip: sched/core] " tip-bot2 for Chen Yu
2023-04-29 15:32 ` [PATCH v4 00/12] sched: Avoid unnecessary migrations within SMT domains Peter Zijlstra
2023-05-01 18:30   ` Tim Chen
2023-05-02  1:42   ` Ricardo Neri
2023-05-02  1:52     ` Steven Rostedt
2023-05-12 18:23   ` Shrikanth Hegde
2023-05-19  0:03     ` Ricardo Neri
2023-05-22  7:55       ` Shrikanth Hegde

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=168372655311.404.12627370082433827466.tip-bot2@tip-bot2 \
    --to=tip-bot2@linutronix.de \
    --cc=dietmar.eggemann@arm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-tip-commits@vger.kernel.org \
    --cc=peterz@infradead.org \
    --cc=ricardo.neri-calderon@linux.intel.com \
    --cc=rui.zhang@intel.com \
    --cc=x86@kernel.org \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®