* [LTP] [PATCH] hugetlb: add a new function get_available_hugepages
@ 2012-07-07 15:14 Zhouping Liu
2012-07-07 15:14 ` [LTP] [PATCH] safe_macros: add SAFE_STRTOUL Zhouping Liu
2012-07-07 15:30 ` [LTP] [PATCH] hugetlb: add a new function get_available_hugepages Zhouping Liu
0 siblings, 2 replies; 5+ messages in thread
From: Zhouping Liu @ 2012-07-07 15:14 UTC (permalink / raw)
To: LTP list
on some systems with small RAM, there aren't enough memory
to set as specific hugepages, such as 128 hugepages, it will
fail like this:
[root@localhost hugemmap]# ./hugemmap01
hugemmap01 0 TINFO : set nr_hugepages to 128
hugemmap01 1 TBROK : nr_hugepages = 55, but expect 128
hugemmap01 2 TBROK : Remaining cases broken
hugemmap01 0 TINFO : set nr_hugepages to 54
we can detect whether the system has the power to get the specific
hugepages through the following commands:
[root@localhost hugemmap]# echo 128 > /proc/sys/vm/nr_hugepages
[root@localhost hugemmap]# cat /proc/sys/vm/nr_hugepages
55
as we know, on this system, there are 55 available hugepages, so we
can set 55 hugepages to continue the case, but to exit the case,
and this is desinged into get_available_hugepages() functions.
Signed-off-by: Zhouping Liu <zliu@redhat.com>
---
testcases/kernel/mem/hugetlb/hugemmap/hugemmap01.c | 1 +
testcases/kernel/mem/hugetlb/hugemmap/hugemmap02.c | 2 ++
testcases/kernel/mem/hugetlb/hugemmap/hugemmap03.c | 2 ++
testcases/kernel/mem/hugetlb/hugemmap/hugemmap04.c | 2 ++
testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat01.c | 2 ++
testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat02.c | 2 ++
testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat03.c | 2 ++
testcases/kernel/mem/hugetlb/hugeshmctl/hugeshmctl01.c | 2 ++
testcases/kernel/mem/hugetlb/hugeshmctl/hugeshmctl02.c | 2 ++
testcases/kernel/mem/hugetlb/hugeshmctl/hugeshmctl03.c | 2 ++
testcases/kernel/mem/hugetlb/hugeshmdt/hugeshmdt01.c | 2 ++
testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget01.c | 2 ++
testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget02.c | 2 ++
testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget03.c | 2 ++
testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget05.c | 2 ++
testcases/kernel/mem/include/mem.h | 2 ++
testcases/kernel/mem/lib/mem.c | 13 +++++++++++++
17 files changed, 44 insertions(+)
diff --git a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap01.c b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap01.c
index 1140d8b..5e692d2 100644
--- a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap01.c
+++ b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap01.c
@@ -168,6 +168,7 @@ void setup(void)
"mount failed on %s", Hopt);
orig_hugepages = get_sys_tune("nr_hugepages");
+ hugepages = get_available_hugepages(hugepages);
set_sys_tune("nr_hugepages", hugepages, 1);
snprintf(TEMPFILE, sizeof(TEMPFILE), "%s/mmapfile%d",
Hopt, getpid());
diff --git a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap02.c b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap02.c
index 7b2fb68..c7786c6 100644
--- a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap02.c
+++ b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap02.c
@@ -193,6 +193,8 @@ void setup(void)
tst_brkm(TBROK|TERRNO, NULL,
"mount failed on %s", Hopt);
orig_hugepages = get_sys_tune("nr_hugepages");
+
+ hugepages = get_available_hugepages(hugepages);
set_sys_tune("nr_hugepages", hugepages, 1);
snprintf(TEMPFILE, sizeof(TEMPFILE), "%s/mmapfile%d",
Hopt, getpid());
diff --git a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap03.c b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap03.c
index 2dff4c5..e8d0a1a 100644
--- a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap03.c
+++ b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap03.c
@@ -131,6 +131,8 @@ void setup(void)
"mount failed on %s", Hopt);
orig_hugepages = get_sys_tune("nr_hugepages");
+
+ hugepages = get_available_hugepages(hugepages);
set_sys_tune("nr_hugepages", hugepages, 1);
snprintf(TEMPFILE, sizeof(TEMPFILE), "%s/mmapfile%d",
diff --git a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap04.c b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap04.c
index 554eaae..3f4e095 100644
--- a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap04.c
+++ b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap04.c
@@ -183,6 +183,8 @@ void setup(void)
tst_brkm(TBROK|TERRNO, NULL,
"mount failed on %s", Hopt);
orig_hugepages = get_sys_tune("nr_hugepages");
+
+ hugepages = get_available_hugepages(hugepages);
set_sys_tune("nr_hugepages", hugepages, 1);
snprintf(TEMPFILE, sizeof(TEMPFILE), "%s/mmapfile%d",
Hopt, getpid());
diff --git a/testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat01.c b/testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat01.c
index 2f8db05..84a9121 100644
--- a/testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat01.c
+++ b/testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat01.c
@@ -216,6 +216,8 @@ void setup(void)
tst_tmpdir();
orig_hugepages = get_sys_tune("nr_hugepages");
+
+ hugepages = get_available_hugepages(hugepages);
set_sys_tune("nr_hugepages", hugepages, 1);
hpage_size = read_meminfo("Hugepagesize:") * 1024;
diff --git a/testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat02.c b/testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat02.c
index 17f30a7..2e91d2e 100644
--- a/testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat02.c
+++ b/testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat02.c
@@ -131,6 +131,8 @@ void setup(void)
tst_tmpdir();
orig_hugepages = get_sys_tune("nr_hugepages");
+
+ hugepages = get_available_hugepages(hugepages);
set_sys_tune("nr_hugepages", hugepages, 1);
hpage_size = read_meminfo("Hugepagesize:") * 1024;
diff --git a/testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat03.c b/testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat03.c
index 2808797..97cb4bf 100644
--- a/testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat03.c
+++ b/testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat03.c
@@ -138,6 +138,8 @@ void setup(void)
tst_tmpdir();
orig_hugepages = get_sys_tune("nr_hugepages");
+
+ hugepages = get_available_hugepages(hugepages);
set_sys_tune("nr_hugepages", hugepages, 1);
hpage_size = read_meminfo("Hugepagesize:") * 1024;
diff --git a/testcases/kernel/mem/hugetlb/hugeshmctl/hugeshmctl01.c b/testcases/kernel/mem/hugetlb/hugeshmctl/hugeshmctl01.c
index ffa94ae..dc0893c 100644
--- a/testcases/kernel/mem/hugetlb/hugeshmctl/hugeshmctl01.c
+++ b/testcases/kernel/mem/hugetlb/hugeshmctl/hugeshmctl01.c
@@ -412,6 +412,8 @@ void setup(void)
tst_tmpdir();
orig_hugepages = get_sys_tune("nr_hugepages");
+
+ hugepages = get_available_hugepages(hugepages);
set_sys_tune("nr_hugepages", hugepages, 1);
hpage_size = read_meminfo("Hugepagesize:") * 1024;
diff --git a/testcases/kernel/mem/hugetlb/hugeshmctl/hugeshmctl02.c b/testcases/kernel/mem/hugetlb/hugeshmctl/hugeshmctl02.c
index 7a16e4e..e0aedf8 100644
--- a/testcases/kernel/mem/hugetlb/hugeshmctl/hugeshmctl02.c
+++ b/testcases/kernel/mem/hugetlb/hugeshmctl/hugeshmctl02.c
@@ -136,6 +136,8 @@ void setup(void)
tst_tmpdir();
orig_hugepages = get_sys_tune("nr_hugepages");
+
+ hugepages = get_available_hugepages(hugepages);
set_sys_tune("nr_hugepages", hugepages, 1);
hpage_size = read_meminfo("Hugepagesize:") * 1024;
diff --git a/testcases/kernel/mem/hugetlb/hugeshmctl/hugeshmctl03.c b/testcases/kernel/mem/hugetlb/hugeshmctl/hugeshmctl03.c
index 7eef7c7..19ae513 100644
--- a/testcases/kernel/mem/hugetlb/hugeshmctl/hugeshmctl03.c
+++ b/testcases/kernel/mem/hugetlb/hugeshmctl/hugeshmctl03.c
@@ -162,6 +162,8 @@ void setup(void)
tst_tmpdir();
orig_hugepages = get_sys_tune("nr_hugepages");
+
+ hugepages = get_available_hugepages(hugepages);
set_sys_tune("nr_hugepages", hugepages, 1);
hpage_size = read_meminfo("Hugepagesize:") * 1024;
diff --git a/testcases/kernel/mem/hugetlb/hugeshmdt/hugeshmdt01.c b/testcases/kernel/mem/hugetlb/hugeshmdt/hugeshmdt01.c
index 35593cf..0f3c262 100644
--- a/testcases/kernel/mem/hugetlb/hugeshmdt/hugeshmdt01.c
+++ b/testcases/kernel/mem/hugetlb/hugeshmdt/hugeshmdt01.c
@@ -175,6 +175,8 @@ void setup(void)
tst_tmpdir();
orig_hugepages = get_sys_tune("nr_hugepages");
+
+ hugepages = get_available_hugepages(hugepages);
set_sys_tune("nr_hugepages", hugepages, 1);
hpage_size = read_meminfo("Hugepagesize:") * 1024;
diff --git a/testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget01.c b/testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget01.c
index 72bae00..bf68cbb 100644
--- a/testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget01.c
+++ b/testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget01.c
@@ -153,6 +153,8 @@ void setup(void)
tst_tmpdir();
orig_hugepages = get_sys_tune("nr_hugepages");
+
+ hugepages = get_available_hugepages(hugepages);
set_sys_tune("nr_hugepages", hugepages, 1);
hpage_size = read_meminfo("Hugepagesize:") * 1024;
diff --git a/testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget02.c b/testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget02.c
index 51740a7..dfb234e 100644
--- a/testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget02.c
+++ b/testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget02.c
@@ -140,6 +140,8 @@ void setup(void)
tst_tmpdir();
orig_hugepages = get_sys_tune("nr_hugepages");
+
+ hugepages = get_available_hugepages(hugepages);
set_sys_tune("nr_hugepages", hugepages, 1);
hpage_size = read_meminfo("Hugepagesize:") * 1024;
diff --git a/testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget03.c b/testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget03.c
index 7f1bf5b..873420d 100644
--- a/testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget03.c
+++ b/testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget03.c
@@ -120,6 +120,8 @@ void setup(void)
tst_tmpdir();
orig_hugepages = get_sys_tune("nr_hugepages");
+
+ hugepages = get_available_hugepages(hugepages);
set_sys_tune("nr_hugepages", hugepages, 1);
hpage_size = read_meminfo("Hugepagesize:") * 1024;
diff --git a/testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget05.c b/testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget05.c
index 3f5ecf7..5c8f8a1 100644
--- a/testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget05.c
+++ b/testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget05.c
@@ -141,6 +141,8 @@ void setup(void)
tst_tmpdir();
orig_hugepages = get_sys_tune("nr_hugepages");
+
+ hugepages = get_available_hugepages(hugepages);
set_sys_tune("nr_hugepages", hugepages, 1);
hpage_size = read_meminfo("Hugepagesize:") * 1024;
diff --git a/testcases/kernel/mem/include/mem.h b/testcases/kernel/mem/include/mem.h
index cdc326b..3eed216 100644
--- a/testcases/kernel/mem/include/mem.h
+++ b/testcases/kernel/mem/include/mem.h
@@ -36,6 +36,8 @@ void testoom(int mempolicy, int lite, int numa);
#define PATH_SHMMAX "/proc/sys/kernel/shmmax"
+long get_available_hugepages(long hugepages);
+
/*
* memory pointer to identify per process, MB unit, and byte like
* memory[process No.][MB unit No.][byte No.].
diff --git a/testcases/kernel/mem/lib/mem.c b/testcases/kernel/mem/lib/mem.c
index ae0adb4..4db2acf 100644
--- a/testcases/kernel/mem/lib/mem.c
+++ b/testcases/kernel/mem/lib/mem.c
@@ -842,3 +842,16 @@ void update_shm_size(size_t *shm_size)
*shm_size = shmmax;
}
}
+
+long get_available_hugepages(long hugepages)
+{
+ long available_hugepages = 0;
+
+ set_sys_tune("nr_hugepages", hugepages, 0);
+ available_hugepages = get_sys_tune("nr_hugepages");
+ if (available_hugepages != hugepages)
+ tst_resm(TINFO, "There're %ld available hugepages",
+ available_hugepages);
+
+ return available_hugepages;
+}
--
1.7.10.4
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [LTP] [PATCH] safe_macros: add SAFE_STRTOUL
2012-07-07 15:14 [LTP] [PATCH] hugetlb: add a new function get_available_hugepages Zhouping Liu
@ 2012-07-07 15:14 ` Zhouping Liu
2012-07-07 15:40 ` Zhouping Liu
2012-07-07 15:30 ` [LTP] [PATCH] hugetlb: add a new function get_available_hugepages Zhouping Liu
1 sibling, 1 reply; 5+ messages in thread
From: Zhouping Liu @ 2012-07-07 15:14 UTC (permalink / raw)
To: LTP list
commit 586992b33b tried to set ULONG_MAX as SAFE_STRTOL upper bound,
but this would cause the new issue:
[root@localhost hugeshmat]# ./hugeshmat01
hugeshmat01 0 TINFO : set nr_hugepages to 128
hugeshmat01 1 TBROK : converted value out of range (0 - -1) at mem.c:840
hugeshmat01 2 TBROK : Remaining cases broken
hugeshmat01 0 TINFO : set nr_hugepages to 0
the failure is because SAFE_STRTOL converts ULONG_MAX as long type, which
will change 'ULONG_MAX' as -1.
the patch add a new macro SAFE_STRTOUL, which is a safe mode of strtoul()
Signed-off-by: Zhouping Liu <zliu@redhat.com>
---
include/safe_macros.h | 5 +++++
lib/safe_macros.c | 25 +++++++++++++++++++++++++
testcases/kernel/mem/lib/mem.c | 2 +-
3 files changed, 31 insertions(+), 1 deletion(-)
diff --git a/include/safe_macros.h b/include/safe_macros.h
index fbfe6cd..3891e19 100644
--- a/include/safe_macros.h
+++ b/include/safe_macros.h
@@ -151,5 +151,10 @@ long safe_strtol(const char *file, const int lineno,
#define SAFE_STRTOL(cleanup_fn, str, min, max) \
safe_strtol(__FILE__, __LINE__, cleanup_fn, (str), (min), (max))
+unsigned long safe_strtoul(const char *file, const int lineno, void (cleanup_fn)(void),
+ char *str, unsigned long min, unsigned long max);
+#define SAFE_STRTOUL(cleanup_fn, str, min, max) \
+ safe_strtoul(__FILE__, __LINE__, cleanup_fn, (str), (min), (max))
+
#endif
#endif
diff --git a/lib/safe_macros.c b/lib/safe_macros.c
index 1b27835..4dac3a8 100644
--- a/lib/safe_macros.c
+++ b/lib/safe_macros.c
@@ -363,3 +363,28 @@ long safe_strtol(const char *file, const int lineno,
return rval;
}
+
+
+unsigned long safe_strtoul(const char *file, const int lineno, void (cleanup_fn)(void),
+ char *str, unsigned long min, unsigned long max)
+{
+ unsigned long rval;
+ char *endptr;
+
+ errno = 0;
+ rval = strtoul(str, &endptr, 10);
+ if ((errno == ERANGE && rval == ULONG_MAX)
+ || (errno != 0 && rval == 0))
+ tst_brkm(TBROK|TERRNO, cleanup_fn,
+ "strtol failed at %s:%d", file, lineno);
+ if (rval > max || rval < min)
+ tst_brkm(TBROK, cleanup_fn,
+ "converted value out of range (%lu - %lu at %s:%d",
+ min, max, file, lineno);
+ if (endptr == str || (*endptr != '\0' && *endptr != '\n'))
+ tst_brkm(TBROK, cleanup_fn,
+ "Invalid value: '%s' at %s:%d", str, file, lineno);
+
+ return rval;
+}
+
diff --git a/testcases/kernel/mem/lib/mem.c b/testcases/kernel/mem/lib/mem.c
index 4db2acf..f746d06 100644
--- a/testcases/kernel/mem/lib/mem.c
+++ b/testcases/kernel/mem/lib/mem.c
@@ -836,7 +836,7 @@ void update_shm_size(size_t *shm_size)
size_t shmmax;
read_file(PATH_SHMMAX, buf);
- shmmax = SAFE_STRTOL(cleanup, buf, 0, ULONG_MAX);
+ shmmax = SAFE_STRTOUL(cleanup, buf, 0, ULONG_MAX);
if (*shm_size > shmmax) {
tst_resm(TINFO, "Set shm_size to shmmax: %ld", shmmax);
*shm_size = shmmax;
--
1.7.10.4
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [LTP] [PATCH] hugetlb: add a new function get_available_hugepages
2012-07-07 15:14 [LTP] [PATCH] hugetlb: add a new function get_available_hugepages Zhouping Liu
2012-07-07 15:14 ` [LTP] [PATCH] safe_macros: add SAFE_STRTOUL Zhouping Liu
@ 2012-07-07 15:30 ` Zhouping Liu
2012-07-09 2:29 ` Wanlong Gao
1 sibling, 1 reply; 5+ messages in thread
From: Zhouping Liu @ 2012-07-07 15:30 UTC (permalink / raw)
To: LTP list
Hi,
> From: "Zhouping Liu" <zliu@redhat.com>
> To: "LTP list" sourceforge.net>
> Sent: Saturday, July 7, 2012 11:14:38 PM
> Subject: [LTP] [PATCH] hugetlb: add a new function get_available_hugepages
>
> on some systems with small RAM, there aren't enough memory
> to set as specific hugepages, such as 128 hugepages, it will
> fail like this:
> [root@localhost hugemmap]# ./hugemmap01
> hugemmap01 0 TINFO : set nr_hugepages to 128
> hugemmap01 1 TBROK : nr_hugepages = 55, but expect 128
> hugemmap01 2 TBROK : Remaining cases broken
> hugemmap01 0 TINFO : set nr_hugepages to 54
>
> we can detect whether the system has the power to get the specific
> hugepages through the following commands:
>
> [root@localhost hugemmap]# echo 128 > /proc/sys/vm/nr_hugepages
> [root@localhost hugemmap]# cat /proc/sys/vm/nr_hugepages
> 55
>
> as we know, on this system, there are 55 available hugepages, so we
> can set 55 hugepages to continue the case, but to exit the case,
> and this is desinged into get_available_hugepages() functions.
I have tested on some systems.
a. test on a low memory:
[root@localhost hugemmap]# ./hugemmap01
hugemmap01 0 TINFO : set nr_hugepages to 128
hugemmap01 0 TINFO : There're 56 available hugepages
hugemmap01 0 TINFO : set nr_hugepages to 56
hugemmap01 1 TPASS : call succeeded
hugemmap01 0 TINFO : set nr_hugepages to 0
b. try to set overcommit hugepages:
[root@localhost hugemmap]# ./hugemmap01 -s 1000
hugemmap01 0 TINFO : set nr_hugepages to 1000
hugemmap01 0 TINFO : There're 363 available hugepages
hugemmap01 0 TINFO : set nr_hugepages to 363
hugemmap01 1 TPASS : call succeeded
hugemmap01 0 TINFO : set nr_hugepages to 0
Thanks,
Zhouping
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [LTP] [PATCH] safe_macros: add SAFE_STRTOUL
2012-07-07 15:14 ` [LTP] [PATCH] safe_macros: add SAFE_STRTOUL Zhouping Liu
@ 2012-07-07 15:40 ` Zhouping Liu
0 siblings, 0 replies; 5+ messages in thread
From: Zhouping Liu @ 2012-07-07 15:40 UTC (permalink / raw)
To: LTP list
Hi,
----- Original Message -----
> From: "Zhouping Liu" <zliu@redhat.com>
> To: "LTP list" <ltp-list@lists.sourceforge.net>
> Sent: Saturday, July 7, 2012 11:14:39 PM
> Subject: [LTP] [PATCH] safe_macros: add SAFE_STRTOUL
>
> commit 586992b33b tried to set ULONG_MAX as SAFE_STRTOL upper bound,
> but this would cause the new issue:
>
> [root@localhost hugeshmat]# ./hugeshmat01
> hugeshmat01 0 TINFO : set nr_hugepages to 128
> hugeshmat01 1 TBROK : converted value out of range (0 - -1) at
> mem.c:840
> hugeshmat01 2 TBROK : Remaining cases broken
> hugeshmat01 0 TINFO : set nr_hugepages to 0
>
> the failure is because SAFE_STRTOL converts ULONG_MAX as long type,
> which
> will change 'ULONG_MAX' as -1.
>
> the patch add a new macro SAFE_STRTOUL, which is a safe mode of
> strtoul()
>
I'm sorry for forgetting to mark the order of the patch set.
this patch is depend on 'hugetlb: add a new function get_available_hugepages'
it should be like this:
[PATCH 1/2] hugetlb: add a new function get_available_hugepages
[PATCH 2/2] safe_macros: add SAFE_STRTOUL
> Signed-off-by: Zhouping Liu <zliu@redhat.com>
> ---
> include/safe_macros.h | 5 +++++
> lib/safe_macros.c | 25 +++++++++++++++++++++++++
> testcases/kernel/mem/lib/mem.c | 2 +-
> 3 files changed, 31 insertions(+), 1 deletion(-)
--
Thanks,
Zhouping
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [LTP] [PATCH] hugetlb: add a new function get_available_hugepages
2012-07-07 15:30 ` [LTP] [PATCH] hugetlb: add a new function get_available_hugepages Zhouping Liu
@ 2012-07-09 2:29 ` Wanlong Gao
0 siblings, 0 replies; 5+ messages in thread
From: Wanlong Gao @ 2012-07-09 2:29 UTC (permalink / raw)
To: Zhouping Liu; +Cc: LTP list
On 07/07/2012 11:30 PM, Zhouping Liu wrote:
> Hi,
>
>> From: "Zhouping Liu" <zliu@redhat.com>
>> To: "LTP list" sourceforge.net>
>> Sent: Saturday, July 7, 2012 11:14:38 PM
>> Subject: [LTP] [PATCH] hugetlb: add a new function get_available_hugepages
>>
>> on some systems with small RAM, there aren't enough memory
>> to set as specific hugepages, such as 128 hugepages, it will
>> fail like this:
>> [root@localhost hugemmap]# ./hugemmap01
>> hugemmap01 0 TINFO : set nr_hugepages to 128
>> hugemmap01 1 TBROK : nr_hugepages = 55, but expect 128
>> hugemmap01 2 TBROK : Remaining cases broken
>> hugemmap01 0 TINFO : set nr_hugepages to 54
>>
>> we can detect whether the system has the power to get the specific
>> hugepages through the following commands:
>>
>> [root@localhost hugemmap]# echo 128 > /proc/sys/vm/nr_hugepages
>> [root@localhost hugemmap]# cat /proc/sys/vm/nr_hugepages
>> 55
>>
>> as we know, on this system, there are 55 available hugepages, so we
>> can set 55 hugepages to continue the case, but to exit the case,
>> and this is desinged into get_available_hugepages() functions.
>
> I have tested on some systems.
> a. test on a low memory:
> [root@localhost hugemmap]# ./hugemmap01
> hugemmap01 0 TINFO : set nr_hugepages to 128
> hugemmap01 0 TINFO : There're 56 available hugepages
> hugemmap01 0 TINFO : set nr_hugepages to 56
> hugemmap01 1 TPASS : call succeeded
> hugemmap01 0 TINFO : set nr_hugepages to 0
>
> b. try to set overcommit hugepages:
> [root@localhost hugemmap]# ./hugemmap01 -s 1000
> hugemmap01 0 TINFO : set nr_hugepages to 1000
> hugemmap01 0 TINFO : There're 363 available hugepages
> hugemmap01 0 TINFO : set nr_hugepages to 363
> hugemmap01 1 TPASS : call succeeded
> hugemmap01 0 TINFO : set nr_hugepages to 0
pushed, thank you.
Wanlong Gao
>
> Thanks,
> Zhouping
>
> ------------------------------------------------------------------------------
> Live Security Virtual Conference
> Exclusive live event will cover all the ways today's security and
> threat landscape has changed and how IT managers can respond. Discussions
> will include endpoint security, mobile security and the latest in malware
> threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
> _______________________________________________
> Ltp-list mailing list
> Ltp-list@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/ltp-list
>
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and
threat landscape has changed and how IT managers can respond. Discussions
will include endpoint security, mobile security and the latest in malware
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2012-07-09 2:30 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-07-07 15:14 [LTP] [PATCH] hugetlb: add a new function get_available_hugepages Zhouping Liu
2012-07-07 15:14 ` [LTP] [PATCH] safe_macros: add SAFE_STRTOUL Zhouping Liu
2012-07-07 15:40 ` Zhouping Liu
2012-07-07 15:30 ` [LTP] [PATCH] hugetlb: add a new function get_available_hugepages Zhouping Liu
2012-07-09 2:29 ` Wanlong Gao
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox