DOCA Bench (doca_bench)
Where to start: This is a tool skill for invoking doca_bench,
the cross-library micro-benchmark harness. Open
TASKS.md and start at
## configure for the three-axis decision
(target library × workload shape × measurement axis), then
## run for the smoke-before-bulk flow. Open
CAPABILITIES.md when the question is what
doca_bench can measure, which DOCA libraries it can drive, or
how to interpret throughput / latency / op-rate output without
fooling yourself on warm-up or steady-state. If DOCA is not
installed yet, route to
doca-setup first; if the install
version is < 2.7.0, doca_bench is not shipped on this host.
Example questions this skill answers well
The CLASSES of doca_bench questions this skill is built to answer,
each with one worked example. The class is the load-bearing piece;
the worked example is one instance.
- "What does this DOCA library actually deliver on this device?" —
worked example: "throughput of DOCA Compress on my BlueField-3".
Answered by the three-axis configuration in
CAPABILITIES.md ## Capabilities and modes
- the smoke-before-bulk flow in
TASKS.md ## run. The same shape answers
"send-side throughput of DOCA RDMA" — doca_bench is
cross-library, not single-library.
- "Which DOCA libraries can
doca_bench actually drive on this
install?" — worked example: "is doca_sha enumerable on a
granular-build install". Answered by the built-in query system
surfaced in
CAPABILITIES.md ## Capabilities and modes
TASKS.md ## configure step 2
(probe-before-bench). Empty enumeration = library not installed,
not bench failure.
- "Is this number reliable, or did I miss the warm-up?" —
worked example: "why does my first-second number differ from my
steady-state number". Answered by the measurement-soundness
overlay in
CAPABILITIES.md ## Error taxonomy
layer 5 + TASKS.md ## test (the eval-loop
overlay treats warm-up / steady-state / outliers as
re-iteration triggers, not one-shot facts).
- "Bench reports zero throughput / hangs at start / disagrees
with the public docs." — worked example: "
doca_bench shows
zero ops for AES-GCM but doca_caps says the device supports
it". Answered by the layered error taxonomy in
CAPABILITIES.md ## Error taxonomy
(config-syntax → device-binding → library-precondition →
workload-precondition → measurement-soundness → version →
cross-cutting) + TASKS.md ## debug.
- "How do I capture a baseline I can later regression-test
against?" — worked example: "snapshot decompress throughput
on this BlueField + DOCA version before a firmware update".
Answered by the CSV output + version-overlay rule in
TASKS.md ## test (capture command line +
version + device + as-deployed environment alongside the
numbers; quoting numbers without the four-tuple is the
cross-version regression-hunt failure mode).
- "
doca_bench returns nothing for library X — what does that
mean?" — worked example: "empty output for DOCA SHA".
Answered by the empty-output interpretation rules in
TASKS.md ## debug +
CAPABILITIES.md ## Error taxonomy.
Re-route through
doca-caps for the coarse
per-device per-library capability ground truth, then back
into bench once the capability is confirmed present.
Audience
This skill serves external operators, developers, and AI agents
who need a reproducible, vendor-supported way to measure DOCA
library performance on the user's actual install and device.
Concretely:
- An external developer choosing between DOCA libraries (e.g.
COMPRESS vs SHA vs DMA throughput) before committing an
application design.
- A platform operator validating a tuning change (NUMA pinning,
driver upgrade, firmware burn) by re-running a captured
doca_bench baseline against the new state.
- An SRE / performance engineer producing a "this is what the
device delivers today" artifact that downstream consumers
(capacity planning, regression bisection) can cite.
- An AI agent answering "what throughput / latency should I
expect from DOCA library X on device Y?" honestly — with a
measured number, the command line that produced it, and the
version + device + environment that scopes it — instead of
guessing from datasheet headlines.
It is not for users debugging the doca_bench source code,
and not a substitute for the live public DOCA Bench guide on
docs.nvidia.com.
doca_bench is shipped as a tool (a single CLI binary plus a
companion app for the remote half of remote-memory / RDMA / Eth
scenarios), not a library you link against. The skill uses the
same kind: tool three-file shape as the rest of the bundle so
the agent's task-verb contract
(configure / build / modify / run / test / debug) is uniform
across libraries, services, and tools — even when individual
verbs collapse to a routing stub for a shipped binary.
When to load this skill
Load this skill when the user is — or the agent needs to — invoke
doca_bench on a real host with DOCA ≥ 2.7.0 installed (or
inside the public NGC DOCA container with the equivalent version)
to measure performance of a DOCA library. Concretely:
- Picking which DOCA library to benchmark for a candidate
workload (RDMA vs COMPRESS vs DMA, etc.).
- Picking which measurement axis to ask for (throughput vs bulk
latency vs precision latency vs max-bandwidth) — the four modes
defined in
tools/bench/doca_bench/configuration.hpp are not
interchangeable.
- Probing the install's granular-build state so the agent can
honestly report "this library is not exposed on this install"
instead of inventing a workload.
- Capturing a documented baseline (command line + version + device
- as-deployed environment + numbers) for later regression hunts.
- Requiring the workload owner to predeclare acceptable variance
and obtaining two consecutive runs within that tolerance before
reporting a stable result; otherwise escalating the variance.
- Diagnosing why a bench run reported zero / unstable / unexpected
results (the error-taxonomy walk in
TASKS.md ## debug).
Do not load this skill for general DOCA orientation, library
API work, or installation. For those, use
doca-public-knowledge-map,
the matching libs/<library> skill, or
doca-setup. Do not load it for
application-level end-to-end benchmarking either — doca_bench
measures the DOCA library surface, not the user's application
above it.
What this skill provides
This is a thin loader. Substantive material lives in two
companion files:
CAPABILITIES.md — what doca_bench can measure (the
cross-library scope, the three-axis configuration model, the
documented operating modes, the warm-up / pipeline / multi-core
concepts that constrain measurement soundness), the version
overlay (doca-bench-specific facts on top of the canonical
doca-version rules), the layered error taxonomy
(config-syntax / device-binding / library-precondition /
workload-precondition / measurement-soundness / version /
cross-cutting), the observability surface (screen + CSV
output, real-time stats, query system), and the safety
posture (the public guide's "not for production" warning,
the host vs BlueField execution rule, the companion-app
attack surface).
TASKS.md — step-by-step workflows for the in-scope task
verbs: configure (the three-axis decision + the
probe-before-bench step), build (route to install — the
binary is shipped, the companion app is shipped), modify
(refuse — do not patch the bench binary; modify the bench
invocation instead), run (the smoke-before-bulk flow),
test (the eval loop — warm-up, steady-state, outliers,
cross-version), debug (walk the error taxonomy layer by
layer), plus a Deferred task verbs block routing
out-of-scope questions and a Command appendix of
doca_bench-specific invocation classes.
The skill assumes a host where DOCA ≥ 2.7.0 is already installed
(or the public NGC DOCA container is running at an equivalent
version) and the operator has whatever permissions the public
guide requires for doca_bench to bind devices and allocate
resources on their platform.
What this skill deliberately does not ship
This skill is agent guidance, not a samples or scripts
bundle. To keep the boundary clean, it deliberately does not
contain — and pull requests should not add:
- Specific flag strings or scenario / metric / attribute names
beyond what the public DOCA Bench guide documents. The flag
surface evolves and is install-specific; the documented
invocations +
--help on the installed version are the
authoritative answer. Inventing a flag is the most common
hallucination failure for this skill.
- Pre-baked example output or expected throughput numbers.
Bench output is device-, version-, firmware-, NUMA-, and
tuning-specific. A captured number pinned to one platform and
one DOCA version misleads operators on a different
platform / version.
- Wrappers, parsers, or scripts in any language that consume
doca_bench CSV or stdout. The output formats are documented;
if a user wants to script against them, the right answer is
"read the live guide, write the parser against your installed
version".
- A
samples/ or reference/ subtree. This is a thin
loader for a documented CLI; substantive material lives on
the public page and in --help.
Loading order
- Read this
SKILL.md first to confirm the user's question is
in scope (the user actually wants to invoke doca_bench for
measurement, not learn about a DOCA library in general).
- For what
doca_bench measures, the three-axis model, the
version overlay, the error taxonomy, observability surface,
and safety posture, see CAPABILITIES.md.
- For the documented invocations and the smoke-before-bulk
workflow —
configure, build, modify, run, test,
debug — see TASKS.md.
Related skills
doca-public-knowledge-map
— routing to the public DOCA Bench page on docs.nvidia.com
and the rest of the public DOCA documentation set.
doca-version — the canonical
version-detection chain, four-way match rule, NGC container
semantics, and headers-win-over-docs rule. The
## Version compatibility section in this skill is a thin
overlay on top of doca-version; the body lives there.
doca-structured-tools-contract
— the bundle-wide contract for structured-output helper tools.
Bench-runner / bench-snapshot executables that satisfy the
detect-prefer-fallback-report loop are deferred to PR2; the
contract is consumed here in advance so the
## Command appendix in TASKS.md is infra-aware
from PR1.
doca-setup — env preparation,
install verification, hugepages, NUMA awareness, and the I
have no install yet path with the public NGC DOCA container.
doca-debug — the cross-cutting
debug ladder. Bench surfaces its own error taxonomy in
CAPABILITIES.md ## Error taxonomy;
when the cause turns out to be below DOCA (driver, firmware,
NUMA), the bench taxonomy hands off to doca-debug.
doca-caps — the sibling DOCA tool
for the coarse per-device per-library capability snapshot.
Bench probes capability at finer grain via its own query
system; doca_caps is the cheaper first step to confirm the
device is even visible to DOCA.
- The matching
libs/<library> skill — e.g.
doca-comch,
doca-compress — for
the workload-side preconditions, capability-query rules, and
error-taxonomy overlays of the library under test. Bench
drives the library; the library skill explains what
"healthy" means for it.
1---2name: doca-bench3description: Run `doca_bench` (DOCA 2.7.0 or newer) to measure throughput, bulk latency, precision latency, or maximum bandwidth for RDMA, Compress, AES-GCM, SHA, DMA, EC, Ethernet, Comch, or GPUNetIO on a host or BlueField Arm. Use it to discover enabled benchmark libraries, capture a reproducible command/version/device/environment baseline, compare stable runs against a declared tolerance, or diagnose configuration, device-binding, workload-precondition, and measurement failures. Trigger for requests such as measuring BlueField compression speed, NIC RDMA throughput, crypto latency, or a pre-upgrade baseline. Do not use for application end-to-end timing, custom benchmark code, DOCA installation, or binary patches.4license: Apache-2.05---67# DOCA Bench (`doca_bench`)89**Where to start:** This is a tool skill for invoking `doca_bench`,10the cross-library micro-benchmark harness. Open11[`TASKS.md`](TASKS.md) and start at12[`## configure`](TASKS.md#configure) for the three-axis decision13(target library × workload shape × measurement axis), then14[`## run`](TASKS.md#run) for the smoke-before-bulk flow. Open15[`CAPABILITIES.md`](CAPABILITIES.md) when the question is *what16`doca_bench` can measure*, *which DOCA libraries it can drive*, or17*how to interpret throughput / latency / op-rate output without18fooling yourself on warm-up or steady-state*. If DOCA is not19installed yet, route to20[`doca-setup`](../../doca-setup/SKILL.md) first; if the install21version is < 2.7.0, `doca_bench` is not shipped on this host.2223## Example questions this skill answers well2425The CLASSES of `doca_bench` questions this skill is built to answer,26each with one worked example. The class is the load-bearing piece;27the worked example is one instance.2829- **"What does this DOCA library actually deliver on this device?"** —30 worked example: *"throughput of DOCA Compress on my BlueField-3"*.31 Answered by the three-axis configuration in32 [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes)33 + the smoke-before-bulk flow in34 [`TASKS.md ## run`](TASKS.md#run). The *same* shape answers35 *"send-side throughput of DOCA RDMA"* — `doca_bench` is36 cross-library, not single-library.37- **"Which DOCA libraries can `doca_bench` actually drive on this38 install?"** — worked example: *"is doca_sha enumerable on a39 granular-build install"*. Answered by the built-in query system40 surfaced in41 [`CAPABILITIES.md ## Capabilities and modes`](CAPABILITIES.md#capabilities-and-modes)42 + [`TASKS.md ## configure`](TASKS.md#configure) step 243 (probe-before-bench). Empty enumeration = library not installed,44 not bench failure.45- **"Is this number reliable, or did I miss the warm-up?"** —46 worked example: *"why does my first-second number differ from my47 steady-state number"*. Answered by the measurement-soundness48 overlay in49 [`CAPABILITIES.md ## Error taxonomy`](CAPABILITIES.md#error-taxonomy)50 layer 5 + [`TASKS.md ## test`](TASKS.md#test) (the eval-loop51 overlay treats warm-up / steady-state / outliers as52 re-iteration triggers, not one-shot facts).53- **"Bench reports zero throughput / hangs at start / disagrees54 with the public docs."** — worked example: *"`doca_bench` shows55 zero ops for AES-GCM but `doca_caps` says the device supports56 it"*. Answered by the layered error taxonomy in57 [`CAPABILITIES.md ## Error taxonomy`](CAPABILITIES.md#error-taxonomy)58 (config-syntax → device-binding → library-precondition →59 workload-precondition → measurement-soundness → version →60 cross-cutting) + [`TASKS.md ## debug`](TASKS.md#debug).61- **"How do I capture a baseline I can later regression-test62 against?"** — worked example: *"snapshot decompress throughput63 on this BlueField + DOCA version before a firmware update"*.64 Answered by the CSV output + version-overlay rule in65 [`TASKS.md ## test`](TASKS.md#test) (capture command line +66 version + device + as-deployed environment alongside the67 numbers; quoting numbers without the four-tuple is the68 cross-version regression-hunt failure mode).69- **"`doca_bench` returns nothing for library X — what does that70 mean?"** — worked example: *"empty output for DOCA SHA"*.71 Answered by the empty-output interpretation rules in72 [`TASKS.md ## debug`](TASKS.md#debug) +73 [`CAPABILITIES.md ## Error taxonomy`](CAPABILITIES.md#error-taxonomy).74 Re-route through75 [`doca-caps`](../doca-caps/SKILL.md) for the coarse76 per-device per-library capability ground truth, then back77 into bench once the capability is confirmed present.7879## Audience8081This skill serves **external operators, developers, and AI agents82who need a reproducible, vendor-supported way to measure DOCA83library performance on the user's actual install and device**.84Concretely:8586- An external developer choosing between DOCA libraries (e.g.87 COMPRESS vs SHA vs DMA throughput) before committing an88 application design.89- A platform operator validating a tuning change (NUMA pinning,90 driver upgrade, firmware burn) by re-running a captured91 `doca_bench` baseline against the new state.92- An SRE / performance engineer producing a *"this is what the93 device delivers today"* artifact that downstream consumers94 (capacity planning, regression bisection) can cite.95- An AI agent answering *"what throughput / latency should I96 expect from DOCA library X on device Y?"* honestly — with a97 measured number, the command line that produced it, and the98 version + device + environment that scopes it — instead of99 guessing from datasheet headlines.100101It is **not** for users debugging the `doca_bench` source code,102and **not** a substitute for the live public DOCA Bench guide on103`docs.nvidia.com`.104105`doca_bench` is shipped as a **tool** (a single CLI binary plus a106companion app for the remote half of remote-memory / RDMA / Eth107scenarios), not a library you link against. The skill uses the108same `kind: tool` three-file shape as the rest of the bundle so109the agent's task-verb contract110(`configure / build / modify / run / test / debug`) is uniform111across libraries, services, and tools — even when individual112verbs collapse to a routing stub for a shipped binary.113114## When to load this skill115116Load this skill when the user is — or the agent needs to — invoke117`doca_bench` on a real host with DOCA ≥ 2.7.0 installed (or118inside the public NGC DOCA container with the equivalent version)119to measure performance of a DOCA library. Concretely:120121- Picking *which* DOCA library to benchmark for a candidate122 workload (RDMA vs COMPRESS vs DMA, etc.).123- Picking *which* measurement axis to ask for (throughput vs bulk124 latency vs precision latency vs max-bandwidth) — the four modes125 defined in `tools/bench/doca_bench/configuration.hpp` are not126 interchangeable.127- Probing the install's granular-build state so the agent can128 honestly report *"this library is not exposed on this install"*129 instead of inventing a workload.130- Capturing a documented baseline (command line + version + device131 + as-deployed environment + numbers) for later regression hunts.132- Requiring the workload owner to predeclare acceptable variance133 and obtaining two consecutive runs within that tolerance before134 reporting a stable result; otherwise escalating the variance.135- Diagnosing why a bench run reported zero / unstable / unexpected136 results (the error-taxonomy walk in137 [`TASKS.md ## debug`](TASKS.md#debug)).138139Do **not** load this skill for general DOCA orientation, library140API work, or installation. For those, use141[`doca-public-knowledge-map`](../../doca-public-knowledge-map/SKILL.md),142the matching `libs/<library>` skill, or143[`doca-setup`](../../doca-setup/SKILL.md). Do not load it for144*application-level* end-to-end benchmarking either — `doca_bench`145measures the DOCA library surface, not the user's application146above it.147148## What this skill provides149150This is a **thin loader**. Substantive material lives in two151companion files:152153- `CAPABILITIES.md` — what `doca_bench` can measure (the154 cross-library scope, the three-axis configuration model, the155 documented operating modes, the warm-up / pipeline / multi-core156 concepts that constrain measurement soundness), the version157 overlay (`doca-bench`-specific facts on top of the canonical158 `doca-version` rules), the layered error taxonomy159 (config-syntax / device-binding / library-precondition /160 workload-precondition / measurement-soundness / version /161 cross-cutting), the observability surface (screen + CSV162 output, real-time stats, query system), and the safety163 posture (the public guide's *"not for production"* warning,164 the host vs BlueField execution rule, the companion-app165 attack surface).166- `TASKS.md` — step-by-step workflows for the in-scope task167 verbs: `configure` (the three-axis decision + the168 probe-before-bench step), `build` (route to install — the169 binary is shipped, the companion app is shipped), `modify`170 (refuse — do not patch the bench binary; modify the bench171 *invocation* instead), `run` (the smoke-before-bulk flow),172 `test` (the eval loop — warm-up, steady-state, outliers,173 cross-version), `debug` (walk the error taxonomy layer by174 layer), plus a `Deferred task verbs` block routing175 out-of-scope questions and a `Command appendix` of176 `doca_bench`-specific invocation classes.177178The skill assumes a host where DOCA ≥ 2.7.0 is already installed179(or the public NGC DOCA container is running at an equivalent180version) and the operator has whatever permissions the public181guide requires for `doca_bench` to bind devices and allocate182resources on their platform.183184## What this skill deliberately does not ship185186This skill is **agent guidance**, not a samples or scripts187bundle. To keep the boundary clean, it deliberately does not188contain — and pull requests should not add:189190- **Specific flag strings or scenario / metric / attribute names191 beyond what the public DOCA Bench guide documents.** The flag192 surface evolves and is install-specific; the documented193 invocations + `--help` on the installed version are the194 authoritative answer. Inventing a flag is the most common195 hallucination failure for this skill.196- **Pre-baked example output or expected throughput numbers.**197 Bench output is device-, version-, firmware-, NUMA-, and198 tuning-specific. A captured number pinned to one platform and199 one DOCA version misleads operators on a different200 platform / version.201- **Wrappers, parsers, or scripts** in any language that consume202 `doca_bench` CSV or stdout. The output formats are documented;203 if a user wants to script against them, the right answer is204 "read the live guide, write the parser against your installed205 version".206- **A `samples/` or `reference/` subtree.** This is a thin207 loader for a documented CLI; substantive material lives on208 the public page and in `--help`.209210## Loading order2112121. Read this `SKILL.md` first to confirm the user's question is213 in scope (the user actually wants to invoke `doca_bench` for214 measurement, not learn about a DOCA library in general).2152. **For what `doca_bench` measures, the three-axis model, the216 version overlay, the error taxonomy, observability surface,217 and safety posture, see [CAPABILITIES.md](CAPABILITIES.md).**2183. **For the documented invocations and the smoke-before-bulk219 workflow — `configure`, `build`, `modify`, `run`, `test`,220 `debug` — see [TASKS.md](TASKS.md).**221222## Related skills223224- [`doca-public-knowledge-map`](../../doca-public-knowledge-map/SKILL.md)225 — routing to the public DOCA Bench page on `docs.nvidia.com`226 and the rest of the public DOCA documentation set.227- [`doca-version`](../../doca-version/SKILL.md) — the canonical228 version-detection chain, four-way match rule, NGC container229 semantics, and headers-win-over-docs rule. The230 `## Version compatibility` section in this skill is a thin231 overlay on top of `doca-version`; the body lives there.232- [`doca-structured-tools-contract`](../../doca-structured-tools-contract/SKILL.md)233 — the bundle-wide contract for structured-output helper tools.234 Bench-runner / bench-snapshot executables that satisfy the235 detect-prefer-fallback-report loop are deferred to PR2; the236 contract is consumed here in advance so the237 `## Command appendix` in [`TASKS.md`](TASKS.md) is infra-aware238 from PR1.239- [`doca-setup`](../../doca-setup/SKILL.md) — env preparation,240 install verification, hugepages, NUMA awareness, and the *I241 have no install yet* path with the public NGC DOCA container.242- [`doca-debug`](../../doca-debug/SKILL.md) — the cross-cutting243 debug ladder. Bench surfaces *its own* error taxonomy in244 [`CAPABILITIES.md ## Error taxonomy`](CAPABILITIES.md#error-taxonomy);245 when the cause turns out to be below DOCA (driver, firmware,246 NUMA), the bench taxonomy hands off to `doca-debug`.247- [`doca-caps`](../doca-caps/SKILL.md) — the sibling DOCA tool248 for the coarse per-device per-library capability snapshot.249 Bench probes capability at finer grain via its own query250 system; `doca_caps` is the cheaper first step to confirm the251 device is even visible to DOCA.252- The matching `libs/<library>` skill — e.g.253 [`doca-comch`](../../libs/doca-comch/SKILL.md),254 [`doca-compress`](../../libs/doca-compress/SKILL.md) — for255 the workload-side preconditions, capability-query rules, and256 error-taxonomy overlays of the library under test. Bench257 drives the library; the library skill explains *what258 "healthy" means for it*.