Generated banner for Doca Spcx Cc
Generated logo for Doca Spcx Cc

Doca Spcx Cc

NVIDIAOfficialCreated by NVIDIA

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

From the author

Use this skill when the user is invoking `doca_spcx_cc` (the host-side CLI under /opt/mellanox/doca/tools/) to load, parameterize, start, observe, or stop an SPC-X congestion-control algorithm on a BlueField with a DPA processor against a live RDMA / RoCE fabric, or picking SPCX vs the established `doca-pcc` surface. Trigger even when the user does not say "DOCA SPCX" or "doca_spcx_cc" — typical implicit phrasings include "I want to write a custom RTT-based CC algorithm for my RoCE fabric", "my SPCX session loaded but throughput / latency didn't change", "doca_pcc status shows Active but factory CC seems to still be in charge", "DOCA_PCC_PS_ERROR on start", "is the programmable-CC surface available on my install", or "DPA-side algorithm image won't load". Refuse and route elsewhere for DPA-side algorithm authoring detail, factory PCC firmware configuration, read-only PCC counter inspection, raw DPA cycle profiling, RDMA library programming, or general DOCA install — those belong to other skills.
— the description by NVIDIA

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

The doca-spcx-cc skill provides guidance for using the host-side doca_spcx_cc CLI tool to load, parameterize, and monitor SPC-X congestion-control algorithms on NVIDIA BlueField DPU hardware. It focuses on the operational workflow of deploying custom algorithms onto a DPA processor and evaluating their performance against live RDMA/RoCE fabric traffic. The skill emphasizes the critical requirement of generating actual fabric contention to observe algorithm behavior, provides a decision framework for choosing between SPCX and standard PCC surfaces, and outlines safety protocols for testing and production deployment.

What it does

  • Provides operational guidance for the doca_spcx_cc CLI tool.
  • Facilitates the loading, parameterization, and lifecycle management of SPC-X congestion-control algorithms.
  • Defines the decision tree for selecting between SPCX, doca-pcc, and factory firmware PCC.
  • Outlines the evaluation workflow for testing algorithms on non-production RDMA/RoCE fabrics.
  • Surfaces diagnostic procedures for common errors like DOCA_PCC_PS_ERROR.
  • Establishes safety and observability gates for transitioning algorithms to production.

When to use it

  • When you need to load or manage a custom SPC-X congestion-control algorithm on a BlueField DPU.
  • When evaluating the performance of a congestion-control algorithm under controlled fabric contention.
  • When deciding whether to implement a custom algorithm via the SPCX or doca-pcc surface.
  • When troubleshooting an SPCX session that is loaded but shows no impact on throughput or latency.
  • When preparing to roll out a custom congestion-control algorithm to a production environment.

Advantages

  • Provides a structured approach to high-stakes congestion-control deployment.
  • Prevents common pitfalls by enforcing a contention-positive evaluation requirement.
  • Clarifies the complex version-matching dependencies between the tool, library, compiler, and firmware.
  • Offers a clear safety framework for production cutovers.
  • Reduces ambiguity by explicitly defining the scope boundaries between SPCX, PCC, and DPA authoring.

Usage examples

“I want to write a new RTT-based congestion-control algorithm for my RoCE fabric — which surface do I target?”
The agent will guide you through the SPCX-vs-PCC-vs-factory-firmware decision tree to determine if SPCX is the appropriate surface based on your specific install and algorithm requirements.
“My SPCX algorithm appears to load cleanly but the link's throughput is unchanged — what's going on?”
The agent will help you verify if the link is experiencing actual contention, as congestion-control algorithms have no observable effect on idle links, and guide you through the error taxonomy.
“My CC algorithm works on the lab BlueField pairs; can I push it to the production fleet?”
The agent will evaluate your request against the safety overlay, requiring evidence from contention-positive testing, a documented rollback plan, and an established observability gate.
“doca_spcx_cc exits with DOCA_PCC_PS_ERROR on start.”
The agent will walk you through the layered error taxonomy to isolate whether the issue stems from the device, firmware slot, DPA image, or algorithm configuration.

Install

  1. Download the skill as a ZIP:

    https://mp-staging.autogineer.com/agent-skills/nvidia/doca-spcx-cc/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip doca-spcx-cc.zip -d .agents/skills

Documentation by NVIDIA

DOCA SPCX Congestion-Control Tool

Examples

  • "Should I use SPCX or doca-pcc for a custom CC algorithm?" — this is in scope. Walk the decision tree before loading anything on a live fabric.

  • "SPCX loaded but throughput did not change." — confirm the algorithm is in charge before retuning parameters.

Instructions

Follow Loading order below. Open the tasks companion for configure / run. Open the capabilities companion for the SPCX-vs-PCC tradeoff and safety. Do not open every companion file.

Where to start: This is a tool skill for invoking doca_spcx_cc — the host-side CLI that exercises an SPC-X congestion-control algorithm on a live RDMA / RoCE fabric driven by a BlueField with a DPA processor. Open the tasks companion and start at ## configure for the SPCX-vs-PCC-vs-factory-firmware decision tree (load-bearing gate before any code), the role decision (RP / NP), the DPA-side algorithm authoring vs consumption split, and the live-link / contention precondition. Open the capabilities companion when the question is what does SPCX let me express that doca-pcc does not, what is the SPCX-vs-PCC tradeoff, what runtime metrics does the tool surface, or what is the safety posture for loading a custom CC algorithm on a production fabric. If DOCA is not installed yet, route to doca-setup/SKILL.md first.

