DOCA Verbs 原始 RDMA 控制技能
为确需底层 verbs 控制的 DOCA 开发者提供路由、移植与调试指导。
文档明确要求先确认高层库是否足够、禁止混用 ibv_* 句柄、进行能力查询并披露实验 ABI,且没有凭据收集或隐蔽外传指示;但涉及设备、RDMA 栈和 sudo 检查,缺少明确的用户确认、回滚方案、权限最小化和数据流边界,因此扣分。
流程、前置条件、错误分类、完成队列检查和失败升级路径较完整;但本次仅静态阅读,没有可执行测试套件,且部分符号被要求从本机头文件确认,无法证明关键路径可复现,因此按静态上限保守扣分。
触发条件、非适用范围、路由到高层库的边界以及 C/C++ 和 FFI 场景描述清晰;但强依赖 Linux、已安装 DOCA、BlueField 或 ConnectX 硬件,未提供中文交互或中国大陆网络可达性说明,环境适配证据有限。
采用 SKILL.md、CAPABILITIES.md、TASKS.md 分层,包含安装、版本、限制、错误处理、维护入口和评测资料;但 frontmatter 缺少作者,SKILLCARD 中版本和签名仍为 TBD,许可证与题目元数据存在不一致,且静态检查报告指出缺少推荐的 Instructions/Examples 章节,因此未给满分。
能够把用户从不必要的 raw verbs 使用引导回高层库,并提供配置、构建、修改、运行、测试和调试工作流;但不提供可直接构建的代码或样例,实际差异渲染被延期,且本次没有验证代表性输出,因此只能接近静态评估上限。
文档要求以安装头文件和运行时能力查询为权威,并附有评测报告和评测断言;但评测数据集不可用、没有独立复现结果或覆盖关键路径的提交测试套件,主要仍是作者维护的说明,故证据有限。
- 不要把本技能的工作流视为已验证的可运行实现;必须在目标机的 DOCA 头文件、pkg-config、设备能力和样例上逐项确认。
- 执行设备检查、sudo 命令或修改硬件相关配置前,应取得用户明确授权并准备可恢复方案。
- SKILL.md、SKILLCARD.yaml 和题目提供的许可证/来源信息存在不一致,应在发布前统一。
- 评测报告缺少原始数据集,不能把 PASS 或高百分比结果当作独立复现证据。
这个 Skill 能做什么,适合哪些场景?
该技能面向在 DOCA Core 中使用 DOCA Verbs 的外部开发者,处理 QP、CQ、PD、MR、SRQ、地址句柄及相关以太网队列原语。它首先判断高层 DOCA RDMA、Eth 或 Rivermax API 是否已经满足需求,避免不必要地降级到原始 verbs。对于确需底层属性、能力查询、libibverbs 移植或错误诊断的任务,它指向能力说明和配置、构建、修改、运行、测试、调试工作流。技能本身是指导性加载器,不提供应用源码、构建文件、绑定或迁移脚本。
读取用户安装的 DOCA 头文件、库、示例和应用目录,并通过 pkg-config doca-verbs 检查已安装模块。根据具体需求在高层 DOCA 库与 doca_verbs_* 之间进行路径选择,指导使用 doca_verbs_query_device 和 doca_verbs_device_attr_get_* 查询设备能力。它说明如何在 DOCA Core 生命周期和进度引擎中移植 libibverbs 代码,并强调不得混用两套句柄。对于 DOCA_ERROR_*,尤其是 DOCA_ERROR_IO_FAILED,它引导用户检查完成队列条目,并提供 configure、build、modify、run、test、debug 流程的入口。
- 需要设置高层 doca_rdma_task_* 未暴露的特定工作请求标志或 QP 属性的 RDMA 开发者。
- 需要显式控制 SRQ、完成队列或地址句柄属性的 DOCA Core 应用开发者。
- 想把现有 libibverbs 发送或接收程序迁移到 DOCA Core 生命周期和进度引擎中的 C/C++ 开发者。
- 需要确认某个设备和 DOCA 版本是否支持特定 verb、opcode、WR 标志或 QP 特性的开发者。
- 从 doca_verbs_* 调用获得 DOCA_ERROR_*,尤其是工作请求提交出现 IO_FAILED 的开发者。
- 为 Rust、Go 或 Python 等语言设计 DOCA Verbs C ABI 封装的开发者。
这个 Skill 有哪些优点和局限?
- 明确限制原始 verbs 的适用范围,优先引导用户使用高层 DOCA 库。
- 覆盖 QP、CQ、PD、MR、SRQ、地址句柄、以太网 SQ/RQ 和拥塞控制组等底层对象。
- 提供能力查询、libibverbs 边界、DOCA Core 生命周期和错误诊断方面的专门路由。
- 支持 C/C++ 以及通过 FFI 使用同一 C ABI 的其他语言场景。
- 要求用户已经安装 DOCA SDK、配置 Linux RDMA 环境,并拥有 BlueField DPU 或 ConnectX NIC。
- 依赖实验性 ABI,符号可能随 DOCA 版本变化,必须以本机头文件为准。
- 技能不包含可编译源码、构建清单、samples、bindings、reference 子树或迁移脚本。
- 来源没有提供该单项技能的独立测试结果或平台覆盖证据。
如何安装这个 Skill?
使用仓库 README 支持的 Skills CLI 安装指定技能:npx skills add nvidia/skills --skill doca-verbs --yes。也可以先运行 npx skills add nvidia/skills --list 查看目录。安装后需要在目标 Linux 主机或 BlueField 环境中另外准备已安装于 /opt/mellanox/doca 的 DOCA SDK;来源未提供 DOCA SDK 的安装步骤。
如何使用这个 Skill?
在已安装 DOCA 的环境中,让代理处理明确的原始 verbs 需求,例如:“我的 doca_rdma_task_* 不暴露所需的原始 WR 标志,是否需要使用 doca-verbs?”或“如何把 libibverbs 代码迁移到 DOCA Core?”先确认高层库无法表达该语义,再依据技能中的 CAPABILITIES.md 和 TASKS.md 继续。对于一般 RDMA 数据传输、DOCA 安装或通用 libibverbs 理论,应使用其他对应技能;来源未提供可直接运行的 doca-verbs 应用命令或代码样例。
这个 Skill 与同类方案有什么区别?
与 doca-rdma、doca-eth 和 doca-rmax 等高层 DOCA 库相比,doca-verbs 是针对高层 API 未暴露的特定底层 verb、opcode、工作请求标志、队列属性或能力查询的逃生通道,不是常规数据移动接口。与 libibverbs 相比,它要求将 verbs 对象和生命周期纳入 DOCA Core,并通过 DOCA 进度引擎处理完成事件;来源明确反对机械地并排混用两套句柄。