NVIDIA GPUDirect Storage (GDS) 可加速本地和云环境中的 GPU 存储访问。它在 NVIDIA GPU 和存储目标之间提供了可靠、可移植且高效的数据路径,可在各种平台、应用程序框架和工作负载模式中增加带宽、更大限度地减少延迟,并降低 CPU 和内存利用率。
配置 NVIDIA GPUDirect Storage 首先要了解您的环境。哪些设置和存储路径适合您的平台和工作负载?大量文档介绍了如何对受支持的架构和存储解决方案进行配置和故障排除,但您必须浏览此信息并优化部署。

gds-diag 工具由 GPUDirect Storage 团队开发,旨在简化 GPUDirect Storage 的优化和配置。gds-diag 是一个简单的开源命令行实用程序,可评估环境、识别问题并提出改进建议,以帮助您充分利用 GDS 部署。
它还附带可选的智能体技能,可添加自然语言界面和编排层。该技能解释您的意图,选择并调用适当的子命令,并协调多步骤诊断工作流程。除了命令选择和路由之外,该技能还通过模型引导推理扩展了 gds-diag。它可以解释诊断结果,应用相关系统上下文,并提出或执行适当的补救措施。
本文将介绍如何使用命令行界面或智能体技能开始使用 gds-diag。
下载和安装
要使用 gds-diag,您需要使用 Python 3.8 或更高版本的 Linux 系统。GPUDirect Storage 需要 NVIDIA 数据中心级 GPU 和 NVIDIA CUDA Toolkit 12.2 或更高版本,但这些不是 gds-diag 本身的依赖项。
gds-diag 作为 NVIDIA Magnum IO GitHub 存储库的一部分分发,无需安装其他依赖项。在您计划使用 git clone https://github.com/NVIDIA/MagnumIO.git 运行存储库的机器上克隆该存储库,然后选择以下使用模型之一:
- 命令行工具:这提供了一种确定性、最小依赖性的路径来诊断 GDS 部署。转到
gds-diag目录,运行gds-diag.py --help,然后按照命令行使用指导进行操作。
- AI 智能体:它提供了最直观、灵活、交互、自然语言的机制来诊断 GDS 部署,同时仍然保留了底层命令行工具的可靠确定性。在您首选的 AI 编程助手中打开
gds-diag目录,然后按照 Agent 技能使用指导进行操作。
快速提示: 如果您的环境中提供此选项,推荐使用 AI 智能体模式。gds-diag 已通过 Claude 和 Codex 进行验证,但也可以与其他工具配合使用。 |
|---|
命令行用法
gds-diag 命令行工具是一个带有多个子命令的 Python 脚本,用于专注于不同的诊断任务。您可以通过运行 ./gds-diag.py --help 来浏览可用的子命令。
有关特定子命令的更多信息,请运行 ./gds-diag.py <subcommand> --help。
快速提示: 不知道从何处着手?只需运行 ./gds-diag.py all /path/to/check 和 gds-diag 将自动为该路径运行完整的诊断序列。 即可在裸机、虚拟机和容器环境中运行。 |
|---|
图 2 将可用的子命令分为四类。

根据您所处的部署阶段或您需要调查的问题,选择诊断类别。
- 端到端检查:使用
all自动为您的环境选择适当的诊断,并依次运行这些诊断。 - 准备安装:使用
pre-install检查 GPU 支持和 CUDA 工具包安装。使用support-matrix查看受支持的存储目标并规划部署。 - 验证安装:使用
post-install检查 GDS 是否已正确安装并识别屏蔽程序。使用config-audit查看影响 GDS 行为的配置文件和环境变量。 - 深度诊断:使用
container-check评估容器环境 (包括 containerd、Docker、Enroot 和 Kubernetes) 中的 GDS 支持。使用mount-check诊断特定的安装点或目录。
GDS – Diag 发现的解剖结构
如图 3 所示,大多数 gds-diag 子命令的输出都以分组为部分的一组发现的形式呈现。