This skill covers the SPC-X CC tool. doca-pcc/SKILL.md is the established PCC story; SPCX is the documented extension that authors SPCX-class algorithms on the same DPA hardware substrate. The zero-touch RTT-based CC algorithm (ZTR-RTT) is one NVIDIA reference algorithm that can be loaded through either the PCC or SPCX path depending on the install and the user's algorithm choice; the agent surfaces this decision tree explicitly per the capabilities companion.

Example questions this skill answers well

The CLASSES of doca_spcx_cc 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.

  • "Should I use SPCX or doca-pcc for my custom CC algorithm?" — worked example: "I want to write a new RTT-based congestion-control algorithm for my RoCE fabric — which surface do I target?". Answered by the SPCX-vs-PCC-vs-factory-firmware decision tree in the capabilities companion

    • the "is SPCX the right surface on this install?" gate in the tasks companion step 1.

  • "How do I evaluate my authored SPCX algorithm on a real RDMA link before letting it touch production?" — worked example: "I have a DPACC-compiled SPCX algorithm and a non-prod BlueField pair; how do I run a contention-positive evaluation?". Answered by the authoring vs consumption split + the live-link precondition in the capabilities companion

    • the replica-first evaluation flow in the tasks companion.

  • "My SPCX algorithm appears to load cleanly but the link's throughput / latency curve is unchanged — what's going on?" — worked example: "the host-side doca_pcc --status reports Active and a stable session, but my RoCE flows look unchanged". Answered by the live-link / contention rule in the capabilities companion

    • the "algorithm has no signal under no contention" guidance in the tasks companion + the tasks companion (route through the layered error taxonomy before blaming the algorithm).

No contention → no signal → no conclusion. Active plus an unchanged traffic curve is not evidence that the algorithm failed to take over from factory CC. A CC algorithm has no observable behaviour without actual contention on the fabric, so an idle-link or contention-absent run is uninformative by construction — it supports no verdict in either direction. Establish that the run actually generated contention before concluding anything, and never declare an algorithm either broken or safe on such a run. Rule in the capabilities companion.

  • "My SPCX algorithm passed replica testing — what's the gate before I roll it forward to production?" — worked example: "my CC algorithm works on the two BlueField pairs in the lab; can I push it to the fleet?". Answered by the safety overlay in the capabilities companion (heavily cross-linked to doca-hardware-safety/SKILL.md): blast-radius bounded, observability gate proven, OOB reachable, factory-PCC rollback rehearsed, escalation path documented before any production cutover.

  • "Is doca_spcx_cc on my install, and is it paired with the matching doca-pcc library and DPACC compiler version?" — worked example: "is the SPCX surface available on my DOCA install?". Answered by the version-overlay in the capabilities companion, which redirects to the canonical doca-version/SKILL.md chain and adds the tool ↔ doca-pcc library ↔ DPACC compiler ↔ firmware custom-PCC slot match rule.

  • "My SPCX session errored — is it the tool, the algorithm, the device, or the firmware?" — worked example: "doca_spcx_cc exits with DOCA_PCC_PS_ERROR on start". Answered by the layered error taxonomy in the capabilities companion

    • the layered walk in the tasks companion.

Audience

This skill serves external developers, platform operators, and AI agents authoring, loading, and evaluating an SPC-X congestion-control algorithm on a BlueField with a DPA processor, against a live RDMA / RoCE fabric. Concretely:

  • A CC researcher / developer who has authored an SPCX-class DPA-side algorithm (or who is consuming a documented shipped reference such as the zero-touch RTT-based algorithm via the ZTR-RTT CC documentation via doca-public-knowledge-map on the SPCX path when the install + algorithm support it) and needs the operator-side harness to load, parameterize, start, observe, and stop the algorithm.

  • A platform operator running a programmable-CC pilot on a non-prod RDMA fabric to characterise the algorithm's behaviour under controlled contention.

  • An AI agent producing a "is this SPCX algorithm safe to roll forward" answer honestly — with evidence from a contention-positive evaluation, a documented rollback to the factory PCC, and an explicit blast- radius bound — instead of a guess from datasheet prose.

It is not for users debugging the doca_spcx_cc binary itself, not a substitute for the live public DOCA SPCX / DOCA PCC programming guides, not the right place for the DPA-side algorithm authoring detail (that path goes through the public DOCA PCC programming guide and the doca-pcc/SKILL.md + doca-dpa/SKILL.md skills), and not the right place for default factory PCC configuration (no host-side library or SPCX tool needed; route via doca-public-knowledge-map/SKILL.md).

The tool is shipped as a CLI binary under /opt/mellanox/doca/tools/, not a library you link against; it uses the same kind: tool three-file shape as the rest of the bundle.

Language scope

doca_spcx_cc is a C host-side CLI that links the host-side doca-pcc/SKILL.md library and loads a DPA-side SPCX algorithm image built by the DPACC compiler. The algorithm body is a separate DPA-side translation unit written in the language DPACC accepts. The skill keeps workflow guidance language-neutral and routes per-language questions to the public DOCA PCC / DPACC guides via doca-public-knowledge-map/SKILL.md.

When to load this skill

