Skip to content

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, and udp_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