When @node_reclaim_mode ("/proc/sys/vm/zone_reclaim_mode") is enabled, the nodes in the specified distance (< RECLAIM_DISTANCE) to the preferred one will be checked for page direct reclaim in the fast path, as below function call chain indicates. Currently, RECLAIM_DISTANCE is set to 10, equal to LOCAL_DISTANCE. It means no nodes, including the preferred one, don't match the conditions. So no nodes are checked for direct reclaim in the fast path.
__alloc_pages_nodemask get_page_from_freelist zone_allows_reclaim This fixes it by setting RECLAIM_DISTANCE to 30. With it, the preferred node and its directly adjacent nodes will be checked for page direct reclaim. The comments explaining RECLAIM_DISTANCE is out of date. This updates and makes it correct. Signed-off-by: Gavin Shan <gws...@linux.vnet.ibm.com> --- arch/powerpc/include/asm/topology.h | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/arch/powerpc/include/asm/topology.h b/arch/powerpc/include/asm/topology.h index 8b3b46b..ce1a156 100644 --- a/arch/powerpc/include/asm/topology.h +++ b/arch/powerpc/include/asm/topology.h @@ -9,10 +9,11 @@ struct device_node; #ifdef CONFIG_NUMA /* - * If zone_reclaim_mode is enabled, a RECLAIM_DISTANCE of 10 will mean that - * all zones on all nodes will be eligible for zone_reclaim(). + * If node_reclaim_mode is enabled, a RECLAIM_DISTANCE of 30 means that + * the preferred node and its directly adjacent nodes are eligible for + * node_reclaim(). */ -#define RECLAIM_DISTANCE 10 +#define RECLAIM_DISTANCE 30 #include <asm/mmzone.h> -- 2.7.4