每个发现项目和每个部分都有一个状态标记。
- “FAIL” (失败) 表示难以阻止。
- “WARN” (警告) 表示潜在的屏蔽程序。
- “INFO”表示重要信息。
- “PASS”表示名义型发现结果,仅在您使用
--verbose选项时显示。
每项发现都包括一个解释和一个缓解计划。gds-diag 不会自行实施缓解计划或以其他方式修改系统。它的作用是识别问题和优化机会,并帮助您或您的管理员进行改进。可以显示多个部分 (以及这些部分中的发现) 。
快速提示: 您还可以使用 --json 命令行选项,将所有诊断报告作为结构化 JSON 数据发送。如果您计划将发现结果提取到其他工具中,或将其存档以供将来参考,此功能非常有用。 |
|---|
大多数子命令都遵循相同的结构。gds-diag.py support-matrix 命令是一个值得注意的例外:它以带有脚注的表格形式发出输出。此子命令显示 GDS 支持的平台组合。
使用 --static 选项显示常规数据 (如图 4 所示) ,或使用 --live 选项合并当前配置的系统信息。

全面支持标记为绿色的项目,支持标记为黄色的项目,具体取决于架构或配置说明,不支持标记为红色的项目。
快速提示: 大多数分布式存储供应商选择在 Linux 操作系统级别将其文件系统显示为 nfs 或 nfs4,因此这一行支持矩阵对应广泛的产品支持。 |
|---|
命令行演示
为了演示,请考虑准备用于生产部署的新 GDS 配置文件或修改后的 GDS 配置文件。config-audit 子命令是此场景的理想选择。如果无参数调用,它将审核当前的有效配置,包括静态配置文件和动态环境变量修饰符。以下示例使用 --config 选项指定要审查的候选配置。

配置审核会在配置文件中显示拼写错误的条目。纠正错误后,config-audit 确认配置有效,并提供其他信息提示。
智能体技能运用
当您使用 Claude 或 Codex 等编码助手打开 gds-diag 资源库时,gds-diag 智能体技能会自动激活。
快速提示: 您可以在编码助手中使用 /gds-diag 关键字显式激活 gds-diag,但这并非绝对必要。如果您提出有关 GDS 的自然语言问题,它将自动选择它作为适当的技能。 |
|---|
该技能不会尝试重复 gds-diag 命令行工具已提供的确定性检查。相反,其主要作用是协助在 gds-diag 子命令之间路由并解释其输出。以下是您可以使用该技能进行查询的几个示例:
- 此系统是否有资格使用 GDS?
- 是否可用于
/mnt/data? - 如何以最佳方式配置 GDS 以访问
/mnt/data? - GDS 使用哪些配置文件?
- 是否需要更新任何配置参数?
- 哪种 NVMe 设备最适合 GPU3?
智能体是 gds-diag 的能力倍增器;您可以提出后续问题,甚至要求智能体代表您实施缓解措施。
智能体技能演示
图 6 展示了如何将 gds-diag 智能体技能与模型的固有推理相结合,以诊断容器配置问题。此示例使用 Anthropic Claude Code CLI。

在这种情况下,智能体将检查用于启动容器的 shell 脚本,并确定用于调查此问题的最佳 gds-diag 工具。然后,它提供了根据其发现修改脚本的选项,并确认解决方案。请注意,编码助手将遵守您的本地设置和站点策略,以确定哪些操作需要确认。
开始使用
在研究 GPUDirect Storage 配置和优化时,将 gds-diag 用作首个诊断工具。其模块化设计为其他诊断奠定了基础,例如检查网络传输、对象存储系统和应用框架。
您是否有想要贡献的诊断检查或文件系统?我们欢迎并强烈建议社区做出贡献。源代码和智能体技能均在开源许可 ( Apache 2.0 和 Creative Commons Attribution 4.0 International) 下发布。请参阅贡献者指南以开始使用。