dont use hardcoded NUMA node ids
v2 cover dont use hardcoded NUMA node ids
Changes in v2:get_allowed_pages()
- removed tst_resm(TFAIL,..)
- added break
- for ret == -3, set errno to EINVALmove_pages_support.c
- check return value from get_allowed_nodes_arr()
mbind, get_mempolicy, move_pages
- removed curly brackets in single statement ifs
This patch series is a combination of:
[PATCH v3] mbind01, get_mempolicy01: dont use hardcoded node 0 [PATCH 1/2] move_pages_support: use only allowed nodes [PATCH 2/2] move_pages: dont use hardcoded node numbers
so that all testcases use same shared code, which resides in libnuma_helper.a. This library defines get_allowed_nodes() and get_allowed_nodes_arr() functions to obtain list of nodes tests can use.
I tested it with following setups. Note that setup 4 and 5 will end with TCONF as there is only 1 node with memory.
1.
# numactl -H available: 8 nodes (2,4-10) node 2 cpus: 0 node 2 size: 127 MB node 2 free: 9 MB node 4 cpus: node 4 size: 128 MB node 4 free: 9 MB node 5 cpus: node 5 size: 128 MB node 5 free: 64 MB node 6 cpus: node 6 size: 128 MB node 6 free: 121 MB node 7 cpus: node 7 size: 128 MB node 7 free: 121 MB node 8 cpus: node 8 size: 128 MB node 8 free: 121 MB node 9 cpus: node 9 size: 128 MB node 9 free: 121 MB node 10 cpus: node 10 size: 127 MB node 10 free: 123 MB
2.
# numactl -H available: 4 nodes (0-3) node 0 cpus: 0 1 2 3 4 5 node 0 size: 2047 MB node 0 free: 564 MB node 1 cpus: 6 7 8 9 10 11 node 1 size: 2046 MB node 1 free: 451 MB node 2 cpus: 18 19 20 21 22 23 node 2 size: 2048 MB node 2 free: 595 MB node 3 cpus: 12 13 14 15 16 17 node 3 size: 2048 MB node 3 free: 236 MB node distances: node 0 1 2 3 0: 10 16 16 16 1: 16 10 16 16 2: 16 16 10 16 3: 16 16 16 10
3.
# numactl -H available: 2 nodes (2-3) node 2 cpus: 0 node 2 size: 511 MB node 2 free: 154 MB node 3 cpus: node 3 size: 511 MB node 3 free: 490 MB
4.
# numactl -H available: 2 nodes (0-1) node 0 cpus: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 node 0 size: 0 MB node 0 free: 0 MB node 1 cpus: node 1 size: 12288 MB node 1 free: 9689 MB node distances: node 0 1 0: 10 40 1: 40 10
5.
# numactl -H available: 1 nodes (0) node 0 cpus: 0 node 0 size: 1023 MB node 0 free: 654 MB node distances: node 0 0: 10
Jan Stancek (4):
add libnuma_helper
mbind01: dont use hardcoded NUMA node ids
get_mempolicy01: dont use hardcoded NUMA node ids
move_pages: dont use hardcoded NUMA node ids
testcases/kernel/syscalls/get_mempolicy/Makefile | 7 +- .../syscalls/get_mempolicy/get_mempolicy01.c | 8 +- testcases/kernel/syscalls/mbind/Makefile | 3 +- testcases/kernel/syscalls/mbind/mbind01.c | 9 +- testcases/kernel/syscalls/move_pages/Makefile | 5 +- .../kernel/syscalls/move_pages/move_pages02.c | 11 +- .../kernel/syscalls/move_pages/move_pages03.c | 11 +- .../kernel/syscalls/move_pages/move_pages04.c | 11 +- .../kernel/syscalls/move_pages/move_pages05.c | 11 +- .../kernel/syscalls/move_pages/move_pages06.c | 9 +- .../kernel/syscalls/move_pages/move_pages07.c | 11 +- .../kernel/syscalls/move_pages/move_pages08.c | 9 +- .../kernel/syscalls/move_pages/move_pages09.c | 7 +- .../kernel/syscalls/move_pages/move_pages10.c | 11 +- .../kernel/syscalls/move_pages/move_pages11.c | 11 +- .../syscalls/move_pages/move_pages_support.c | 44 +++++-- .../syscalls/move_pages/move_pages_support.h | 1 + testcases/kernel/syscalls/numa/Makefile | 22 +++ testcases/kernel/syscalls/numa/Makefile.inc | 27 ++++ testcases/kernel/syscalls/numa/lib/Makefile | 26 ++++ testcases/kernel/syscalls/numa/lib/numa_helper.c | 135 ++++++++++++++++++++ testcases/kernel/syscalls/numa/lib/numa_helper.h | 34 +++++ 22 files changed, 361 insertions(+), 62 deletions(-) create mode 100644 testcases/kernel/syscalls/numa/Makefile create mode 100644 testcases/kernel/syscalls/numa/Makefile.inc create mode 100644 testcases/kernel/syscalls/numa/lib/Makefile create mode 100644 testcases/kernel/syscalls/numa/lib/numa_helper.c create mode 100644 testcases/kernel/syscalls/numa/lib/numa_helper.h
------------------------------------------------------------------------------
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list
PATCH v2 1/4 add libnuma_helper
A library to share NUMA helper functions shared by multiple testcases.
--- testcases/kernel/syscalls/numa/Makefile | 22 ++++ testcases/kernel/syscalls/numa/Makefile.inc | 27 +++++ testcases/kernel/syscalls/numa/lib/Makefile | 26 ++++ testcases/kernel/syscalls/numa/lib/numa_helper.c | 135 ++++++++++++++++++++++ testcases/kernel/syscalls/numa/lib/numa_helper.h | 34 ++++++ 5 files changed, 244 insertions(+), 0 deletions(-) create mode 100644 testcases/kernel/syscalls/numa/Makefile create mode 100644 testcases/kernel/syscalls/numa/Makefile.inc create mode 100644 testcases/kernel/syscalls/numa/lib/Makefile create mode 100644 testcases/kernel/syscalls/numa/lib/numa_helper.c create mode 100644 testcases/kernel/syscalls/numa/lib/numa_helper.h
testcases/kernel/syscalls/numa/Makefile new file +22 -0
@@ -0,0 +1,22 @@ +# +# Copyright (C) 2012 Linux Test Project, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See +# the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +top_srcdir ?= ../../../.. + +include $(top_srcdir)/include/mk/env_pre.mk +include $(top_srcdir)/include/mk/generic_trunk_target.mk
testcases/kernel/syscalls/numa/Makefile.inc new file +27 -0
@@ -0,0 +1,27 @@ +# +# Copyright (C) 2012 Linux Test Project, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See +# the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +CPPFLAGS += $(NUMA_CPPFLAGS) -I../numa/lib/ +LIBDIR := ../numa/lib +LIB := $(LIBDIR)/libnuma_helper.a +MAKE_DEPS += $(LIB) +LDLIBS += $(NUMA_LIBS) -lnuma_helper -lltp +LDFLAGS += -L$(LIBDIR) + +$(LIB): $(LIBDIR) + $(MAKE) -C $^ -f "$(abs_srcdir)/$^/Makefile" all
testcases/kernel/syscalls/numa/lib/Makefile new file +26 -0
@@ -0,0 +1,26 @@ +# +# Copyright (C) 2012 Linux Test Project, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See +# the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# + +top_srcdir ?= ../../../../.. + +include $(top_srcdir)/include/mk/env_pre.mk + +CPPFLAGS += -I../../../include +LIB := libnuma_helper.a + +include $(top_srcdir)/include/mk/lib.mk
testcases/kernel/syscalls/numa/lib/numa_helper.c new file +135 -0
135 lines not on this page · raw message
testcases/kernel/syscalls/numa/lib/numa_helper.h new file +34 -0
@@ -0,0 +1,34 @@ +/* +* Copyright (C) 2012 Linux Test Project, Inc. +* +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation; either version 2 of the License, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See +* the GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with this program; if not, write to the Free Software +* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +*/ + +#ifndef NUMA_HELPER_H +#define NUMA_HELPER_H + +#include "config.h" +#if HAVE_NUMA_H +#include <numa.h> +#endif +#if HAVE_NUMAIF_H +#include <numaif.h> +#endif + +int get_allowed_nodes_arr (int *num_allowed_nodes,int **allowed_nodes); +int get_allowed_nodes (int count, ...); + +#endif +
------------------------------------------------------------------------------
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list
PATCH v2 2/4 mbind01: dont use hardcoded NUMA node ids
In reply to Jan Stancek--- testcases/kernel/syscalls/mbind/Makefile | 3 +-- testcases/kernel/syscalls/mbind/mbind01.c | 9 +++++++-- 2 files changed, 8 insertions(+), 4 deletions(-)
testcases/kernel/syscalls/mbind/Makefile +1 -2
@@ -31,6 +31,5 @@ endif CPPFLAGS += -I$(abs_srcdir)/../utils/ -LDLIBS += $(NUMA_LIBS) - +include $(abs_srcdir)/../numa/Makefile.inc include $(top_srcdir)/include/mk/generic_leaf_target.mk
testcases/kernel/syscalls/mbind/mbind01.c +7 -2
@@ -63,6 +63,7 @@#include "usctest.h" #include "linux_syscall_numbers.h" #include "include_j_h.h" +#include "numa_helper.h" char *TCID ="mbind01" ;int TST_TOTAL =2 ;
@@ -217,15 +218,19 @@ static int do_test(struct test_case *tc)unsigned long maxnode =NUMA_NUM_NODES ;unsigned long len =MEM_LENGTH ;unsigned long *invalid_nodemask; +int test_node =-1 ; + +if ((ret =get_allowed_nodes (1 , &test_node)) <0 ) +tst_brkm (TBROK |TERRNO , cleanup,"get_allowed_nodes(): %d" , ret);#if !defined(LIBNUMA_API_VERSION ) ||LIBNUMA_API_VERSION <2 nodemask =malloc (sizeof (nodemask_t));nodemask_zero (nodemask); -nodemask_set (nodemask,0 ); +nodemask_set (nodemask, test_node); getnodemask =malloc (sizeof (nodemask_t));nodemask_zero (getnodemask);#else -numa_bitmask_setbit (nodemask,0 ); +numa_bitmask_setbit (nodemask, test_node);#endif p =mmap (NULL , len,PROT_READ |PROT_WRITE ,MAP_PRIVATE |MAP_ANONYMOUS ,0 ,0 );
------------------------------------------------------------------------------
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list
PATCH v2 3/4 get_mempolicy01: dont use hardcoded NUMA node ids
In reply to Jan Stancek--- testcases/kernel/syscalls/get_mempolicy/Makefile | 7 ++----- .../syscalls/get_mempolicy/get_mempolicy01.c | 8 ++++++-- 2 files changed, 8 insertions(+), 7 deletions(-)
testcases/kernel/syscalls/get_mempolicy/Makefile +2 -5
@@ -20,10 +20,7 @@ top_srcdir ?= ../../../.. include $(top_srcdir)/include/mk/testcases.mk -CPPFLAGS += -g - -CPPFLAGS += -I$(abs_srcdir)/../utils $(NUMA_CPPFLAGS) - -LDLIBS += $(NUMA_LIBS) +CPPFLAGS += -I$(abs_srcdir)/../utils +include $(abs_srcdir)/../numa/Makefile.inc include $(top_srcdir)/include/mk/generic_leaf_target.mk
testcases/kernel/syscalls/get_mempolicy/get_mempolicy01.c +6 -2
@@ -63,6 +63,7 @@#include "linux_syscall_numbers.h" #include "include_j_h.h" #include "common_j_h.c" +#include "numa_helper.h" char *TCID ="get_mempolicy01" ;/* Test program identifier.*/ int TST_TOTAL =1 ;/* total number of tests in this file. */
@@ -231,15 +232,18 @@ static int do_test(struct test_case *tc)#endif char *p =NULL ;unsigned long len =MEM_LENGTH ; +int test_node =-1 ; +if ((ret =get_allowed_nodes (1 , &test_node)) <0 ) +tst_brkm (TBROK |TERRNO , cleanup,"get_allowed_nodes(): %d" , ret);#if !defined(LIBNUMA_API_VERSION ) ||LIBNUMA_API_VERSION <2 nodemask =malloc (sizeof (nodemask_t));nodemask_zero (nodemask); -nodemask_set (nodemask,0 ); +nodemask_set (nodemask, test_node); getnodemask =malloc (sizeof (nodemask_t));nodemask_zero (getnodemask);#else -numa_bitmask_setbit (nodemask,0 ); +numa_bitmask_setbit (nodemask, test_node);#endif switch (tc->ttype) {case DEFAULT :
------------------------------------------------------------------------------
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list
PATCH v2 4/4 move_pages: dont use hardcoded NUMA node ids
In reply to Jan Stancek--- testcases/kernel/syscalls/move_pages/Makefile | 5 +- .../kernel/syscalls/move_pages/move_pages02.c | 11 +++-- .../kernel/syscalls/move_pages/move_pages03.c | 11 +++-- .../kernel/syscalls/move_pages/move_pages04.c | 11 +++-- .../kernel/syscalls/move_pages/move_pages05.c | 11 +++-- .../kernel/syscalls/move_pages/move_pages06.c | 9 +++- .../kernel/syscalls/move_pages/move_pages07.c | 11 +++-- .../kernel/syscalls/move_pages/move_pages08.c | 9 +++- .../kernel/syscalls/move_pages/move_pages09.c | 7 ++- .../kernel/syscalls/move_pages/move_pages10.c | 11 +++-- .../kernel/syscalls/move_pages/move_pages11.c | 11 +++-- .../syscalls/move_pages/move_pages_support.c | 44 ++++++++++++++----- .../syscalls/move_pages/move_pages_support.h | 1 + 13 files changed, 101 insertions(+), 51 deletions(-)
testcases/kernel/syscalls/move_pages/Makefile +2 -3
@@ -22,8 +22,6 @@ include $(top_srcdir)/include/mk/testcases.mk CPPFLAGS += -I$(abs_srcdir)/../utils -LDLIBS += $(NUMA_LIBS) - INSTALL_TARGETS := move_pages.sh MAKE_TARGETS := $(patsubst $(abs_srcdir)/%.c,%,$(wildcard $(abs_srcdir)/*[0-9].c))
@@ -35,6 +33,7 @@ move_pages_support.o: CFLAGS += -Wno-unused-function $(MAKE_TARGETS): %: %.o move_pages_support.o -LDLIBS += $(NUMA_LIBS) -lpthread -lrt +LDLIBS += -lpthread -lrt +include $(abs_srcdir)/../numa/Makefile.inc include $(top_srcdir)/include/mk/generic_leaf_target.mk
testcases/kernel/syscalls/move_pages/move_pages02.c +7 -4
@@ -83,15 +83,18 @@ int main(int argc, char **argv)#if HAVE_NUMA_MOVE_PAGES unsigned int i;int lc;/* loop counter */ -unsigned int from_node =0 ; -unsigned int to_node =1 ; +unsigned int from_node; +unsigned int to_node; +int ret; + +if ((ret =get_allowed_nodes (2 , &from_node, &to_node)) <0 ) +tst_brkm (TBROK |TERRNO , cleanup,"get_allowed_nodes(): %d" , ret);/* check for looping state if -i option is given */ for (lc =0 ;TEST_LOOPING (lc); lc++) {void *pages[TEST_PAGES ] = {0 };int nodes[TEST_PAGES ];int status[TEST_PAGES ]; -int ret;/* reset Tst_count in case we are looping */ Tst_count =0 ;
@@ -156,4 +159,4 @@ void cleanup(void)*/ TEST_CLEANUP ; - } + }
testcases/kernel/syscalls/move_pages/move_pages03.c +7 -4
@@ -122,15 +122,18 @@ int main(int argc, char **argv)#if HAVE_NUMA_MOVE_PAGES unsigned int i;int lc;/* loop counter */ -unsigned int from_node =0 ; -unsigned int to_node =1 ; +unsigned int from_node; +unsigned int to_node; +int ret; + +if ((ret =get_allowed_nodes (2 , &from_node, &to_node)) <0 ) +tst_brkm (TBROK |TERRNO , cleanup,"get_allowed_nodes(): %d" , ret);/* check for looping state if -i option is given */ for (lc =0 ;TEST_LOOPING (lc); lc++) {void *pages[TEST_PAGES ] = {0 };int nodes[TEST_PAGES ];int status[TEST_PAGES ]; -int ret;pid_t cpid;sem_t *sem;
@@ -223,4 +226,4 @@ void cleanup(void)*/ TEST_CLEANUP ; - } + }
testcases/kernel/syscalls/move_pages/move_pages04.c +7 -4
@@ -89,15 +89,18 @@ int main(int argc, char **argv)#if HAVE_NUMA_MOVE_PAGES unsigned int i;int lc;/* loop counter */ -unsigned int from_node =0 ; -unsigned int to_node =1 ; +unsigned int from_node; +unsigned int to_node; +int ret; + +if ((ret =get_allowed_nodes (2 , &from_node, &to_node)) <0 ) +tst_brkm (TBROK |TERRNO , cleanup,"get_allowed_nodes(): %d" , ret);/* check for looping state if -i option is given */ for (lc =0 ;TEST_LOOPING (lc); lc++) {void *pages[TEST_PAGES ] = {0 };int nodes[TEST_PAGES ];int status[TEST_PAGES ]; -int ret;unsigned long onepage =get_page_size ();/* reset Tst_count in case we are looping */
@@ -175,4 +178,4 @@ void cleanup(void)*/ TEST_CLEANUP ; - } + }
testcases/kernel/syscalls/move_pages/move_pages05.c +7 -4
@@ -123,15 +123,18 @@ int main(int argc, char **argv)#if HAVE_NUMA_MOVE_PAGES unsigned int i;int lc;/* loop counter */ -unsigned int from_node =0 ; -unsigned int to_node =1 ; +unsigned int from_node; +unsigned int to_node; +int ret; + +if ((ret =get_allowed_nodes (2 , &from_node, &to_node)) <0 ) +tst_brkm (TBROK |TERRNO , cleanup,"get_allowed_nodes(): %d" , ret);/* check for looping state if -i option is given */ for (lc =0 ;TEST_LOOPING (lc); lc++) {void *pages[N_TEST_PAGES ] = {0 };int nodes[N_TEST_PAGES ];int status[N_TEST_PAGES ]; -int ret;pid_t cpid;sem_t *sem;
@@ -237,4 +240,4 @@ void cleanup(void)*/ TEST_CLEANUP ; - } + }
testcases/kernel/syscalls/move_pages/move_pages06.c +6 -3
@@ -83,15 +83,18 @@ int main(int argc, char **argv)#if HAVE_NUMA_MOVE_PAGES unsigned int i;int lc;/* loop counter */ -unsigned int from_node =0 ; +unsigned int from_node;unsigned int to_node; +int ret; + +if ((ret =get_allowed_nodes (1 , &from_node)) <0 ) +tst_brkm (TBROK |TERRNO , cleanup,"get_allowed_nodes(): %d" , ret);/* check for looping state if -i option is given */ for (lc =0 ;TEST_LOOPING (lc); lc++) {void *pages[TEST_PAGES ] = {0 };int nodes[TEST_PAGES ];int status[TEST_PAGES ]; -int ret;/* reset Tst_count in case we are looping */ Tst_count =0 ;
@@ -152,4 +155,4 @@ void cleanup(void)*/ TEST_CLEANUP ; - } + }
testcases/kernel/syscalls/move_pages/move_pages07.c +7 -4
@@ -83,15 +83,18 @@ int main(int argc, char **argv)#if HAVE_NUMA_MOVE_PAGES unsigned int i;int lc;/* loop counter */ -unsigned int from_node =0 ; -unsigned int to_node =1 ; +unsigned int from_node; +unsigned int to_node; +int ret; + +if ((ret =get_allowed_nodes (2 , &from_node, &to_node)) <0 ) +tst_brkm (TBROK |TERRNO , cleanup,"get_allowed_nodes(): %d" , ret);/* check for looping state if -i option is given */ for (lc =0 ;TEST_LOOPING (lc); lc++) {void *pages[TEST_PAGES ] = {0 };int nodes[TEST_PAGES ];int status[TEST_PAGES ]; -int ret;int ipid;/* reset Tst_count in case we are looping */
@@ -163,4 +166,4 @@ void cleanup(void)*/ TEST_CLEANUP ; - } + }
testcases/kernel/syscalls/move_pages/move_pages08.c +6 -3
@@ -81,15 +81,18 @@ int main(int argc, char **argv)#if HAVE_NUMA_MOVE_PAGES unsigned int i;int lc;/* loop counter */ -unsigned int from_node =0 ; -unsigned int to_node =1 ; +unsigned int from_node; +unsigned int to_node; +int ret; + +if ((ret =get_allowed_nodes (2 , &from_node, &to_node)) <0 ) +tst_brkm (TBROK |TERRNO , cleanup,"get_allowed_nodes(): %d" , ret);/* check for looping state if -i option is given */ for (lc =0 ;TEST_LOOPING (lc); lc++) {void *pages[TEST_PAGES ] = {0 };int nodes[TEST_PAGES ];int status[TEST_PAGES ]; -int ret;/* reset Tst_count in case we are looping */ Tst_count =0 ;
testcases/kernel/syscalls/move_pages/move_pages09.c +5 -2
@@ -81,14 +81,17 @@ int main(int argc, char **argv)#if HAVE_NUMA_MOVE_PAGES unsigned int i;int lc;/* loop counter */ -unsigned int from_node =0 ; +unsigned int from_node; +int ret; + +if ((ret =get_allowed_nodes (1 , &from_node)) <0 ) +tst_brkm (TBROK |TERRNO , cleanup,"get_allowed_nodes(): %d" , ret);/* check for looping state if -i option is given */ for (lc =0 ;TEST_LOOPING (lc); lc++) {void *pages[TEST_PAGES ] = {0 };int nodes[TEST_PAGES ];int status[TEST_PAGES ]; -int ret;/* reset Tst_count in case we are looping */ Tst_count =0 ;
testcases/kernel/syscalls/move_pages/move_pages10.c +7 -4
@@ -83,15 +83,18 @@ int main(int argc, char **argv)#if HAVE_NUMA_MOVE_PAGES unsigned int i;int lc;/* loop counter */ -unsigned int from_node =0 ; -unsigned int to_node =1 ; +unsigned int from_node; +unsigned int to_node; +int ret; + +if ((ret =get_allowed_nodes (2 , &from_node, &to_node)) <0 ) +tst_brkm (TBROK |TERRNO , cleanup,"get_allowed_nodes(): %d" , ret);/* check for looping state if -i option is given */ for (lc =0 ;TEST_LOOPING (lc); lc++) {void *pages[TEST_PAGES ] = {0 };int nodes[TEST_PAGES ];int status[TEST_PAGES ]; -int ret;/* reset Tst_count in case we are looping */ Tst_count =0 ;
@@ -151,4 +154,4 @@ void cleanup(void)*/ TEST_CLEANUP ; - } + }
testcases/kernel/syscalls/move_pages/move_pages11.c +7 -4
@@ -122,15 +122,18 @@ int main(int argc, char **argv)#if HAVE_NUMA_MOVE_PAGES unsigned int i;int lc;/* loop counter */ -unsigned int from_node =0 ; -unsigned int to_node =1 ; +unsigned int from_node; +unsigned int to_node; +int ret; + +if ((ret =get_allowed_nodes (2 , &from_node, &to_node)) <0 ) +tst_brkm (TBROK |TERRNO , cleanup,"get_allowed_nodes(): %d" , ret);/* check for looping state if -i option is given */ for (lc =0 ;TEST_LOOPING (lc); lc++) {void *pages[TEST_PAGES ] = {0 };int nodes[TEST_PAGES ];int status[TEST_PAGES ]; -int ret;pid_t cpid;sem_t *sem;
@@ -241,4 +244,4 @@ void cleanup(void)*/ TEST_CLEANUP ; - } + }
testcases/kernel/syscalls/move_pages/move_pages_support.c +32 -12
82 lines not on this page · raw message
testcases/kernel/syscalls/move_pages/move_pages_support.h +1 -0
@@ -27,6 +27,7 @@#include <numaif.h> #endif #include <semaphore.h> +#include "numa_helper.h" long get_page_size ();
------------------------------------------------------------------------------
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list
Quoted 10 lines · Jan Stancek
Changes in v2:
get_allowed_pages()
- removedtst_resm(TFAIL,..)
- added break
- for ret == -3, set errno to EINVALmove_pages_support.c
- check return value fromget_allowed_nodes_arr()
mbind,get_mempolicy,move_pages
- removed curly brackets in single statement ifs
pushed, thank you Jan.
Wanlong Gao
Quoted 144 lines
This patch series is a combination of:
[PATCH v3] mbind01,get_mempolicy01: dont use hardcoded node 0 [PATCH 1/2]move_pages_support: use only allowed nodes [PATCH 2/2]move_pages: dont use hardcoded node numbersso that all testcases use same shared code, which resides in libnuma_helper.a. This library defines
get_allowed_nodes()andget_allowed_nodes_arr()functions to obtain list of nodes tests can use.I tested it with following setups. Note that setup 4 and 5 will end with TCONF as there is only 1 node with memory.
1.
# numactl -H available: 8 nodes (2,4-10) node 2 cpus: 0 node 2 size: 127 MB node 2 free: 9 MB node 4 cpus: node 4 size: 128 MB node 4 free: 9 MB node 5 cpus: node 5 size: 128 MB node 5 free: 64 MB node 6 cpus: node 6 size: 128 MB node 6 free: 121 MB node 7 cpus: node 7 size: 128 MB node 7 free: 121 MB node 8 cpus: node 8 size: 128 MB node 8 free: 121 MB node 9 cpus: node 9 size: 128 MB node 9 free: 121 MB node 10 cpus: node 10 size: 127 MB node 10 free: 123 MB2.
# numactl -H available: 4 nodes (0-3) node 0 cpus: 0 1 2 3 4 5 node 0 size: 2047 MB node 0 free: 564 MB node 1 cpus: 6 7 8 9 10 11 node 1 size: 2046 MB node 1 free: 451 MB node 2 cpus: 18 19 20 21 22 23 node 2 size: 2048 MB node 2 free: 595 MB node 3 cpus: 12 13 14 15 16 17 node 3 size: 2048 MB node 3 free: 236 MB node distances: node 0 1 2 3 0: 10 16 16 16 1: 16 10 16 16 2: 16 16 10 16 3: 16 16 16 103.
# numactl -H available: 2 nodes (2-3) node 2 cpus: 0 node 2 size: 511 MB node 2 free: 154 MB node 3 cpus: node 3 size: 511 MB node 3 free: 490 MB4.
# numactl -H available: 2 nodes (0-1) node 0 cpus: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 node 0 size: 0 MB node 0 free: 0 MB node 1 cpus: node 1 size: 12288 MB node 1 free: 9689 MB node distances: node 0 1 0: 10 40 1: 40 105.
# numactl -H available: 1 nodes (0) node 0 cpus: 0 node 0 size: 1023 MB node 0 free: 654 MB node distances: node 0 0: 10Jan Stancek (4):
addlibnuma_helper
mbind01: dont use hardcoded NUMA node ids
get_mempolicy01: dont use hardcoded NUMA node ids
move_pages: dont use hardcoded NUMA node idstestcases/kernel/syscalls/get_mempolicy/Makefile | 7 +- .../syscalls/get_mempolicy/get_mempolicy01.c | 8 +- testcases/kernel/syscalls/mbind/Makefile | 3 +- testcases/kernel/syscalls/mbind/mbind01.c | 9 +- testcases/kernel/syscalls/move_pages/Makefile | 5 +- .../kernel/syscalls/move_pages/move_pages02.c | 11 +- .../kernel/syscalls/move_pages/move_pages03.c | 11 +- .../kernel/syscalls/move_pages/move_pages04.c | 11 +- .../kernel/syscalls/move_pages/move_pages05.c | 11 +- .../kernel/syscalls/move_pages/move_pages06.c | 9 +- .../kernel/syscalls/move_pages/move_pages07.c | 11 +- .../kernel/syscalls/move_pages/move_pages08.c | 9 +- .../kernel/syscalls/move_pages/move_pages09.c | 7 +- .../kernel/syscalls/move_pages/move_pages10.c | 11 +- .../kernel/syscalls/move_pages/move_pages11.c | 11 +- .../syscalls/move_pages/move_pages_support.c | 44 +++++-- .../syscalls/move_pages/move_pages_support.h | 1 + testcases/kernel/syscalls/numa/Makefile | 22 +++ testcases/kernel/syscalls/numa/Makefile.inc | 27 ++++ testcases/kernel/syscalls/numa/lib/Makefile | 26 ++++ testcases/kernel/syscalls/numa/lib/numa_helper.c | 135 ++++++++++++++++++++ testcases/kernel/syscalls/numa/lib/numa_helper.h | 34 +++++ 22 files changed, 361 insertions(+), 62 deletions(-) create mode 100644 testcases/kernel/syscalls/numa/Makefile create mode 100644 testcases/kernel/syscalls/numa/Makefile.inc create mode 100644 testcases/kernel/syscalls/numa/lib/Makefile create mode 100644 testcases/kernel/syscalls/numa/lib/numa_helper.c create mode 100644 testcases/kernel/syscalls/numa/lib/numa_helper.h------------------------------------------------------------------------------
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/
Quoted 5 lines
_______________________________________________
Ltp-list mailing list
[email protected]
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list