[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