Load this skill when the user is — or the agent needs to — invoke doca_spcx_cc on a real host with DOCA installed, paired with a BlueField that has its DPA processor exposed AND the firmware custom-PCC slot enabled, against a port carrying RDMA / RoCE traffic with actual contention. Concretely:

  • Loading an authored SPCX algorithm (or a documented shipped reference) onto the BlueField via the SPCX surface, parameterizing it, starting it, and observing its effect on the live link.

  • Evaluating an SPCX algorithm on a non-prod replica before any production rollout — capturing the contention-positive run as evidence.

  • Comparing SPCX vs doca-pcc paths for the same algorithm class on the same install (where both paths are available) and deciding which to commit to.

  • Producing a "safe to roll forward" recommendation with the documented evidence + rollback plan, or refusing the recommendation when the evidence / rollback is missing per the capabilities companion.

  • Diagnosing a DOCA_PCC_PS_ERROR or a silent-no-effect symptom against the layered error taxonomy.

Do not load this skill for general DOCA orientation, DPA-side algorithm authoring detail, raw cycle profiling of the DPA, the factory PCC algorithm shipped in the firmware, or DOCA install. For those, route to doca-public-knowledge-map/SKILL.md, doca-pcc/SKILL.md, doca-dpa/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 SPCX expresses that PCC does not (and where the surfaces overlap), the SPCX-vs-PCC-vs-factory-firmware decision tree, the authoring vs consumption split, the role decision (RP / NP), the documented probe-packet format axis, the live-link / contention precondition rule (the load-bearing safety invariant — "a CC algorithm has no signal under no contention"), the runtime observability surface (per-port / per-flow trace formats + the host-side status surface), the triple-axis precondition rule (doca-pcc/SKILL.md: DPA-capable BlueField + firmware custom-PCC slot enabled + doca_pcc_cap_* agreement) extended with SPCX-specific availability, the version overlay (tool ↔ library ↔ DPACC ↔ firmware), the layered error taxonomy (install / device-binding / fw-slot / DPA-image / algorithm-precondition / live-link-precondition / runtime / version / cross-cutting), the observability surface, and the heavily-overlaid safety posture (a wrong CC algorithm on production can melt the fabric).

  • the tasks companion — step-by-step workflows for the in-scope task verbs: install (host-side DOCA install + DPA prerequisites + firmware custom-PCC slot), configure (SPCX-vs-PCC decision + role + algorithm + parameters

    • probe-packet format), build (route to install — the host-side tool is shipped; the DPA-side algorithm is user-built by DPACC), modify (refuse — do not patch the binary; modify the invocation, algorithm, and parameters), run (the prepare → smoke → contention-positive evaluation flow), test (iterative loop on the replica before production), debug (walk the error taxonomy), use (the "safe to roll forward" decision with evidence + rollback + escalation), plus a Deferred task verbs block.

The skill assumes a host where DOCA is already installed, a BlueField with a DPA processor and the firmware-level custom-PCC slot enabled is present and visible, the DPACC compiler is installed at a version matched to the host-side DOCA, the user already knows how (at sketch level) to write the DPA-side SPCX algorithm (or has a shipped reference algorithm to consume), and a non-prod RDMA / RoCE fabric with controllable contention is available for evaluation.

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:

  • A specific congestion-control algorithm. SPCX loads an algorithm the user supplies; the skill refuses to invent algorithm bodies and routes any "what algorithm should I write" question to the public DOCA PCC programming guide and to the user's own domain expertise.

  • Pre-baked example output (throughput / latency curves, per-flow counter snapshots). Output is device-, firmware-, fabric-topology-, and workload-specific; pinning one would mislead operators elsewhere.

  • Flag strings, subcommand names, probe-packet format tokens, or metric names beyond the DOCA release notes and --help. This surface still evolves; the installed --help is the authoritative inventory.

  • Wrappers, parsers, or scripts consuming the tool's output. The format is documented; script against your installed version using the release notes.

  • A tuning recommendation derived from a single observation. CC tuning on a live fabric is high-stakes: the skill prescribes how to capture evidence and compare against the factory PCC baseline, and refuses to turn one observation into a parameter change without the user's own domain analysis.

  • A samples/ or reference/ subtree. This is a thin loader for a shipped CLI; substantive material lives in the release notes, in --help, and in doca-pcc/SKILL.md + doca-dpa/SKILL.md.

Loading order

  1. Read this skill first to confirm the user's question is in scope (SPCX-side custom CC work, not factory firmware PCC, not raw DPA cycle profiling, and not algorithm authoring detail).

  2. For the SPCX-vs-PCC decision tree, the authoring vs consumption split, the live-link precondition, the version overlay, the error taxonomy, the observability surface, and the safety posture, see the capabilities companion.

  3. For the documented invocations and the prepare → smoke → contention-positive evaluation workflow — install, configure, build, modify, run, test, debug, use — see the tasks companion.

  • doca-pcc/SKILL.md — the host-side Programmable Congestion Control library SPCX builds on and links. The SPCX-vs-PCC decision tree in the capabilities companion is the load-bearing routing rule; conflating the two is the most common programmable-CC first-touch error.

  • doca-dpa/SKILL.md — the DPA control library the algorithm's DPA-side body builds on: kernel-launch model, DPACC build flags, DPA-side comms / verbs.

  • doca-rdma/SKILL.md — the RDMA / RoCE flows being controlled. Without traffic in flight and contention on the fabric the algorithm has no signal; surface this precondition before any evaluation.

  • doca-pcc-counters/SKILL.md — read-only PCC counter inspection; the cheaper "is anything happening on this port" step before or during an SPCX evaluation.

  • doca-hardware-safety/SKILL.md — the bundle-wide hardware-safety meta-policy this skill's ## Safety policy layers on. Deploying a wrong CC algorithm on a production fabric is a meta-policy STOP case.

  • doca-public-knowledge-map/SKILL.md — routing to the public SPCX, PCC, and DPA / DPACC guides.

  • doca-version/SKILL.md — canonical DOCA version handling. ## Version compatibility in the capabilities companion adds the tool ↔ doca-pcc ↔ DPACC ↔ firmware custom-PCC slot matching rule.

  • doca-setup/SKILL.md — env preparation, install and DPACC compiler verification, BlueField firmware configuration (the custom-PCC slot is a firmware-level setting), and the no install yet path via the public NGC DOCA container.

  • doca-debug/SKILL.md — the cross-cutting debug ladder. Cross-link runtime evidence and counter snapshots into a doca-debug session when the cause sits below DOCA.

  • doca-structured-tools-contract/SKILL.md — the detect → prefer → fall back → report contract the command appendix in the tasks companion honors.

  • doca-programming-guide/SKILL.md — shared DOCA programming patterns, including the cross-library DOCA_ERROR_* taxonomy this tool's error layer overlays.

