[LTP] [PATCH v2 3/3] lib: adjust the tmpfs size according to .dev_min_size and MemAvailable
Li Wang
liwang@redhat.com
Fri Sep 24 12:52:34 CEST 2021
Since commit c305a53c5 (lib: limit the size of tmpfs in LTP, Jul 9)
Ltp set tmpfs mount size according to the tdev.size. This cause a
new problem on small RAM system, which consume too much memory and
finally trigger OOM.
To fix this, let's adjust the tmpfs-size according to both free memory
and .dev_min_size:
- if .dev_min_size is defined and system has enough free memory,
set tmpfs-size to tdev.size
- if .dev_min_size is defined and there is not enough free
memory -> TCONF
- if the test not define .dev_min_size, set the size for tmpfs to
be really small 32MB
- if .dev_min_size is not define and there is not even 64MB of free
memory (for 32MB limit) -> TCONF
Reported-by: Ralph Siemsen <ralph.siemsen@linaro.org>
Suggested-by: Cyril Hrubis <chrubis@suse.cz>
Signed-off-by: Li Wang <liwang@redhat.com>
---
include/tst_test.h | 1 +
lib/tst_test.c | 16 +++++++++++++---
2 files changed, 14 insertions(+), 3 deletions(-)
diff --git a/include/tst_test.h b/include/tst_test.h
index 5e3619698..3dcb45de0 100644
--- a/include/tst_test.h
+++ b/include/tst_test.h
@@ -42,6 +42,7 @@
#include "tst_lockdown.h"
#include "tst_fips.h"
#include "tst_taint.h"
+#include "tst_memutils.h"
/*
* Reports testcase result.
diff --git a/lib/tst_test.c b/lib/tst_test.c
index 4224353da..ec80e17a6 100644
--- a/lib/tst_test.c
+++ b/lib/tst_test.c
@@ -892,15 +892,25 @@ static void prepare_and_mount_dev_fs(const char *mntpoint)
static const char *limit_tmpfs_mount_size(const char *mnt_data,
char *buf, size_t buf_size, const char *fs_type)
{
+ unsigned int tmpfs_size;
+
if (strcmp(fs_type, "tmpfs"))
return mnt_data;
+ if (!tst_test->dev_min_size)
+ tmpfs_size = 32;
+ else
+ tmpfs_size = tdev.size;
+
+ if ((tst_available_mem() / 1024) < (tmpfs_size * 2))
+ tst_brk(TCONF, "No enough memory for tmpfs use");
+
if (mnt_data)
- snprintf(buf, buf_size, "%s,size=%luM", mnt_data, tdev.size);
+ snprintf(buf, buf_size, "%s,size=%luM", mnt_data, tmpfs_size);
else
- snprintf(buf, buf_size, "size=%luM", tdev.size);
+ snprintf(buf, buf_size, "size=%luM", tmpfs_size);
- tst_res(TINFO, "Limiting tmpfs size to %luMB", tdev.size);
+ tst_res(TINFO, "Limiting tmpfs size to %luMB", tmpfs_size);
return buf;
}
--
2.31.1
More information about the ltp
mailing list