dapltest(1)
π dapltest(1) π β USER COMMANDS, bestie edition
πΈ NAME πΈ
dapltest β test for the Direct Access Programming Library (DAPL). That's the whole name, no cap. π«Ά
π¦ DESCRIPTION π¦
Okay so 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.
β¨ USAGE β¨
dapltest [ -f script_file_name ] [ -T S|Q|T|P|L ] [ -D device_name ] [-n port_number] [ -d ] [ -R HT|LL|EC|PM|BE ]
With no arguments, dapltest runs as a server using default values, and loops accepting requests from clients. No thoughts, just server loop. π
The -f option allows all arguments to be placed in a file, to ease test automation. Automation bestie, we love to see it.
The following arguments are common to all tests:
-T S|Q|T|P|Lβ Test function to be performed:Sβ server loopQβ quit, client requests that server wait for any outstanding tests to complete, then clean up and exitTβ transaction test, transfers data between client and serverPβ performance test, times DTO operationsLβ limit test, exhausts various resources, runs in client w/o server interaction Default:S
-D device_nameβ Specifies the interface adapter name as documented in the/etc/dat.confstatic configuration file. This name corresponds to the provider library to open. Default: none-n server_port_numberβ Specifies the starting server port for all tests. Default:45278-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-R BEβ Indicate the quality of service (QoS) desired. Choices are:HTβ high throughputLLβ low latencyECβ economy (neither HT nor LL)PMβ premiumBEβ best effort Default:BE
πͺ Usage - Quit test client πͺ
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. Manners? In my Unix? More likely than you think. π
There is only one argument other than those supported by all tests:
-s server_nameβ Specifies the name of the server interface. No default.
ποΈ Usage - Transaction test client ποΈ
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). It's giving data movement main character energy. β¨
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: offOP1 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/recvRRβ RDMA readRWβ 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.
ποΈ Usage - Performance test client ποΈ
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. Timing, timing, timing, periodt. β±οΈ
The following parameters determine the behavior of the 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 pipeline length, valid arguments are in the range[0,MAX_SEND_DTOS]. If a value greater thanMAX_SEND_DTOSis requested the value will be adjusted down toMAX_SEND_DTOS. Default:MAX_SEND_DTOSOPβ Specifies the operation as follow:RR|RWβ Indicates the type of transfer:RRβ RDMA readRWβ 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)
π§ͺ Usage - Limit test client π§ͺ
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. Resource go brrr until it can't no more. π
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 essentially unlimited numbers of some objects.
The limit test arguments are:
-m maximumβ Specify the maximum number ofdapl_*_create()attempts. Default: run to object creation failure-w widthβ Specify the number of DAPL object sets to create while initializing. Default:1limit_iaβ Attempt to exhaustdat_ia_open()limit_pzβ Attempt to exhaustdat_pz_create()limit_cnoβ Attempt to exhaustdat_cno_create()limit_evdβ Attempt to exhaustdat_evd_create()limit_epβ Attempt to exhaustdat_ep_create()limit_rspβ Attempt to exhaustdat_rsp_create()limit_pspβ Attempt to exhaustdat_psp_create()limit_lmrβ Attempt to exhaustdat_lmr_create(4KB)limit_rpostβ Attempt to exhaustdat_ep_post_recv(4KB)limit_size_lmrβ Probe maximum sizedat_lmr_create()
Default: run all tests
β¨ EXAMPLES β¨
Okay bestie, here's where it gets fun. All the commands are literally ready to copy-paste, no cap. π
Example 1: server mode, but make it debug π₯οΈ
dapltest -T S -d -D OpenIB-cma -n 53000
Starts a server process with debug verbosity, on server port 53000. Iconic server behavior, honestly. π«Ά
Example 2: transaction test with two 4KB segments π§
dapltest -T T -d -s host1-ib0 -D OpenIB-cma -n 53000 -i 100 client SR
4096 2 server SR 4096 2
Runs a transaction test, with both sides sending one buffer with two 4KB segments, one hundred times. To server host1-ib0 on port 53000. Periodt. β¨
Example 3: performance test, client goes brrr π
dapltest -T P -d -s host1-ib0 -D OpenIB-cma -i 100 RW 4096 2
Runs a performance test, with the client sending one buffer with two 4KB segments, one hundred times. Fast girl energy. π¨
Example 4: clean up and exit, bye bestie π
dapltest -T Q -s host1-ib0 -D OpenIB-cma
Asks the server to clean up and exit. Polite queen behavior. π
Example 5: all the limit tests π§ͺ
dapltest -T L -D OpenIB-cma -d -w 16 -m 1000
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. Stress testing? We love to see it. ππ₯
Example 6: the complicated one, stay with me π
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
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. This one is giving main character energy, fr fr. ππ
π BUGS (and To Do List) π
- Use of CNOs (
-Q) is not yet supported. Not me waiting for this feature. π - Further limit tests could be added. Manifesting more tests soon. β¨
π SEE ALSO π
dtest(1), dtestx(1), dtestcm(1), dtestsrq(1) β go read those too, bestie. iykyk. π¦
π AUTHORS π
Arlin Davis <arlin.r.davis@intel.com> β thank you for your service, legend. π«Άπ
And that's the whole vibe! This page is from uDAPL 2.1, dated November 15, 2016, and it's all about dapltest(1). Slay, bye! π
β¨π
π¦ where this page comes from
- debian bookworm: dapl2-utils 2.1.10.1.f1e05b7a-3+b1 Β· CPL-1.0 OR BSD-3-Clause OR GPL-2.0-only
- ubuntu jammy: dapl2-utils 2.1.10.1.f1e05b7a-3 Β· CPL-1.0 OR BSD-3-Clause OR GPL-2.0-only
- ubuntu noble: dapl2-utils 2.1.10.1.f1e05b7a-3build2 Β· CPL-1.0 OR BSD-3-Clause OR GPL-2.0-only
- ubuntu resolute: dapl2-utils 2.1.10.1.f1e05b7a-3build2 Β· CPL-1.0 OR BSD-3-Clause OR GPL-2.0-only
- ubuntu stonking: dapl2-utils 2.1.10.1.f1e05b7a-3build2 Β· CPL-1.0 OR BSD-3-Clause OR GPL-2.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms