Benchmarking¶
DAQIRI ships with several stream types to handle different types of incoming and outgoing streams. Choosing the stream type depends on the type of sensor being used and its capabilities. The stream_type is decided from the decision tree below:
Choose a stream type¶
| Use case | DAQIRI config | Benchmark | Start here |
|---|---|---|---|
| Ingest from or egress to a programmable PCIe sensor, such as an FPGA on the PCIe bus. | stream_type: "pcie" |
n/a | Under development (see note below). |
| Compare against normal Linux networking, run on a non-NVIDIA NIC, or test a peer that speaks TCP/UDP sockets. | stream_type: "socket" with tcp:// or udp:// endpoints |
daqiri_bench_socket |
Socket and RDMA Benchmarking |
| Test a peer that already implements RDMA verbs over RoCE. | stream_type: "socket" and roce:// endpoints |
daqiri_bench_rdma |
Socket and RDMA Benchmarking |
| Drive raw Ethernet packets directly from an NVIDIA NIC under DAQIRI control. | stream_type: "raw" |
daqiri_bench_raw_gpudirect and the other raw_* benches |
Raw Ethernet Benchmarking |
PCIe stream type status
The PCIe programmable-sensor path is under development. Once completed it will allow 3rd party PCIe devices to read from and write to the GPU's BAR1 memory.
Why RDMA is listed under socket
The RoCE benchmark uses the connection-oriented socket/RDMA configuration model. The executable is named daqiri_bench_rdma to show the RDMA-specific API calls.
Common benchmark workflow¶
-
Build the examples with the engines you plan to test. The default container build enables every stream type:
-
Pick the physical pair or host pair that should carry the traffic. For same-host Spark wire tests, prefer a client namespace and a server namespace so the route cannot silently fall back to loopback.
-
Prove the direction with hardware counters before trusting bandwidth numbers. For one-way client-to-server tests, the important counters are the client-side
tx_packets_phy/tx_bytes_phyand the server-siderx_packets_phy/rx_bytes_phy. -
Run the DAQIRI benchmark and a known baseline such as
iperf3orib_send_bwwith the same namespace, interface, and message-size assumptions. -
Monitor line rate with NIC counters or
mlnx_perf; application-side byte counts are useful, but hardware counters answer whether packets actually reached the physical path.
Page map¶
- Socket and RDMA Benchmarking covers Linux TCP/UDP and RoCE/RDMA runs with matching client/server namespace setup.
- Raw Ethernet Benchmarking covers the DPDK/raw Ethernet examples, hugepage sizing, physical loopback configuration, and raw benchmark troubleshooting.
- Understanding the Configuration File explains the YAML fields once you have selected the stream type and example config.