监控GPU和InfiniBand的三种方法

夜莺 2024年5月24日

监控 GPU 服务器和 InfiniBand 是确保高性能计算环境稳定运行的重要环节,是智算中心运行保障的关键能力。

监控 GPU 服务器

监控 GPU 服务器通常有两种方式,nvidia-smiDCGM(NVIDIA Data Center GPU Manager),这两种不同的监控工具,在监控 NVIDIA GPU 方面有一些关键的区别:

  1. 监控范围和深度:

    • nvidia-smi:这是一个命令行工具,提供了基本的监控功能,如 GPU 和内存的利用率、设备温度、功耗等。它主要用于单个系统或小规模环境,提供的信息比较基础。
    • DCGM:这是一个更为全面的监控和管理套件,专门设计用于大规模集群环境。它不仅提供基础的监控功能,还包括主动健康监控、综合诊断、系统警报和治理策略,如电源和时钟管理。
  2. 集成和自动化:

    • nvidia-smi:通常作为独立工具使用,虽然可以集成到脚本中,但缺乏与集群管理工具的深度集成。
    • DCGM:可以轻松集成到集群管理工具中,支持自动化任务,有助于提高数据中心的整体效率。
  3. 性能分析:

    • nvidia-smi:提供基本的性能指标,但不具备深入分析的能力。
    • DCGM:提供更深入的性能分析,包括细粒度的 GPU 利用率指标,如 SM 占用率和 Tensor 核心利用率,以及更详细的性能饱和度数据。
  4. 可扩展性和管理:

    • nvidia-smi:适用于小规模或单节点系统,不适合大规模集群管理。
    • DCGM:设计用于大规模集群,支持多节点和多 GPU 的管理。
  5. 编程接口:

    • nvidia-smi:主要是通过命令行界面与用户交互。
    • DCGM:提供了 C、Python 和 Go 等编程语言的 API,方便开发者进行集成和自动化。
  6. 生态系统集成:

    • nvidia-smi:与 Kubernetes 等容器编排系统没有直接集成。
    • DCGM:通过 dcgm-exporter 与 Prometheus 集成,可以与 Kubernetes 生态系统无缝集成,支持在 Kubernetes 环境中收集 GPU telemetry 数据。
  7. 监控数据的输出格式:

    • nvidia-smi:输出格式为文本,适用于人类阅读,但不适合程序解析。
    • DCGM:通过 dcgm-exporter 提供 Prometheus 格式的监控数据,易于自动化工具和监控系统解析和使用。

总的来说,nvidia-smi 更适合日常使用和快速检查,而 DCGM 提供了一套完整的解决方案,适用于需要深入监控、管理和优化大规模 GPU 集群的场景。

Categraf是一个 all-in-one 的 telemetry 采集器,其中默认集成了nvidia-smidcgm-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>参数来启用或禁用特定的收集器。
  • 如果需要,可以指定ibnetdiscoverperfquery工具的路径。

收集指标

  • 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平台,有效改善以下问题:

  1. 希望整个公司统一用一个工具,就可以支持指标、日志、链路追踪数据的采集、可视化、告警,免去搭建和维护多套 Prometheus、Zabbix、Grafana、ELK、Jaeger 的工作量。
  2. 如果有在用多云,并且在多个公有云监控控制台来回切换不方便,希望监控数据、监控视图都是统一的,有更一致的用户体验,同时降低给所有的工程师开通公有云控制台权限带来的安全隐患。
  3. 告警太多,工作老被打断, 可以利用我们提供的 OnCall 值班平台(类似于 PagerDuty),支持告警聚合、降噪、认领、升级、排班,可以在飞书、钉钉、企微中接收和处理告警。
开源版
Flashcat
Flashduty