table of contents
perftest(1) | General Commands Manual | perftest(1) |
NAME¶
ib_write_bw, ib_read_bw, ib_send_bw, ib_atomic_bw, ib_write_lat, ib_read_lat, ib_send_lat, ib_atomic_lat, raw_ethernet_bw, raw_ethernet_lat, raw_ethernet_burst_lat, raw_ethernet_fs_rate - benchmarks for various types of infinabnd performance
DESCRIPTION¶
- Perftest is a package that includes various benchmarks that measures
- different metrics & verbs performance which include many different options and modes.
RUNNING TESTS¶
- Server:
-
./<test name> <options> - Client:
-
./<test name> <options> <server IP address> - Examples:
-
1- Running bidirectional bandwidth test using Write verb for 5 seconds with 8388608 as a message size and 3 qps:
Server: ./ib_write_bw -s 8388608 -b -D 5 -q 3
Client: ./ib_write_bw -s 8388608 -b -D 5 -q 3 1.1.1.2
2- Running latency test using Read verb for 5000 iterations with 32 as a message size:
Server: ./ib_read_lat -s 32 -n 5000
Client: ./ib_read_lat -s 32 -n 5000 192.168.0.1
IMPORTANT NOTES¶
-
1- The options that specific to modes in perftest must be the same for both server and client. -
2- Perftest applications may need to be ran with sudo when running from non root.
3- Perftest applications usually installed to the /usr/bin/.
4- Perftest may print some failures with syndroms to the stderr, perftest get those errors from rdma-core.
OPTIONS¶
- -h, --help
-
Lists the available options to the screen. - -a, --all
-
Run sizes from 2 till 2^23.
Not relevant for Atomic and RawEth. - -A, --atomic_type=<type>
-
Type of atomic operation from {CMP_AND_SWAP,FETCH_AND_ADD} (default FETCH_AND_ADD).
Relevant only for Atomic. - -b, --bidirectional
-
Measure bidirectional bandwidth (default unidirectional).
Relevant only for BW. - -c, --connection=<RC/XRC/UC/UD/DC/SRD>
-
Connection type RC/XRC/UC/UD/DC/SRD (default RC).
UD relevant only for Send verb.
SRD relevant only for Read, Write and Send verbs.
UC relevant only for Write and Send verbs.
Not relevant for RawEth. - --log_dci_streams=<log_num_dci_stream_channels> (default 0)
-
Run DC initiator as DCS instead of DCI with <log_num dci_stream_channels>.
Not relevant for RawEth.
System support required. - --log_active_dci_streams=<log_num_active_dci_stream_channels> (default log_num_dci_stream_channels)
-
Not relevant for RawEth.
System support required. - --aes_xts
-
Runs traffic with AES_XTS feature (encryption).
Not relevant for RawEth and Write latency.
System support required. - --encrypt_on_tx
-
Runs traffic with encryption on tx (default decryption on tx).
Not relevant for RawEth and Write latency.
System support required. - --sig_before
-
Puts signature on data before encrypting it (default after).
Not relevant for RawEth and Write latency.
System support required. - --aes_block_size=<512,520,4048,4096,4160> (default 512)
-
Not relevant for RawEth and Write latency.
System support required. - --data_enc_keys_number=<number of data encryption keys> (default 1)
-
Not relevant for RawEth and Write latency.
System support required. - --kek_path <path to the key encryption key file>
-
Not relevant for RawEth and Write latency.
System support required. - --credentials_path <path to the credentials file>
-
Not relevant for RawEth and Write latency.
System support required. - --data_enc_key_app_path <path to the data encryption key app>
-
Not relevant for RawEth and Write latency.
System support required. - -C, --report-cycles
-
Report times in cpu cycle units (default microseconds).
Relevant only for latency. - -d, --ib-dev=<dev>
-
Use IB device <dev> (default first device found). - -D, --duration
-
Run test for a customized period of seconds. - -e, --events
-
Sleep on CQ events (default poll).
Not relevant for Write and RawEth. - -X, --vector=<completion vector>
-
Set <completion vector> used for events.
Not relevant for Write and RawEth. - -f, --margin
-
measure results within margins. (default=2sec). - -F, --CPU-freq
-
Do not show a warning even if cpufreq_ondemand module is loaded, and cpu-freq is not on max. - -g, --mcg
-
Send messages to multicast group with 1 QP attached to it.
When there is no multicast gid specified, a default IPv6 typed gid '255:1:0:0:0:2:201:133:0:0:0:0:0:0:0:0' will be used.
Relevant only for send non fsRate. - -H, --report-histogram
-
Print out all results (default print summary only).
Relevant only for latency and raw_ethernet_fs_rate. - -i, --ib-port=<port>
-
Use port <port> of IB device (default 1). - -I, --inline_size=<size>
-
Max size of message to be sent in inline.
Not relevant for Read and Atomic. - -l, --post_list=<list size>
-
Post list of send WQEs of <list size> size (instead of single post).
Relevant only for BW and raw_ethernet_burst_lat. - --recv_post_list=<list size>
-
Post list of receive WQEs of <list size> size (instead of single post).
Relevant only for BW and raw_ethernet_burst_lat. - -L, --hop_limit=<hop_limit>
-
Set hop limit value (ttl for IPv4 RawEth QP). Values 0-255 (default 64).
Relevant only for RawEth
Not relevant for raw_ethernet_fs_rate. - -m, --mtu=<mtu>
-
MTU size : 64 - 9600 (default port mtu) for RawEth else 256 - 4096.
Not relevant for raw_ethernet_fs_rate. - -M, --MGID=<multicast_gid>
-
In multicast, uses <multicast_gid> as the group MGID.
<multicast_gid> can be either decimal or hexadecimal, e.g. regarding the IPv4 224.0.0.30 :
Decimal: 0:0:0:0:0:0:0:0:0:0:255:255:224:0:0:30 , Hexadecimal: 0:0:0:0:0:0:0:0:0:0:0xff:0xff:0xe0:0:0:0x1e
Relevant only for send non fsRate. - -n, --iters=<iters>
-
Number of exchanges (at least 5, default for write 5000 else 1000 ). - -N, --noPeak
-
Cancel peak-bw calculation (default with peak up to iters=20000).
Relevant only for bandwidth. - -o, --outs=<num>
-
Relevant only for Read and Atomic. - -O, --dualport
-
Run test in dual-port mode.
Not relevant for RawEth.
Relevant only for bandwidth.
System support required. - -p, --port=<port>
-
Listen on/connect to port <port> (default 18515). - -q, --qp=<num of qp's>
-
Num of qp's(default 1).
Relevant only for bandwidth. - -Q, --cq-mod
-
Generate Cqe only after <--cq-mod> completion.
Relevant only for bandwidth. - -r, --rx-depth=<dep>
-
Rx queue size (default 512), if using srq, rx-depth controls max-wr size of the srq.
Relevant only for send non fsRate. - -R, --rdma_cm
-
Connect QPs with rdma_cm and run test on those QPs.
Not relevant for RawEth. - -s, --size=<size>
-
Size of message to exchange (default 65536 for bw, for lat 2).
Not relevant for Atomic. - -S, --sl=<sl>
-
SL (default 0).
Not relevant for raw_ethernet_fs_rate. - -t, --tx-depth=<dep>
-
Size of tx queue (default 128 for bw else 1).
Relevant only for bw and raw_ethernet_burst_lat. - -T, --tos=<tos value>
-
Set <tos_value> to RDMA-CM QPs. available only with -R flag. values 0-256 (default off).
Not relevant for RawEth - -u, --qp-timeout=<timeout>
-
QP timeout, timeout value is 4 usec * 2 ^(timeout), default 14. - -U, --report-unsorted
-
(implies -H) print out unsorted results (default sorted).
Relevant only for latency and raw_ethernet_burst_lat and raw_ethernet_fs_rate. - -V, --version
-
Display perftest version number. - -W, --report-counters=<list of counter names>
-
Report performance counter change (example: counters/port_xmit_data,hw_counters/out_of_buffer). - -x, --gid-index=<index>
-
Test uses GID with GID index.
Not relevant for RawEth. - -z, --comm_rdma_cm
-
Communicate with rdma_cm module to exchange data - use regular QPs.
Not relevant for RawEth. - --out_json
-
Save the report in a json file. - --out_json_file=<file>
-
Name of the report json file. (Default: "perftest_out.json" in the working directory). - --cpu_util
-
Show CPU Utilization in report, valid only in Duration mode. - --dlid
-
Set a Destination LID instead of getting it from the other side.
Not relevant for raw_ethernet_fs_rate. - --dont_xchg_versions
-
Do not exchange versions and MTU with other side.
Not relevant for RawEth. - --force-link=<value>
-
Force the link(s) to a specific type: IB or Ethernet.
Not relevant for raw_ethernet_fs_rate. - --use-srq
-
Use a Shared Receive Queue. --rx-depth controls max-wr size of the SRQ.
Relevant only for Send. - --ipv6
-
Use IPv6 GID. Default is IPv4.
Not relevant for RawEth. - --ipv6-addr=<IPv6>
-
Use IPv6 address for parameters negotiation. Default is IPv4.
Not relevant for RawEth. - --bind_source_ip
-
Source IP of the interface used for connection establishment. By default taken from routing table.
Not relevant for RawEth. - --latency_gap=<delay_time>
-
delay time between each post send.
Relevant only for latency. - --mmap=file
-
Use an mmap'd file as the buffer for testing P2P transfers.
Not relevant for RawEth. - --mmap-offset=<offset>
-
The mmap offset.
Not relevant for RawEth. - --mr_per_qp
-
Create memory region for each qp.
Relevant only for bandwidth. - --odp
-
Use On Demand Paging instead of Memory Registration.
System support required. - --output=<units>
-
Set verbosity output level: bandwidth , message_rate, latency.
Latency measurement is Average calculation.
bw (bandwidth / message_rate), latency (latency). - --payload_file_path=<payload_txt_file_path>
-
Set the payload by passing a txt file containing a pattern in the next form(little endian): '0xaaaaaaaa, 0xbbbbbbbb, ...
Not relevant for RawEth and Write latency. - --use_old_post_send
-
Use old post send flow (ibv_post_send). - --perform_warm_up
-
Perform some iterations before start measuring in order to warming-up memory cache.
Not relevant for raw_ethernet_fs_rate. - --pkey_index=<pkey index>
-
PKey index to use for QP.
Not relevant for raw_ethernet_fs_rate. - --report-both
-
Report RX & TX results separately on Bidirectional BW tests.
Relevant only for bidirectional bandwidth. - --report_gbits
-
Report Max/Average BW of test in Gbit/sec (instead of MiB/sec).
Relevant only for bandwidth. - --report-per-port
-
Report BW data on both ports when running Dualport and Duration mode.
Not relevant for RawEth.
System support required. - --reversed
-
Reverse traffic direction - Server send to client. - --run_infinitely
-
Run test forever, print results every <duration> seconds. - --retry_count=<value>
-
Set retry count value in rdma_cm mode.
Relevant only for rdma_cm mode.
Not relevant for RawEth. - --tclass=<value>
-
Set the Traffic Class in GRH (if GRH is in use).
Not relevant for raw_ethernet_fs_rate. - --use-null-mr
-
Allocate a null memory region for the client with ibv_alloc_null_mr(3) - --use_cuda=<cuda device id>
-
Use CUDA specific device for GPUDirect RDMA testing.
Not relevant for raw_ethernet_fs_rate.
System support required. - --use_cuda_bus_id=<cuda full BUS id>
-
Use CUDA specific device, based on its full PCIe address, for GPUDirect RDMA testing.
Not relevant for raw_ethernet_fs_rate.
System support required. - --use_cuda_dmabuf
-
Use CUDA DMA-BUF for GPUDirect RDMA testing.
Not relevant for raw_ethernet_fs_rate.
System support required. - --use_hl=<hl device id>
-
Use HabanaLabs specific device for HW accelerator direct RDMA testing.
System support required. - --use_neuron=<logical neuron core id>
-
Use Neuron specific device for HW accelerator direct RDMA testing.
System support required. - --use_neuron_dmabuf
-
Use Neuron DMA-BUF for HW accelerator direct RDMA testing.
System support required. - --use_rocm=<rocm device id>
-
Use selected ROCm device for GPUDirect RDMA testing.
Not relevant for raw_ethernet_fs_rate.
System support required. - --use_hugepages
-
Use Hugepages instead of contig, memalign allocations.
Not relevant for raw_ethernet_fs_rate. - --wait_destroy=<seconds>
-
Wait <seconds> before destroying allocated resources (QP/CQ/PD/MR..).
Relevant only for bandwidth and raw_ethernet_burst_lat. - --disable_pcie_relaxed
-
Disable PCIe relaxed ordering.
Relevant only for bandwidth and raw_ethernet_burst_lat.
System support required. - --burst_size=<size>
-
Set the amount of messages to send in a burst when using rate limiter.
Relevant only for bandwidth and raw_ethernet_burst_lat. - --typical_pkt_size=<bytes>
-
Set the size of packet to send in a burst. Only supports PP rate limiter.
Relevant only for bandwidth and raw_ethernet_burst_lat. - --rate_limit=<rate>
-
Set the maximum rate of sent packages. default unit is [Gbps]. use --rate_units to change that.
Relevant only for bandwidth and raw_ethernet_burst_lat. - --rate_units=<units>
-
[Mgp] Set the units for rate limit to MiBps (M), Gbps (g) or pps (p). default is Gbps (g).
Relevant only for bandwidth and raw_ethernet_burst_lat. - --rate_limit_type=<type>
-
[HW/SW/PP] Limit the QP's by HW, PP or by SW. Disabled by default. When rate_limit is not specified HW limit is Default.
Relevant only for bandwidth and raw_ethernet_burst_lat. - --use_ooo
-
Use out of order data placement.
System support required. - --write_with_imm
-
Use write-with-immediate verb instead of write.
Write tests only.
RawEth only options¶
- -B, --source_mac
-
Source MAC address by this format XX:XX:XX:XX:XX:XX **MUST** be entered. - -E, --dest_mac
-
Destination MAC address by this format XX:XX:XX:XX:XX:XX **MUST** be entered. - -G, --use_rss
-
Use RSS on server side. need to open 2^x qps (using -q flag. default is -q 2). open 2^x clients that transmit to this server. - -J, --dest_ip
-
Destination ip address by this format X.X.X.X for IPv4 or X:X:X:X:X:X for IPv6 (using to send packets with IP header).
System support required for IPv6. - -j, --source_ip
-
Source ip address by this format X.X.X.X for IPv4 or X:X:X:X:X:X for IPv6 (using to send packets with IP header).
System support required for IPv6. - -K, --dest_port
-
Destination port number (using to send packets with UDP header as default, or you can use --tcp flag to send TCP Header). - -k, --source_port
-
Source port number (using to send packets with UDP header as default, or you can use --tcp flag to send TCP Header). - -Y, --ethertype
-
Ethertype value in the ethernet frame by this format 0xXXXX. - -Z, --server
-
Choose server side for the current machine (--server/--client must be selected ). - --vlan_en
-
Insert vlan tag in ethernet header. - --vlan_pcp
-
Specify vlan_pcp value for vlan tag, 0~7. 8 means different vlan_pcp for each packet. - -P, --client
-
Choose client side for the current machine (--server/--client must be selected).
Not relevant for raw_ethernet_fs_rate. - -v, --mac_fwd
-
Run mac forwarding test.
Not relevant for raw_ethernet_fs_rate. - --flows
-
Set number of TCP/UDP flows, starting from <src_port, dst_port>.
Not relevant for raw_ethernet_fs_rate. - --flows_burst
-
Set number of burst size per TCP/UDP flow.
Not relevant for raw_ethernet_fs_rate. - --promiscuous
-
Run promiscuous mode.
Not relevant for raw_ethernet_fs_rate. - --reply_every
-
In latency test, receiver pong after number of received pings.
Not relevant for raw_ethernet_fs_rate. - --sniffer
-
Run sniffer mode.
Not relevant for raw_ethernet_fs_rate.
System support required. - --flow_label
-
IPv6 flow label.
Not relevant for raw_ethernet_fs_rate. - --tcp
-
Send TCP Packets. must include IP and Ports information. - --raw_ipv6
-
Send IPv6 Packets.
System support required. - --raw_mcast.
-
Relevant only for bandwidth.