Re: [PATCH v4] x86,sched: allow topologies where NUMA nodes share an LLC
From: Alison Schofield
Date: Fri Apr 06 2018 - 20:17:02 EST
On Wed, Apr 04, 2018 at 12:00:45PM -0700, Alison Schofield wrote:
> On Wed, Apr 04, 2018 at 11:42:11AM -0700, Tim Chen wrote:
> > On 04/04/2018 10:38 AM, Alison Schofield wrote:
> > > On Wed, Apr 04, 2018 at 10:24:49AM -0700, Tim Chen wrote:
> > >> On 04/03/2018 02:12 PM, Alison Schofield wrote:
> > >>
> > >>> +
> > >>> + /*
> > >>> + * topology_sane() considers LLCs that span NUMA nodes to be
> > >>> + * insane and will display a warning message. Bypass the call
> > >>> + * to topology_sane() for snc_cpu's to avoid that warning.
> > >>> + */
> > >>> +
> > >>> + if (!topology_same_node(c, o) && x86_match_cpu(snc_cpu)) {
> > >>> + /* Indicate that package has NUMA nodes inside: */
> > >>> + x86_has_numa_in_package = true;
> > >>
> > >> Why does the x86_has_numa_in_package has to be set here when it would have
> > >> been done later in set_cpu_sibling_map?
> > >
> > > Tim,
> > > I had that same thought when you commented on it previously. After
> > > discussing w DaveH, decided that match_llc() and match_die(c,0)
> > > could be different and chose to be (cautiously) redundant.
> > > alisons
> >
> > If it is redundant, I suggest it be removed, and only added if
> > there is truly a case where the current logic
> >
> > if (match_die(c, o) && !topology_same_node(c, o))
> > x86_has_numa_in_package = true;
> >
> > fails. And also the modification of this logic should be at the
> > same place for easy code maintenance.
>
> That makes good sense. I'll look to define the difference or remove
> the redundancy.
>
> alisons
I found not reason for the redundancy via experimentation w my Skylake,
nor through code examination. I've removed it in v5. I'll see if
anyone claims theoretical case.
alisons
>
> >
> > Tim
> >
> > >
> > >
> > >
> > >>
> > >>> +
> > >>> + /*
> > >>> + * false means 'c' does not share the LLC of 'o'.
> > >>> + * Note: this decision gets reflected all the way
> > >>> + * out to userspace.
> > >>> + */
> > >>> +
> > >>> + return false;
> > >>
> > >> Thanks.
> > >>
> > >> Tim
> >