On 2015/8/20 8:02, David Rientjes wrote: > On Wed, 19 Aug 2015, Jiang Liu wrote: > >>> Why not simply fix build_zonelists_node() so that the __GFP_THISNODE >>> zonelists are set up to reference the zones of cpu_to_mem() for memoryless >>> nodes? >>> >>> It seems much better than checking and maintaining every __GFP_THISNODE >>> user to determine if they are using a memoryless node or not. I don't >>> feel that this solution is maintainable in the longterm. >> Hi David, >> There are some usage cases, such as memory migration, >> expect the page allocator rejecting memory allocation requests >> if there is no memory on local node. So we have: >> 1) alloc_pages_node(cpu_to_node(), __GFP_THISNODE) to only allocate >> memory from local node. >> 2) alloc_pages_node(cpu_to_mem(), __GFP_THISNODE) to allocate memory >> from local node or from nearest node if local node is memoryless. >> > > Right, so do you think it would be better to make the default zonelists be > setup so that cpu_to_node()->zonelists == cpu_to_mem()->zonelists and then > individual callers that want to fail for memoryless nodes check > populated_zone() themselves? Hi David, Great idea:) I think that means we are going to kill the concept of memoryless node, and we only need to specially handle a few callers who really care about whether there is memory on local node. Then I need some time to audit all usages of __GFP_THISNODE and update you whether it's doable. Thanks! Gerry -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>