| From: Joshua Hahn <joshua.hahnjy@gmail.com> |
| Subject: mempolicy: clarify what zone reclaim means |
| Date: Tue, 5 Aug 2025 13:50:47 -0700 |
| |
| The zone_reclaim_mode API controls the reclaim behavior when a node runs |
| out of memory. Contrary to its user-facing name, it is internally |
| referred to as "node_reclaim_mode". |
| |
| This can be confusing. But because we cannot change the name of the API |
| since it has been in place since at least 2.6, let's try to be more |
| explicit about what the behavior of this API is. |
| |
| Change the description to clarify what zone reclaim entails, and be |
| explicit about the RECLAIM_ZONE bit, whose purpose has led to some |
| confusion in the past already [1] [2]. |
| |
| While at it, also soften the warning about changing these bits. |
| |
| [joshua.hahnjy@gmail.com: remove the reference to the vm.zone_reclaim_mode sysctl as an ABI] |
| Link: https://lkml.kernel.org/r/20250806134404.2000234-1-joshua.hahnjy@gmail.com |
| Link: https://lkml.kernel.org/r/20250805205048.1518453-1-joshua.hahnjy@gmail.com |
| Link: https://lore.kernel.org/linux-mm/1579005573-58923-1-git-send-email-alex.shi@linux.alibaba.com/ [1] |
| Link: https://lore.kernel.org/linux-mm/20200626003459.D8E015CA@viggo.jf.intel.com/ [2] |
| Signed-off-by: Joshua Hahn <joshua.hahnjy@gmail.com> |
| Acked-by: SeongJae Park <sj@kernel.org> |
| Acked-by: David Hildenbrand <david@redhat.com> |
| Reviewed-by: Huang Ying <ying.huang@linux.alibaba.com> |
| Acked-by: Zi Yan <ziy@nvidia.com> |
| Acked-by: Byungchul Park <byungchul@sk.com> |
| Cc: Alistair Popple <apopple@nvidia.com> |
| Cc: Byungchul Park <byungchul@sk.com> |
| Cc: Gregory Price <gourry@gourry.net> |
| Cc: Mathew Brost <matthew.brost@intel.com> |
| Cc: Rakie Kim <rakie.kim@sk.com> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| --- |
| |
| include/uapi/linux/mempolicy.h | 12 +++++++++--- |
| 1 file changed, 9 insertions(+), 3 deletions(-) |
| |
| --- a/include/uapi/linux/mempolicy.h~mempolicy-clarify-what-zone-reclaim-means |
| +++ a/include/uapi/linux/mempolicy.h |
| @@ -66,10 +66,16 @@ enum { |
| #define MPOL_F_MORON (1 << 4) /* Migrate On protnone Reference On Node */ |
| |
| /* |
| - * These bit locations are exposed in the vm.zone_reclaim_mode sysctl |
| - * ABI. New bits are OK, but existing bits can never change. |
| + * Enabling zone reclaim means the page allocator will attempt to fulfill |
| + * the allocation request on the current node by triggering reclaim and |
| + * trying to shrink the current node. |
| + * Fallback allocations on the next candidates in the zonelist are considered |
| + * when reclaim fails to free up enough memory in the current node/zone. |
| + * |
| + * These bit locations are exposed in the vm.zone_reclaim_mode sysctl. |
| + * New bits are OK, but existing bits should not be changed. |
| */ |
| -#define RECLAIM_ZONE (1<<0) /* Run shrink_inactive_list on the zone */ |
| +#define RECLAIM_ZONE (1<<0) /* Enable zone reclaim */ |
| #define RECLAIM_WRITE (1<<1) /* Writeout pages during reclaim */ |
| #define RECLAIM_UNMAP (1<<2) /* Unmap pages during reclaim */ |
| |
| _ |