1dapltest(1)                      USER COMMANDS                     dapltest(1)
2
3
4

NAME

6        dapltest - test for the Direct Access Programming Library (DAPL)
7

DESCRIPTION

9       Dapltest  is  a  set  of tests developed to exercise, characterize, and
10       verify the DAPL interfaces during development and  porting.   At  least
11       two  instantiations  of  the  test must be run. One acts as the server,
12       fielding requests and spawning  server-side  test  threads  as  needed.
13       Other client invocations connect to the server and issue test requests.
14       The server side of the test, once  invoked,  listens  continuously  for
15       client  connection  requests,  until  quit or killed. Upon receipt of a
16       connection request, the  connection  is  established,  the  server  and
17       client  sides swap version numbers to verify that they are able to com‐
18       municate, and the client sends the test request to the server.  If  the
19       version  numbers match, and the test request is well-formed, the server
20       spawns the threads needed to run the test before awaiting further  con‐
21       nections.
22

USAGE

24       dapltest  [ -f script_file_name ] [ -T S|Q|T|P|L ] [ -D device_name ] [
25       -d ] [ -R HT|LL|EC|PM|BE ]
26
27       With no arguments, dapltest runs as a server using default values,  and
28       loops accepting requests from clients.
29
30       The -f option allows all arguments to be placed in a file, to ease test
31       automation.
32
33       The following arguments are common to all tests:
34
35       [ -T S|Q|T|P|L ]
36              Test function to be performed:
37
38              S      - server loop
39
40              Q      - quit, client requests that server  wait  for  any  out‐
41                     standing tests to complete, then clean up and exit
42
43              T      -  transaction  test,  transfers  data between client and
44                     server
45
46              P      - performance test, times DTO operations
47
48              L      - limit test, exhausts various resources, runs in  client
49                     w/o server interaction Default: S
50
51       [ -D device_name ]
52              Specifies  the  interface  adapter  name  as  documented  in the
53              /etc/dat.conf static configuration file. This  name  corresponds
54              to the provider library to open.  Default: none
55
56       [ -d ] Enables  extra debug verbosity, primarily tracing of the various
57              DAPL operations as  they  progress.   Repeating  this  parameter
58              increases  debug  spew.   Errors  encountered result in the test
59              spewing some explanatory text and stopping; this  flag  provides
60              more detail about what lead up to the error.  Default: zero
61
62       [ -R BE ]
63              Indicate the quality of service (QoS) desired.  Choices are:
64
65              HT     - high throughput
66
67              LL     - low latency
68
69              EC     - economy (neither HT nor LL)
70
71              PM     - premium
72
73              BE     - best effort Default: BE
74
75       Usage - Quit test client
76
77           dapltest [Common_Args] [ -s server_name ]
78
79           Quit testing (-T Q) connects to the server to ask it to clean up and
80           exit (after it waits for any outstanding test runs to complete).
81           In addition to being more polite than simply killing the server,
82           this test exercises the DAPL object teardown code paths.
83           There is only one argument other than those supported by all tests:
84
85           -s server_name      Specifies the name of the server interface.
86                               No default.
87
88
89       Usage - Transaction test client
90
91           dapltest [Common_Args] [ -s server_name ]
92                    [ -t threads ] [ -w endpoints ] [ -i iterations ] [ -Q ]
93                    [ -V ] [ -P ] OPclient OPserver [ op3,
94
95           Transaction testing (-T T) transfers a variable amount of data between
96           client and server.  The data transfer can be described as a sequence of
97           individual operations; that entire sequence is transferred 'iterations'
98           times by each thread over all of its endpoint(s).
99
100           The following parameters determine the behavior of the transaction test:
101
102           -s server_name      Specifies the name or IP address of the server interface.
103                               No default.
104
105           [ -t threads ]      Specify the number of threads to be used.
106                               Default: 1
107
108           [ -w endpoints ]    Specify the number of connected endpoints per thread.
109                               Default: 1
110
111           [ -i iterations ]   Specify the number of times the entire sequence
112                               of data transfers will be made over each endpoint.
113                               Default: 1000
114
115           [ -Q ]              Funnel completion events into a CNO.
116                               Default: use EVDs
117
118           [ -V ]              Validate the data being transferred.
119                               Default: ignore the data
120
121           [ -P ]              Turn on DTO completion polling
122                               Default: off
123
124           OP1 OP2 [ OP3, ... ]
125                               A single transaction (OPx) consists of:
126
127                               server|client   Indicates who initiates the
128                                               data transfer.
129
130                               SR|RR|RW        Indicates the type of transfer:
131                                               SR  send/recv
132                                               RR  RDMA read
133                                               RW  RDMA write
134                               Defaults: none
135
136                               [ seg_size [ num_segs ] ]
137                                               Indicates the amount and format
138                                               of the data to be transferred.
139                                               Default:  4096  1
140                                                         (i.e., 1 4KB buffer)
141
142                               [ -f ]          For SR transfers only, indicates
143                                               that a client's send transfer
144                                               completion should be reaped when
145                                               the next recv completion is reaped.
146                                               Sends and receives must be paired
147                                               (one client, one server, and in that
148                                               order) for this option to be used.
149
150           Restrictions:
151
152           Due to the flow control algorithm used by the transaction test, there
153           must be at least one SR OP for both the client and the server.
154
155           Requesting data validation (-V) causes the test to automatically append
156           three OPs to those specified. These additional operations provide
157           synchronization points during each iteration, at which all user-specified
158           transaction buffers are checked. These three appended operations satisfy
159           the "one SR in each direction" requirement.
160
161           The transaction OP list is printed out if -d is supplied.
162
163       Usage - Performance test client
164
165           dapltest [Common_Args] -s server_name [ -m p|b ]
166                    [ -i iterations ] [ -p pipeline ] OP
167
168           Performance testing (-T P) times the transfer of an operation.
169           The operation is posted 'iterations' times.
170
171           The following parameters determine the behavior of the transaction test:
172
173           -s server_name      Specifies the name or IP address of the server interface.
174                               No default.
175
176           -m b|p              Used to choose either blocking (b) or polling (p)
177                               Default: blocking (b)
178
179           [ -i iterations ]   Specify the number of times the entire sequence
180                               of data transfers will be made over each endpoint.
181                               Default: 1000
182
183           [ -p pipeline ]     Specify the pipline length, valid arguments are in
184                               the range [0,MAX_SEND_DTOS]. If a value greater than
185                               MAX_SEND_DTOS is requested the value will be
186                               adjusted down to MAX_SEND_DTOS.
187                               Default: MAX_SEND_DTOS
188
189           OP                  Specifies the operation as follow:
190
191                               RR|RW           Indicates the type of transfer:
192                                               RR  RDMA read
193                                               RW  RDMA write
194                                               Defaults: none
195
196                               [ seg_size [ num_segs ] ]
197                                               Indicates the amount and format
198                                               of the data to be transferred.
199                                               Default:  4096  1
200                                                         (i.e., 1 4KB buffer)
201
202       Usage - Limit test client
203
204           Limit testing (-T L) neither requires nor connects to any server
205           instance.  The client runs one or more tests which attempt to
206           exhaust various resources to determine DAPL limits and exercise
207           DAPL error paths.  If no arguments are given, all tests are run.
208
209           Limit testing creates the sequence of DAT objects needed to
210           move data back and forth, attempting to find the limits supported
211           for the DAPL object requested.  For example, if the LMR creation
212           limit is being examined, the test will create a set of
213           {IA, PZ, CNO, EVD, EP} before trying to run dat_lmr_create() to
214           failure using that set of DAPL objects.  The 'width' parameter
215           can be used to control how many of these parallel DAPL object
216           sets are created before beating upon the requested constructor.
217           Use of -m limits the number of dat_*_create() calls that will
218           be attempted, which can be helpful if the DAPL in use supports
219           essentailly unlimited numbers of some objects.
220
221           The limit test arguments are:
222
223           [ -m maximum ]      Specify the maximum number of dapl_*_create()
224                               attempts.
225                               Default: run to object creation failure
226
227           [ -w width ]        Specify the number of DAPL object sets to
228                               create while initializing.
229                               Default: 1
230
231           [ limit_ia ]        Attempt to exhaust dat_ia_open()
232
233           [ limit_pz ]        Attempt to exhaust dat_pz_create()
234
235           [ limit_cno ]       Attempt to exhaust dat_cno_create()
236
237           [ limit_evd ]       Attempt to exhaust dat_evd_create()
238
239           [ limit_ep ]        Attempt to exhaust dat_ep_create()
240
241           [ limit_rsp ]       Attempt to exhaust dat_rsp_create()
242
243           [ limit_psp ]       Attempt to exhaust dat_psp_create()
244
245           [ limit_lmr ]       Attempt to exhaust dat_lmr_create(4KB)
246
247           [ limit_rpost ]     Attempt to exhaust dat_ep_post_recv(4KB)
248
249           [ limit_size_lmr ]  Probe maximum size dat_lmr_create()
250
251                               Default: run all tests
252
253
254

EXAMPLES

256       dapltest -T S -d -D OpenIB-cma
257
258                               Starts a server process with debug verbosity.
259
260       dapltest  -T  T  -d  -s host1-ib0 -D OpenIB-cma -i 100 client SR 4096 2
261       server SR 4096 2
262
263                               Runs a transaction test, with both sides
264                               sending one buffer with two 4KB segments,
265                               one hundred times.
266
267       dapltest -T P -d -s host1-ib0 -D OpenIB-cma -i 100 RW 4096 2
268
269                               Runs a performance test, with the client
270                               sending one buffer with two 4KB segments,
271                               one hundred times.
272
273       dapltest -T Q -s host1-ib0 -D OpenIB-cma
274
275                               Asks the server to clean up and exit.
276
277       dapltest -T L -D OpenIB-cma -d -w 16 -m 1000
278
279                               Runs all of the limit tests, setting up
280                               16 complete sets of DAPL objects, and
281                               creating at most a thousand instances
282                               when trying to exhaust resources.
283
284       dapltest -T T -V -d -t 2 -w 4 -i 55555 -s linux3 -D  OpenIB-cma  client
285       RW  4096 1 server RW 2048 4 client SR 1024 4 server SR 4096 2 client SR
286       1024 3 -f server SR 2048 1 -f
287
288                               Runs a more complicated transaction test,
289                               with two thread using four EPs each,
290                               sending a more complicated buffer pattern
291                               for a larger number of iterations,
292                               validating the data received.
293
294
295
296       BUGS   (and  To Do List)
297
298           Use of CNOs (-Q) is not yet supported.
299
300           Further limit tests could be added.
301
302
303
304uDAPL 1.2                      February 23, 2007                   dapltest(1)
Impressum