The factory PCC algorithms inside ConnectX firmware are not in scope: they work without doca_spcx_cc and are configured through firmware knobs, not a host-side API. Route via doca-public-knowledge-map/SKILL.md.

Files

TASKS.md

DOCA SPCX Congestion-Control Tool — Tasks

Where to start: The verbs that carry real workflow content are ## install (host-side DOCA + DPA + firmware slot prerequisites), ## configure (the SPCX-vs-PCC decision tree + role + algorithm + parameters + probe- packet format), ## run (the prepare → smoke → contention-positive evaluation flow), ## test (iterative loop on the replica), ## debug (layered diagnosis), and ## use (the "safe to roll forward" decision with evidence + rollback + escalation). The two routing-stub verbs (build, modify) are kept because the agent's task-verb contract is uniform across the bundle and each carries a meaningful pointer to where the user's question actually belongs.

This file is loaded by SKILL.md after CAPABILITIES.md. It walks the agent through the documented invocations of doca_spcx_cc, the replica-first evaluation discipline, and the hand-off to the production roll-forward gate that the bundle-wide hardware-safety meta-policy gates.

install

doca_spcx_cc is shipped pre-built as part of every DOCA install that includes the SPCX optional component, under /opt/mellanox/doca/tools/. The operator-side install path:

  1. Confirm DOCA is installed with the SPCX component. If the binary is missing, route to doca-setup ## install (doca-setup/TASKS.md#configure) to install or repair the host-side DOCA package selection; confirm the version per doca-version TASKS.md ## configure (doca-version/TASKS.md#configure).

  2. Confirm the host-side doca-pcc/SKILL.md library is installed at the matching version. The SPCX tool links this library; the two must come from the same DOCA release band per CAPABILITIES.md ## Version compatibility.

  3. Confirm the DPACC compiler is installed and version-matched. Per the doca-dpa/SKILL.md overlay, the DPA-side algorithm image is built by DPACC and the host-side DOCA must match DPACC.

  4. Confirm a BlueField with a DPA processor is physically present and visible to the host through DOCA. Walk doca-dpa TASKS.md ## configure (doca-dpa/TASKS.md#configure) step 1 to enumerate the device.

  5. Confirm the firmware custom-PCC slot is enabled. Per doca-pcc CAPABILITIES.md ## Capabilities and modes (doca-pcc/CAPABILITIES.md#capabilities-and-modes) triple-axis precondition: custom-PCC requires a firmware-level slot to be enabled via the mlxconfig-class knob the DOCA PCC guide names. If the slot is disabled, the SPCX session will fail with the firmware-precondition error layer. The slot flip is a hardware-touching change per the bundle-wide hardware-safety meta-policy in doca-hardware-safety CAPABILITIES.md ## Safety policy (doca-hardware-safety/CAPABILITIES.md#safety-policy) — capture the pre-flight inventory, confirm OOB, and follow the cold-power-cycle commit rule.

  6. Confirm SPCX availability on the installed DOCA + BlueField generation. SPCX is the newer of the two programmable-CC surfaces; the DOCA release notes name the supported combinations. The agent does NOT assume SPCX is available — the gate is doca_spcx_cc --help succeeding on the installed binary + the DOCA release notes naming the user's setup.

  7. Confirm a non-prod RDMA / RoCE fabric with controllable contention is reachable for the evaluation flow in ## test. Without contention there is no signal to evaluate against.

  8. Confirm the operator has the privileges the DOCA release notes require for binding the device, loading the algorithm image, and writing the captured artifacts.

If the binary is not at the standard path, the fix is to install / repair the host-side DOCA package selection that includes the SPCX component, not to patch the file in place.

configure

