DAQIRI Raw Ethernet Benchmark#
Authors: Cliff Burdick (NVIDIA)
Supported platforms: x86_64, aarch64
Language: Python, C++
Last modified: June 10, 2026
Latest version: 1.4
Minimum Holoscan SDK version: 0.6.0
Tested Holoscan SDK versions: 0.6.0
Contribution metric: Level 1 - Highly Reliable
[!TIP] Review the System Configuration tutorial for guided instructions to configure your system and test DAQIRI.
This sample application measures raw DAQIRI DPDK transmit and receive throughput using the single
daqiri_raw_ethernet_bench_default_tx_rx.yaml configuration. The benchmark sends UDP packets from one
configured interface and receives them on another configured interface.
The performance of this application depends heavily on a properly-configured system and tuning parameters that are acceptable for the workload. To configure the system, see the System Configuration tutorial.
Configuration#
Edit daqiri_raw_ethernet_bench_default_tx_rx.yaml and replace the placeholder interface PCIe addresses,
destination MAC address, and IP addresses with values for your system.
The receiver uses bench_rx settings:
batch_size: packet count for one processing batch.max_packet_size: maximum received packet size, including headers.header_size: bytes to skip before the payload.
The transmitter uses bench_tx settings:
batch_size: packet count for one transmit burst.payload_size: payload bytes after all L2-L4 headers.eth_dst_addr,ip_src_addr,ip_dst_addr,udp_src_port, andudp_dst_port: packet header fields.
Requirements#
This application requires DAQIRI and a system configured for DAQIRI DPDK raw packet IO.
The HoloHub networking container builds DAQIRI from
NVIDIA/daqiri, installs it as the daqiri
system package in the image, and exposes it from /opt/daqiri. To use a specific
DAQIRI revision, pass a Docker build argument such as
--build-args "--build-arg DAQIRI_REF=<tag-or-sha>".
Build Instructions#
./holohub build daqiri_raw_ethernet_bench --language=cpp
Run Instructions#
./holohub run daqiri_raw_ethernet_bench --language=cpp \
--docker-opts="-u root --privileged" \
--run-args="daqiri_raw_ethernet_bench_default_tx_rx.yaml"
To run manually inside the container:
./holohub run-container daqiri_raw_ethernet_bench \
--language cpp \
--docker-opts="-u root --privileged -w /workspace/holohub/"
./holohub build daqiri_raw_ethernet_bench --language=cpp
./build/daqiri_raw_ethernet_bench/applications/daqiri_raw_ethernet_bench/cpp/daqiri_raw_ethernet_bench \
daqiri_raw_ethernet_bench_default_tx_rx.yaml
Test Instructions#
Build with testing enabled:
./holohub build daqiri_raw_ethernet_bench --language=cpp \
--configure-args="-D BUILD_TESTING:BOOL=ON"
Then run the benchmark tests from the build directory:
./holohub run-container daqiri_raw_ethernet_bench \
--docker-opts "-u 0 --privileged -w /workspace/holohub/build/daqiri_raw_ethernet_bench/" \
-- ctest --output-on-failure