Re: [RFC PATCH 2/3] topology: support node_numa_mem() for determining the fallback node

David Rientjes
2014-02-08T09:57:44Z

On Fri, 7 Feb 2014, Joonsoo Kim wrote:

> > It seems like a better approach would be to do this when a node is brought
> > online and determine the fallback node based not on the zonelists as you
> > do here but rather on locality (such as through a SLIT if provided, see
> > node_distance()).
>
> Hmm...
> I guess that zonelist is base on locality. Zonelist is generated using
> node_distance(), so I think that it reflects locality. But, I'm not expert
> on NUMA, so please let me know what I am missing here :)
>

The zonelist is, yes, but I'm talking about memoryless and cpuless nodes.
If your solution is going to become the generic kernel API that determines
what node has local memory for a particular node, then it will have to
support all definitions of node. That includes nodes that consist solely
of I/O, chipsets, networking, or storage devices. These nodes may not
have memory or cpus, so doing it as part of onlining cpus isn't going to
be generic enough. You want a node_to_mem_node() API for all possible
node types (the possible node types listed above are straight from the
ACPI spec). For 99% of people, node_to_mem_node(X) is always going to be
X and we can optimize for that, but any solution that relies on cpu online
is probably shortsighted right now.

I think it would be much better to do this as a part of setting a node to
be online.