The tool's configuration is the invocation + the loaded DPA-side algorithm image. Steps the agent walks the user through, in order:

  1. Gate — pick the right programmable-CC surface. Walk the SPCX-vs-PCC-vs-factory-firmware decision tree in CAPABILITIES.md ## Capabilities and modes. If the user wants a documented default algorithm, route to firmware configuration; if the user wants the established PCC surface, route to doca-pcc/SKILL.md; only commit to SPCX when the install + algorithm + BlueField combination supports it AND the user accepts the newer-surface tradeoff.

  2. Confirm the live-link / contention precondition. The fabric the tool will exercise must be live, carry RDMA / RoCE traffic, and have contention that matches the algorithm's design. Document the contention shape explicitly; an unstated contention pattern means the run is uninformative per CAPABILITIES.md ## Capabilities and modes live-link rule.

  3. Source the DPA-side algorithm. Either build the user-authored algorithm via DPACC (walk the public DOCA SPCX / DOCA PCC programming guides via doca-public-knowledge-map/SKILL.md for the algorithm-side discipline) or stage the documented shipped reference per the ZTR-RTT CC documentation via doca-public-knowledge-map. Pin a SHA + version of the algorithm image; the evaluation evidence depends on this.

  4. Pick the role. The role decision (RP — Reaction Point — vs NP — Notification Point) is a deployment-shape choice the user makes per-endpoint. The shipped doca_spcx_cc binary runs as RP and registers no --role CLI flag (--help first to confirm the actual registered flag set on that DOCA release; do NOT quote a --role flag the binary does not expose). The two endpoints of the deployment must still agree on the role assignment; quote the assignment back to the user so they can challenge it.

  5. Pick the probe-packet format. --probe-packet- format (e.g. CCMAD per the public default — re- confirm the exact token against --help). Both ends of the deployment must agree on the format.

  6. Stage the parameters. Each algorithm exposes a parameter set; the parameters live in the algorithm documentation, not in this skill. For a user-authored algorithm, resolve the applicable the public DOCA PCC programming guide through doca-public-knowledge-map/SKILL.md and validate every name/range there. For the shipped zero-touch RTT reference, use the ZTR-RTT CC documentation via doca-public-knowledge-map. If no authoritative range is available, stop rather than invent one. Pin the parameter set in writing; the parameter set is part of the evaluation evidence tuple per CAPABILITIES.md ## Observability.

  7. Plan thread count + core list. Per the shipped sample (the host-side doca-pcc defaults), the session uses a thread count + a per-thread core list. The agent does not invent the defaults; the shipped sample + --help on the installed binary are the authoritative source.

  8. Stage the capture surface. Decide where the per-port / per-flow tracer output goes, and pair it with a planned read of doca-pcc-counters/SKILL.md snapshots before / during / after the evaluation.

For the canonical DOCA universal lifecycle on the host-side PCC library this tool drives, see doca-pcc TASKS.md ## configure (doca-pcc/TASKS.md#configure) and doca-programming-guide TASKS.md ## configure (doca-programming-guide/TASKS.md#configure). This skill is concerned with the operator-side configuration of the SPCX harness.

build

doca_spcx_cc is shipped pre-built as part of every DOCA install that includes the SPCX optional component (/opt/mellanox/doca/tools/doca_spcx_cc). There is no source tree the external user is expected to compile for the tool itself.

The user-built half is the DPA-side algorithm image: the DPA-side translation unit the user wrote (or the shipped reference algorithm code), compiled by DPACC into an image the tool loads via the doca-pcc/SKILL.md library.

Routing for nearby "build" questions:

  • "The binary isn't there — do I need to build it?" → no. Route to doca-setup ## install (doca-setup/TASKS.md#configure) to install or repair the host-side DOCA package selection that includes the SPCX component.

  • "I want to build my own SPCX algorithm." → that is the DPA-side build. Route to doca-pcc TASKS.md ## build (doca-pcc/TASKS.md#build) for the cross-side build pattern + the public DOCA SPCX / DPACC guides via doca-public-knowledge-map/SKILL.md for the SPCX-specific algorithm authoring detail.

  • "I want to build the shipped reference RTT-based algorithm." → route to the ZTR-RTT CC documentation via doca-public-knowledge-map for the algorithm-side discipline; the tool's harness is the same.

  • "I want to extend the tool with a new mode." → out of scope here; this skill is for external operators consuming the shipped tool, not for contributors extending it.

The ## What this skill deliberately does not ship block in SKILL.md explicitly forbids adding a build recipe for the SPCX tool; revisit that policy before changing this section.

modify

Do not modify the shipped doca_spcx_cc binary. It is an NVIDIA-shipped CLI; there is no documented public way to change its behaviour, output format, or parameter surface, and none should be invented.

What the agent does modify, every time, is:

  1. The tool invocation — the registered argp flags (--device, --threads, --wait-time, --probe-packet-format), the algorithm-image / DPA-resource flags exactly as --help lists them, and any capture-surface flags the binary registers. The role (RP) is NOT a runtime knob.

  2. The DPA-side algorithm image — the user-authored algorithm body (rebuilt via DPACC) or the shipped reference algorithm's parameter set (the ZTR-RTT CC documentation via doca-public-knowledge-map).

That is the configuration loop in ## configure above and the iteration loop in ## test below; treat modify the invocation + algorithm, not the binary as the operating mode.

Routing for nearby "modify" questions:

  • "My algorithm is mis-behaving on the live link — can I tweak it in place?" → no; tweak the source, rebuild via DPACC, re-load. The runtime is immutable.

  • "I want a different observability surface than the tool exposes." → re-examine the documented observability surface in CAPABILITIES.md ## Observability; pair with doca-pcc-counters/SKILL.md and doca-rdma/SKILL.md for complementary surfaces. Patching the tool's output is out of scope.

run

