Re: [PATCH v2 1/2] mm: Cap zone movable's min wmark to small value
From: mawupeng <hidden>
Date: 2022-08-25 00:49:18
Also in:
linux-fsdevel, linux-mm, lkml
On 2022/8/24 16:10, David Hildenbrand wrote:
On 19.08.22 11:30, Wupeng Ma wrote:quoted
From: Ma Wupeng <redacted> Since min_free_kbytes is based on gfp_zone(GFP_USER) which does not include zone movable. However zone movable will get its min share in __setup_per_zone_wmarks() which does not make any sense. And like highmem pages, __GFP_HIGH and PF_MEMALLOC allocations usually don't need movable pages, so there is no need to assign min pages for zone movable. Let's cap pages_min for zone movable to a small value here just link highmem pages. Signed-off-by: Ma Wupeng <redacted> --- mm/page_alloc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)diff --git a/mm/page_alloc.c b/mm/page_alloc.c index e5486d47406e..ff644205370f 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c@@ -8638,7 +8638,7 @@ static void __setup_per_zone_wmarks(void) /* Calculate total number of !ZONE_HIGHMEM pages */ for_each_zone(zone) { - if (!is_highmem(zone)) + if (!is_highmem(zone) && zone_idx(zone) != ZONE_MOVABLE) lowmem_pages += zone_managed_pages(zone); }@@ -8648,7 +8648,7 @@ static void __setup_per_zone_wmarks(void) spin_lock_irqsave(&zone->lock, flags); tmp = (u64)pages_min * zone_managed_pages(zone); do_div(tmp, lowmem_pages); - if (is_highmem(zone)) { + if (is_highmem(zone) || zone_idx(zone) == ZONE_MOVABLE) { /* * __GFP_HIGH and PF_MEMALLOC allocations usually don't * need highmem pages, so cap pages_min to a smallThis kind-off makes sense to me, but I'm not completely sure about all implications. We most certainly should update the comment as well.
Yes, we should certainly do this. Thanks for reviewing.