From: Peter Zijlstra <peterz@infradead.org>
To: Michael Neuling <mikey@neuling.org>
Cc: Matt Fleming <matt@codeblueprint.co.uk>,
mingo@kernel.org, linux-kernel@vger.kernel.org, clm@fb.com,
mgalbraith@suse.de, tglx@linutronix.de, fweisbec@gmail.com,
srikar@linux.vnet.ibm.com, anton@samba.org,
oliver <oohall@gmail.com>,
"Shreyas B. Prabhu" <shreyas@linux.vnet.ibm.com>
Subject: Re: [RFC][PATCH 4/7] sched: Replace sd_busy/nr_busy_cpus with sched_domain_shared
Date: Tue, 17 May 2016 12:20:07 +0200 [thread overview]
Message-ID: <20160517102007.GI3205@twins.programming.kicks-ass.net> (raw)
In-Reply-To: <20160516140032.GQ3193@twins.programming.kicks-ass.net>
On Mon, May 16, 2016 at 04:00:32PM +0200, Peter Zijlstra wrote:
> On Fri, May 13, 2016 at 10:12:26AM +1000, Michael Neuling wrote:
>
> > > Basically; and if so, if its cheap enough to shoot a task to an idle
> > > core to avoid queueing. Assuming there still is some cache residency on
> > > the old core, the inter-core fill should be much cheaper than fetching
> > > it off package (either remote cache or dram).
> >
> > So I think that will apply on POWER8.
> >
> > In 10.4.2 it says "The L3.1 ECO Caches will be snooped and provide
> > intervention data similar to the L2 and L3.0 caches on the
> > chip" That should be much faster than going to another chip or DIMM.
> >
> > So migrating to another core on the same chip should be faster than off
> > chip.
>
> OK; so something like the below might be what you want to play with.
>
> ---
Maybe even something like so; which would make Power <= 6 use the
default topology and result in a shared LLC between the on package cores
etc..
Power7 is then special for not having a shared L3 but having the
asymmetric SMT thing and Power8 again gains the shared L3 while
retaining the asymmetric SMT stuff.
---
arch/powerpc/kernel/smp.c | 34 +++++++++++++++++++++++++++++++++-
1 file changed, 33 insertions(+), 1 deletion(-)
diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c
index 55c924b65f71..09ce422fc29c 100644
--- a/arch/powerpc/kernel/smp.c
+++ b/arch/powerpc/kernel/smp.c
@@ -782,6 +782,23 @@ static struct sched_domain_topology_level powerpc_topology[] = {
{ NULL, },
};
+static struct sched_domain_topology_level powerpc8_topology[] = {
+#ifdef CONFIG_SCHED_SMT
+ { cpu_smt_mask, powerpc_smt_flags, SD_INIT_NAME(SMT) },
+#endif
+#ifdef CONFIG_SCHED_MC
+ /*
+ * Model the L3.1 cache and sets the LLC as the whole package.
+ *
+ * This also ensures we try and move woken tasks to idle cores inside
+ * the package to avoid queueing.
+ */
+ { cpu_coregroup_mask, cpu_core_flags, SD_INIT_NAME(MC) },
+#endif
+ { cpu_cpu_mask, SD_INIT_NAME(DIE) },
+ { NULL, },
+};
+
void __init smp_cpus_done(unsigned int max_cpus)
{
cpumask_var_t old_mask;
@@ -806,7 +823,22 @@ void __init smp_cpus_done(unsigned int max_cpus)
dump_numa_cpu_topology();
- set_sched_topology(powerpc_topology);
+ if (cpu_has_feature(CPU_FTRS_POWER7)) {
+ /*
+ * Power7 topology is special because it doesn't have
+ * a shared L3 between cores and has the ASYM(metric)
+ * SMT thing.
+ */
+ set_sched_topology(powerpc_topology);
+ }
+
+ if (cpu_has_feature(CPU_FTRS_POWER8)) {
+ /*
+ * Power8 differs from Power7 in that it does sort-of
+ * have a shared L3 again.
+ */
+ set_sched_topology(powerpc8_topology);
+ }
}
next prev parent reply other threads:[~2016-05-17 10:20 UTC|newest]
Thread overview: 39+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-09 10:48 [RFC][PATCH 0/7] sched: select_idle_siblings rewrite Peter Zijlstra
2016-05-09 10:48 ` [RFC][PATCH 1/7] sched: Remove unused @cpu argument from destroy_sched_domain*() Peter Zijlstra
2016-05-09 10:48 ` [RFC][PATCH 2/7] sched: Restructure destroy_sched_domain() Peter Zijlstra
2016-05-09 14:46 ` Peter Zijlstra
2016-05-09 10:48 ` [RFC][PATCH 3/7] sched: Introduce struct sched_domain_shared Peter Zijlstra
2016-05-09 10:48 ` [RFC][PATCH 4/7] sched: Replace sd_busy/nr_busy_cpus with sched_domain_shared Peter Zijlstra
2016-05-11 11:55 ` Matt Fleming
2016-05-11 12:33 ` Peter Zijlstra
2016-05-11 18:11 ` Peter Zijlstra
2016-05-11 18:24 ` Peter Zijlstra
2016-05-12 2:05 ` Michael Neuling
2016-05-12 5:07 ` Peter Zijlstra
2016-05-12 11:07 ` Michael Neuling
2016-05-12 11:33 ` Peter Zijlstra
2016-05-13 0:12 ` Michael Neuling
2016-05-16 14:00 ` Peter Zijlstra
2016-05-17 10:20 ` Peter Zijlstra [this message]
2016-05-17 10:52 ` Srikar Dronamraju
2016-05-17 11:15 ` Peter Zijlstra
2016-05-11 17:37 ` Peter Zijlstra
2016-05-11 18:04 ` Matt Fleming
2016-05-16 15:31 ` Dietmar Eggemann
2016-05-16 17:02 ` Peter Zijlstra
2016-05-16 17:26 ` Dietmar Eggemann
2016-05-09 10:48 ` [RFC][PATCH 5/7] sched: Rewrite select_idle_siblings() Peter Zijlstra
2016-05-10 21:05 ` Yuyang Du
2016-05-11 7:00 ` Peter Zijlstra
2016-05-10 23:42 ` Yuyang Du
2016-05-11 7:43 ` Mike Galbraith
2016-05-09 10:48 ` [RFC][PATCH 6/7] sched: Optimize SCHED_SMT Peter Zijlstra
2016-05-09 10:48 ` [RFC][PATCH 7/7] sched: debug muck -- not for merging Peter Zijlstra
2016-05-10 0:50 ` [RFC][PATCH 0/7] sched: select_idle_siblings rewrite Chris Mason
2016-05-11 14:19 ` Chris Mason
2016-05-18 5:51 ` [RFC][PATCH 8/7] sched/fair: Use utilization distance to filter affine sync wakeups Mike Galbraith
2016-05-19 21:43 ` Rik van Riel
2016-05-20 2:52 ` Mike Galbraith
2016-05-25 14:51 ` [RFC][PATCH 0/7] sched: select_idle_siblings rewrite Chris Mason
2016-05-25 16:24 ` Peter Zijlstra
2016-05-25 17:11 ` Chris Mason
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=20160517102007.GI3205@twins.programming.kicks-ass.net \
--to=peterz@infradead.org \
--cc=anton@samba.org \
--cc=clm@fb.com \
--cc=fweisbec@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=matt@codeblueprint.co.uk \
--cc=mgalbraith@suse.de \
--cc=mikey@neuling.org \
--cc=mingo@kernel.org \
--cc=oohall@gmail.com \
--cc=shreyas@linux.vnet.ibm.com \
--cc=srikar@linux.vnet.ibm.com \
--cc=tglx@linutronix.de \
/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.