Re: [PATCH] Memoryless nodes: use "node_memory_map" for cpuset mems_allowed validation

Nishanth Aravamudan
2007-07-23T19:09:24Z

On 20.07.2007 [16:49:24 -0400], Lee Schermerhorn wrote:
> This fixes a problem I encountered testing Christoph's memoryless nodes
> series. Applies atop that series. Other than this, series holds up
> under what testing I've been able to do this week.
>
> Memoryless Nodes: use "node_memory_map" for cpusets mems_allowed validation
>
> cpusets try to ensure that any node added to a cpuset's
> mems_allowed is on-line and contains memory. The assumption
> was that online nodes contained memory. Thus, it is possible
> to add memoryless nodes to a cpuset and then add tasks to this
> cpuset. This results in continuous series of oom-kill and other
> console stack traces and apparent system hang.
>
> Change cpusets to use node_states[N_MEMORY] [a.k.a.
> node_memory_map] in place of node_online_map when vetting
> memories. Return error if admin attempts to write a non-empty
> mems_allowed node mask containing only memoryless-nodes.
>
> Signed-off-by: Lee Schermerhorn <lee.schermerhorn@hp.com>

Lee, while looking at this change, I think it ends up fixing
cpuset_mems_allowed() to return nodemasks that only include nodes in
node_states[N_MEMORY]. However, cpuset_current_mems_allowed is a
lockless macro which would still be broken. I think it would need to
becom a static inline nodes_and() in the CPUSET case and a #define
node_states[N_MEMORY] in the non-CPUSET case?

Or perhaps we should adjust cpusets to make it so that the mems_allowed
member only includes nodes that are set in node_states[N_MEMORY]?

What do you think? Paul?

Thanks,
Nish

--
Nishanth Aravamudan <nacc@us.ibm.com>
IBM Linux Technology Center