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

EXAMPLES

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