[openib-general] [PATCH] uDAPL - include dapltest and dtest in build
Arlin Davis
arlin.r.davis at intel.com
Fri Feb 23 15:06:09 PST 2007
This uDAPL patch adds both dapltest and dtest utilities, including manual pages, to the DAPL project
build. The dapltest required some modifications to build on x86_64.
James, please review.
Signed-off by: Arlin Davis ardavis at ichips.intel.com
diff --git a/Makefile.am b/Makefile.am
index 1190f20..e2bf4dc 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -179,7 +179,9 @@ libdatinclude_HEADERS = dat/include/dat/dat.h \
dat/include/dat/udat.h \
dat/include/dat/udat_redirection.h \
dat/include/dat/udat_vendor_specific.h
-
+
+man_MANS = man/dtest.1 man/dapltest.1
+
EXTRA_DIST = dat/common/dat_dictionary.h \
dat/common/dat_dr.h \
dat/common/dat_init.h \
@@ -228,8 +230,10 @@ EXTRA_DIST = dat/common/dat_dictionary.h \
dat/udat/libdat.map \
doc/dat.conf \
dapl/udapl/libdaplcma.map \
- dapl/udapl/libdaplscm.map \
- libdat.spec.in
+ libdat.spec.in \
+ $(man_MANS)
dist-hook: libdat.spec
cp libdat.spec $(distdir)
+
+SUBDIRS = . test/dtest test/dapltest
diff --git a/configure.in b/configure.in
index bf5ec09..324bfa1 100644
--- a/configure.in
+++ b/configure.in
@@ -1,11 +1,11 @@
dnl Process this file with autoconf to produce a configure script.
AC_PREREQ(2.57)
-AC_INIT(dapl, 1.2.0, dapl-devel at lists.sourceforge.net)
+AC_INIT(dapl, 1.2.1, openib-general at openib.org)
AC_CONFIG_SRCDIR([dat/udat/udat.c])
AC_CONFIG_AUX_DIR(config)
AM_CONFIG_HEADER(config.h)
-AM_INIT_AUTOMAKE(dapl, 1.2.0)
+AM_INIT_AUTOMAKE(dapl, 1.2.1)
AM_PROG_LIBTOOL
@@ -60,5 +60,6 @@ AC_CACHE_CHECK(whether this is an RHEL system, ac_cv_rhel,
fi)
AM_CONDITIONAL(OS_RHEL, test "$ac_cv_rhel" = "yes")
-AC_CONFIG_FILES([Makefile libdat.spec])
+AC_CONFIG_FILES([Makefile test/dtest/Makefile test/dapltest/Makefile libdat.spec])
+
AC_OUTPUT
diff --git a/man/dapltest.1 b/man/dapltest.1
new file mode 100644
index 0000000..8ff4493
--- /dev/null
+++ b/man/dapltest.1
@@ -0,0 +1,390 @@
+." Text automatically generated by txt2man
+.TH dapltest 1 "February 23, 2007" "uDAPL 1.2" "USER COMMANDS"
+
+.SH NAME
+\fB
+\fBdapltest \fP- test for the Direct Access Programming Library (DAPL)
+\fB
+.SH DESCRIPTION
+
+Dapltest is a set of tests developed to exercise, characterize,
+and verify the DAPL interfaces during development and porting.
+At least two instantiations of the test must be run. One acts
+as the server, fielding requests and spawning server-side test
+threads as needed. Other client invocations connect to the server
+and issue test requests. The server side of the test, once invoked,
+listens continuously for client connection requests, until quit or
+killed. Upon receipt of a connection request, the connection is
+established, the server and client sides swap version numbers to
+verify that they are able to communicate, and the client sends
+the test request to the server. If the version numbers match,
+and the test request is well-formed, the server spawns the threads
+needed to run the test before awaiting further connections.
+.SH USAGE
+
+dapltest [ -f script_file_name ]
+[ -T S|Q|T|P|L ] [ -D device_name ] [ -d ] [ -R HT|LL|EC|PM|BE ]
+.PP
+With no arguments, dapltest runs as a server using default values,
+and loops accepting requests from clients.
+
+The -f option allows all arguments to be placed in a file, to ease
+test automation.
+
+The following arguments are common to all tests:
+.TP
+.B
+[ -T S|Q|T|P|L ]
+Test function to be performed:
+.RS
+.TP
+.B
+S
+- server loop
+.TP
+.B
+Q
+- quit, client requests that server
+wait for any outstanding tests to
+complete, then clean up and exit
+.TP
+.B
+T
+- transaction test, transfers data between
+client and server
+.TP
+.B
+P
+- performance test, times DTO operations
+.TP
+.B
+L
+- limit test, exhausts various resources,
+runs in client w/o server interaction
+Default: S
+.RE
+.TP
+.B
+[ -D device_name ]
+Specifies the interface adapter name as documented in
+the /etc/dat.conf static configuration file. This name
+corresponds to the provider library to open.
+Default: none
+.TP
+.B
+[ -d ]
+Enables extra debug verbosity, primarily tracing
+of the various DAPL operations as they progress.
+Repeating this parameter increases debug spew.
+Errors encountered result in the test spewing some
+explanatory text and stopping; this flag provides
+more detail about what lead up to the error.
+Default: zero
+.TP
+.B
+[ -R BE ]
+Indicate the quality of service (QoS) desired.
+Choices are:
+.RS
+.TP
+.B
+HT
+- high throughput
+.TP
+.B
+LL
+- low latency
+.TP
+.B
+EC
+- economy (neither HT nor LL)
+.TP
+.B
+PM
+- premium
+.TP
+.B
+BE
+- best effort
+Default: BE
+.RE
+.RE
+.PP
+.B
+Usage - Quit test client
+.PP
+.nf
+.fam C
+ dapltest [Common_Args] [ -s server_name ]
+
+ Quit testing (-T Q) connects to the server to ask it to clean up and
+ exit (after it waits for any outstanding test runs to complete).
+ In addition to being more polite than simply killing the server,
+ this test exercises the DAPL object teardown code paths.
+ There is only one argument other than those supported by all tests:
+
+ -s server_name Specifies the name of the server interface.
+ No default.
+
+
+.fam T
+.fi
+.B
+Usage - Transaction test client
+.PP
+.nf
+.fam C
+ dapltest [Common_Args] [ -s server_name ]
+ [ -t threads ] [ -w endpoints ] [ -i iterations ] [ -Q ]
+ [ -V ] [ -P ] OPclient OPserver [ op3,
+
+ Transaction testing (-T T) transfers a variable amount of data between
+ client and server. The data transfer can be described as a sequence of
+ individual operations; that entire sequence is transferred 'iterations'
+ times by each thread over all of its endpoint(s).
+
+ The following parameters determine the behavior of the transaction test:
+
+ -s server_name Specifies the name or IP address of the server interface.
+ No default.
+
+ [ -t threads ] Specify the number of threads to be used.
+ Default: 1
+
+ [ -w endpoints ] Specify the number of connected endpoints per thread.
+ Default: 1
+
+ [ -i iterations ] Specify the number of times the entire sequence
+ of data transfers will be made over each endpoint.
+ Default: 1000
+
+ [ -Q ] Funnel completion events into a CNO.
+ Default: use EVDs
+
+ [ -V ] Validate the data being transferred.
+ Default: ignore the data
+
+ [ -P ] Turn on DTO completion polling
+ Default: off
+
+ OP1 OP2 [ OP3, \.\.\. ]
+ A single transaction (OPx) consists of:
+
+ server|client Indicates who initiates the
+ data transfer.
+
+ SR|RR|RW Indicates the type of transfer:
+ SR send/recv
+ RR RDMA read
+ RW RDMA write
+ Defaults: none
+
+ [ seg_size [ num_segs ] ]
+ Indicates the amount and format
+ of the data to be transferred.
+ Default: 4096 1
+ (i.e., 1 4KB buffer)
+
+ [ -f ] For SR transfers only, indicates
+ that a client's send transfer
+ completion should be reaped when
+ the next recv completion is reaped.
+ Sends and receives must be paired
+ (one client, one server, and in that
+ order) for this option to be used.
+
+ Restrictions:
+
+ Due to the flow control algorithm used by the transaction test, there
+ must be at least one SR OP for both the client and the server.
+
+ Requesting data validation (-V) causes the test to automatically append
+ three OPs to those specified. These additional operations provide
+ synchronization points during each iteration, at which all user-specified
+ transaction buffers are checked. These three appended operations satisfy
+ the "one SR in each direction" requirement.
+
+ The transaction OP list is printed out if -d is supplied.
+
+.fam T
+.fi
+.B
+Usage - Performance test client
+.PP
+.nf
+.fam C
+ dapltest [Common_Args] -s server_name [ -m p|b ]
+ [ -i iterations ] [ -p pipeline ] OP
+
+ Performance testing (-T P) times the transfer of an operation.
+ The operation is posted 'iterations' times.
+
+ The following parameters determine the behavior of the transaction test:
+
+ -s server_name Specifies the name or IP address of the server interface.
+ No default.
+
+ -m b|p Used to choose either blocking (b) or polling (p)
+ Default: blocking (b)
+
+ [ -i iterations ] Specify the number of times the entire sequence
+ of data transfers will be made over each endpoint.
+ Default: 1000
+
+ [ -p pipeline ] Specify the pipline length, valid arguments are in
+ the range [0,MAX_SEND_DTOS]. If a value greater than
+ MAX_SEND_DTOS is requested the value will be
+ adjusted down to MAX_SEND_DTOS.
+ Default: MAX_SEND_DTOS
+
+ OP Specifies the operation as follow:
+
+ RR|RW Indicates the type of transfer:
+ RR RDMA read
+ RW RDMA write
+ Defaults: none
+
+ [ seg_size [ num_segs ] ]
+ Indicates the amount and format
+ of the data to be transferred.
+ Default: 4096 1
+ (i.e., 1 4KB buffer)
+.fam T
+.RE
+.RE
+.PP
+.B
+Usage - Limit test client
+.PP
+.nf
+.fam C
+ Limit testing (-T L) neither requires nor connects to any server
+ instance. The client runs one or more tests which attempt to
+ exhaust various resources to determine DAPL limits and exercise
+ DAPL error paths. If no arguments are given, all tests are run.
+
+ Limit testing creates the sequence of DAT objects needed to
+ move data back and forth, attempting to find the limits supported
+ for the DAPL object requested. For example, if the LMR creation
+ limit is being examined, the test will create a set of
+ {IA, PZ, CNO, EVD, EP} before trying to run dat_lmr_create() to
+ failure using that set of DAPL objects. The 'width' parameter
+ can be used to control how many of these parallel DAPL object
+ sets are created before beating upon the requested constructor.
+ Use of -m limits the number of dat_*_create() calls that will
+ be attempted, which can be helpful if the DAPL in use supports
+ essentailly unlimited numbers of some objects.
+
+ The limit test arguments are:
+
+ [ -m maximum ] Specify the maximum number of dapl_*_create()
+ attempts.
+ Default: run to object creation failure
+
+ [ -w width ] Specify the number of DAPL object sets to
+ create while initializing.
+ Default: 1
+
+ [ limit_ia ] Attempt to exhaust dat_ia_open()
+
+ [ limit_pz ] Attempt to exhaust dat_pz_create()
+
+ [ limit_cno ] Attempt to exhaust dat_cno_create()
+
+ [ limit_evd ] Attempt to exhaust dat_evd_create()
+
+ [ limit_ep ] Attempt to exhaust dat_ep_create()
+
+ [ limit_rsp ] Attempt to exhaust dat_rsp_create()
+
+ [ limit_psp ] Attempt to exhaust dat_psp_create()
+
+ [ limit_lmr ] Attempt to exhaust dat_lmr_create(4KB)
+
+ [ limit_rpost ] Attempt to exhaust dat_ep_post_recv(4KB)
+
+ [ limit_size_lmr ] Probe maximum size dat_lmr_create()
+
+.nf
+.fam C
+ Default: run all tests
+
+
+.fam T
+.fi
+.SH EXAMPLES
+
+dapltest -T S -d -D OpenIB-cma
+.PP
+.nf
+.fam C
+ Starts a server process with debug verbosity.
+
+.fam T
+.fi
+dapltest -T T -d -s host1-ib0 -D OpenIB-cma -i 100 client SR 4096 2 server SR 4096 2
+.PP
+.nf
+.fam C
+ Runs a transaction test, with both sides
+ sending one buffer with two 4KB segments,
+ one hundred times.
+
+.fam T
+.fi
+dapltest -T P -d -s host1-ib0 -D OpenIB-cma -i 100 SR 4096 2
+.PP
+.nf
+.fam C
+ Runs a performance test, with the client
+ sending one buffer with two 4KB segments,
+ one hundred times.
+
+.fam T
+.fi
+dapltest -T Q -s host1-ib0 -D OpenIB-cma
+.PP
+.nf
+.fam C
+ Asks the server to clean up and exit.
+
+.fam T
+.fi
+dapltest -T L -D OpenIB-cma -d -w 16 -m 1000
+.PP
+.nf
+.fam C
+ Runs all of the limit tests, setting up
+ 16 complete sets of DAPL objects, and
+ creating at most a thousand instances
+ when trying to exhaust resources.
+
+.fam T
+.fi
+dapltest -T T -V -d -t 2 -w 4 -i 55555 -s linux3 -D OpenIB-cma
+client RW 4096 1 server RW 2048 4
+client SR 1024 4 server SR 4096 2
+client SR 1024 3 -f server SR 2048 1 -f
+.PP
+.nf
+.fam C
+ Runs a more complicated transaction test,
+ with two thread using four EPs each,
+ sending a more complicated buffer pattern
+ for a larger number of iterations,
+ validating the data received.
+
+
+.fam T
+.fi
+.RE
+.TP
+.B
+BUGS
+(and To Do List)
+.PP
+.nf
+.fam C
+ Use of CNOs (-Q) is not yet supported.
+
+ Further limit tests could be added.
diff --git a/man/dtest.1 b/man/dtest.1
new file mode 100755
index 0000000..1e227e5
--- /dev/null
+++ b/man/dtest.1
@@ -0,0 +1,78 @@
+.TH dtest 1 "February 23, 2007" "uDAPL 1.2" "USER COMMANDS"
+
+.SH NAME
+dtest \- simple uDAPL send/receive and RDMA test
+
+.SH SYNOPSIS
+.B dtest
+[\-P provider] [\-b buf size] [\-B burst count][\-v] [\-c] [\-p] [\-d]\fB [-s]\fR
+
+.B dtest
+[\-P provider] [\-b buf size] [\-B burst count][\-v] [\-c] [\-p] [\-d]\fB [-h HOSTNAME]\fR
+
+.SH DESCRIPTION
+.PP
+dtest is a simple test used to exercise and verify the uDAPL interfaces.
+At least two instantiations of the test must be run. One acts as the server
+and the other the client. The server side of the test, once invoked listens
+for connection requests, until timing out or killed. Upon receipt of a cd
+connection request, the connection is established, the server and client
+sides exchange information necessary to perform RDMA writes and reads.
+
+.SH OPTIONS
+
+.PP
+.TP
+\fB\-P\fR=\fIPROVIDER\fR
+use \fIPROVIDER\fR to specify uDAPL interface using /etc/dat.conf (default OpenIB-cma)
+.TP
+\fB\-b\fR=\fIBUFFER_SIZE\fR
+use buffer size \fIBUFFER_SIZE\fR for RDMA(default 64)
+.TP
+\fB\-B\fR=\fIBURST_COUNT\fR
+use busrt count \fIBURST_COUNT\fR for interations (default 10)
+.TP
+\fB\-v\fR, verbose output(default off)
+.TP
+\fB\-c\fR, use consumer notification events (default off)
+.TP
+\fB\-p\fR, use polling (default wait for event)
+.TP
+\fB\-d\fR, delay in seconds before close (default off)
+.TP
+\fB\-s\fR, run as server (default - run as server)
+.TP
+\fB\-h\fR=\fIHOSTNAME\fR
+use \fIHOSTNAME\fR to specify server hostname or IP address (default - none)
+
+.SH EXAMPLES
+
+dtest -P OpenIB-cma -v -s
+.PP
+.nf
+.fam C
+ Starts a server process with debug verbosity using provider OpenIB-cma.
+
+.fam T
+.fi
+dtest -P OpenIB-cma -h server1-ib0
+.PP
+.nf
+.fam C
+ Starts a client process, using OpenIB-cma provider to connect to hostname server1-ib0.
+
+.fam T
+
+.SH SEE ALSO
+.BR dapltest(1)
+
+.SH AUTHORS
+.TP
+Arlin Davis
+.RI < ardavis at ichips.intel.com >
+
+.SH BUGS
+
+
+
+
diff --git a/test/dapltest/Makefile.am b/test/dapltest/Makefile.am
new file mode 100755
index 0000000..0c83924
--- /dev/null
+++ b/test/dapltest/Makefile.am
@@ -0,0 +1,56 @@
+INCLUDES = -I include \
+ -I mdep/linux
+
+bin_PROGRAMS = dapltest
+
+dapltest_SOURCES = \
+ cmd/dapl_main.c \
+ cmd/dapl_params.c \
+ cmd/dapl_fft_cmd.c \
+ cmd/dapl_getopt.c \
+ cmd/dapl_limit_cmd.c \
+ cmd/dapl_netaddr.c \
+ cmd/dapl_performance_cmd.c \
+ cmd/dapl_qos_util.c \
+ cmd/dapl_quit_cmd.c \
+ cmd/dapl_server_cmd.c \
+ cmd/dapl_transaction_cmd.c \
+ test/dapl_bpool.c \
+ test/dapl_client.c \
+ test/dapl_client_info.c \
+ test/dapl_cnxn.c \
+ test/dapl_execute.c \
+ test/dapl_fft_connmgt.c \
+ test/dapl_fft_endpoint.c \
+ test/dapl_fft_hwconn.c \
+ test/dapl_fft_mem.c \
+ test/dapl_fft_pz.c \
+ test/dapl_fft_queryinfo.c \
+ test/dapl_fft_test.c \
+ test/dapl_fft_util.c \
+ test/dapl_limit.c \
+ test/dapl_memlist.c \
+ test/dapl_performance_client.c \
+ test/dapl_performance_server.c \
+ test/dapl_performance_stats.c \
+ test/dapl_performance_util.c \
+ test/dapl_quit_util.c \
+ test/dapl_server.c \
+ test/dapl_server_info.c \
+ test/dapl_test_data.c \
+ test/dapl_test_util.c \
+ test/dapl_thread.c \
+ test/dapl_transaction_stats.c \
+ test/dapl_transaction_test.c \
+ test/dapl_transaction_util.c \
+ test/dapl_util.c \
+ common/dapl_endian.c \
+ common/dapl_global.c \
+ common/dapl_performance_cmd_util.c \
+ common/dapl_quit_cmd_util.c \
+ common/dapl_transaction_cmd_util.c \
+ udapl/udapl_tdep.c \
+ mdep/linux/dapl_mdep_user.c
+
+dapltest_LDADD = $(srcdir)/../../dat/udat/libdat.la
+dapltest_LDFLAGS = -lpthread
diff --git a/test/dapltest/configure.in b/test/dapltest/configure.in
new file mode 100755
index 0000000..ebdd59d
--- /dev/null
+++ b/test/dapltest/configure.in
@@ -0,0 +1,26 @@
+dnl Process this file with autoconf to produce a configure script.
+
+AC_PREREQ(2.57)
+AC_INIT(dapltest, 1.2.1, dapl-devel at lists.sourceforge.net)
+AC_CONFIG_SRCDIR([$top_srcdir/dapl/test/dapltest/cmd/dapl_main.c])
+AC_CONFIG_AUX_DIR(config)
+AM_CONFIG_HEADER(config.h)
+AM_INIT_AUTOMAKE(dapltest, 1.2.1)
+
+AM_PROG_LIBTOOL
+
+dnl Checks for programs
+AC_PROG_CC
+
+dnl Checks for libraries
+if test "$disable_libcheck" != "yes"
+then
+AC_CHECK_LIB(pthread, pthread_attr_init, [],
+ AC_MSG_ERROR([pthread_attr_init() not found, dapltset requires pthreads]))
+fi
+
+dnl Checks for header files.
+
+AC_CONFIG_FILES([Makefile])
+
+AC_OUTPUT
diff --git a/test/dapltest/mdep/linux/dapl_mdep_user.h b/test/dapltest/mdep/linux/dapl_mdep_user.h
index 981783d..c05dd30 100644
--- a/test/dapltest/mdep/linux/dapl_mdep_user.h
+++ b/test/dapltest/mdep/linux/dapl_mdep_user.h
@@ -138,10 +138,16 @@ DT_Mdep_GetTimeStamp ( void )
} while (tbu0 != tbu1);
return (((unsigned long long)tbu0) << 32) | tbl;
#else
+#if defined(__x86_64__)
+ unsigned int __a,__d;
+ asm volatile("rdtsc" : "=a" (__a), "=d" (__d));
+ return ((unsigned long)__a) | (((unsigned long)__d)<<32);
+#else
#error "Non-Pentium and Non-PPC Linux - unimplemented"
#endif
#endif
#endif
+#endif
}
/*
diff --git a/test/dtest/Makefile.am b/test/dtest/Makefile.am
new file mode 100755
index 0000000..ac9837b
--- /dev/null
+++ b/test/dtest/Makefile.am
@@ -0,0 +1,4 @@
+bin_PROGRAMS = dtest
+dtest_SOURCES = dtest.c
+dtest_LDADD = $(srcdir)/../../dat/udat/libdat.la
+
diff --git a/test/dtest/configure.in b/test/dtest/configure.in
new file mode 100755
index 0000000..822df5e
--- /dev/null
+++ b/test/dtest/configure.in
@@ -0,0 +1,21 @@
+dnl Process this file with autoconf to produce a configure script.
+
+AC_PREREQ(2.57)
+AC_INIT(dtest, 1.2.1, dapl-devel at lists.sourceforge.net)
+AC_CONFIG_SRCDIR([$top_srcdir/dapl/test/dtest/dtest.c])
+AC_CONFIG_AUX_DIR(config)
+AM_CONFIG_HEADER(config.h)
+AM_INIT_AUTOMAKE(dtest, 1.2.1)
+
+AM_PROG_LIBTOOL
+
+dnl Checks for programs
+AC_PROG_CC
+
+dnl Checks for libraries
+
+dnl Checks for header files.
+
+AC_CONFIG_FILES([Makefile])
+
+AC_OUTPUT
diff --git a/test/dtest/makefile b/test/dtest/makefile
deleted file mode 100644
index 858d77f..0000000
--- a/test/dtest/makefile
+++ /dev/null
@@ -1,16 +0,0 @@
-CC = gcc
-CFLAGS = -O2 -g
-
-DAT_INC = ../../dat/include
-DAT_LIB = /usr/local/lib
-
-all: dtest
-
-clean:
- rm -f *.o;touch *.c;rm -f dtest
-
-dtest: ./dtest.c
- $(CC) $(CFLAGS) ./dtest.c -o dtest \
- -DDAPL_PROVIDER='"OpenIB-cma"' \
- -I $(DAT_INC) -L $(DAT_LIB) -ldat
-
More information about the general
mailing list