public inbox for ltp@lists.linux.it
 help / color / mirror / Atom feed
* [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

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