The prepare → smoke → contention-positive evaluation flow — every SPCX session goes through it, no exceptions. The full invocation surface lives in the DOCA release notes; this section names the shape of the flow, not verbatim command lines (per CAPABILITIES.md ## Safety policy "do not invent flags").

Do-not-invent guard (flags vs subcommands). The doca_spcx_cc binary takes flags only — it has no subcommand surface. There is no load / start / observe / stop subcommand family for this binary. The flag inventory the bundle enumerates verbatim is --device, --threads, --wait-time, --probe-packet-format, plus algorithm-image and capture-surface flags (see ## Command appendix). The role (RP vs NP) is not registered as a CLI flag — do not quote --role against --help output that does not list it. The host-side status values reported by the bundle (Active, Standby, Deactivated, Error per CAPABILITIES.md ## Capabilities and modes) are status indicators, not subcommands.

  1. Confirm prerequisites. Per ## install and ## configure: binary present, library + DPACC + firmware-slot + SPCX availability all aligned, algorithm image pinned, live-link + contention fabric reachable.

  2. Capture the pre-flight inventory. Per the bundle-wide hardware-safety meta-policy (doca-hardware-safety CAPABILITIES.md ## Capabilities and modes (doca-hardware-safety/CAPABILITIES.md#capabilities-and-modes)): PCIe topology, link state, firmware level, BFB level, current CC algorithm in effect (factory or prior programmable), host-side env snapshot. This is the baseline the rollback compares against.

  3. Confirm OOB management path is reachable. Per the meta-policy doca-hardware-safety CAPABILITIES.md ## Safety policy (doca-hardware-safety/CAPABILITIES.md#safety-policy) OOB rule, if the cutover touches a BlueField the operator manages over the same RDMA link the SPCX algorithm controls.

  4. Smoke run — load the algorithm, briefly observe the host-side status. Run doca_spcx_cc with the chosen role + probe-packet format + algorithm image + thread / core layout for a short window. Confirm the host-side status reaches Active per CAPABILITIES.md ## Observability and the tool emits the documented start banner. If the session does not reach Active, stop and walk ## debug layer by layer.

  5. Inject the planned contention pattern. The evaluation only produces signal when the fabric is contended in a way that matches the algorithm's design. Confirm via doca-pcc-counters/SKILL.md snapshots and doca-rdma/SKILL.md flow observation that the contention is real.

  6. Capture per-port / per-flow runtime output. The tool's tracer-style output is the primary evidence surface; pair it with doca-pcc-counters snapshots before / during / after, and with doca-rdma-side metrics (throughput, latency, completion ordering).

  7. Stop the algorithm cleanly. Send SIGINT / SIGTERM per the shipped sample's signal handling (the agent re-confirms against --help); confirm the host-side status transitions to Deactivated cleanly; capture the final tracer output.

  8. Confirm post-stop state on the link. The fabric should return to the algorithm-in-effect- before state (the captured pre-flight baseline). If it does not, the rollback path is the immediate next step.

When recording the run for downstream consumers (the evaluation evidence pattern), write down: the DOCA version, the DPACC compiler version, the BlueField identity + firmware version + custom-PCC slot state, the algorithm name + SHA + version + parameter set, the role assignment per endpoint, the probe-packet format, the fabric topology + contention shape, the capture window, the tracer output, the doca-pcc-counters snapshots, and the doca-rdma metrics. The downstream ## test, ## debug, and ## use workflows depend on those fields.

test

doca_spcx_cc is a high-stakes evaluation tool, so its ## test verb is about iteratively building evidence — confirming the algorithm's behaviour is what the user expects under controlled contention, on a replica that matches production's hardware class — not unit-testing the tool itself.

## test is an iterative loop, not a one-shot pass. A single contention-positive run is the beginning of the evidence pile, not the end. Each iteration tightens one axis (parameter set, contention shape, algorithm version, observability completeness, fabric-topology match) and loops back to ## run.

The eval-loop overlay (rows apply to every SPCX session):

Iteration triggerWhat it looks likeWhat changes next iteration
Host-side status never reaches ActiveInstall / device-binding / firmware-slot / DPA-image / algorithm-precondition layer of the error taxonomyWalk CAPABILITIES.md ## Error taxonomy layers 1–5 in order; do not jump ahead.
Status reaches Active but tracer / counters show no effect on the linkLive-link / contention layer — the link is idle, the contention is below the algorithm's signal floor, or the contention pattern is wrongInject the planned contention; confirm via doca-pcc-counters that the link is in fact congested; re-run. Do NOT conclude the algorithm is broken from an idle-link run.
Algorithm running on a congested link but the captured behaviour is wrong (oscillation, rate collapse, persistent under-utilisation)Runtime layer of the error taxonomyDo NOT roll forward; stop the algorithm, capture the runtime evidence, walk doca-pcc TASKS.md ## debug (doca-pcc/TASKS.md#debug); fix in the algorithm source, rebuild via DPACC, re-evaluate.
Behaviour looks right on this replica but the replica does not match productionPer the bundle-wide hardware-safety replica-first ruleRe-run on a replica that matches production on BlueField generation, firmware level, host kernel, fabric topology class, contention pattern, and representative workload class; do NOT roll forward against a non-matching replica.
Two consecutive runs on the same setup produce different captured behaviourNon-determinism in the contention generator, the algorithm itself, or the observability surfacePin the contention generator; pin the parameter set; pin the algorithm SHA; re-run; if still divergent, the algorithm's non-determinism is the answer the user came for.
Algorithm passes replica testing on every captured axisEvidence is ready for the production-rollout gate per ## useMove to ## use; do NOT skip the bounded-blast-radius and rollback-rehearsed steps.

The agent's rule: every change to the algorithm or its parameters re-opens the loop. Re-running with a tweaked parameter set and quoting the previous captured behaviour without re-checking under the new parameter set is exactly the failure mode this loop replaces.

Loop termination: stop iterating once the captured behaviour is consistent across two consecutive runs on a production-matching replica — including hardware/firmware/kernel/topology, contention pattern, and representative workload class — AND the rollback path has been rehearsed end-to-end on the replica AND the bounded-blast-radius rollout plan is in writing.

This skill does NOT ship a "test fixture" or pre- recorded expected output. CC behaviour is fabric-, topology-, contention-, and algorithm-specific; pinning one would mislead operators on a different setup.

debug

When doca_spcx_cc fails to load, fails to reach Active, or behaves wrongly on a congested link, walk the layered error taxonomy in CAPABILITIES.md ## Error taxonomy in order. The shape of the diagnosis:

  1. Install. Confirm the binary exists, the SPCX optional component is installed, and the host-side doca-pcc/SKILL.md library is present. Route to doca-setup ## install (doca-setup/TASKS.md#configure) if not.

  2. Device-binding. Confirm the BlueField is visible to DOCA per doca-pcc TASKS.md ## configure (doca-pcc/TASKS.md#configure) step 1.

  3. Firmware custom-PCC slot. Confirm the slot is enabled via the mlxconfig-class knob the public guide names. The slot flip is a hardware-touching change per doca-hardware-safety CAPABILITIES.md ## Safety policy (doca-hardware-safety/CAPABILITIES.md#safety-policy).

  4. DPA-image. Confirm the DPA-side algorithm image was built by a DPACC version matched to the host-side DOCA per CAPABILITIES.md ## Version compatibility; re-build if not.

  5. Algorithm-precondition. Confirm the parameter set is within the algorithm's documented ranges; confirm the algorithm's required probe-packet format is exposed on this install; confirm the far-side endpoint exists and has the matching role assignment.

  6. Live-link / contention. Confirm contention actually exists on the fabric and that its shape matches the algorithm's design. This is the most common "my algorithm did nothing" root cause.

  7. Runtime. If the algorithm is running on a congested link but the captured behaviour is wrong, capture the evidence and walk doca-pcc TASKS.md ## debug (doca-pcc/TASKS.md#debug); the rollback path is the immediate operational response — do NOT keep iterating on a production- exposed deployment.

  8. Version. Walk doca-version TASKS.md ## debug (doca-version/TASKS.md#debug) end-to-end; the tool ↔ library ↔ DPACC ↔ firmware quadruple is the common version mismatch failure.

  9. Cross-cutting. Cause is below DOCA — driver, firmware, BlueField mode, host kernel. Hand off to doca-debug ## debug (doca-debug/SKILL.md) and doca-setup ## debug (doca-setup/TASKS.md#debug).

In every case: quote what the tool reported. Do not paraphrase the tracer output, do not summarize the per-port / per-flow stream into a single number, and do not skip the live-link / contention layer.

use

The captured evaluation evidence is consumed by the roll-forward vs roll-back decision — the load- bearing safety gate the bundle's hardware-safety meta- policy gates. The agent's hand-off:

  1. Confirm every replica-first criterion is met per CAPABILITIES.md ## Safety policy: evaluation on a replica that matches production on hardware class, contention shape matched to the algorithm's design, two consecutive runs produced consistent behaviour, rollback rehearsed end-to-end on the replica.

  2. Confirm the production rollout plan is bounded. First production cutover is one BlueField pair, not the fleet. Then a small bounded set. Then progressively larger bounded sets, with the observability gate proven at each step.

  3. Confirm the rollback to factory PCC is documented. The rollback names the exact action (revert the loaded algorithm, fall back to the factory PCC behaviour in firmware) and the gate that triggers it (observability surface goes silent, queue depth exceeds threshold, host-side doca-pcc status transitions to Error, fabric- level link instability).

  4. Confirm OOB management path is reachable for every production endpoint the algorithm is loaded onto.

  5. Confirm maintenance window discipline per doca-hardware-safety CAPABILITIES.md ## Safety policy (doca-hardware-safety/CAPABILITIES.md#safety-policy) — cutovers run inside an explicit, time-boxed window with operations notified.

  6. Refuse the cutover when any gate fails. The agent surfaces the failed gate as blocking and does NOT find a creative workaround. Escalate per doca-hardware-safety CAPABILITIES.md ## Safety policy (doca-hardware-safety/CAPABILITIES.md#safety-policy) no-rollback rule.

The agent's rule: the tool evaluates; this verb gates the cutover; the doca-hardware-safety/SKILL.md meta-policy is the final authority. A "safe to roll forward" answer requires evidence + bounded plan + documented rollback + OOB + maintenance window; anything less is refused.

Deferred task verbs

The verbs below are not doca_spcx_cc work and should be routed out before the agent does any of them under this skill's name.

  • DPA-side algorithm authoring detail → doca-pcc/SKILL.md + doca-dpa/SKILL.md + the the public DOCA PCC programming guide via doca-public-knowledge-map/SKILL.md. This skill is the operator-side harness; the algorithm-side discipline is owned upstream.

  • Factory PCC configuration → firmware-level knobs, no host-side library or tool needed. Route via doca-public-knowledge-map/SKILL.md.

  • PCC counter inspection without loading an algorithm → doca-pcc-counters/SKILL.md. The counter tool is read-only and side-effect-free; SPCX loads an algorithm.

  • Raw DPA cycle profiling → different surface, different tool. Route via doca-public-knowledge-map ## DOCA tools (doca-public-knowledge-map/SKILL.md#doca-tools); this tool's tracer output is at the SPCX-runtime layer, not the DPA-instruction layer.

  • RDMA library programming questions → doca-rdma/SKILL.md.

  • General DOCA install / repair → doca-setup ## install (doca-setup/TASKS.md#configure).

Command appendix

doca_spcx_cc-specific invocation classes the verbs above reach for. Every row is a CLASS — the agent must not invent flags, role tokens, probe-packet format tokens, or metric names beyond --help on the installed binary and the DOCA release notes.

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:

  1. Probe for the matching structured helper FIRST (doca-env --json for version + devices + DPA availability + custom-PCC slot state in one shot; doca-capability-snapshot for per-device capability flags).

  2. If the probe succeeds, the structured tool's output is the authoritative answer.

  3. If the probe fails, fall back to the manual command in the row.

  4. The schemas the structured tools emit are defined in doca-structured-tools-contract ## Schemas (doca-structured-tools-contract/SKILL.md#schemas).

Purpose (class)Invocation (shape)Owning stepReads as healthy when …
Discover the documented flag surfacedoca_spcx_cc --help + the DOCA release notes## configure; ## debug layer 1Prints the documented inventory the shipped binary actually registers via argp: --device, --threads, --wait-time, --probe-packet-format, plus algorithm-image / capture-surface flags. The role (RP vs NP) is NOT registered as a CLI flag on this DOCA release; do not quote --role against --help output that does not list it.
Smoke-load the algorithm in RP roledoca_spcx_cc --device <mlx5_*> --probe-packet-format <token> ... (flags per --help; the binary runs as RP, see ## configure step 4)## run step 4Host-side status reaches Active; the documented start banner prints; the per-port tracer surface begins emitting.
Drive the contention-positive evaluationSmoke-load above + the planned contention pattern injected on the fabric## run steps 5–6; ## test iterationThe tracer surface shows the algorithm reacting to the contention; doca-pcc-counters snapshots show non-trivial PCC counter activity; doca-rdma metrics show the modulation the algorithm is designed for.
Stop the algorithm cleanlySIGINT / SIGTERM to the running session per the shipped sample's signal handling## run step 7Host-side status transitions to Deactivated; the post-stop fabric state matches the captured pre-flight baseline.
Capture the evidence tuplePair the tool's tracer output with doca-pcc-counters snapshots, doca-rdma metrics, and the metadata tuple per CAPABILITIES.md ## Observability## test baseline-capture rule; ## use gateThe full (DOCA + DPACC + BlueField + firmware + algorithm SHA + parameter set + role + probe-packet format + fabric topology + contention shape + window) tuple is attached to the captured artifact.
Roll back to the factory PCCThe documented rollback path the operator rehearsed on the replica## useThe previous CC algorithm (factory or prior programmable) is restored; the captured post-rollback state matches the pre-flight baseline.

Three cross-cutting rules for this appendix:

  • Never invent a flag, role token, probe-packet format token, algorithm parameter name, or metric name. --help on the installed binary and the DOCA release notes are the joint contract.

  • Smoke before contention, contention before conclusion. Every row above presumes the smoke reached Active first AND the contention precondition was met. Drawing a conclusion from either step in isolation is the canonical SPCX evaluation failure.

  • Cross-link instead of duplicate. Cross-cutting commands (pkg-config --modversion doca-pcc, doca_caps --list-devs, mlxconfig -d <bdf> q for the custom-PCC slot state) live in doca-debug ## debug (doca-debug/SKILL.md) and doca-setup TASKS.md ## debug (doca-setup/TASKS.md#debug); this appendix names only doca_spcx_cc-specific invocation classes.

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 DOCA release notes plus the installed --help are the joint source of truth. When they disagree, the installed --help wins for the user's actual run.

  • A CC algorithm has no signal under no contention. The agent refuses to declare an algorithm safe based on an idle-link or contention-absent run.

  • Replica-first is mandatory. No production cutover without a contention-positive evaluation on a hardware-matched replica and a rehearsed rollback.

  • Factory-PCC rollback is the always-available escape hatch. Every deployment plan names it explicitly; a plan without it is refused per the bundle-wide hardware-safety meta-policy.

  • Quote the (DOCA + DPACC + BlueField + firmware + algorithm SHA + parameter set + role + probe-packet format + fabric topology + contention shape + window) tuple. Evidence without the tuple is unreplicable.

  • This skill assumes a healthy DOCA install with the SPCX component, a paired doca-pcc/SKILL.md library

    • DPACC, a BlueField with a visible DPA and the firmware custom-PCC slot enabled, and a contention-positive replica fabric. If any of those is in doubt, route to doca-setup/SKILL.md, doca-pcc/SKILL.md, or doca-hardware-safety/SKILL.md before running anything else here.

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 the SPCX optional component, a BlueField exposing its DPA processor with the firmware custom-PCC slot enabled, the DPACC compiler installed and version-matched, and a non-prod RDMA / RoCE fabric with controllable contention reachable for evaluation. Probes via `pkg-config doca-pcc` and `doca_spcx_cc --help`. 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-spcx-cc · 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.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download doca-spcx-cc.zip