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 -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
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)