Re: [RFC V2 03/12] mm: Change generic FALLBACK zonelist creation process

From: Dave Hansen
Date: Mon Jan 30 2017 - 12:37:50 EST


On 01/29/2017 07:35 PM, Anshuman Khandual wrote:
> * CDM node's zones are not part of any other node's FALLBACK zonelist
> * CDM node's FALLBACK list contains it's own memory zones followed by
> all system RAM zones in regular order as before
> * CDM node's zones are part of it's own NOFALLBACK zonelist

This seems like a sane policy for the system that you're describing.
But, it's still a policy, and it's rather hard-coded into the kernel.
Let's say we had a CDM node with 100x more RAM than the rest of the
system and it was just as fast as the rest of the RAM. Would we still
want it isolated like this? Or would we want a different policy?

Why do we need this hard-coded along with the cpuset stuff later in the
series. Doesn't taking a node out of the cpuset also take it out of the
fallback lists?

> while ((node = find_next_best_node(local_node, &used_mask)) >= 0) {
> +#ifdef CONFIG_COHERENT_DEVICE
> + /*
> + * CDM node's own zones should not be part of any other
> + * node's fallback zonelist but only it's own fallback
> + * zonelist.
> + */
> + if (is_cdm_node(node) && (pgdat->node_id != node))
> + continue;
> +#endif

On a superficial note: Isn't that #ifdef unnecessary? is_cdm_node() has
a 'return 0' stub when the config option is off anyway.