The patch titled Subject: mm/page_alloc: speed up the iteration of max_order has been added to the -mm tree. Its filename is mm-page_alloc-speeding-up-the-iteration-of-max_order.patch This patch should soon appear at https://ozlabs.org/~akpm/mmots/broken-out/mm-page_alloc-speeding-up-the-iteration-of-max_order.patch and later at https://ozlabs.org/~akpm/mmotm/broken-out/mm-page_alloc-speeding-up-the-iteration-of-max_order.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/process/submit-checklist.rst when testing your code *** The -mm tree is included into linux-next and is updated there every 3-4 working days ------------------------------------------------------ From: Muchun Song <songmuchun@xxxxxxxxxxxxx> Subject: mm/page_alloc: speed up the iteration of max_order When we free a page whose order is very close to MAX_ORDER and greater than pageblock_order, it wastes some CPU cycles to increase max_order to MAX_ORDER one by one and check the pageblock migratetype of that page repeatedly especially when MAX_ORDER is much larger than pageblock_order. Link: https://lkml.kernel.org/r/20201202121838.75218-1-songmuchun@xxxxxxxxxxxxx Signed-off-by: Muchun Song <songmuchun@xxxxxxxxxxxxx> Cc: Vlastimil Babka <vbabka@xxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- mm/page_alloc.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) --- a/mm/page_alloc.c~mm-page_alloc-speeding-up-the-iteration-of-max_order +++ a/mm/page_alloc.c @@ -1035,7 +1035,7 @@ continue_merging: pfn = combined_pfn; order++; } - if (max_order < MAX_ORDER) { + if (max_order < MAX_ORDER && order < MAX_ORDER - 1) { /* If we are here, it means order is >= pageblock_order. * We want to prevent merge between freepages on isolate * pageblock and normal pageblock. Without this, pageblock @@ -1056,6 +1056,8 @@ continue_merging: is_migrate_isolate(buddy_mt))) goto done_merging; } + if (unlikely(order != max_order - 1)) + max_order = order + 1; max_order++; goto continue_merging; } _ Patches currently in -mm which might be from songmuchun@xxxxxxxxxxxxx are mm-memcontrol-remove-unused-mod_memcg_obj_state.patch mm-memcg-slab-fix-return-child-memcg-objcg-for-root-memcg.patch mm-memcg-slab-fix-use-after-free-in-obj_cgroup_charge.patch mm-memcg-slab-rename-_lruvec_slab_state-to-_lruvec_kmem_state.patch mm-page_alloc-speeding-up-the-iteration-of-max_order.patch mm-page_isolation-do-not-isolate-the-max-order-page.patch