Messages in this thread | | | Date | Thu, 21 Dec 2006 16:16:08 +0900 | From | KAMEZAWA Hiroyuki <> | Subject | [BUG ?] oom with empty nodes. |
| |
On some system, there are memory-less-nodes. (IOW, cpu-only-node) Then,there are online nodes which has no memory.
Now, below code is used to detect the context where oom happens.
=== static inline int constrained_alloc(struct zonelist *zonelist, gfp_t gfp_mask) { #ifdef CONFIG_NUMA struct zone **z; nodemask_t nodes = node_online_map;
for (z = zonelist->zones; *z; z++) if (cpuset_zone_allowed_softwall(*z, gfp_mask)) node_clear(zone_to_nid(*z), nodes); else return CONSTRAINT_CPUSET;
if (!nodes_empty(nodes)) return CONSTRAINT_MEMORY_POLICY; #endif
return CONSTRAINT_NONE; } == Because the zonelist never incldues memory-less-zone, above nodemask cannot be empty if there is a memoly-less-node, never returns CONSTRAINT_NONE.
It looks select_bad_process() and panic_on_oom is checked only when above function returns CONSTRAINT_NONE. This means current dies every time.
Does anyone have good idea for fix this ?
-Kame
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |