[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20250424153815.4003-1-haowenchao22@gmail.com>
Date: Thu, 24 Apr 2025 23:38:15 +0800
From: Wenchao Hao <haowenchao22@...il.com>
To: Andrew Morton <akpm@...ux-foundation.org>,
linux-mm@...ck.org,
linux-kernel@...r.kernel.org
Cc: Wenchao Hao <haowenchao22@...il.com>
Subject: [PATCH] mm/compaction: do not break pages whose order is larger than target order
When scanning free pages for memory compaction, if the compaction target
order is explicitly specified, do not split pages in buddy whose order
are larger than compaction target order.
Signed-off-by: Wenchao Hao <haowenchao22@...il.com>
---
mm/compaction.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/mm/compaction.c b/mm/compaction.c
index 3925cb61dbb8..b0ed0831c400 100644
--- a/mm/compaction.c
+++ b/mm/compaction.c
@@ -656,6 +656,17 @@ static unsigned long isolate_freepages_block(struct compact_control *cc,
/* Found a free page, will break it into order-0 pages */
order = buddy_order(page);
+
+ /*
+ * Do not break free pages whose order is larger than
+ * compact's desired order
+ */
+ if (cc->order != -1 && order >= cc->order) {
+ blockpfn += (1 << order) - 1;
+ page += (1 << order) - 1;
+ goto isolate_fail;
+ }
+
isolated = __isolate_free_page(page, order);
if (!isolated)
break;
--
2.34.1
Powered by blists - more mailing lists