From: "Zhang, Rui" <rui.zhang@intel.com>
To: "ricardo.neri-calderon@linux.intel.com"
<ricardo.neri-calderon@linux.intel.com>,
"peterz@infradead.org" <peterz@infradead.org>,
"juri.lelli@redhat.com" <juri.lelli@redhat.com>,
"vincent.guittot@linaro.org" <vincent.guittot@linaro.org>
Cc: "dietmar.eggemann@arm.com" <dietmar.eggemann@arm.com>,
"mgorman@suse.de" <mgorman@suse.de>,
"Wysocki, Rafael J" <rafael.j.wysocki@intel.com>,
"tim.c.chen@linux.intel.com" <tim.c.chen@linux.intel.com>,
"srinivas.pandruvada@linux.intel.com"
<srinivas.pandruvada@linux.intel.com>,
"rostedt@goodmis.org" <rostedt@goodmis.org>,
"Shankar, Ravi V" <ravi.v.shankar@intel.com>,
"Neri, Ricardo" <ricardo.neri@intel.com>,
"vschneid@redhat.com" <vschneid@redhat.com>,
"bristot@redhat.com" <bristot@redhat.com>,
"ionela.voinescu@arm.com" <ionela.voinescu@arm.com>,
"Chen, Yu C" <yu.c.chen@intel.com>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"Brown, Len" <len.brown@intel.com>,
"bsegall@google.com" <bsegall@google.com>,
"x86@kernel.org" <x86@kernel.org>
Subject: Re: [PATCH v3 00/10] sched/fair: Avoid unnecessary migrations within SMT domains
Date: Thu, 9 Feb 2023 08:07:51 +0000 [thread overview]
Message-ID: <19416ae84ddbab82cb0419716c4c490ef296d08c.camel@intel.com> (raw)
In-Reply-To: <20230207045838.11243-1-ricardo.neri-calderon@linux.intel.com>
Hi, All,
On Mon, 2023-02-06 at 20:58 -0800, Ricardo Neri wrote:
> Hi,
>
> This is v3 of this series. Previous versions can be found here [1]
> and
> here [2]. To avoid duplication, I do not include the cover letter of
> the
> original submission. You can read it in [1].
I happened to run into a similar issue when testing another patch
series which allows idle injections for partial cpus instead of all
cpus.
https://lore.kernel.org/all/a68a6f8c76cb719cd4865bd6aa726306772d4ee3.camel@intel.com/
On an ADL-P NUC system with 4 Pcores (cpu0-cpu7), and 8 Ecores (cpu8-
cpu15), the problem can be reproduced by
1. start 16 stress threads
2. force idle injection to all Ecore cpus
3. stop idle injection after 10 seconds
After step 3, all the Pcore cpus are 100% busy, and all the Ecore cpus
are almost 100% idle. This situation lasts for a long time, till I kill
all the stress threads after 20 seconds.
After sync with Chen Yu, I also tried
stress -c 16 &
chrt -r 70 taskset -c 8-15 stress -c 8 -t 10
instead of idle injection, and the problem is also 100% reproducible.
And note that, the problem can be reproduced w/ and w/o ITMT enabled,
by poking /proc/sys/kernel/sched_itmt_enabled
With this whole patch series applied, I can confirm the problem is gone
both w/ and w/o ITMT enabled. So
Tested-by: Zhang Rui <rui.zhang@intel.com>
thanks,
rui
>
> Changes since v2:
>
> Vincent correctly indicated that I was abusing asym_packing to force
> load
> balances unrelated to CPU priority. The underlying issue is that the
> scheduler cannot not handle load balances between SMT and non-SMT
> cores
> correctly. I added several prework patches to fix it... and I removed
> the
> abuse of asym_packing.
>
> Dietmar helped me to realize that there is a better way to check the
> idle
> state of SMT cores. Now I give the task to the scheduler instead of
> architecture-specific overrides. I unconditionally obey CPU
> priorities
> at the SMT level. This keeps Power7 happy. At upper levels (i.e.,
> when
> balancing load between cores) the scheduler also considers the idle
> state
> of the core in addition to CPU priority. This satisfies x86.
>
> Ionela spotted a violation of the scheduler topology sanity checks.
> We did
> not find a check that suits both Power7 and x86. For now, I removed
> the
> NEEDS_CHILD flag of SD_ASYM_PACKING.
>
> Hopefully, these patches are in sufficiently good shape to be merged.
>
> Thank you for your feedback and I look forward to getting more of it!
>
> New patches 2, 3, 4, 5, 6, 7, 8
> Updated patches: 1
> Unchanged patches: 9, 10
>
> BR,
> Ricardo
>
> [1].
> https://lore.kernel.org/lkml/20220825225529.26465-1-ricardo.neri-calderon@linux.intel.com/
> [2].
> https://lore.kernel.org/lkml/20221122203532.15013-1-ricardo.neri-calderon@linux.intel.com/
>
>
> Ricardo Neri (10):
> sched/fair: Generalize asym_packing logic for SMT cores
> sched/fair: Move is_core_idle() out of CONFIG_NUMA
> sched/fair: Only do asym_packing load balancing from fully idle SMT
> cores
> sched/fair: Let low-priority cores help high-priority busy SMT
> cores
> sched/fair: Keep a fully_busy SMT sched group as busiest
> sched/fair: Use the prefer_sibling flag of the current sched domain
> sched/fair: Do not even the number of busy CPUs via asym_packing
> sched/topology: Remove SHARED_CHILD from ASYM_PACKING
> x86/sched: Remove SD_ASYM_PACKING from the SMT domain flags
> x86/sched/itmt: Give all SMT siblings of a core the same priority
>
> arch/x86/kernel/itmt.c | 23 +----
> arch/x86/kernel/smpboot.c | 2 +-
> include/linux/sched/sd_flags.h | 5 +-
> kernel/sched/fair.c | 175 +++++++++++++++++------------
> ----
> 4 files changed, 99 insertions(+), 106 deletions(-)
>
prev parent reply other threads:[~2023-02-09 8:08 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-02-07 4:58 Ricardo Neri
2023-02-07 4:58 ` [PATCH v3 01/10] sched/fair: Generalize asym_packing logic for SMT cores Ricardo Neri
2023-02-07 4:58 ` [PATCH v3 02/10] sched/fair: Move is_core_idle() out of CONFIG_NUMA Ricardo Neri
2023-02-07 4:58 ` [PATCH v3 03/10] sched/fair: Only do asym_packing load balancing from fully idle SMT cores Ricardo Neri
2023-02-07 4:58 ` [PATCH v3 04/10] sched/fair: Let low-priority cores help high-priority busy " Ricardo Neri
2023-02-08 7:56 ` Vincent Guittot
2023-02-09 11:53 ` Peter Zijlstra
2023-02-10 0:43 ` Ricardo Neri
2023-02-10 8:41 ` Peter Zijlstra
2023-02-10 13:05 ` Ricardo Neri
2023-02-10 1:52 ` Ricardo Neri
2023-02-13 13:40 ` Dietmar Eggemann
2023-02-13 23:23 ` Ricardo Neri
2023-03-10 0:51 ` Tim Chen
2023-03-14 23:54 ` Ricardo Neri
2023-02-07 4:58 ` [PATCH v3 05/10] sched/fair: Keep a fully_busy SMT sched group as busiest Ricardo Neri
2023-02-07 4:58 ` [PATCH v3 06/10] sched/fair: Use the prefer_sibling flag of the current sched domain Ricardo Neri
2023-02-08 7:48 ` Vincent Guittot
2023-02-10 13:24 ` Ricardo Neri
2023-02-09 13:17 ` Chen Yu
2023-02-09 20:00 ` Chen, Tim C
2023-02-09 23:05 ` Tim Chen
2023-02-10 3:16 ` Ricardo Neri
2023-02-10 6:55 ` Chen Yu
2023-02-10 10:08 ` Peter Zijlstra
2023-02-10 14:54 ` Valentin Schneider
2023-02-10 16:53 ` Peter Zijlstra
2023-02-10 17:12 ` Valentin Schneider
2023-02-10 18:31 ` Ricardo Neri
2023-02-13 12:17 ` Dietmar Eggemann
2023-02-14 6:43 ` Ricardo Neri
2023-02-16 5:21 ` Ricardo Neri
2023-02-16 12:16 ` Peter Zijlstra
2023-02-17 1:41 ` Ricardo Neri
2023-02-23 10:09 ` Dietmar Eggemann
2023-02-24 12:29 ` Ricardo Neri
[not found] ` <tencent_60A804570F09C0CFE0495D5B984941123A05@qq.com>
2023-02-20 9:45 ` Valentin Schneider
[not found] ` <tencent_6C38D389245FD03C6E1312999FEDD394F606@qq.com>
2023-02-21 18:15 ` Valentin Schneider
2023-02-07 4:58 ` [PATCH v3 07/10] sched/fair: Do not even the number of busy CPUs via asym_packing Ricardo Neri
2023-02-13 12:44 ` Dietmar Eggemann
2023-02-13 19:47 ` Ricardo Neri
2023-02-07 4:58 ` [PATCH v3 08/10] sched/topology: Remove SHARED_CHILD from ASYM_PACKING Ricardo Neri
2023-03-03 11:29 ` Ionela Voinescu
2023-03-05 19:08 ` Ricardo Neri
2023-03-06 13:10 ` Ionela Voinescu
2023-03-06 18:17 ` Ricardo Neri
2023-02-07 4:58 ` [PATCH v3 09/10] x86/sched: Remove SD_ASYM_PACKING from the SMT domain flags Ricardo Neri
2023-02-07 4:58 ` [PATCH v3 10/10] x86/sched/itmt: Give all SMT siblings of a core the same priority Ricardo Neri
2023-02-09 8:07 ` Zhang, Rui [this message]
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=19416ae84ddbab82cb0419716c4c490ef296d08c.camel@intel.com \
--to=rui.zhang@intel.com \
--cc=bristot@redhat.com \
--cc=bsegall@google.com \
--cc=dietmar.eggemann@arm.com \
--cc=ionela.voinescu@arm.com \
--cc=juri.lelli@redhat.com \
--cc=len.brown@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mgorman@suse.de \
--cc=peterz@infradead.org \
--cc=rafael.j.wysocki@intel.com \
--cc=ravi.v.shankar@intel.com \
--cc=ricardo.neri-calderon@linux.intel.com \
--cc=ricardo.neri@intel.com \
--cc=rostedt@goodmis.org \
--cc=srinivas.pandruvada@linux.intel.com \
--cc=tim.c.chen@linux.intel.com \
--cc=vincent.guittot@linaro.org \
--cc=vschneid@redhat.com \
--cc=x86@kernel.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Powered by JetHome