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
CAPABILITIES.md
DOCA Flow Tune — Capabilities
Where to start: doca_flow_tune is a unified DOCA tool that
observes and recommends parameter changes on a live or captured
doca-flow pipeline. The pattern overview below names the
recurring doca_flow_tune-class questions. Pick the pattern
first, then drill into the H2 that owns the substance. For the
how of executing each pattern, jump to TASKS.md.
For the doca-flow API surface that created the pipeline this
tool tunes, see
doca-flow/CAPABILITIES.md.
This file is loaded by SKILL.md. It documents what
doca_flow_tune is, what it observes and what it recommends on,
how its server role and client / consumer role decompose inside a
single binary, what versions it ships in, what its layered
error and observability surfaces look like, and the safety
posture the tool's role at the edge of a live dataplane forces.
Pattern overview
Every doca_flow_tune question this skill teaches resolves into
one of SIX patterns. The patterns are CLASSES — they apply
across every doca-flow application a tune session can attach
to, not one specific pipeline.
doca_flow_tune pattern | Class shape | Where the substance lives |
|---|---|---|
| 1. Measure, then tune | flow-tune measures the user's pipeline (monitor mode) and recommends changes on top of that measurement (analyze / visualize); the program-side debug surface lives in doca-flow/SKILL.md. Recommending a change without a baseline answers a different question. | ## Capabilities and modes measure-then-tune bullet + TASKS.md ## configure |
| 2. Decide the role inside the artifact | doca_flow_tune is one binary with two internal roles: a server role that snapshots and exposes live pipe state via a local IPC channel, and a client / consumer role that analyzes / visualizes / recommends on top of either the live snapshot or a captured config. Pick which role the session uses before invocation. | ## Capabilities and modes one-binary-two-roles + TASKS.md ## configure |
| 3. Pick the tuning axis | rule placement vs resource hints / table sizing vs hardware-offload mode. Picking one is mandatory; mixing axes per session hides which axis moved the measurement. | ## Capabilities and modes three-axis table + TASKS.md ## configure |
| 4. Pick the measurement axis | rule-install rate vs lookup latency vs hardware-counter delta. The chosen measurement must match the tuning axis; a latency answer to a rule-install-rate question is the canonical apples-to-oranges failure. | ## Capabilities and modes measurement table + TASKS.md ## configure |
| 5. Snapshot → analyze → visualize | The cheapest read-only flow: snapshot live state (or a captured config), feed the analyze step, render the visualize step, then read the recommendation. No state on the live dataplane is changed by this flow. | TASKS.md ## run + ## Observability |
| 6. Diagnose unsound / attach-failed / empty output | Walk the layered error taxonomy in ## Error taxonomy instead of guessing at causes from a stack trace or an empty mermaid diagram. | ## Error taxonomy + TASKS.md ## debug |
Two cross-cutting rules that apply to every pattern above:
doca_flow_tuneis one binary, two internal roles. The historical Flow Tune Server and Flow Tune Tool (client) live inside this one artifact: there is one binary on disk, one package, one version, and the roles decompose inside the invocation surface — not across two separately-shipped CLIs. Recommendations that frame "the tune server" and "the tune client" as different artifacts are categorically wrong; they are different modes of the same artifact and the agent must surface that.Measure, then tune. The most common up-front mistake is recommending a parameter change before a monitor-mode baseline exists, or comparing a before / after pair on different measurement axes. An agent that does not name the baseline and its axis has silently conflated optimization with guessing.
Capabilities and modes
doca_flow_tune is shipped as a single CLI tool in the DOCA
install (/opt/mellanox/doca/tools/doca_flow_tune), driven by a JSON
configuration file whose shape is documented in the configuration-file example in the public DOCA Flow Tune guide. There is
no daemon process the operator runs as an independent service and
no library to link against for the tool itself — the entire
interaction model is write a JSON config, invoke the binary,
read the printed and / or CSV / mermaid / JSON output, propose a
minimum-diff change back to the surrounding doca-flow program.
Measure, then tune
doca_flow_tune covers both halves of a tuning loop on the
user's own pipeline:
| Step | Mode | What it produces |
|---|---|---|
| Baseline | monitor | Live hardware counters and software KPIs for the running pipeline, exportable to CSV — the "before" number on a named measurement axis |
| Recommendation | analyze / visualize | Pipeline structure and analysis that point at one knob in the doca-flow program |
| Re-measure | monitor | The "after" number on the same axis, same traffic |
The rule: no recommendation without a baseline, and before / after on the same axis. An optimization without a measured baseline is optimizing in the dark.
One binary, two internal roles
doca_flow_tune exposes two internal roles inside the one
artifact:
| Role | What it does | Where it lives in the binary |
|---|---|---|
| Server role | Sits next to (or, on configurations where the documented attach API is linked, inside) a doca-flow application and snapshots its live pipe / port / counter / KPI state, exposing it over a documented local IPC channel (per the configuration-file example in the public DOCA Flow Tune guide, the channel is a Unix-domain socket whose path lives in the network.server_uds field of the JSON config). | The server-side dumper / monitor invocation modes of the binary |
| Client / consumer role | Reads the snapshot (or a previously captured one), runs the analyze / visualize modes on it, and produces the recommendation the operator applies back to the Flow program. | The analyze / visualize invocation modes of the binary |
The two roles share one binary and one JSON configuration file. Picking which role a session engages is a configuration decision (which sections of the JSON config are populated, which mode flag is passed on the command line) — not a binary-choice decision. Recommendations that frame "install the server package, then the client package" are categorically wrong; the DOCA install ships the unified tool and there is one binary on disk.
Three-axis configuration
Every concrete doca_flow_tune session commits to a point in
three independent axes. Skipping any axis produces a session that
inspects or tunes the wrong thing under unstated assumptions.
| Axis | What it picks | Why the agent must name it |
|---|---|---|
| 1. Tuning axis | The CLASS of change being explored — rule placement (where rules live, which steering tier), resource hints (cache / table sizing / aging), or hardware-offload mode (HWS vs SWS vs hybrid, where applicable). | A tuning session that mixes axes per op produces a measurement that cannot be attributed to one change; the agent must commit to exactly one tuning axis per session. |
| 2. Measurement | The metric the recommendation is being judged against — rule-install rate, lookup latency, or hardware-counter delta. | A latency answer to a rule-install-rate question, or a counter-delta answer to a latency question, is the canonical apples-to-oranges failure. The measurement axis must match the tuning axis the operator named. |
| 3. Scope | WHICH pipe / port / app the session targets. Per the guide's monitor.hardware.pci_addresses and monitor.software[*].flow_port_id fields, the configuration explicitly names the scope; the agent's job is to confirm the scope matches the pipeline the user actually cares about. | Tuning the wrong pipe answers a different question and can disrupt a dataplane path the user did not intend to touch. |
Operating modes
Per the public Flow Tune guide and the live invocation
surface, doca_flow_tune exposes three operating modes the
agent should name explicitly:
| Mode | What it does | Read-only? |
|---|---|---|
| Offline | Consumes a previously captured pipeline-description JSON file (per the analyze.file_name field) and runs the analyze / visualize chain over it; the live Flow application is not contacted. | Yes |
| Online (read-only) | Attaches to the live Flow application via the documented IPC channel (per network.server_uds), snapshots the live counters / KPIs, and feeds them into the dumper / monitor / analyze chain. | Yes; the dumper writes a JSON or CSV file (per format_type / --dump-file-format), the visualize step renders a mermaid file, neither touches Flow state. |
| Online (state-changing application of recommendation) | After the operator has read a recommendation and committed to applying it, the recommendation is fed back into the doca-flow program (typically as a code change applied via the universal modify-a-sample workflow). | NO — this mode changes live Flow state via the surrounding application and is the high-stakes mode the ## Safety policy gates. |
The exact CLI mode flag names, the full JSON config schema, and
the documented pipeline-description file format live in the
public DOCA Flow Tune guide on docs.nvidia.com (reached via
doca-public-knowledge-map ## DOCA tools (doca-public-knowledge-map/SKILL.md#doca-tools))
and in the installed --help on the user's version. The skill deliberately does not
pin them — see
SKILL.md ## What this skill deliberately does not ship.
Version compatibility
For the canonical DOCA version-detection chain, the four-way
match rule, NGC container semantics, and the headers-win-over-docs
rule, see doca-version/SKILL.md. The body
lives there; this skill does not duplicate it.
The doca_flow_tune-specific overlay is:
The tool rides the
doca-flowlibrary version it observes. The tune binary, the Flow library*.sothe application links, and (when the attach role is used) the application's compile- time Flow headers must all come from the same DOCA install. Cross-train pairings (a tune binary from one DOCA train looking at a Flow application linked against a different train's*.so) are partial-install hazards perdoca-version CAPABILITIES.md ## Version compatibility(doca-version/CAPABILITIES.md#version-compatibility), and the agent must surface the mismatch rather than paper over it. The right answer for "the tool runs but the visualize step produces wrong-shaped output" is to confirm the four-way match first perdoca-version TASKS.md ## test(doca-version/TASKS.md#test).JSON config / output stability is not contractually frozen. The JSON configuration field inventory, the dumper CSV column order, the analyze JSON schema, and the visualize mermaid layout can shift across releases. Agents that need to consume tune output programmatically should prefer the structured-helper contract in
doca-structured-tools-contract ## Schemas(doca-structured-tools-contract/SKILL.md#schemas) when present and re-verify the textual layout against the user's installed--helpand the guide when absent.Per-platform support varies. The documented BlueField generation and host-side support set for Flow tuning varies per release; do not copy a tune capability claim from one BlueField generation to another. Re-read the public matrix per
doca-public-knowledge-map ## DOCA tools(doca-public-knowledge-map/SKILL.md#doca-tools).Where it runs. The binary runs on the side the operator has DOCA installed (host x86 / Arm, BlueField Arm, or NGC container). The Flow application it observes can be on the same side or — when the documented attach role's IPC reaches across — on the colocated side. What matters is that the tool, the application's linked Flow library, and the install version agree per the four-way match above.
Error taxonomy
doca_flow_tune's error surface is broader than a pure
read-only CLI because the tool both observes live state and
recommends a change against it; each side has its own failure
modes. The error layers the agent should distinguish, in
escalating order:
Config-syntax. The invocation itself does not parse or the JSON config is malformed: unknown flag, malformed JSON, a
network.server_udspath that the operator cannot create, amonitor.hardware.pci_addressesentry the device does not expose, conflicting flags. Cause: the operator wrote a flag or JSON field that does not exist on the installed version (often a field taken from prose / blog / older release). Routing: re-read--helpon the installed binary and the configuration-file example in the public DOCA Flow Tune guide; do not guess.Attach-failed (online mode). The invocation parses; the tool cannot reach the live Flow application's tune-server endpoint. Cause: the Flow application is not running, the application's tune-server role was never started, the configured
network.server_udspath does not exist or is not writable from the application's process, the application is running but the file-system namespace the socket lives in is not visible from the tool's side (e.g. one is inside a container the other is not). Routing: confirm the Flow application is up viadoca-flow TASKS.md ## test(doca-flow/TASKS.md#test); confirm the socket path matches the application's actualnetwork.server_udsvalue; confirm the namespace boundary.Pipe-not-found. The tool attached, but the pipe the operator named in scope is missing from the snapshot. Cause: the Flow application never created that pipe (route to
doca-flow TASKS.md ## modify(doca-flow/TASKS.md#modify)), the pipe was destroyed by a previous program-side action, or the operator is using the wrong identifier. The right move is to confirm the pipe set against the Flow application's own view, not to re-run the tune session expecting different output.Measurement-unsound. The session runs to completion and reports counters / KPIs, but the numbers are unsound and must not be quoted as-is. Three sub-layers:
Warm-up / steady-state not reached. The snapshot was taken during a transient state of the live Flow application; the dumper CSV captures cold-cache / cold-pipeline iterations and is below steady-state. Fix: let the application reach steady state before capturing.
Outliers / distribution unreported. A single hardware-counter delta hides a heavy tail; a single lookup-latency reading hides a 99.99-percentile spike. Fix: report the distribution alongside any single number per the quote what the tool said rule in
## Safety policy.Before / after pair not captured. The recommendation was applied without a before snapshot; the delta cannot be defended. Fix: re-run with a pre-change snapshot, then the change, then the post-change snapshot.
Recommendation-unactionable. The analyze step produced a recommendation, but it does not correspond to a knob the surrounding
doca-flowprogram exposes (the recommendation targets a pipe attribute the program hard-codes, or the recommendation requires a Flow API the program does not call). Cause: the recommendation was generic across the tool's library of known patterns and the program is more constrained than the patterns assume. The right move is the minimum-diff modification workflow inTASKS.md ## modify— surface the recommendation as a Flow-program-change proposal, not as a knob the tune binary itself can flip.Version. Cross-cutting partial-install / mixed-version layer per
doca-version CAPABILITIES.md ## Version compatibility(doca-version/CAPABILITIES.md#version-compatibility). Symptoms: tune binary version disagrees with the Flow application's linked Flow library version, the visualize step renders a degenerate diagram on a known-good pipeline layout, the analyze step produces JSON fields the public guide's documented schema does not list. Routing: walkdoca-version TASKS.md ## debug(doca-version/TASKS.md#debug) before any further investigation.Cross-cutting. The cause is below DOCA — driver, firmware, BlueField mode, NUMA, hugepages. Symptoms that do not fit layers 1-6 (e.g. counter deltas that fall sharply only on one NUMA node, attach failures correlated with
mlx5_corereload, recommendations that do not move the metric even after a clean before / after pair). Routing: hand off todoca-debug ## debug(doca-debug/SKILL.md) anddoca-setup ## debug(doca-setup/TASKS.md#debug); the tune surface has reached its limit.
doca_flow_tune does not itself participate in the
cross-library DOCA_ERROR_* taxonomy in the way an application-
linked library does; the tool is a CLI that drives observation
and analysis. For the cross-library DOCA_ERROR_* family and
the program-side debug order, see
doca-programming-guide CAPABILITIES.md ## Error taxonomy (doca-programming-guide/CAPABILITIES.md#error-taxonomy).
Observability
doca_flow_tune is itself an observability primitive for
the rest of the Flow surface — it is what other skills load to
see what a Flow pipeline is actually doing without
re-instrumenting the Flow program. Specifically:
Dumper output (JSON or CSV). Per the
dumper.file_namefield, the tool can write a JSON or CSV file (performat_type/--dump-file-format) of the captured counters / KPIs. The dump file is the documented machine-readable surface — the agent's rule for any baseline that will be re-read by a later run is capture CSV, not just stdout.Analyze output (JSON). Per the
analyze.file_namefield, the tool emits a pipeline-description JSON file that captures the structural and counter view of the pipeline; this is the artifact the visualize step consumes and the artifact a follow-up tune session can replay in offline mode.Visualize output (mermaid markdown). Per the
visualize.file_namefield, the tool renders the pipeline description as a mermaid markdown diagram suitable for a pull-request review or a debug session log.Monitor output. Per the
monitor.screen_modefield plus themonitor.hardwareandmonitor.softwareprofile sets, the tool can drive a screen-mode live view of the configured hardware / software profiles (per-pipe operations rates, hardware counters by PCI device, etc.). Useful for a real-time check that a tuning change has taken effect; the CSV dumper is the right surface for a captured baseline.Logs. Per the
logging.developer_logandlogging.operational_logfields, the tool writes a developer- level and an operational-level log; the agent's rule is quote what the log said when diagnosing layer 2 (attach-failed) or layer 4 (measurement-unsound) per## Error taxonomy.
For the cross-cutting env-side observability primitives
(representor enumeration, devlink dev show, mlxconfig) see
doca-setup CAPABILITIES.md ## Observability (doca-setup/CAPABILITIES.md#observability).
For the program-side observability surface (DOCA_LOG_LEVEL,
--sdk-log-level, the trace build flavor) see
doca-programming-guide CAPABILITIES.md ## Observability (doca-programming-guide/CAPABILITIES.md#observability).
For the Flow library's own programmatic counter / inspector
surface see
doca-flow CAPABILITIES.md ## Observability (doca-flow/CAPABILITIES.md#observability).
Safety policy
Overlay on the bundle-wide hardware-safety meta-policy. The rules below are this skill's per-artifact overlay on the cross-cutting rules in
doca-hardware-safetyCAPABILITIES.md ## Safety policy (doca-hardware-safety/CAPABILITIES.md#safety-policy) (specifically ### Per-artifact overlay pattern (doca-hardware-safety/CAPABILITIES.md#per-artifact-overlay-pattern)). When the two layers disagree, the stricter wins; when either layer says STOP, the agent stops.
doca_flow_tune is the most dataplane-sensitive tool this
bundle currently teaches an agent to drive directly: a recommended
parameter change applied back to the surrounding Flow program
lands in live Flow state on a running dataplane. The safety rules:
Read-only by default; state-changing only after a clean snapshot. The offline mode and the online read-only mode do not touch live Flow state and can be re-run freely. Applying a recommendation back to the Flow program — even via a code change reviewed in a pull request — does change live Flow state on the next deploy, can disrupt in-flight traffic, and is the high-stakes class of operation the agent must call out as such before recommending it.
Smoke-before-bulk is mandatory. Before any application of a recommendation, the agent runs the snapshot → analyze → visualize → confirm-before-change sequence in
TASKS.md ## test. A recommendation applied without that sequence is a guess against possibly-stale evidence — exactly the failure mode this rule exists to prevent.Every recommendation requires its own explicit confirmation. Before changing the Flow program, present the exact recommendation, scope, tuning axis, expected measurement direction, minimum diff, and rollback snapshot. Do not treat a prior confirmation as approval for a different recommendation or axis.
Bound the non-green loop. After a non-green result, reselect exactly one axis and try one newly confirmed recommendation. A second non-green result requires restoring the pre-change snapshot via
doca-flow TASKS.md ## rollback(doca-flow/TASKS.md#rollback) and escalating with both captured diffs; do not begin a third attempt.Quote the four-tuple, not just the recommendation. A
doca_flow_tunerecommendation is only meaningful with the (command line + JSON config + DOCA version + device + as-deployed environment) tuple. Quoting "tune said sizing X is better" without the tuple is unfalsifiable.Do not invent flags, JSON fields, or recommendation identifiers. The documented surface is the surface; the public DOCA Flow Tune guide plus the installed
--helpare the joint source of truth. Prose-derived field names are the most common hallucination failure for this skill; see the cross-cutting rule inTASKS.md ## Command appendix.Never widen the attach role as a workaround. When the tool cannot read what it expected, walk
## Error taxonomy— do not enable a state-changing access surface, do not bypass a namespace boundary, do not relax filesystem permissions on thenetwork.server_udssocket so the symptom goes away.
Public-source pointer
The single canonical public source for doca_flow_tune is the
DOCA Flow Tune page on docs.nvidia.com, reachable through
doca-public-knowledge-map ## DOCA tools (doca-public-knowledge-map/SKILL.md#doca-tools).
Do not invent flag strings, JSON config field names,
recommendation identifiers, or output column names beyond what
that page documents — and re-verify against --help on the
user's installed binary, since granular-build support means the available
surface is install-specific within the documented surface. For
the doca-flow API behind the pipeline being tuned, the source
of truth is doca-flow/SKILL.md plus the
public DOCA Flow guide reached the same way. For the measurement side,
see monitor mode in ## Capabilities and modes.
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