Doca Flow Tune
NVIDIAOfficialCreated by NVIDIA
- Skill
- Tool integration
- Software development
- Apache-2.0
- Medium risk
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
This skill provides instructions for using the doca_flow_tune tool to observe and tune live or captured DOCA Flow pipelines. It covers the tool's three-axis configuration model (rule placement, resource hints, and hardware-offload mode), the use of monitor, analyze, and visualize commands, and the workflow for applying tuning recommendations back into a Flow application. The skill is designed for operators and engineers needing to characterize pipeline behavior, dump counters, or identify performance bottlenecks in their own DOCA Flow implementations.
What it does
- Guides the configuration of doca_flow_tune for online or offline analysis.
- Supports snapshotting of pipe, counter, and KPI states from a live pipeline.
- Assists in interpreting dumper CSV, analyze JSON, and visualize mermaid outputs.
- Facilitates the mapping of tuning recommendations to specific Flow program parameters.
- Provides a structured approach for validating tuning changes before full-scale application.
- Defines the taxonomy for diagnosing tool-specific errors and session issues.
When to use it
- When you need to profile the rule-install rate or lookup latency of a running Flow pipeline.
- When you need to visualize the structure of a pipeline using captured JSON or CSV data.
- When you need to identify appropriate table sizing or resource hints for a specific pipe.
- When you need to diagnose why a pipeline is not behaving as expected based on hardware counters.
- When you need to apply a tuning recommendation to your Flow application code.
Advantages
- Enables data-driven tuning based on actual pipeline performance metrics.
- Supports both live monitoring and offline analysis of captured pipeline states.
- Provides a clear path for translating tool recommendations into code modifications.
- Integrates with existing DOCA Flow workflows without requiring external instrumentation.
Usage examples
- “My Flow rule-install rate is low on BlueField, how do I investigate?”
- The agent will guide you to capture a monitor-mode baseline, select a tuning axis, and analyze the results to identify if the issue is related to rule placement or table sizing.
- “The visualize step in doca_flow_tune is empty, what should I do?”
- The agent will help you walk through the layered error taxonomy to check your JSON configuration and ensure the tool is correctly attached to the live Flow application.
Install
Download the skill as a ZIP:
https://autogineer.com/agent-skills/nvidia/doca-flow-tune/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip doca-flow-tune.zip -d .agents/skills
Documentation by NVIDIA
DOCA Flow Tune (doca_flow_tune)
Examples
"Flow rule-install rate is low on BlueField." — this is in scope. Capture a monitor-mode baseline, then pick one tuning axis.
"Tune visualize step is empty." — check the dumper JSON/CSV / analyze JSON before changing the Flow program.
Instructions
Follow Loading order below. Open the tasks companion for configure / tune / debug. Open the capabilities companion for online vs offline modes. Do not open every companion file.
Command surface (DOCA 3.5 public Flow Tune guide).
doca_flow_tuneis a single binary whose role on a given invocation is determined by which of three top-level commands the user picks —monitor,analyze,visualize(confirm with--helpon the installed version); use only the commands the public guide and the installed--helplist. Counter dumping is part ofmonitor(--enable-dump, or thebackgroundsub-command for dumping without screen output), not a separate command;analyzeaccepts theexportandpacket-tracesub-commands (hyphenated).monitorandanalyzerun the binary in server-attached online mode against a livedoca-flowapplication reached over a Unix- domain socket whose path lives innetwork.server_udsof the JSON configuration file;visualize(and offline analysis of a previously exported pipeline file) runs in offline / captured-snapshot mode against JSON / CSV files the online commands previously dropped into the configuredoutputs_directory. The rest of this skill (and the capabilities companion / the tasks companion) uses the legacy "server role / online mode / offline mode" framing — that framing is internally consistent with the command surface here: server role = a server-attached online command (monitor,analyze export/analyze packet-trace); online mode = any of those; offline mode =visualizeover captured files. Treat the command name as the primary handle; treat server/online/offline as the downstream behavioral consequence of the subcommand pick.
Where to start: This is a tool skill for invoking doca_flow_tune,
the unified DOCA Flow tuning tool. Open the tasks companion and
start at ## configure to commit to the
three-axis decision (target Flow pipeline × tuning axis ×
measurement) and pick offline vs online vs server-attach mode, then
## run for the snapshot → analyze → visualize
loop, then ## test for the smoke-before-bulk
overlay that gates any state-changing application of a tuning
recommendation back into the Flow application's code. Open
the capabilities companion when the question is what
state doca_flow_tune can observe and recommend on, how its
server / client roles fit inside the single artifact, which DOCA
version the tool ships in, or how to interpret the dumper / monitor
/ analyze / visualize outputs without fooling yourself. If DOCA is
not installed, route to
doca-setup/SKILL.md first; if the user has
no running doca-flow application yet, route to
doca-flow/SKILL.md — flow-tune does not
create pipes, it observes and recommends on top of pipes the
library already created.
Example questions this skill answers well
The CLASSES of doca_flow_tune 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.
"Do I measure first or tune first?" — worked example: "my doca-flow service runs on a BlueField-3 and I think the rule-install rate is below what the device can sustain". Answered by the measure, then tune rule in the capabilities companion: a monitor-mode baseline, one tuning axis, then a monitor-mode re-capture on the same axis.
"Capture a snapshot of a live
doca-flowpipeline's hardware and software counters without touching the dataplane." — worked example: "I want a side-effect-free dumper / monitor run against the running Flow ports for an operations-rate profile". Answered by the snapshot flow in the tasks companion plus the read-only-by-default posture in the capabilities companion."Pick the right tuning axis — rule placement, resource hints, or hardware-offload mode — for the question I actually have." — worked example: "my Flow pipe's rule-install rate is low; is this a placement question or a table-sizing question?". Answered by the three-axis configuration in the capabilities companion
the configure walk in the tasks companion.
"How do
doca_flow_tune's server role and client / consumer role fit together inside the single artifact?" — worked example: "I keep reading about a Flow Tune server and a Flow Tune client; which binary am I running?". Answered by the one binary, two roles breakdown in the capabilities companion and the corresponding routing in the tasks companion."How do I take a recommended parameter change from flow-tune back into my doca-flow application without breaking the dataplane?" — worked example: "the analyze step suggests a different table sizing for my pipe; how do I apply it?". Answered by the recommendation → minimum-diff modification of the Flow program loop in the tasks companion and the smoke-before-bulk rule in the tasks companion.
"
doca_flow_tunereports nothing / disagrees with the Flow app / cannot attach — what does that mean?" — worked example: "the tool runs but the visualize step produces an empty mermaid diagram". Answered by the layered error taxonomy in the capabilities companionthe tasks companion.
Audience
This skill serves external operators, performance engineers,
DOCA Flow application developers, and AI agents who need to
understand, characterize, or improve a running doca-flow
pipeline's behavior on the user's actual install and device.
Concretely:
An operator wanting a read-only snapshot of which pipes exist and how their hardware / software counters progress before recommending any change.
A performance engineer who has a measured baseline (for example a monitor-mode capture) and wants to turn measurement into optimization — pick a tuning axis and identify which knob in the doca-flow program is the lever.
A Flow developer using the offline analyze + visualize loop to understand a pipe layout without re-instrumenting the program.
An AI agent driving the "is this pipeline behaving as expected, and would a non-mutating tuning hint help" triage step.
It is not for users debugging the doca_flow_tune source code,
not a substitute for the live public DOCA Flow Tune guide,
not the place to learn the doca-flow API (see
doca-flow/SKILL.md), and not a
synthetic rule-rate benchmark: it measures the user's own
pipeline.
doca_flow_tune is shipped as a single tool (one binary plus
companion analyzer / visualizer scripts and JSON config
templates) — the historical server and client roles live
inside this one artifact, not in two executables. It uses the
same kind: tool three-file shape as the rest of the bundle.
Language scope
This skill governs invocation, output interpretation, and
recommendation-to-code-change routing for the DOCA Flow
application doca_flow_tune observes. The tool is not a
programming target — there is no public API to link against; the
workflow is configure JSON, run, read outputs, propose minimum-
diff changes to the surrounding doca-flow program. For the
doca-flow API the recommendations route back into, see
doca-flow/SKILL.md;
for cross-language application patterns, see
doca-programming-guide/SKILL.md.
When to load this skill
Load this skill when the user is — or the agent needs to — invoke
doca_flow_tune against a running or planned doca-flow
application to characterize, dump, visualize, analyze, or tune
that pipeline. Concretely:
Picking which role to engage (offline analyze / visualize on a captured config + state, online dumper / monitor against the live app, or attach-to-app server-role usage).
Picking which tuning axis to ask about (rule placement, resource hints / table sizing, hardware-offload-mode).
Picking which measurement axis to compare against (rule-install rate, lookup latency, hardware-counter delta) — not interchangeable; use the axis the baseline capture named.
Capturing a documented before / after pair around a proposed Flow-program change (JSON config path, command line, DOCA version, device, environment, unredacted tool output).
Diagnosing an empty session, a degenerate visualize diagram, or an analyze recommendation that contradicts live counters.
Do not load this skill for general DOCA orientation, Flow
program API work, install, or pure measurement methodology —
route to doca-public-knowledge-map/SKILL.md,
doca-flow/SKILL.md, or
doca-setup/SKILL.md.
What this skill provides
This is a thin loader. Substantive material lives in two companion files:
the capabilities companion — what
doca_flow_tuneobserves and recommends on: the unified-artifact decomposition (server roleclient / consumer role inside one binary), the three-axis configuration model (tuning axis × measurement × scope: which pipe / port / app), the documented offline / online / attach modes, the JSON configuration-file shape (the
flow_tune_cfg.jsonexample in the public Flow Tune guide), the dumper / monitor / analyze / visualize output surfaces, the version overlay (this tool rides thedoca-flowlibrary version it observes; the canonical rules live indoca-version/SKILL.md), the layered error taxonomy (config-syntax / attach-failed / pipe-not-found / measurement-unsound / recommendation-unactionable / version / cross-cutting), the observability posture (the tool is an observability primitive for the Flow pipeline), and the safety policy that makes any mutating application of a recommendation high-stakes because the recommendation lands in live Flow state.
the tasks companion — step-by-step workflows for the in-scope task verbs:
install(route to setup; the binary is shipped),configure(the three-axis decision + JSON config + mode pick),build(route to install; the binary is shipped),modify(apply a recommendation back to the Flow program via minimum- diff),run(the snapshot → analyze → visualize flow),test(the eval loop — warm-up, steady-state, before / after pair, client / server / Flow version match),debug(walk the error taxonomy layer by layer),use(the agent-side workflow for consuming flow-tune output), plus aDeferred task verbsblock and aCommand appendix.
The skill assumes a host where DOCA is already installed (or the
public NGC DOCA container is running) and a doca-flow
application is already created and validated per the
doca-flow/SKILL.md skill. Without those
preconditions, the tune session has nothing to observe.
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:
Verbatim flag inventories, subcommand names, JSON config field names, or default endpoint paths quoted as the contract. The public DOCA Flow Tune guide (reached via
doca-public-knowledge-map ## DOCA tools(doca-public-knowledge-map/SKILL.md#doca-tools)) and the installed--helpare the joint source of truth; the guide's configuration-file example is the second source for the JSON schema. Copying them here rots when the tool evolves.Pre-baked example output (dumper CSV columns, analyzer JSON field names, visualizer mermaid output). Output is install-, device-, firmware-, and version-specific; a captured example pinned to one platform misleads operators elsewhere.
Wrappers, parsers, or scripts that consume flow-tune output. The right answer is to read the tool's own dump, analyze and visualize output files directly and quote them.
Pre-baked tuning recommendations. Recommendations are install-, device-, firmware-, and workload-specific; the agent always re-derives them from the user's actual session.
A
samples/,templates/, orreference/subtree. Mock tuning recipes read as production-grade and mislead.
Loading order
Read this skill first to confirm the user's question is in scope (the user actually wants to invoke
doca_flow_tuneagainst adoca-flowpipeline, not measure baseline perf or learn the Flow API).For what
doca_flow_tuneobserves, the one-binary / two-role decomposition, the three-axis model, the version overlay, the error taxonomy, observability surface, and safety posture, see the capabilities companion.For the documented invocations and the snapshot → analyze → visualize → propose → smoke workflow —
install,configure,build,modify,run,test,debug,use— see the tasks companion.
Related skills
doca-flow/SKILL.md— the base library whose pipeline this tool observes and tunes. The pipe / entry / rule surface flow-tune reports on is created bydoca-flowprogram code; recommendations route back into that program via the universal modify-a-sample workflow.doca-public-knowledge-map/SKILL.md— routing to the public DOCA Flow Tune page ondocs.nvidia.comand the rest of the public DOCA documentation set.doca-version/SKILL.md— the canonical version-detection chain, four-way match, NGC semantics, and headers-win-over-docs rule. The## Version compatibilityoverlay in this skill is a thin extension on top.doca-debug/SKILL.md— the cross-cutting debug ladder. Flow-tune surfaces its own error taxonomy; when the cause turns out to be below DOCA (driver, firmware, NUMA), the tune taxonomy hands off todoca-debug.doca-structured-tools-contract/SKILL.md— the bundle's detect → prefer → fall back → report contract. The Command appendix in the tasks companion honors it.doca-setup/SKILL.md— env preparation, install verification, hugepages, NUMA, and the I have no install yet path with the public NGC DOCA container.doca-hardware-safety/SKILL.md— the cross-cutting hardware-safety meta-policy this skill's## Safety policyoverlays.
Files
- ATTRIBUTION.mdAdded by AutoGineer900 B
- BENCHMARK.md9.9 KiB
- CAPABILITIES.md24.0 KiB
- LICENSELicence file added by AutoGineer11.2 KiB
- SKILL.md15.8 KiB
- SKILLCARD.yaml2.7 KiB
- TASKS.md29.0 KiB
- evals/evals.json2.5 KiB
- skill-card.md5.2 KiB
- skill.oms.sig5.1 KiB
TASKS.md
DOCA Flow Tune — Tasks
Where to start: The verbs that carry real workflow content are
## configure, ## run, ## modify, ## test, ## debug, and
## use. ## install and ## build are routing stubs because the
binary is shipped pre-built; ## modify is substantive for this
tool because the output of a tune session is a recommendation
that gets applied back to the surrounding doca-flow program via
the universal modify-a-sample workflow.
This file is loaded by SKILL.md after
CAPABILITIES.md. It walks the agent through
the in-scope task verbs and the agent-side ## use workflow, then
explicitly defers verbs that do not belong here.
For doca_flow_tune, the verbs that carry real workflow content
are configure, run, modify, test, debug, and use. The
other two (install, build) carry meaningful routing stubs
because the binary is shipped pre-built.
install
doca_flow_tune is shipped pre-built with the DOCA install
when the Flow tune package profile is present. There is no
separate install workflow this skill owns.
Routing for nearby "install" questions:
"The binary isn't there — do I need to install something?" → yes. Route to
doca-setup ## configure(doca-setup/TASKS.md#configure) for the DOCA install with the appropriate package profile, or todoca-setup ## no-install(doca-setup/TASKS.md#no-install) for the public NGC DOCA container path when the user has no install yet."I want a structured probe before installing" → the detect → prefer → fall back → report contract per
doca-structured-tools-contract/SKILL.mdis the right surface; the structured helpers it documents (doca-env --jsonfor version + libraries + drivers in one shot) are the cheapest pre-install reconnaissance.
The ## What this skill deliberately does not ship block in
SKILL.md forbids adding an install recipe here;
revisit that policy before changing this section.
configure
configure for doca_flow_tune is "decide the three-axis
configuration AND pick the operating mode AND populate the JSON
config file BEFORE invoking the binary". The three axes
(tuning axis × measurement × scope) are laid out in
CAPABILITIES.md ## Capabilities and modes;
the three modes (offline / online read-only / online
state-changing) are owned there as well. Skipping this verb is
the canonical Flow-tune failure mode.
Steps the agent should walk the user through, in order:
Confirm DOCA is installed and the Flow library is present. Run
doca-setup ## test(doca-setup/TASKS.md#test) and confirmpkg-config --modversion doca-flowresolves. If the user has no install yet, route todoca-setup ## no-install(doca-setup/TASKS.md#no-install) before any tune discussion. The tool has nothing to do ifdoca-flowis not present.Confirm a
doca-flowapplication is running (online modes) or a captured config is on hand (offline mode). PerCAPABILITIES.md ## Capabilities and modesoperating-modes table; offline mode consumes a captured JSON only, online mode requires the application.Capture the baseline first. Per the measure, then tune rule in
CAPABILITIES.md ## Capabilities and modes; if the user's question is "what is the baseline number", answer it with a monitor-mode capture (and its CSV export) before any recommendation.Axis 1 — pick the tuning axis. Per the three-axis table in
CAPABILITIES.md ## Capabilities and modes, commit explicitly to which class of change is being explored (rule placement, resource hints / table sizing, hardware- offload mode). Naming one and dropping the others silently narrows the session.Axis 2 — pick the measurement. Rule-install rate vs lookup latency vs hardware-counter delta. The measurement must match the tuning axis; the agent should quote why it picked the measurement so the user can challenge the framing.
Axis 3 — pick the scope. Confirm the PCI address set and the
flow_port_idset the session will look at. The guide's configuration-file example documents themonitor.hardware.pci_addressesandmonitor.software[*].flow_port_idfields as the scope-naming knobs; confirm against the live application's port set.Pick the operating mode. Offline / online read-only / online state-changing per
CAPABILITIES.md ## Capabilities and modes. The state-changing mode is high-stakes; the agent must surface theCAPABILITIES.md ## Safety policyrules before recommending it.Populate the JSON config file. Start from the configuration-file example in the public DOCA Flow Tune guide (
flow_tune_cfg.json; remove thehardwareorsoftwaresection to disable that part); setoutputs_directory, thenetwork.server_udssocket path, thedumper/analyze/visualize/monitorsections per the chosen scope and mode. The guide's example and--helpare the schema source of truth on the user's installed version; do not invent field names from prose memory.Sanity check before any invocation. Confirm with the user: what is the question (baseline or recommendation)? Which pipeline? Which tuning axis? Which measurement? Which mode? If any answer is unclear, stop and ask — do NOT run the tune binary against a fuzzy posture.
If steps 1-9 read clean, proceed to ## run. If any step
surfaces a precondition failure, walk the error taxonomy in
CAPABILITIES.md ## Error taxonomy
before retrying.
build
doca_flow_tune is shipped pre-built as part of every DOCA
install that includes the Flow tune package. There is no source
tree the external user is expected to compile, no build flags,
no meson or make workflow for the tool itself.
Routing for nearby "build" questions:
"The binary isn't there — do I need to build it?" → no. Route to
## install. The fix is to install (or re-install) DOCA with the right package profile."I want to build my own DOCA Flow tuning analyzer." → not a
doca_flow_tunequestion. Route todoca-programming-guide ## build(doca-programming-guide/TASKS.md#build) for the cross-library build pattern and todoca-flow TASKS.md ## build(doca-flow/TASKS.md#build) for the Flow-specific build overlay; the tune binary is the shipped harness, a bespoke analyzer is a different artifact."I want the trace-build flavor of
doca-flowso the tune attach role works." → the trace-flavor question belongs todoca-flow TASKS.md ## build(doca-flow/TASKS.md#build); this skill does not duplicate the Flow build recipe.
The ## What this skill deliberately does not ship block in
SKILL.md forbids shipping a build recipe for the
tune binary or wrappers around it.
modify
modify for doca_flow_tune is substantive: the output of a
tune session is a recommendation, and applying the recommendation
is a doca-flow program change. The agent does not modify the
shipped tune binary; the agent modifies the surrounding
doca-flow application's code via the universal modify-a-sample
workflow.
The pattern:
Read the analyze / visualize output as evidence, not as answer. Per
CAPABILITIES.md ## Observability, the analyze JSON and visualize mermaid file are recommendations under named assumptions; the named assumptions (chosen tuning axis, captured before-state, three-axis decision) are the provenance of the recommendation.Translate the recommendation into a Flow-program change proposal. Per
doca-flow TASKS.md ## modify(doca-flow/TASKS.md#modify), identify which Flow API call in the program is the lever the recommendation moves (a pipe attribute, a resource-hint parameter, a steering-mode selection). If the recommendation does not correspond to a knob the program exposes, surface that asCAPABILITIES.md ## Error taxonomylayer 5 (recommendation-unactionable) rather than guessing at a wider modification.Obtain explicit confirmation for this recommendation. Present the exact recommendation, target pipe / scope, selected tuning axis, proposed minimum diff, expected measurement direction, and rollback snapshot. Ask the user to confirm this specific change before modifying the Flow program. Confirmation of one recommendation does not cover another; without confirmation, stop at the proposal.
Apply the minimum diff. Walk
doca-programming-guide TASKS.md ## modify(doca-programming-guide/TASKS.md#modify) for the cross-library minimum-diff modification pattern; the shipped DOCA Flow samples on disk are the verified source of truth, the tune recommendation is the direction of the diff on top.Re-run the tune session against the post-change state. The before / after pair is the only defensible artifact; a recommendation applied without a captured before snapshot and a captured after snapshot cannot be evaluated. The eval-loop overlay in
## testenforces this.
Routing for nearby "modify" questions:
"Can I patch the
doca_flow_tunebinary itself?" → out of scope. The shipped binary is the contract; modifying it is a contributor question, not an external-consumer question."Can I edit the dumper CSV format?" → no; the documented CSV format is the documented format. If the user wants a different post-processing surface, the right answer is "parse the documented CSV in your downstream tool", but even the adapter is out of scope per
SKILL.md ## What this skill deliberately does not ship.
run
The snapshot → analyze → visualize → propose loop. The full
invocation surface lives in the public DOCA Flow Tune guide;
this section names the shape of the flow, not verbatim
command lines (per
CAPABILITIES.md ## Safety policy
"do not invent flags").
Confirm the binary, version, and JSON config are consistent. Per
## configuresteps 1-8. Quotepkg-config --modversion doca-flowand the tune binary's--versionagainstdoca-version TASKS.md ## test(doca-version/TASKS.md#test) so the four-way match is anchored before invocation.Smoke run — offline first. When a captured pipeline- description JSON is on hand, run the offline analyze / visualize chain against it as the cheapest read-only smoke. Goal: the tool can parse the config, render the analyze output, and render the visualize output. The smoke is not a usable recommendation; it is a precondition check.
Online read-only snapshot. When a live application is available, attach via the documented IPC channel (per the
network.server_udsfield of the JSON config), run the dumper / monitor for the configured duration, and capture the CSV + JSON + mermaid outputs into the directory named byoutputs_directory. This is the online-mode read-only smoke perCAPABILITIES.md ## Capabilities and modesoperating-modes table.Read the analyze and visualize outputs. Per
CAPABILITIES.md ## Observability, the analyze JSON is the structured recommendation surface and the visualize mermaid is the human-readable pipe layout. Quote what they said — do not paraphrase the recommendation away.Inspect the dumper CSV for soundness. Per
CAPABILITIES.md ## Error taxonomylayer 4, an exit-0 run with numbers is not enough — verify warm-up actually happened, verify the captured counters reflect steady state, verify outliers / distribution are captured alongside any single number.STOP here unless the user has committed to applying a recommendation. Steps 1-5 are the read-only surface; the high-stakes step is
## modify(apply the recommendation back to the Flow program) and is gated on the smoke in## test.For the exact, current invocation surface — mode flag names, JSON config field names, dumper CSV columns, analyze JSON schema, visualize mermaid format — read
--helpon the installed binary plus the public DOCA Flow Tune guide viadoca-public-knowledge-map ## DOCA tools(doca-public-knowledge-map/SKILL.md#doca-tools). Do not invent any of these.
When recording the run for downstream consumers, write down: the
DOCA version, the host (host x86 / Arm, BlueField Arm, or NGC
container), the full JSON config file used, the exact command
line, the device target (PCI address set), and the full
unredacted dumper / analyze / visualize output. The downstream
## test and ## debug workflows depend on
those fields.
test
doca_flow_tune is a recommendation tool, so its ## test
verb is about testing the recommendation — i.e. confirming the
before / after pair is sound and reproducible — not unit-testing
the binary itself.
## test is an iterative loop, not a one-shot pass. Every
mutation — a Flow-program change derived from a recommendation, a
driver / firmware change under the application, a BlueField mode
flip, a DOCA reinstall — re-opens the smoke.
The smoke-before-bulk shape:
Capture a pre-change snapshot. Run the online read-only smoke per
## runsteps 3-5; the resulting CSV + analyze JSON + visualize mermaid is the before leg.Confirm the four-way version match. Quote the tune binary's
--version, the application-sidepkg-config --modversion doca-flow, and the host package version perdoca-version TASKS.md ## test(doca-version/TASKS.md#test). A measurement under a partial install is not a measurement of anything the operator can defend.Confirm, then apply the recommendation via
## modify. Obtain the per-recommendation confirmation required by## modifystep 3 before the minimum-diff change lands in the application's source; redeploy the application on its documented cadence.Capture a post-change snapshot. Re-run step 1 against the redeployed application; the resulting outputs are the after leg.
Diff the two legs. Compare the two analyze JSON files and dump files field by field for the structural and counter diff; quote the values, do not paraphrase them.
Only after steps 1-5 read clean may the agent declare the tuning iteration converged on a real change. If the after-leg measurement does not move in the direction the recommendation predicted, reselect exactly one of the three axes and run one new confirmed recommendation. If that second attempt is also non-green, restore the pre-change snapshot via
doca-flow TASKS.md ## rollback(doca-flow/TASKS.md#rollback), report both diffs, and escalate the unresolved gap. Do not start a third tuning attempt.
Eval-loop overlay (rows apply to every tune session):
| Iteration trigger | What it looks like | What changes next iteration |
|---|---|---|
| Smoke completed; analyze recommendation does not match the question | Could be the wrong tuning axis was selected, the wrong measurement was selected, or the scope is wrong | Reselect exactly one axis in ## configure, obtain fresh per-recommendation confirmation, and run once. If that second attempt is non-green, roll back and escalate; do not reselect another axis. |
| Online attach fails on a known-good Flow app | Attach-failed layer per CAPABILITIES.md ## Error taxonomy layer 2; not a measurement-soundness issue | Walk ## debug layer 2; do not loop on the dumper expecting different output |
| Before / after diff is empty when a Flow-program change shipped | Either the change did not deploy, or the captured before-leg snapshot was already the post-change state | Re-confirm the Flow application's running version, re-capture the before leg from a known-pre-change state |
| Recommendation says "increase table size" but the Flow program hard-codes the value | Recommendation-unactionable layer 5; not a tune bug | Modify the Flow program per doca-flow TASKS.md ## modify (doca-flow/TASKS.md#modify) to expose the knob, then re-run the tune session |
| After-leg measurement is in the opposite direction from the prediction | Could be a real regression the recommendation introduced, or could be a different workload running on the device | Re-confirm workload stability, quote the diff, then reselect one axis and retry once with fresh confirmation. On a second non-green result, restore the pre-change snapshot and escalate through doca-debug ## debug (doca-debug/SKILL.md); no third attempt. |
This skill does not ship a "test fixture" or pre-recorded
expected output. The expected output is install-, device-,
firmware-, application-, and DOCA-version-specific. See
SKILL.md ## What this skill deliberately does not ship.
debug
When doca_flow_tune fails to attach, produces empty output,
produces a recommendation that does not move the measurement, or
disagrees with the Flow application's own view, walk the
CAPABILITIES.md ## Error taxonomy
layers in order:
Config-syntax. Invocation / JSON config does not parse. Confirm flag / field exists on the installed binary and in the configuration-file example in the public DOCA Flow Tune guide; confirm units / values are in the documented form. Do not infer from generic CLI / JSON intuition.
Attach-failed (online mode). Confirm the live Flow application is up via
doca-flow TASKS.md ## test(doca-flow/TASKS.md#test); confirm thenetwork.server_udspath matches the application's actual setting; confirm filesystem permissions and namespace boundary. Re-attempt only after the application is on the snapshot.Pipe-not-found. Confirm the pipe set against the Flow application's own view per
doca-flow TASKS.md ## modify(doca-flow/TASKS.md#modify); if the pipe is genuinely not created, the next move is the Flow program, not the tune binary.Measurement-unsound. Walk the three sub-layers per
CAPABILITIES.md ## Error taxonomylayer 4 — warm-up / steady-state, outliers / distribution, before / after pair captured — before quoting any recommendation.Recommendation-unactionable. Surface the recommendation as a Flow-program-change proposal per
## modify; do not loop on tune trying to find a knob the program does not expose.Version. Walk
doca-version TASKS.md ## debug(doca-version/TASKS.md#debug) end-to-end with the four-way match captured. Common tune-specific symptom is a tune binary from a different DOCA train than the Flow application's linked library.Cross-cutting. Hand off to
doca-debug ## debug(doca-debug/SKILL.md) for the cross-cutting debug ladder anddoca-setup ## debug(doca-setup/TASKS.md#debug) for the env-side layers.
In every case: quote what the tool reported. Do not paraphrase the dumper CSV summary, do not reorder mermaid nodes, do not summarize a recommendation into prose. The tune binary is in the loop precisely to break the agent out of the inference-from-datasheet trap.
use
## use is the agent-side workflow for consuming
doca_flow_tune output as evidence inside a larger conversation
with the user — i.e. the workflow when the agent is the second
reader of a tune session the user (or a previous agent) ran.
The pattern:
Read the four-tuple first. Confirm the captured tune session names the command line + JSON config + DOCA version + device + as-deployed environment per
CAPABILITIES.md ## Safety policy"quote the four-tuple" rule. A captured session that omits any leg is evidence that cannot be re-checked, and the agent should say so rather than draw inferences from it.Read the analyze / visualize outputs as scoped recommendations. Per
CAPABILITIES.md ## Observability, the analyze JSON's recommendation is conditioned on the chosen three-axis decision; an agent quoting the recommendation without re-stating the axes for the user is handing them an answer to an unstated question.Cross-check against the Flow application's own view. Per the quote, do not paraphrase rule, the agent compares the captured tune session against the live Flow application's own counter / inspector surface per
doca-flow CAPABILITIES.md ## Observability(doca-flow/CAPABILITIES.md#observability) when both are available. Disagreement is signal — it routes to## debuglayer 6 (version) first.Route to
## modifyonly after the agent confirms the recommendation maps to a knob the Flow program exposes. Otherwise the recommendation is recommendation- unactionable perCAPABILITIES.md ## Error taxonomylayer 5; the right next step is a Flow-program proposal, not a tune re-run.Save the tune session alongside the monitor-mode baseline. The tune recommendation is downstream of the monitor-mode baseline per
CAPABILITIES.md ## Capabilities and modesmeasure-then-tune table; quoting the recommendation without the baseline is half the picture and thedoca-debug TASKS.md ## debug(doca-debug/TASKS.md#debug) ladder cannot pick up where the agent left off without both.
Deferred task verbs
The verbs below are not doca_flow_tune work and should be
routed out before the agent does any of them under this skill's
name.
write a doca-flow application ⇒
doca-flow/SKILL.md, layered ondoca-programming-guide/SKILL.md. Tune observes pipelines the program created; it does not create them.install DOCA ⇒
doca-setup ## configure(doca-setup/TASKS.md#configure) and## no-install(doca-setup/TASKS.md#no-install).library-internal pipe / counter / inspector deep dive ⇒
doca-flow/SKILL.md. Tune transports the data the Flow library exposes programmatically; the deeper per-pipe semantics belong to the library.streaming telemetry export of Flow KPIs to a production consumer ⇒ not a
doca_flow_tunefeature, and tune is not positioned as a production telemetry surface. The DOCA Telemetry Service (DTS) is the documented telemetry surface; routing belongs indoca-public-knowledge-map ## DOCA services(doca-public-knowledge-map/SKILL.md#doca-services).
Command appendix
doca_flow_tune-specific invocation classes the verbs above
reach for. Every row is a CLASS — the agent must not invent
flags, JSON field names, or recommendation identifiers beyond
--help on the installed binary and the public DOCA Flow Tune
guide.
Infra-aware preamble (every row below). Per the bundle's
detect → prefer → fall back → report contract documented in
doca-structured-tools-contract ## The agent behavior contract (doca-structured-tools-contract/SKILL.md#the-agent-behavior-contract),
the agent should:
Probe for the matching structured helper FIRST (
doca-env --jsonfor version + devices + libraries + drivers + hugepages;doca-capability-snapshotfor per-device capability flags;version-matrix.jsonfor "available since" lookups).If the probe succeeds, the structured tool's output is the authoritative answer and the agent SHOULD NOT also run the manual command in the row below. Report "using structured
<tool>".If the probe fails, fall back to the manual command in the row. Report "falling back to manual chain".
The schemas the structured tools emit are defined in
doca-structured-tools-contract ## Schemas(doca-structured-tools-contract/SKILL.md#schemas); the version-handling semantics are owned bydoca-version/SKILL.md.
| Purpose (class) | Invocation (shape) | Owning step | Reads as healthy when … |
|---|---|---|---|
| Discover the documented flag surface | doca_flow_tune --help plus the public DOCA Flow Tune guide for long-form documentation | ## configure step 4-7; ## debug layer 1 | Prints the documented mode-flag inventory; the agent uses --help as the only source of truth for mode / scope flag names. |
| Read the JSON config schema | Read the configuration-file example in the public DOCA Flow Tune guide (flow_tune_cfg.json) and --help | ## configure step 8 | The documented field set is the schema source of truth for the JSON the operator writes; do not infer fields not present there. |
| Confirm the Flow library version on the application side | pkg-config --modversion doca-flow on the side the Flow app runs | ## configure step 1; ## test step 2; ## debug layer 6 | Matches the version reported by the tune binary's --version; disagreement = partial install (route to doca-version TASKS.md ## debug (doca-version/TASKS.md#debug) layer 2). |
| Run offline analyze / visualize against a captured config | The documented offline-mode invocation against a captured pipeline-description JSON | ## run step 2 | The analyze JSON and visualize mermaid render without error; the captured config is the only input. |
| Snapshot a live Flow pipeline (online read-only) | The documented online-mode invocation against a JSON config naming network.server_uds and the scope | ## run step 3 | The dumper CSV, analyze JSON, and visualize mermaid land in the outputs_directory; live Flow state is not changed. |
| Diff two captured tune sessions | Compare the two analyze JSON files and dump files | ## test step 5 | The agent quotes the differing fields verbatim; never paraphrased. |
| Save a session snapshot for debug | Capture the full outputs_directory (CSV + JSON + mermaid + log files) plus the four-tuple of (cmd line, JSON config, DOCA version, device, env) | ## test step 1 + doca-debug TASKS.md ## debug (doca-debug/TASKS.md#debug) | The saved bundle is consumed by the cross-cutting debug ladder as the Flow-side evidence pair. |
Three cross-cutting rules for this appendix:
Never invent a
doca_flow_tuneflag, mode name, JSON config field name, or recommendation identifier.--helpon the installed binary plus the public DOCA Flow Tune guide viadoca-public-knowledge-map ## DOCA tools(doca-public-knowledge-map/SKILL.md#doca-tools) are the joint contract.Smoke before bulk. Every row presumes the offline smoke or the online read-only smoke succeeded first; a state-changing application of a recommendation without the smoke is the canonical dataplane-disruption failure mode.
Cross-link instead of duplicate. Cross-cutting commands (
pkg-config --modversion,doca_caps --list-devs,dmesg) live indoca-debug TASKS.md ## Command appendix(doca-debug/TASKS.md); Flow-application-side build / port / pipe commands live indoca-flow TASKS.md ## Command appendix(doca-flow/TASKS.md); this appendix names onlydoca_flow_tune-specific invocations on top.
Cross-cutting
A few rules that apply across every verb in this file, restated
here so they are visible at the point of action and not buried
in SKILL.md:
The public DOCA Flow Tune guide plus the installed
--helpare the joint source of truth. When they disagree (e.g. a field landed in a release this skill was not written against), the installed--helpwins for the user's actual session.doca_flow_tuneis one binary with two internal roles. The agent must say which role a session uses (offline / online read-only / online state-changing) before invocation and must surface that there is no separate "server package" and "client package" to install.Quote the four-tuple, not just the recommendation. Command line + JSON config + DOCA version + device + as-deployed environment is the minimum unit a tune recommendation is meaningful in.
The state-changing application of a recommendation is high-stakes; the agent must label every operation as read-only (offline / online read-only) or state-changing (online application of recommendation via Flow-program modify-a-sample) and gate every state-changing operation on a clean smoke per
## test.This skill assumes a healthy DOCA install (or the public NGC DOCA container) and a working
doca-flowapplication (or a captured configuration of one). If either is in doubt, route todoca-setup/SKILL.mdanddoca-flow/SKILL.mdbefore running anything else here. Capture the monitor-mode baseline before any recommendation.
Requirements and compatibility
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
The author says: Requires DOCA SDK installed at /opt/mellanox/doca on Linux (Ubuntu 22.04/24.04 or RHEL/SLES) with a BlueField DPU or ConnectX NIC attached, plus a running or captured `doca-flow` application to observe. Reads the user's local install via `pkg-config doca-flow` and the installed `/opt/mellanox/doca/tools/doca_flow_tune`. The validation steps require a live DOCA install.
Security
What our scanner noticed· Medium risk
- Large base64-encoded blobs
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Created by
- NVIDIA
- Publisher
- NVIDIA (Official)
- Source
- NVIDIA/skills · skills/doca-flow-tune · commit fce3cca
- Licence
- Apache License 2.0 (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE-APACHE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by NVIDIA or NVIDIA.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download doca-flow-tune.zip