Generated banner for Doca Flow Tune
Generated logo for Doca Flow Tune

Doca Flow Tune

NVIDIAOfficialCreated by NVIDIA

  • Skill
  • Tool integration
  • Software development
  • Apache-2.0
  • Medium risk

From the author

Use this skill when the user is tuning a live or captured `doca-flow` pipeline with `doca_flow_tune` — snapshotting pipe / counter / KPI state, picking a tuning axis (rule placement, resource hints / table sizing, HW-offload mode) and a matching measurement (rule-install rate, lookup latency, hardware-counter delta), running offline or online (read-only or state-changing) modes, reading the dumper CSV / analyze JSON / visualize mermaid, or applying a recommendation back into the Flow program. Trigger even when the user does not explicitly mention "doca_flow_tune" — typical implicit phrasings include "Flow rule-install rate is low on BlueField", "table sizing looks wrong for this pipe", "tune visualize step is empty", "before/after counters don't move", or "which doca-flow knob does this recommendation hit". Refuse and route elsewhere for writing the doca-flow application, DOCA install, or streaming Flow telemetry — those belong to other skills.
— the description by NVIDIA

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

  1. Download the skill as a ZIP:

    https://autogineer.com/agent-skills/nvidia/doca-flow-tune/download
  2. Unzip 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_tune is 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 --help on the installed version); use only the commands the public guide and the installed --help list. Counter dumping is part of monitor (--enable-dump, or the background sub-command for dumping without screen output), not a separate command; analyze accepts the export and packet-trace sub-commands (hyphenated). monitor and analyze run the binary in server-attached online mode against a live doca-flow application reached over a Unix- domain socket whose path lives in network.server_uds of 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 configured outputs_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 = visualize over 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-flow pipeline'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_tune reports 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 companion

    • the 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_tune observes and recommends on: the unified-artifact decomposition (server role

    • client / 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.json example in the public Flow Tune guide), the dumper / monitor / analyze / visualize output surfaces, the version overlay (this tool rides the doca-flow library version it observes; the canonical rules live in doca-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 a Deferred task verbs block and a Command 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 --help are 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/, or reference/ subtree. Mock tuning recipes read as production-grade and mislead.

Loading order

  1. Read this skill first to confirm the user's question is in scope (the user actually wants to invoke doca_flow_tune against a doca-flow pipeline, not measure baseline perf or learn the Flow API).

  2. For what doca_flow_tune observes, 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.

  3. For the documented invocations and the snapshot → analyze → visualize → propose → smoke workflow — install, configure, build, modify, run, test, debug, use — see the tasks companion.

  • 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 by doca-flow program 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 on docs.nvidia.com and 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 compatibility overlay 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 to doca-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 policy overlays.

Files

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 patternClass shapeWhere the substance lives
1. Measure, then tuneflow-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 artifactdoca_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 axisrule 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 axisrule-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 → visualizeThe 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 outputWalk 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_tune is 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:

StepModeWhat it produces
BaselinemonitorLive hardware counters and software KPIs for the running pipeline, exportable to CSV — the "before" number on a named measurement axis
Recommendationanalyze / visualizePipeline structure and analysis that point at one knob in the doca-flow program
Re-measuremonitorThe "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:

RoleWhat it doesWhere it lives in the binary
Server roleSits 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 roleReads 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.

AxisWhat it picksWhy the agent must name it
1. Tuning axisThe 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. MeasurementThe 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. ScopeWHICH 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:

ModeWhat it doesRead-only?
OfflineConsumes 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-flow library version it observes. The tune binary, the Flow library *.so the 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 per doca-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 per doca-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 --help and 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:

  1. Config-syntax. The invocation itself does not parse or the JSON config is malformed: unknown flag, malformed JSON, a network.server_uds path that the operator cannot create, a monitor.hardware.pci_addresses entry 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 --help on the installed binary and the configuration-file example in the public DOCA Flow Tune guide; do not guess.

  2. 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_uds path 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 via doca-flow TASKS.md ## test (doca-flow/TASKS.md#test); confirm the socket path matches the application's actual network.server_uds value; confirm the namespace boundary.

  3. 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.

  4. 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.

  5. Recommendation-unactionable. The analyze step produced a recommendation, but it does not correspond to a knob the surrounding doca-flow program 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 in TASKS.md ## modify — surface the recommendation as a Flow-program-change proposal, not as a knob the tune binary itself can flip.

  6. 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: walk doca-version TASKS.md ## debug (doca-version/TASKS.md#debug) before any further investigation.

  7. 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_core reload, recommendations that do not move the metric even after a clean before / after pair). Routing: hand off to doca-debug ## debug (doca-debug/SKILL.md) and doca-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_name field, the tool can write a JSON or CSV file (per format_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_name field, 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_name field, 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_mode field plus the monitor.hardware and monitor.software profile 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_log and logging.operational_log fields, 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-safety CAPABILITIES.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_tune recommendation 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 --help are the joint source of truth. Prose-derived field names are the most common hallucination failure for this skill; see the cross-cutting rule in TASKS.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 the network.server_uds socket 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