|
From: Zhouping L. <zl...@re...> - 2012-08-29 12:48:39
|
Setting min_free_kbytes too high will cause system hangs,
especially in i386 arch, using less than 5% of total memory
can avoid it, so choose %5 of free memory or 2% of total memory.
Thanks Shuang pointed out it.
also, in order to enlarge the coverage, the patch adds a new
case item: 2 * default tunable
Signed-off-by: Zhouping Liu <zl...@re...>
Signed-off-by: Shuang Qiu <shu...@or...>
---
testcases/kernel/mem/tunable/min_free_kbytes.c | 20 ++++++++++++++------
1 file changed, 14 insertions(+), 6 deletions(-)
diff --git a/testcases/kernel/mem/tunable/min_free_kbytes.c b/testcases/kernel/mem/tunable/min_free_kbytes.c
index 00ead04..f8288ec 100644
--- a/testcases/kernel/mem/tunable/min_free_kbytes.c
+++ b/testcases/kernel/mem/tunable/min_free_kbytes.c
@@ -10,7 +10,8 @@
* the current free memory with the tunable value repeatedly.
*
* a) default min_free_kbytes with all overcommit memory policy
- * b) half of mem_free with all overcommit memory policy
+ * b) 2x default value with all overcommit memory policy
+ * c) 5% of MemFree or %2 MemTotal with all overcommit memory policy
*
********************************************************************
* Copyright (C) 2012 Red Hat, Inc.
@@ -115,20 +116,27 @@ int main(int argc, char *argv[])
static void test_tune(unsigned long overcommit_policy)
{
int status;
- int pid[2];
+ int pid[3];
int ret, i;
- unsigned long tune, memfree;
+ unsigned long tune, memfree, memtotal;
set_sys_tune("overcommit_memory", overcommit_policy, 1);
- for (i = 0; i < 2; i++) {
+ for (i = 0; i < 3; i++) {
/* case1 */
if (i == 0)
set_sys_tune("min_free_kbytes", default_tune, 1);
/* case2 */
- else {
+ else if (i == 1) {
+ set_sys_tune("min_free_kbytes", 2 * default_tune, 1);
+ /* case3 */
+ } else {
memfree = read_meminfo("MemFree:");
- tune = memfree / 2;
+ memtotal = read_meminfo("MemTotal:");
+ tune = memfree / 20;
+ if (tune > (memtotal / 50))
+ tune = memtotal / 50;
+
set_sys_tune("min_free_kbytes", tune, 1);
}
--
1.7.11.2
|