Re: [RFC PATCH] sched/topology: Introduce NUMA identity node sched domain

From: Peter Zijlstra
Date: Fri Aug 11 2017 - 05:15:37 EST


On Fri, Aug 11, 2017 at 12:58:22PM +0700, Suravee Suthikulpanit wrote:
>
>
> On 8/11/17 11:57, Suravee Suthikulpanit wrote:
> >
> > > > [...]
> > > > @@ -1445,9 +1448,24 @@ void sched_init_numa(void)
> > > > tl[i] = sched_domain_topology[i];
> > > >
> > > > /*
> > > > + * Ignore the NUMA identity level if it has the same cpumask
> > > > + * as previous level. This is the case for:
> > > > + * - System with last-level-cache (MC) sched domain span a NUMA node.
> > > > + * - System with DIE sched domain span a NUMA node.
> > > > + *
> > > > + * Assume all NUMA nodes are identical, so only check node 0.
> > > > + */
> > > > + if (!cpumask_equal(sched_domains_numa_masks[0][0], tl[i-1].mask(0)))
> > > > + tl[i++] = (struct sched_domain_topology_level){
> > > > + .mask = sd_numa_mask,
> > > > + .numa_level = 0,
> > > > + SD_INIT_NAME(NODE)
> > > > + };
> > >
> > > So what you've forgotten to mention is that for those systems where the
> > > LLC == NODE this now superfluous level gets removed by the degenerate
> > > code. Have you verified that does the right thing?
> >
> > Let me check with that one and get back.
>
> Actually, it is not removed by the degenerate code. That is what this logic
> is for. It checks for LCC == NODE or DIE == NODE before setting up the NODE
> sched level. I can update the comment. This has also been tested on system
> w/ LLC == NODE.

Why does the degenerate code fail to remove things?