[LTP] [PATCH 2/2] hugetlb: compacting memory to reduce fragmental pages

Li Wang liwang@redhat.com
Mon May 29 08:11:35 CEST 2023


Kernel memory compaction is a process that helps to reduce fragmentation
and optimize memory allocation by compacting memory pages.

  `echo 1 > /proc/sys/vm/compact_memory`

When 1 is written to the file, all zones are compacted such that free
memory is available in contiguous blocks where possible.

This can be important for example in the allocation of huge pages although
processes will also directly compact memory as required.

As this introduced since v2.6.35, we could safely use it via
SAFE_FILE_PRINT() in LTP lib:

  commit 76ab0f530e4a01d4dc20cdc1d5e87753c579dc18
  Author: Mel Gorman <mel@csn.ul.ie>
  Date:   Mon May 24 14:32:28 2010 -0700

      mm: compaction: add /proc trigger for memory compaction

Signed-off-by: Li Wang <liwang@redhat.com>
---
 lib/tst_hugepage.c                                 | 1 +
 testcases/kernel/mem/hugetlb/hugemmap/hugemmap32.c | 2 ++
 2 files changed, 3 insertions(+)

diff --git a/lib/tst_hugepage.c b/lib/tst_hugepage.c
index 728a8c3ec..d2e70a955 100644
--- a/lib/tst_hugepage.c
+++ b/lib/tst_hugepage.c
@@ -47,6 +47,7 @@ unsigned long tst_reserve_hugepages(struct tst_hugepage *hp)
 	}
 
 	SAFE_FILE_PRINTF("/proc/sys/vm/drop_caches", "3");
+	SAFE_FILE_PRINTF("/proc/sys/vm/compact_memory", "1");
 	if (hp->policy == TST_NEEDS) {
 		tst_hugepages += SAFE_READ_MEMINFO("HugePages_Total:");
 		goto set_hugepages;
diff --git a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap32.c b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap32.c
index 76b790a95..d27e5b8b2 100644
--- a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap32.c
+++ b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap32.c
@@ -65,6 +65,8 @@ static void setup(void)
 	SAFE_CLOSEDIR(dir);
 
 	SAFE_FILE_PRINTF("/proc/sys/vm/drop_caches", "3");
+	SAFE_FILE_PRINTF("/proc/sys/vm/compact_memory", "1");
+
 	if (tst_available_mem() < (long long)hpage_size) {
 		g_hpage_path[0] = '\0';
 		tst_brk(TCONF, "No enough memory for gigantic hugepage reservation");
-- 
2.40.1



More information about the ltp mailing list