1dapltest(1) USER COMMANDS dapltest(1)
2
3
4
6 dapltest - test for the Direct Access Programming Library (DAPL)
7
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
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
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)