on 8/29/2023 11:01 PM, Mel Gorman wrote: > On Sat, Aug 26, 2023 at 11:36:14PM +0800, Kemeng Shi wrote: >> We call isolate_freepages_block in strict mode, continuous pages in >> pageblock will be isolated if isolate_freepages_block successed. >> Then pfn + isolated will point to start of next pageblock to scan >> no matter how many pageblocks are isolated in isolate_freepages_block. >> Use pfn + isolated as start of next pageblock to scan to simplify the >> iteration. >> >> The pfn + isolated always points to start of next pageblock as: >> In case isolated buddy page has order higher than pageblock: >> 1. page in buddy page is aligned with it's order >> 2. order of page is higher than pageblock order >> Then page is aligned with pageblock order. So pfn of page and isolated >> pages count are both aligned pageblock order. So pfn + isolated is >> pageblock order aligned. >> >> In case isolated buddy page has order lower than pageblock: >> Buddy page with order N contains two order N - 1 pages as following: >> | order N | >> |order N - 1|order N - 1| >> So buddy pages with order N - 1 will never cross boudary of order N. >> Similar, buddy pages with order N - 2 will never cross boudary of order >> N - 1 and so on. Then any pages with order less than pageblock order >> will never crosa boudary of pageblock. >> >> Signed-off-by: Kemeng Shi <shikemeng@xxxxxxxxxxxxxxx> >> Reviewed-by: Baolin Wang <baolin.wang@xxxxxxxxxxxxxxxxx> > > While I don't think the patch is wrong, I also don't think it > meaningfully simplifies the code or optimises enough to be justified. > Even though a branch is eliminated, the whole path is not cheap. > OK, I will drop this in next version if you insistant.