[LTP] [PATCH] hugetlb: move nr_opt to tst_hugepage.h
Li Wang
liwang@redhat.com
Mon Apr 6 15:29:32 CEST 2020
This is to get rid of the following error:
# ./hugemmap01 -s 2
tst_hugepage.c:29: INFO: Requested number(128) of hugepages is too large,
limiting to 80% of the max hugepage count 28
tst_hugepage.c:40: BROK: nr_hugepages = 5, but expect 22
The root cause is that hugetlb test hits TBROK if the system can't satisfy 80%
of .request_hugepages(default: 128), it doesn't get a chance to set nr_hugepages
with specified page number via '-s xxx'.
Signed-off-by: Li Wang <liwang@redhat.com>
Cc: Yang Xu <xuyang2018.jy@cn.fujitsu.com>
---
include/tst_hugepage.h | 3 +++
lib/tst_hugepage.c | 10 +++++++---
testcases/kernel/mem/hugetlb/hugemmap/hugemmap01.c | 5 -----
testcases/kernel/mem/hugetlb/hugemmap/hugemmap02.c | 5 -----
testcases/kernel/mem/hugetlb/hugemmap/hugemmap04.c | 5 -----
testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat01.c | 5 -----
testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat02.c | 5 -----
testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat03.c | 5 -----
testcases/kernel/mem/hugetlb/hugeshmctl/hugeshmctl01.c | 5 -----
testcases/kernel/mem/hugetlb/hugeshmctl/hugeshmctl02.c | 5 -----
testcases/kernel/mem/hugetlb/hugeshmctl/hugeshmctl03.c | 5 -----
testcases/kernel/mem/hugetlb/hugeshmdt/hugeshmdt01.c | 5 -----
testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget01.c | 5 -----
testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget02.c | 5 -----
testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget03.c | 5 -----
testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget05.c | 5 -----
testcases/kernel/mem/hugetlb/lib/hugetlb.h | 3 ---
17 files changed, 10 insertions(+), 76 deletions(-)
diff --git a/include/tst_hugepage.h b/include/tst_hugepage.h
index 8600b3adb..30e00a377 100644
--- a/include/tst_hugepage.h
+++ b/include/tst_hugepage.h
@@ -9,6 +9,9 @@
#define PATH_HUGEPAGES "/sys/kernel/mm/hugepages/"
#define PATH_NR_HPAGES "/proc/sys/vm/nr_hugepages"
+char *nr_opt; /* -s num Set the number of the been allocated hugepages */
+char *Hopt; /* -H /.. Location of hugetlbfs, i.e. -H /var/hugetlbfs */
+
/*
* Try the best to request a specified number of huge pages from system,
* it will store the reserved hpage number in tst_hugepages.
diff --git a/lib/tst_hugepage.c b/lib/tst_hugepage.c
index c75fb264d..34fd27ede 100644
--- a/lib/tst_hugepage.c
+++ b/lib/tst_hugepage.c
@@ -19,14 +19,18 @@ unsigned long tst_request_hugepages(unsigned long hpages)
goto out;
}
- tst_hugepages = hpages;
+ if (nr_opt)
+ tst_hugepages = SAFE_STRTOL(nr_opt, 1, LONG_MAX);
+ else
+ tst_hugepages = hpages;
+
SAFE_FILE_PRINTF("/proc/sys/vm/drop_caches", "3");
max_hpages = SAFE_READ_MEMINFO("MemFree:") / SAFE_READ_MEMINFO("Hugepagesize:");
- if (hpages > max_hpages) {
+ if (tst_hugepages > max_hpages) {
tst_res(TINFO, "Requested number(%lu) of hugepages is too large, "
"limiting to 80%% of the max hugepage count %lu",
- hpages, max_hpages);
+ tst_hugepages, max_hpages);
tst_hugepages = max_hpages * 0.8;
if (tst_hugepages < 1)
diff --git a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap01.c b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap01.c
index eecbe93f8..891c42e46 100644
--- a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap01.c
+++ b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap01.c
@@ -81,11 +81,6 @@ void setup(void)
Hopt = tst_get_tmpdir();
SAFE_MOUNT("none", Hopt, "hugetlbfs", 0, NULL);
- if (nr_opt) {
- tst_hugepages = SAFE_STRTOL(nr_opt, 0, LONG_MAX);
- tst_request_hugepages(tst_hugepages);
- }
-
if (tst_hugepages == 0)
tst_brk(TCONF, "No enough hugepages for testing.");
diff --git a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap02.c b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap02.c
index 4a4b5680e..c0dbb60d6 100644
--- a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap02.c
+++ b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap02.c
@@ -128,11 +128,6 @@ static void setup(void)
Hopt = tst_get_tmpdir();
SAFE_MOUNT("none", Hopt, "hugetlbfs", 0, NULL);
- if (nr_opt) {
- tst_hugepages = SAFE_STRTOL(nr_opt, 1, LONG_MAX);
- tst_request_hugepages(tst_hugepages);
- }
-
if (tst_hugepages == 0)
tst_brk(TCONF, "No enough hugepages for testing.");
diff --git a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap04.c b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap04.c
index 74a90c01a..5fcbe2789 100644
--- a/testcases/kernel/mem/hugetlb/hugemmap/hugemmap04.c
+++ b/testcases/kernel/mem/hugetlb/hugemmap/hugemmap04.c
@@ -99,11 +99,6 @@ void setup(void)
Hopt = tst_get_tmpdir();
SAFE_MOUNT("none", Hopt, "hugetlbfs", 0, NULL);
- if (nr_opt) {
- tst_hugepages = SAFE_STRTOL(nr_opt, 0, LONG_MAX);
- tst_request_hugepages(tst_hugepages);
- }
-
if (tst_hugepages == 0)
tst_brk(TCONF, "No enough hugepages for testing!");
diff --git a/testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat01.c b/testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat01.c
index 0e6e64d3d..807d1c454 100644
--- a/testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat01.c
+++ b/testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat01.c
@@ -154,11 +154,6 @@ static void setup(void)
{
long hpage_size;
- if (nr_opt) {
- tst_hugepages = SAFE_STRTOL(nr_opt, 0, LONG_MAX);
- tst_request_hugepages(tst_hugepages);
- }
-
if (tst_hugepages == 0)
tst_brk(TCONF, "No enough hugepages for testing.");
diff --git a/testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat02.c b/testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat02.c
index cfc18a795..febe03d12 100644
--- a/testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat02.c
+++ b/testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat02.c
@@ -79,11 +79,6 @@ void setup(void)
{
long hpage_size;
- if (nr_opt) {
- tst_hugepages = SAFE_STRTOL(nr_opt, 0, LONG_MAX);
- tst_request_hugepages(tst_hugepages);
- }
-
if (tst_hugepages == 0)
tst_brk(TCONF, "No enough hugepages for testing.");
diff --git a/testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat03.c b/testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat03.c
index ea784da70..42965e4d7 100644
--- a/testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat03.c
+++ b/testcases/kernel/mem/hugetlb/hugeshmat/hugeshmat03.c
@@ -74,11 +74,6 @@ static void setup(void)
{
long hpage_size;
- if (nr_opt) {
- tst_hugepages = SAFE_STRTOL(nr_opt, 0, LONG_MAX);
- tst_request_hugepages(tst_hugepages);
- }
-
if (tst_hugepages == 0)
tst_brk(TCONF, "No enough hugepages for testing.");
diff --git a/testcases/kernel/mem/hugetlb/hugeshmctl/hugeshmctl01.c b/testcases/kernel/mem/hugetlb/hugeshmctl/hugeshmctl01.c
index 84321d94c..1e84fec59 100644
--- a/testcases/kernel/mem/hugetlb/hugeshmctl/hugeshmctl01.c
+++ b/testcases/kernel/mem/hugetlb/hugeshmctl/hugeshmctl01.c
@@ -288,11 +288,6 @@ void setup(void)
{
long hpage_size;
- if (nr_opt) {
- tst_hugepages = SAFE_STRTOL(nr_opt, 0, LONG_MAX);
- tst_request_hugepages(tst_hugepages);
- }
-
if (tst_hugepages == 0)
tst_brk(TCONF, "No enough hugepages for testing.");
diff --git a/testcases/kernel/mem/hugetlb/hugeshmctl/hugeshmctl02.c b/testcases/kernel/mem/hugetlb/hugeshmctl/hugeshmctl02.c
index 9d835394c..69db058d1 100644
--- a/testcases/kernel/mem/hugetlb/hugeshmctl/hugeshmctl02.c
+++ b/testcases/kernel/mem/hugetlb/hugeshmctl/hugeshmctl02.c
@@ -77,11 +77,6 @@ static void setup(void)
{
long hpage_size;
- if (nr_opt) {
- tst_hugepages = SAFE_STRTOL(nr_opt, 0, LONG_MAX);
- tst_request_hugepages(tst_hugepages);
- }
-
if (tst_hugepages == 0)
tst_brk(TCONF, "No enough hugepages for testing.");
diff --git a/testcases/kernel/mem/hugetlb/hugeshmctl/hugeshmctl03.c b/testcases/kernel/mem/hugetlb/hugeshmctl/hugeshmctl03.c
index 739b57f95..fedc22246 100644
--- a/testcases/kernel/mem/hugetlb/hugeshmctl/hugeshmctl03.c
+++ b/testcases/kernel/mem/hugetlb/hugeshmctl/hugeshmctl03.c
@@ -106,11 +106,6 @@ void setup(void)
{
long hpage_size;
- if (nr_opt) {
- tst_hugepages = SAFE_STRTOL(nr_opt, 0, LONG_MAX);
- tst_request_hugepages(tst_hugepages);
- }
-
if (tst_hugepages == 0)
tst_brk(TCONF, "No enough hugepages for testing.");
diff --git a/testcases/kernel/mem/hugetlb/hugeshmdt/hugeshmdt01.c b/testcases/kernel/mem/hugetlb/hugeshmdt/hugeshmdt01.c
index f0947e703..066f34d1c 100644
--- a/testcases/kernel/mem/hugetlb/hugeshmdt/hugeshmdt01.c
+++ b/testcases/kernel/mem/hugetlb/hugeshmdt/hugeshmdt01.c
@@ -119,11 +119,6 @@ void setup(void)
{
long hpage_size;
- if (nr_opt) {
- tst_hugepages = SAFE_STRTOL(nr_opt, 0, LONG_MAX);
- tst_request_hugepages(tst_hugepages);
- }
-
if (tst_hugepages == 0)
tst_brk(TCONF, "No enough hugepages for testing.");
diff --git a/testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget01.c b/testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget01.c
index d77f4ae97..e1f8fec5a 100644
--- a/testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget01.c
+++ b/testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget01.c
@@ -54,11 +54,6 @@ static void setup(void)
{
long hpage_size;
- if (nr_opt) {
- tst_hugepages = SAFE_STRTOL(nr_opt, 0, LONG_MAX);
- tst_request_hugepages(tst_hugepages);
- }
-
if (tst_hugepages == 0)
tst_brk(TCONF, "No enough hugepages for testing.");
diff --git a/testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget02.c b/testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget02.c
index ad81c979c..ebe6f0bcd 100644
--- a/testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget02.c
+++ b/testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget02.c
@@ -72,11 +72,6 @@ void setup(void)
{
long hpage_size;
- if (nr_opt) {
- tst_hugepages = SAFE_STRTOL(nr_opt, 0, LONG_MAX);
- tst_request_hugepages(tst_hugepages);
- }
-
if (tst_hugepages == 0)
tst_brk(TCONF, "No enough hugepages for testing.");
diff --git a/testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget03.c b/testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget03.c
index e08ed9f42..226985d53 100644
--- a/testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget03.c
+++ b/testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget03.c
@@ -51,11 +51,6 @@ static void setup(void)
{
long hpage_size;
- if (nr_opt) {
- tst_hugepages = SAFE_STRTOL(nr_opt, 0, LONG_MAX);
- tst_request_hugepages(tst_hugepages);
- }
-
if (tst_hugepages == 0)
tst_brk(TCONF, "No enough hugepages for testing.");
diff --git a/testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget05.c b/testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget05.c
index 4c175d59a..506d1df06 100644
--- a/testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget05.c
+++ b/testcases/kernel/mem/hugetlb/hugeshmget/hugeshmget05.c
@@ -66,11 +66,6 @@ void setup(void)
{
long hpage_size;
- if (nr_opt) {
- tst_hugepages = SAFE_STRTOL(nr_opt, 0, LONG_MAX);
- tst_request_hugepages(tst_hugepages);
- }
-
if (tst_hugepages == 0)
tst_brk(TCONF, "No enough hugepages for testing.");
diff --git a/testcases/kernel/mem/hugetlb/lib/hugetlb.h b/testcases/kernel/mem/hugetlb/lib/hugetlb.h
index 7c03a317c..88890ebfb 100644
--- a/testcases/kernel/mem/hugetlb/lib/hugetlb.h
+++ b/testcases/kernel/mem/hugetlb/lib/hugetlb.h
@@ -40,7 +40,4 @@ int getipckey(void);
int getuserid(char *user);
void rm_shm(int shm_id);
-char *nr_opt;
-char *Hopt;
-
#endif /* hugetlb.h */
--
2.21.1
More information about the ltp
mailing list