[LTP] [PATCH v2] mmapstress06: Use memory.high in cgroup v2 to start swapping early
Wei Gao
wegao@suse.com
Wed Sep 2 04:57:12 CEST 2026
Set memory.high to slightly smaller than memory.max in cgroup v2 to
start swapping earlier. In cgroup v2, the asynchronous swap writeback
does not start until we are over the limit (memory.max). Setting
memory.high starts the reclaiming/swapping once memory.high is reached,
preventing the child process from hitting the memory.max limit and
getting killed by the OOM-killer.
Signed-off-by: Wei Gao <wegao@suse.com>
Suggested-by: Cyril Hrubis <chrubis@suse.cz>
---
v1->v2:
- Update solution base Cyril's suggestion
lib/tst_cgroup.c | 1 +
testcases/kernel/mem/mmapstress/mmapstress06.c | 7 +++++--
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/lib/tst_cgroup.c b/lib/tst_cgroup.c
index 7c6ecd4d2..3ee9d32a4 100644
--- a/lib/tst_cgroup.c
+++ b/lib/tst_cgroup.c
@@ -180,6 +180,7 @@ static const struct cgroup_file memory_ctrl_files[] = {
{ "memory.events", NULL, CTRL_MEMORY },
{ "memory.low", NULL, CTRL_MEMORY },
{ "memory.min", NULL, CTRL_MEMORY },
+ { "memory.high", "memory.soft_limit_in_bytes", CTRL_MEMORY },
{ "memory.max", "memory.limit_in_bytes", CTRL_MEMORY },
{ "memory.stat", "memory.stat", CTRL_MEMORY },
{ "memory.swappiness", "memory.swappiness", CTRL_MEMORY },
diff --git a/testcases/kernel/mem/mmapstress/mmapstress06.c b/testcases/kernel/mem/mmapstress/mmapstress06.c
index 4e6023399..7cc17fc75 100644
--- a/testcases/kernel/mem/mmapstress/mmapstress06.c
+++ b/testcases/kernel/mem/mmapstress/mmapstress06.c
@@ -37,10 +37,13 @@ static void run_test(void)
/* Set memory limit to force swapping of the mapping */
SAFE_CG_PRINTF(cg_child, "memory.max", "%lu", (unsigned long)mem_limit);
- if (TST_CG_VER_IS_V1(cg_child, "memory"))
+ if (TST_CG_VER_IS_V1(cg_child, "memory")) {
SAFE_CG_PRINT(cg_child, "memory.swap.max", "-1");
- else
+ } else {
SAFE_CG_PRINT(cg_child, "memory.swap.max", "max");
+ SAFE_CG_PRINTF(cg_child, "memory.high", "%lu",
+ (unsigned long)(mem_limit - mem_limit / 8));
+ }
child_pid = SAFE_FORK();
if (!child_pid) {
--
2.55.0
More information about the ltp
mailing list