mm/page_alloc: avoid unneeded alike_pages calculation
authorMiaohe Lin <linmiaohe@huawei.com>
Tue, 1 Aug 2023 12:37:23 +0000 (20:37 +0800)
committerAndrew Morton <akpm@linux-foundation.org>
Mon, 21 Aug 2023 20:37:32 +0000 (13:37 -0700)
When free_pages is 0, alike_pages is not used.  So alike_pages calculation
can be avoided by checking free_pages early to save cpu cycles.  Also fix
typo 'comparable'.  It should be 'compatible' here.

Link: https://lkml.kernel.org/r/20230801123723.2225543-1-linmiaohe@huawei.com
Signed-off-by: Miaohe Lin <linmiaohe@huawei.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
mm/page_alloc.c

index 1eb3864..8b17dcb 100644 (file)
@@ -1833,6 +1833,10 @@ static void steal_suitable_fallback(struct zone *zone, struct page *page,
 
        free_pages = move_freepages_block(zone, page, start_type,
                                                &movable_pages);
+       /* moving whole block can fail due to zone boundary conditions */
+       if (!free_pages)
+               goto single_page;
+
        /*
         * Determine how many pages are compatible with our allocation.
         * For movable allocation, it's the number of movable pages which
@@ -1854,14 +1858,9 @@ static void steal_suitable_fallback(struct zone *zone, struct page *page,
                else
                        alike_pages = 0;
        }
-
-       /* moving whole block can fail due to zone boundary conditions */
-       if (!free_pages)
-               goto single_page;
-
        /*
         * If a sufficient number of pages in the block are either free or of
-        * comparable migratability as our allocation, claim the whole block.
+        * compatible migratability as our allocation, claim the whole block.
         */
        if (free_pages + alike_pages >= (1 << (pageblock_order-1)) ||
                        page_group_by_mobility_disabled)