mm: page_frag: use __alloc_pages() to replace alloc_pages_node()
authorYunsheng Lin <linyunsheng@huawei.com>
Mon, 28 Oct 2024 11:53:42 +0000 (19:53 +0800)
committerJakub Kicinski <kuba@kernel.org>
Mon, 11 Nov 2024 18:56:27 +0000 (10:56 -0800)
It seems there is about 24Bytes binary size increase for
__page_frag_cache_refill() after refactoring in arm64 system
with 64K PAGE_SIZE. By doing the gdb disassembling, It seems
we can have more than 100Bytes decrease for the binary size
by using __alloc_pages() to replace alloc_pages_node(), as
there seems to be some unnecessary checking for nid being
NUMA_NO_NODE, especially when page_frag is part of the mm
system.

CC: Andrew Morton <akpm@linux-foundation.org>
CC: Linux-MM <linux-mm@kvack.org>
Signed-off-by: Yunsheng Lin <linyunsheng@huawei.com>
Reviewed-by: Alexander Duyck <alexanderduyck@fb.com>
Link: https://patch.msgid.link/20241028115343.3405838-8-linyunsheng@huawei.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
mm/page_frag_cache.c

index a36fd09bf275ab56d717d78ecdb791ff2fde8697..3f7a203d35c6409193df5b64adb5301193b4141b 100644 (file)
@@ -56,11 +56,11 @@ static struct page *__page_frag_cache_refill(struct page_frag_cache *nc,
 #if (PAGE_SIZE < PAGE_FRAG_CACHE_MAX_SIZE)
        gfp_mask = (gfp_mask & ~__GFP_DIRECT_RECLAIM) |  __GFP_COMP |
                   __GFP_NOWARN | __GFP_NORETRY | __GFP_NOMEMALLOC;
-       page = alloc_pages_node(NUMA_NO_NODE, gfp_mask,
-                               PAGE_FRAG_CACHE_MAX_ORDER);
+       page = __alloc_pages(gfp_mask, PAGE_FRAG_CACHE_MAX_ORDER,
+                            numa_mem_id(), NULL);
 #endif
        if (unlikely(!page)) {
-               page = alloc_pages_node(NUMA_NO_NODE, gfp, 0);
+               page = __alloc_pages(gfp, 0, numa_mem_id(), NULL);
                order = 0;
        }