| 开源协议 | Apache-2.0 |
| 名称 | doca-flow-tune |
| 描述 | > 当用户使用 doca_flow_tune 调整实时的或捕获的 doca-flow 管道时使用此技能——快照管道/计数器/KPI状态,选择调整轴(规则放置、资源提示/表大小、硬件卸载模式)和相应的测量(规则安装速率、查找延迟、硬件计数器增量),运行离线或在线(只读或更改状态)模式,读取dumper CSV/分析JSON/可视化mermaid,或将建议应用回Flow程序。即使用户没有明确提及“doca_flow_tune”也触发——典型的隐式表述包括“BlueField上Flow规则安装率低”、“此管道的表大小看起来不正确”、“调整可视化步骤为空”、“前后计数器不移动”或“此建议影响哪个doca-flow旋钮”。对于测量基线数字(doca-flow-perf、doca-flow-dpa-perf)、编写doca-flow应用程序、DOCA安装或流式Flow遥测,请拒绝并路由到其他地方——这些属于其他技能。 metadata: kind: tool compatibility: > 需要DOCA SDK安装在Linux上(Ubuntu 22.04/24.04或RHEL/SLES)的/opt/mellanox/doca,并连接BlueField DPU或ConnectX NIC,且有一个正在运行或捕获的doca-flow应用程序要观察。通过pkg-config doca-flow和随附的flow_tune_cfg*.json模板及/opt/mellanox/doca下的scripts/目录读取用户的本地安装。 |
DOCA Flow 调优(doca_flow_tune)
子命令表面修正(Run-12,已针对Run-13验证于 doca/tools/flow_tune/src/tune/common/tune_config.cpp)。
doca_flow_tune是一个单一二进制,其在给定调用上的角色由用户选择的五个顶级子命令决定——dump、monitor、web、analyze、visualize(CLI上不区分大小写;本技能中为可读性用大写表示)。所有五个名称均通过doca_argp_cmd_set_name(...)在tune_config.cpp(第1799/1860/1896/2074/2111行)注册;analyze进一步接受import/export/packet_trace/sim_timing子子命令。dump/monitor/web子命令将二进制作为服务器连接在线模式运行,通过Unix域套接字与实时doca-flow应用交互,套接字路径位于随附的flow_tune_cfg*.json的network.server_uds中;analyze/visualize子命令在离线 / 捕获快照模式下运行,针对在线模式先前丢弃到配置的outputs_directory的 JSON/CSV 文件。本技能其余部分(以及CAPABILITIES.md/TASKS.md)使用旧式的 “服务器角色 / 在线模式 / 离线模式” 框架——该框架与这里的子命令表面一致:服务器角色 = 服务器连接的在线子命令(dump/monitor/web);在线模式 =dump/monitor/web中的任何一个;离线模式 =analyze/visualize。将子命令名称视为主要句柄;将服务器/在线/离线视为子命令选择的下游行为结果。
从哪里开始: 这是一个调用 doca_flow_tune(统一的DOCA Flow调优工具)的工具类技能。打开 TASKS.md 并从 ## configure 开始,提交三轴决策(目标Flow管道 × 调优轴 × 测量)并选择离线/在线/服务器连接模式,然后 ## run 用于快照→分析→可视化循环,然后 ## test 用于烟雾式批量覆盖,该覆盖门控任何将调优建议状态更改地应用回Flow应用程序代码的操作。当问题是 doca_flow_tune 可以观察和推荐什么状态、其服务器/客户端角色如何在单一制品中适配、该工具随哪个DOCA版本发布 或 如何解释dumper/monitor/analyze/visualize输出而不自欺 时,打开 CAPABILITIES.md。如果DOCA未安装,请先路由到 doca-setup;如果用户还没有运行中的 doca-flow 应用程序,请路由到 doca-flow —— flow-tune不创建管道,它观察并推荐基于库已创建的管道。
该技能擅长的示例问题
doca_flow_tune 问题的类别此技能旨在回答的,每个类别带一个工作示例。类别是承载内容的;工作示例是其中一个实例。
- “我应该为这个问题使用
doca-flow-tune还是doca-flow-perf?” —— 工作示例:“我的doca-flow服务运行在BlueField-3上,我认为规则安装速率低于设备可持续的性能;我是先测量还是先调优?”。由CAPABILITIES.md ## Capabilities and modes中的 调优与性能 边界以及路由到doca-flow-perf用于基线对比,此技能用于基于已测量基线的优化来回答。 - “捕获运行中
doca-flow管道的硬件和软件计数器快照,而不影响数据平面。” —— 工作示例:“我想要一个无副作用的dumper/monitor针对运行中的Flow端口运行,用于操作速率配置文件”。由TASKS.md ## run中的快照流程以及CAPABILITIES.md ## Safety policy中的默认只读姿态回答。 - “为我实际提出的问题选择正确的调优轴——规则放置、资源提示或硬件卸载模式。” —— 工作示例:“我的Flow管道规则安装速率低;这是放置问题还是表大小问题?”。由
CAPABILITIES.md ## Capabilities and modes中的三轴配置 +TASKS.md ## configure中的配置步骤回答。 - “
doca_flow_tune的服务器角色和客户端/消费者角色如何在单一制品中配合?” —— 工作示例:“我一直读到Flow Tune服务器和Flow Tune客户端;我运行哪个二进制?”。由CAPABILITIES.md ## Capabilities and modes中的 单二进制,双角色 分解和TASKS.md ## configure中相应的路由回答。 - “如何将flow-tune推荐的参数更改带回我的doca-flow应用程序而不破坏数据平面?” —— 工作示例:“分析步骤建议为我的管道使用不同的表大小;我如何应用它?”。由
TASKS.md ## modify中的 推荐→Flow程序最小差异修改 循环和TASKS.md ## test中的烟雾式批量规则回答。 - “
doca_flow_tune报告为空/与Flow应用不一致/无法附加——这意味着什么?” —— 工作示例:“工具运行但可视化步骤产生空的mermaid图”。由CAPABILITIES.md ## Error taxonomy中的分层错误分类 +TASKS.md ## debug回答。
受众
该技能服务于需要理解、表征或改进用户在真实安装和设备上运行中的 doca-flow 管道行为的外部操作者、性能工程师、DOCA Flow应用开发者和AI代理。具体来说:
- 在BlueField上运行
doca-flow服务的平台操作者,希望在推荐任何更改之前获得只读快照,了解存在哪些管道及其硬件/软件计数器如何进展。 - 已有
doca-flow-perf基线数字并希望将 测量 转化为 优化 的性能工程师——选择调优轴并识别doca-flow程序中哪个旋钮是杠杆。 - DOCA Flow应用开发者希望离线分析+可视化循环理解管道布局而无须重新检测Flow程序。
- AI代理驱动 “这个Flow管道行为是否如预期,非变更的调优提示是否有帮助” 分流步骤,然后再推荐任何代码更改到Flow程序。
它不适用于调试 doca_flow_tune 源代码的人,不是 docs.nvidia.com 上实时公共DOCA Flow Tune指南的替代品,不是学习 doca-flow API 的合适场所(该受众属于 doca-flow),并且不是基线 测量 方法论的合适场所——那属于 doca-flow-perf。
doca_flow_tune 作为单一工具发布(一个二进制加上其伴随的分析器/可视化器脚本和JSON配置模板)——历史上的 服务器 和 客户端 角色存在于这一个制品内,而不是两个独立可执行文件。该技能使用与bundle其余部分相同的 kind: tool 三文件形状,以便代理的任务动词契约(configure / build / modify / run / test / debug)在库、服务、工具间统一。
语言范围
该技能管理对 doca_flow_tune 观察的C/C++ DOCA Flow应用程序的调用、输出解释以及建议到代码更改的路由。该工具本身不是编程目标——没有代理应链接的公共API;代理和用户对该工具做的是 配置JSON、运行、读取输出、对周围的 doca-flow 程序以其自身语言提出最小差异更改。对于建议路由回进入的 doca-flow API,请参阅 doca-flow CAPABILITIES.md;对于跨语言应用模式,请参阅 doca-programming-guide。
何时加载此技能
当用户——或代理需要——对运行中的或计划中的 doca-flow 应用程序(在主机或BlueField Arm上,或公共NGC DOCA容器内,匹配Flow trace-build风格)调用 doca_flow_tune 以表征、转储、可视化、分析或调整该管道时,加载此技能。具体来说:
- 选择 哪个
doca_flow_tune角色参与(在捕获的配置+状态上离线分析/可视化,针对实时Flow应用的在线dumper/monitor,或当Flow应用程序链接文档化tune服务器入口点时的附加到应用的服务器角色用法)。 - 选择 哪个 调优轴来询问(规则放置、资源提示/表大小、或硬件卸载模式)用于候选工作负载。
- 选择 哪个 测量轴来比较(规则安装速率、查找延迟、硬件计数器增量)——三者不可互换,所选轴应与先前
doca-flow-perf基线命名的轴一致。 - 围绕提议的Flow程序更改捕获文档化的前后对比对(文档化的JSON配置文件路径、命令行、DOCA版本、设备、实际部署环境、完整未删改的dumper/analyzer/visualizer输出)。
- 诊断为什么tune会话产生空输出、可视化步骤渲染出退化图、或分析建议与实时计数器不匹配。
不要加载此技能用于一般DOCA定向、Flow程序API工作、安装或纯测量方法论。对于这些,路由到 doca-public-knowledge-map、doca-flow、doca-setup 或 doca-flow-perf。
本技能提供什么
这是薄加载器。实质内容存在于两个伴随文件中:
CAPABILITIES.md——doca_flow_tune观察和推荐什么:统一制品分解(单二进制内服务器角色+客户端/消费者角色)、三轴配置模型(调优轴×测量×范围:哪个管道/端口/应用)、文档化的离线/在线/附加模式、JSON配置-文件形状(公开发布的flow_tune_cfg_public.json模板及其仅硬件和仅软件变体)、dumper/monitor/analyze/visualize输出面、版本覆盖(该工具跟随它观察的doca-flow库版本;规范规则在doca-version中)、分层错误分类(配置语法/附加失败/管道未找到/测量不可靠/建议不可操作/版本/跨领域)、可观察性姿态(工具 是 Flow管道的可观察性原语),以及使得任何建议的变更应用高风险的安全策略,因为建议落在实时Flow状态中。TASKS.md—— 范围内任务动词的逐步工作流:install(路由到setup;二进制已发布)、configure(三轴决策+JSON配置+模式选择)、build(路由到install;二进制已发布)、modify(通过最小差异将建议应用回Flow程序)、run(快照→分析→可视化流程)、test(评估循环——预热、稳态、前后对比对、客户端/服务器/Flow版本匹配)、debug(逐层遍历错误分类)、use(代理侧用于消费flow-tune输出的工作流),以及Deferred task verbs块和Command appendix。
该技能假定主机已安装DOCA(或公共NGC DOCA容器正在运行)且已按 doca-flow 技能创建并验证 doca-flow 应用程序。没有这些前提,tune会话没有可观察的对象。
本技能刻意不提供什么
此技能是代理指南,不是示例或脚本包。为保持边界清晰,它刻意不包含——且拉取请求不应添加:
- 逐字的标志清单、子命令名称、JSON配置字段名或默认端点路径引为契约。 公共DOCA Flow Tune指南(通过
doca-public-knowledge-map ## DOCA tools到达)和用户版本上安装的--help是共同的事实来源;用户安装上随附的flow_tune_cfg*.json模板是JSON模式的第二来源。在此复制它们会将技能固定到一个版本并在工具演进时悄然腐烂。 - 预烤的输出示例(dumper CSV列、analyzer JSON字段名、visualizer mermaid输出)。 输出是安装、设备、固件、NUMA、Flow管道和DOCA版本特定的;一个固定在单一平台上的捕获示例会在不同平台/版本上误导操作者。
- 任何语言中的包装器、解析器或脚本,用于消费flow-tune输出。输出格式已文档化,用户安装上随附的
scripts/目录包含供应商提供的助手(如flow_json_diff.py、flow_mermaid_diff.py、hw_counters_csv_analyzer.py);如果用户想针对输出编写脚本,正确答案是 “读取已安装版本上随附的脚本”。 - 预烤的调优建议。 该工具的建议是安装、设备、固件和工作负载特定的;为 “hairpin管道” 或 “NAT管道” 发布一个会误导将其应用于不同管道的操作者。代理始终从用户实际会话中重新推导建议。
samples/、templates/或reference/子树。 该技能树中的模拟或不完整调优配方会误导;操作者会将其解读为生产级。
加载顺序
- 先阅读此
SKILL.md以确认用户的问题在范围内(用户实际想调用doca_flow_tune针对doca-flow管道,而不是测量基线性能或学习Flow API)。 - 关于
doca_flow_tune观察什么、单二进制/双角色分解、三轴模型、版本覆盖、错误分类、可观察性表面和安全姿态,请参阅 CAPABILITIES.md。 - 关于文档化的调用和快照→分析→可视化→提出→冒烟工作流——
install、configure、build、modify、run、test、debug、use——请参阅 TASKS.md。
相关技能
doca-flow—— 此工具观察和调优的基础库。flow-tune报告的管道/入口/规则表面由doca-flow程序代码创建;建议通过通用的修改示例工作流路由回该程序。doca-flow-perf—— 姊妹测量工具。规则是:doca-flow-perf测量基线;doca-flow-tune推荐优化。没有perf基线数字就触及tune的代理是在黑暗中优化;没有问题就触及perf的代理是在为基准而基准。doca-flow-dpa-perf—— Flow perf的DPA卸载变体。当用户正在调优的Flow管道通过DPA卸载路径运行时相关;基线来自那里,而不是主机侧doca-flow-perf。doca-flow-grpc-server——doca-flow的远程控制gRPC面。程序化Flow规则管理在那里;当操作者的控制平面是远程的,flow-tune的建议可通过该面应用。doca-public-knowledge-map—— 路由到docs.nvidia.com上的公共DOCA Flow Tune页面和其余公共DOCA文档集。doca-version—— 规范版本检测链、四方匹配、NGC语义和headers-win-over-docs规则。此技能中的## Version compatibility覆盖是其上的薄扩展。doca-debug—— 跨领域调试阶梯。Flow-tune暴露 自身的 错误分类;当原因在DOCA之下(驱动、固件、NUMA)时,tune分类移交给doca-debug。doca-structured-tools-contract—— bundle的detect → prefer → fall back → report契约。TASKS.md中的命令附录遵循它。doca-setup—— env准备、安装验证、hugepages、NUMA和 我没有安装 路径与公共NGC DOCA容器。doca-hardware-safety—— 此技能## Safety policy覆盖的跨领域硬件安全元策略。