fi_pingpong - Quick and simple pingpong test for libfabric
fi_pingpong is a pingpong test for the core feature of the libfabric library:
transmitting data between two processes. fi_pingpong also displays aggregated
statistics after each test run, and can additionally verify data integrity
fi_pingpong [OPTIONS] start server
fi_pingpong [OPTIONS] <server address> connect to server
By default, the datagram (FI_EP_DGRAM) endpoint is used for the
test, unless otherwise specified via -e.
Two copies of the program must be launched: first, one copy must be launched as
the server. Second, another copy is launched with the address of the server.
As a client-server test, each have the following usage model:
The server and client must be able to communicate properly for the fi_pingpong
utility to function. If any of the -e, -I, -S, or -p options are used, then
they must be specified on the invocation for both the server and the client
process. If the -d option is specified on the server, then the client will
select the appropriate domain if no hint is provided on the client side. If
the -d option is specified on the client, then it must also be specified on
the server. If both the server and client specify the -d option and the given
domains cannot communicate, then the application will fail.
client$ fi_pingpong <server address>
- -B <src_port>
- The non-default source port number of the control socket. If this is not
provided then the server will bind to port 47592 by default and the client
will allow the port to be selected automatically.
- -P <dest_port>
- The non-default destination port number of the control socket. If this is
not provided then the client will connect to 47592 by default. The server
ignores this option.
- -p <provider_name>
- The name of the underlying fabric provider (e.g., sockets, psm, usnic,
etc.). If a provider is not specified via the -p switch, the test will
pick one from the list of available providers (as returned by
- -e <endpoint>
- The type of endpoint to be used for data messaging between the two
processes. Supported values are dgram, rdm, and msg. For more information
on endpoint types, see fi_endpoint(3).
- -d <domain>
- The name of the specific domain to be used.
- -I <iter>
- The number of iterations of the test will run.
- -S <msg_size>
- The specific size of the message in bytes the test will use or `all' to
run all the default sizes.
- Activate data integrity checks at the receiver (note: this will degrade
server$ fi_pingpong -p sockets
client$ fi_pingpong -p sockets 192.168.0.123
server$ fi_pingpong -p usnic -I 1000 -S 1024
client$ fi_pingpong -p usnic -I 1000 -S 1024 192.168.0.123
- Activate output debugging (warning: highly verbose)
- Displays help output for the pingpong test.
Specifically, this will run a pingpong test with:
server$ fi_pingpong -p usnic -I 10000 -S all
client$ fi_pingpong -p usnic -I 10000 -S all 192.168.0.123
There is no default provider; if a provider is not specified via the -p switch,
the test will pick one from the list of available providers (as returned by
- usNIC provider
- 1000 iterations
- 1024 bytes message size
- server node as 192.168.0.123
If no endpoint type is specified, `dgram' is used.
The default tested sizes are: 64, 256, 1024, 4096, 65536, and
1048576. The test will only test sizes that are within the selected
endpoints maximum message size boundary.
Each test generates data messages which are accounted for. Specifically, the
displayed statistics at the end are :
fi_getinfo(3), fi_endpoint(3) fabric(7),
- bytes : number of bytes per message sent
- #sent : number of messages (ping) sent from the client to the
- #ack : number of replies (pong) of the server received by the
- total : amount of memory exchanged between the processes
- time : duration of this single test
- MB/sec : throughput computed from total and time
- usec/xfer : average time for transferring a message outbound (ping
or pong) in microseconds
- Mxfers/sec : average amount of transfers of message outbound per
Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.