From: Dave Hansen <dave.hansen@linux.intel.com>
To: linux-kernel@vger.kernel.org
Cc: Dave Hansen <dave.hansen@linux.intel.com>,
tony.luck@intel.com, tim.c.chen@linux.intel.com,
peterz@infradead.org, bp@alien8.de, rientjes@google.com,
imammedo@redhat.com, torvalds@linux-foundation.org,
prarit@redhat.com, toshi.kani@hp.com, brice.goglin@gmail.com,
hpa@linux.intel.com, mingo@kernel.org
Subject: [PATCH] x86, sched: allow topolgies where NUMA nodes share an LLC
Date: Thu, 08 Jun 2017 12:39:28 -0700 [thread overview]
Message-ID: <20170608193928.A3B5497F@viggo.jf.intel.com> (raw)
From: Dave Hansen <dave.hansen@linux.intel.com>
Our SMP boot code has a series of assumptions about what NUMA
nodes are that are enforced via topology_sane(). Once upon a
time, we verified that a CPU package only contained a single node
(fixed in cebf15eb0). Today, we verify that SMT siblings and
LLCs do not span nodes.
The SMT siblings assumption is safe, but the LLC is violated on
current hardware.
Remove the "sanity" check on LLC spanning NUMA nodes. Also make
sure to set 'x86_has_numa_in_package = true' which ensures that
we use the x86_numa_in_package_topology[]. The default topology
layers NUMA "outside" of the cache, which is wrong when the cache
spans multiple nodes.
This fixes the warnings, but it does theoretically throw away the
LLC from being consulted in scheduling decisions, if the LLC is
shared at a boundary that is not also a NUMA node.
Signed-off-by: Dave Hansen <dave.hansen@linux.intel.com>
Cc: Luck, Tony <tony.luck@intel.com>
Cc: Tim Chen <tim.c.chen@linux.intel.com>
Cc: Peter Zijlstra (Intel) <peterz@infradead.org>
Cc: Borislav Petkov <bp@alien8.de>
Cc: David Rientjes <rientjes@google.com>
Cc: Igor Mammedov <imammedo@redhat.com>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Prarit Bhargava <prarit@redhat.com>
Cc: Toshi Kani <toshi.kani@hp.com>
Cc: brice.goglin@gmail.com
Cc: "H. Peter Anvin" <hpa@linux.intel.com>
Cc: Ingo Molnar <mingo@kernel.org>
---
b/arch/x86/kernel/smpboot.c | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
diff -puN arch/x86/kernel/smpboot.c~x86-numa-nodes-share-llc arch/x86/kernel/smpboot.c
--- a/arch/x86/kernel/smpboot.c~x86-numa-nodes-share-llc 2017-06-01 14:46:40.562159566 -0700
+++ b/arch/x86/kernel/smpboot.c 2017-06-01 15:01:43.994157313 -0700
@@ -460,7 +460,7 @@ static bool match_llc(struct cpuinfo_x86
if (per_cpu(cpu_llc_id, cpu1) != BAD_APICID &&
per_cpu(cpu_llc_id, cpu1) == per_cpu(cpu_llc_id, cpu2))
- return topology_sane(c, o, "llc");
+ return true;
return false;
}
@@ -520,7 +520,8 @@ static struct sched_domain_topology_leve
/*
* Set if a package/die has multiple NUMA nodes inside.
- * AMD Magny-Cours and Intel Cluster-on-Die have this.
+ * AMD Magny-Cours, Intel Cluster-on-Die, and Intel
+ * Sub-NUMA Clustering have this.
*/
static bool x86_has_numa_in_package;
@@ -548,9 +549,13 @@ void set_cpu_sibling_map(int cpu)
if ((i == cpu) || (has_smt && match_smt(c, o)))
link_mask(topology_sibling_cpumask, cpu, i);
- if ((i == cpu) || (has_mp && match_llc(c, o)))
- link_mask(cpu_llc_shared_mask, cpu, i);
-
+ if ((i == cpu) || (has_mp && match_llc(c, o))) {
+ /* LLC may be shared across NUMA nodes */
+ if (topology_same_node(c, o))
+ link_mask(cpu_llc_shared_mask, cpu, i);
+ else
+ x86_has_numa_in_package = true;
+ }
}
/*
_
next reply other threads:[~2017-06-08 19:41 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-08 19:39 Dave Hansen [this message]
2017-06-08 20:00 ` Peter Zijlstra
2017-06-08 20:08 ` Luck, Tony
2017-06-08 20:20 ` Peter Zijlstra
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=20170608193928.A3B5497F@viggo.jf.intel.com \
--to=dave.hansen@linux.intel.com \
--cc=bp@alien8.de \
--cc=brice.goglin@gmail.com \
--cc=hpa@linux.intel.com \
--cc=imammedo@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@kernel.org \
--cc=peterz@infradead.org \
--cc=prarit@redhat.com \
--cc=rientjes@google.com \
--cc=tim.c.chen@linux.intel.com \
--cc=tony.luck@intel.com \
--cc=torvalds@linux-foundation.org \
--cc=toshi.kani@hp.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