监控 GPU 服务器和 InfiniBand 是确保高性能计算环境稳定运行的重要环节,也是智算中心运行保障的关键能力。GPU 侧要关注设备利用率、显存、温度、功耗和健康状态;InfiniBand 侧要关注链路、端口、HCA 和交换机状态。
核心要点
- GPU 监控常见路径有两类:用
nvidia-smi做轻量检查,或用 DCGM 做更完整的集群级监控与管理。 nvidia-smi更适合单机、日常巡检和脚本化快速检查;DCGM 更适合大规模 GPU 集群、Kubernetes 和 Prometheus 生态。- Categraf 默认集成了
nvidia-smi和dcgm-exporter,可以周期性采集 GPU 数据并推送给 Nightingale 夜莺。 - InfiniBand 监控可以先用
ibstat、ibping、ibtracert、iblinkinfo等诊断工具定位基础问题,再通过 InfiniBand Exporter 暴露 Prometheus 格式指标。 - 将 InfiniBand Exporter 的
/metrics接口接入 Categraf 后,就可以在夜莺中统一做告警和可视化。
监控 GPU 服务器
监控 GPU 服务器通常有两种方式,nvidia-smi 和 DCGM(NVIDIA Data Center GPU Manager),这两种不同的监控工具,在监控 NVIDIA GPU 方面有一些关键的区别:
-
监控范围和深度:
- nvidia-smi:这是一个命令行工具,提供了基本的监控功能,如 GPU 和内存的利用率、设备温度、功耗等。它主要用于单个系统或小规模环境,提供的信息比较基础。
- DCGM:这是一个更为全面的监控和管理套件,专门设计用于大规模集群环境。它不仅提供基础的监控功能,还包括主动健康监控、综合诊断、系统警报和治理策略,如电源和时钟管理。
-
集成和自动化:
- nvidia-smi:通常作为独立工具使用,虽然可以集成到脚本中,但缺乏与集群管理工具的深度集成。
- DCGM:可以轻松集成到集群管理工具中,支持自动化任务,有助于提高数据中心的整体效率。
-
性能分析:
- nvidia-smi:提供基本的性能指标,但不具备深入分析的能力。
- DCGM:提供更深入的性能分析,包括细粒度的 GPU 利用率指标,如 SM 占用率和 Tensor 核心利用率,以及更详细的性能饱和度数据。
-
可扩展性和管理:
- nvidia-smi:适用于小规模或单节点系统,不适合大规模集群管理。
- DCGM:设计用于大规模集群,支持多节点和多 GPU 的管理。
-
编程接口:
- nvidia-smi:主要是通过命令行界面与用户交互。
- DCGM:提供了 C、Python 和 Go 等编程语言的 API,方便开发者进行集成和自动化。
-
生态系统集成:
- nvidia-smi:与 Kubernetes 等容器编排系统没有直接集成。
- DCGM:通过
dcgm-exporter与 Prometheus 集成,可以与 Kubernetes 生态系统无缝集成,支持在 Kubernetes 环境中收集 GPU telemetry 数据。
-
监控数据的输出格式:
- nvidia-smi:输出格式为文本,适用于人类阅读,但不适合程序解析。
- DCGM:通过
dcgm-exporter提供 Prometheus 格式的监控数据,易于自动化工具和监控系统解析和使用。
总的来说,nvidia-smi 更适合日常使用和快速检查,而 DCGM 提供了一套完整的解决方案,适用于需要深入监控、管理和优化大规模 GPU 集群的场景。
| 方案 | 更适合的场景 | 优点 | 局限 |
|---|---|---|---|
nvidia-smi |
单机巡检、小规模环境、脚本化检查 | 使用简单,能快速看到 GPU、显存、温度、功耗等基础信息 | 文本输出更偏人工阅读,不适合大规模自动化解析 |
| DCGM | 大规模 GPU 集群、Kubernetes、需要健康诊断和治理策略的环境 | 监控深度更高,可通过 dcgm-exporter 接入 Prometheus 生态 |
部署和管理复杂度高于 nvidia-smi |
| Categraf 集成 | 已经使用 Nightingale 夜莺统一监控的环境 | 能把 GPU 采集接入统一告警和可视化链路 | 仍需要根据集群规模选择底层采集方式 |
Categraf是一个 all-in-one 的 telemetry 采集器,其中默认集成了nvidia-smi和dcgm-exporter,Categraf 会周期性的获取 nvidia-smi 或者 dcgm-exporter 的数据,并推送给 Nightingale 夜莺。
监控 InfiniBand
1. 使用 InfiniBand 诊断工具
InfiniBand 网络提供了一系列的诊断工具,这些工具能够帮助你监控和诊断网络问题。以下是一些常用的 InfiniBand 诊断工具:
- ibstat:查询 InfiniBand 设备的基本状态。
- ibping:验证 InfiniBand 节点之间的连通性。
- ibtracert:跟踪 InfiniBand 路径。
- iblinkinfo:查看 InfiniBand 交换模块的所有端口的连接状态。
这些工具通常包含在 InfiniBand 的软件包中。
诊断工具适合回答“链路是否通、设备是否存在、路径是否正常”这类即时问题。它们很适合故障排查,但如果要持续告警和趋势分析,还需要把指标接入监控系统。
2. 使用 InfiniBand Exporter
InfiniBand Exporter是一个由 treydock 开发的 Prometheus Exporter,用于采集 InfiniBand 网络的监控指标。它从 InfiniBand 交换机和 HCA 收集指标,并通过/metrics端点暴露这些指标。以下是使用 InfiniBand Exporter 的步骤:
安装和配置
- 下载 InfiniBand Exporter 的二进制文件或使用容器部署。
- 如果使用二进制文件,需要创建一个运行账号,并确保
infiniBand_exporter文件放置在可执行路径下,如/usr/local/bin/infiniband_exporter。 - 使用 SystemD 管理服务,启动 InfiniBand Exporter 服务。
运行 InfiniBand Exporter
- 启动 InfiniBand Exporter 后,它将在默认的 9315 端口暴露监控数据。
- 使用
--collector.<name>和--no-collector.<name>参数来启用或禁用特定的收集器。 - 如果需要,可以指定
ibnetdiscover和perfquery工具的路径。
收集指标
- InfiniBand Exporter 默认会从连接到运行主机的 fabric 的所有交换机端口收集监控数据。
- 可以使用
--ibnetdiscover.node-name-map参数来使用节点名字的映射列表文件,从而获得更友好的名称。
3. 将 InfiniBand Exporter 的数据集成到 Nightingale 夜莺,进行告警和可视化
- 抓取
InfiniBand Exporter的/metrics接口,我们可以使用 categraf 来抓取,修改 categraf 的插件配置文件conf/input.prometheus/prometheus.toml,增加以下内容。
[[instances]]
urls = [
"http://localhost:9315/metrics"
]
- categraf 将定期获取到的
InfiniBand Exporter的数据,推送到 Nightingale 夜莺中 - 数据可视化和告警:使用 Nightingale 夜莺,可以对采集到的数据,配置告警策略或者配置仪表盘。
方案选择建议
| 监控对象 | 优先方案 | 说明 |
|---|---|---|
| 单台 GPU 服务器 | nvidia-smi 或 Categraf 的 nvidia-smi 集成 |
先覆盖基础利用率、显存、温度和功耗 |
| 大规模 GPU 集群 | DCGM 与 dcgm-exporter |
更适合深度监控、健康诊断和 Prometheus 生态接入 |
| InfiniBand 日常排障 | ibstat、ibping、ibtracert、iblinkinfo |
用于快速确认设备、链路和路径状态 |
| InfiniBand 持续监控 | InfiniBand Exporter + Categraf + Nightingale | 用于统一采集、告警和可视化 |
如果目标是建设统一的智算中心监控,建议不要把 GPU 和 InfiniBand 当成两个孤立对象。GPU 利用率异常、训练任务变慢、网络链路质量下降、HCA 或交换机端口异常,最终都应该能在同一套告警和仪表盘体系里关联起来。
关于快猫星云和夜莺
夜莺 (Nightingale) 是一款开源云原生监控工具,是中国计算机学会接受捐赠并托管的第一个开源项目,在GitHub上有8000颗星,有数千家企业用户使用。快猫星云以开源夜莺为内核打造的“Flashcat平台”,是国内顶级互联⽹公司可观测性实践的产品化落地,我们致力于让可观测性技术更好的落地和发挥价值。
你可以通过Flashcat平台,有效改善以下问题:
- 希望整个公司统一用一个工具,就可以支持指标、日志、链路追踪数据的采集、可视化、告警,免去搭建和维护多套 Prometheus、Zabbix、Grafana、ELK、Jaeger 的工作量。
- 如果有在用多云,并且在多个公有云监控控制台来回切换不方便,希望监控数据、监控视图都是统一的,有更一致的用户体验,同时降低给所有的工程师开通公有云控制台权限带来的安全隐患。
- 告警太多,工作老被打断, 可以利用我们提供的 OnCall 值班平台(类似于 PagerDuty),支持告警聚合、降噪、认领、升级、排班,可以在飞书、钉钉、企微中接收和处理告警。
