监控GPU和InfiniBand的三种方法
监控 GPU 服务器和 InfiniBand 是确保高性能计算环境稳定运行的重要环节,是智算中心运行保障的关键能力。
监控 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 集群的场景。
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 夜莺,可以对采集到的数据,配置告警策略或者配置仪表盘。
关于快猫星云和夜莺
夜莺 (Nightingale) 是一款开源云原生监控工具,是中国计算机学会接受捐赠并托管的第一个开源项目,在GitHub上有8000颗星,有数千家企业用户使用。快猫星云以开源夜莺为内核打造的“Flashcat平台”,是国内顶级互联⽹公司可观测性实践的产品化落地,我们致力于让可观测性技术更好的落地和发挥价值。
你可以通过Flashcat平台,有效改善以下问题:
- 希望整个公司统一用一个工具,就可以支持指标、日志、链路追踪数据的采集、可视化、告警,免去搭建和维护多套 Prometheus、Zabbix、Grafana、ELK、Jaeger 的工作量。
- 如果有在用多云,并且在多个公有云监控控制台来回切换不方便,希望监控数据、监控视图都是统一的,有更一致的用户体验,同时降低给所有的工程师开通公有云控制台权限带来的安全隐患。
- 告警太多,工作老被打断, 可以利用我们提供的 OnCall 值班平台(类似于 PagerDuty),支持告警聚合、降噪、认领、升级、排班,可以在飞书、钉钉、企微中接收和处理告警。
- 👉官方网站: https://flashcat.cloud
- 👉产品PPT: https://sourl.cn/LGYUyc
- 👉查看更多可观测性白皮书:https://flashcat.cloud/blog/whitepapers/