当前位置: 首页 > news >正文

[NVSentinel] gpu-health-monitor模块调研

[NVSentinel] gpu-health-monitor模块调研

health-monitors/gpu-health-monitor/gpu_health_monitor/gpu-health-monitor的 Python 包源码。它的职责是:连接 DCGM,周期性读取 GPU 健康状态,把 DCGM health incident 转成 NVSentinelHealthEvent,再通过 Unix socket 发给platform-connector

整体运行链路是:

gpu_health_monitor CLI -> 读取 config.ini / dcgmerrorsmapping.csv / NODE_NAME -> 启动 Prometheus metrics server -> 创建 DCGMWatcher -> DCGMWatcher 连接 DCGM hostengine -> 周期性 dcgm_group.health.Check() -> PlatformConnectorEventProcessor 转换为 HealthEvent -> gRPC over UDS 发给 platform-connector

目录结构

cli.py是入口。pyproject.toml里定义了命令:

gpu_health_monitor = "gpu_health_monitor.cli:cli"

DaemonSet 里实际执行的是:

gpu_health_monitor --config-file ... --dcgm-addr ... --dcgm-error-mapping-config-file ...

它负责读取参数、读取 Helm 生成的config.ini、加载 DCGM error 到 RecommendedAction 的映射、初始化日志和 metrics,然后启动DCGMWatcher

DCGM (NVIDIA Datacenter GPU Manager) │ 定期轮询 health check ▼ DCGMWatcher ──callback──▶ PlatformConnectorEventProcessor │ │ gRPC over UDS │ ▼ Prometheus 指标 platform-connector → fault-quarantine (cordon / drain / reset …)

dcgm_watcher/是 DCGM 采集核心:

  • types.py定义内部数据结构,比如HealthStatusHealthDetailsErrorDetailsCallbackInterface
  • dcgm.py连接 DCGM,创建包含 GPU/NVSwitch entity 的 DCGM group,调用dcgm_group.health.Set(DCGM_HEALTH_WATCH_ALL)dcgm_group.health.Check()
  • 它会把 DCGM incident 按 watch 分类,比如DCGM_HEALTH_WATCH_PCIEDCGM_HEALTH_WATCH_NVLINKDCGM_HEALTH_WATCH_MEM等。
  • 它还支持 field monitor,目前有GpuThermalMarginWatch,读取 DCGM field 153DCGM_FI_DEV_GPU_TEMP_LIMIT,结合 metadata 中的 slowdown T.Limit 判断 thermal margin 是否低于阈值。

platform_connector/是事件转换和发送层:

  • platform_connector.py实现PlatformConnectorEventProcessor,它是DCGMWatcher的 callback。
  • 它把 DCGM watch 名转成 CheckName,例如DCGM_HEALTH_WATCH_PCIE->GpuPcieWatch
  • 它构造HealthEvent,字段包括agent=gpu-health-monitorcomponentClass=GPUcheckNameisFatalisHealthyerrorCodeentitiesImpactedrecommendedAction
  • 它通过HealthEventOccurredV1gRPC 接口发给platform-connector
  • 它有本地 cache,避免同一个 GPU 同一个 active error 每轮重复发送;只有新错误或恢复时才发事件。
  • 如果 platform-connector socket 不存在,它不会更新 cache,下一轮会重新尝试发送。

metadata/reader.py读取 GPU metadata 文件,默认来自:

/var/lib/nvsentinel/gpu_metadata.json

它提供:

  • get_gpu_uuid(gpu_id)
  • get_pci_address(gpu_id)
  • get_slowdown_tlimit_c(gpu_id)
  • get_chassis_serial()

这些用于丰富HealthEvent.entitiesImpacted。尤其COMPONENT_RESET需要GPU_UUID,如果 metadata 里拿不到GPU_UUID/PCI,它会把 action 从COMPONENT_RESET降级成RESTART_VM,避免 node-drainer/fault-remediation 后面做 partial GPU reset 时缺实体信息。

protos/是生成的 protobuf Python 文件,对应HealthEventPlatformConnectorgRPC client 等。业务代码里通过这些类构造HealthEvent并调用PlatformConnectorStub.HealthEventOccurredV1

metrics.pydcgm_watcher/metrics.pyplatform_connector/metrics.py是 Prometheus metrics 定义,分别覆盖 feature flag、DCGM API latency/failure、发送到 UDS 成功/失败、active events 等。

logger.py配置结构化 JSON 日志,给日志统一加module=gpu-health-monitor和版本号。

它具体监控什么

它使用 DCGM 的健康 watch:

DCGM_HEALTH_WATCH_ALL

所以会覆盖 DCGM 支持的 GPU/NVSwitch 健康类别,例如 PCIe、NVLink、memory/ECC、thermal、power、driver、NVSwitch 等。

DCGM 返回 incident 后,dcgm.py会提取:

  • watch/system 类型
  • GPU entity id
  • DCGM error code
  • error message

然后platform_connector.py根据dcgmerrorsmapping.csv把 DCGM error code 映射成RecommendedAction,比如:

DCGM_FR_VOLATILE_DBE_DETECTED -> COMPONENT_RESET DCGM_FR_VOLATILE_SBE_DETECTED -> NONE DCGM_FR_NVLINK_DOWN -> RESTART_VM DCGM_FR_THERMAL_VIOLATIONS -> CONTACT_SUPPORT

如果找不到映射,默认CONTACT_SUPPORT

部署关系

Helm chart 会把这些配置挂进去:

  • config.ini:poll interval、socket path、启用的 event processor、field monitoring 开关
  • dcgmerrorsmapping.csv:DCGM error -> RecommendedAction 映射
  • /var/run/nvsentinel.sock:platform-connector UDS socket
  • /var/lib/nvsentinel/gpu_metadata.json:metadata collector 生成的 GPU 元数据

镜像基于 NVIDIA DCGM runtime image 构建,所以容器内有 DCGM Python binding。Dockerfile 会构建 Python wheel,然后安装到 DCGM runtime 镜像中。

一句话总结:这个目录就是gpu-health-monitor的运行时主体,负责“DCGM 健康检查 -> NVSentinel HealthEvent -> platform-connector”的转换和发送。

http://www.jsqmd.com/news/1394627/

相关文章:

  • 全网最全✅okbiye核心功能大盘点!一篇看懂所有论文刚需能力
  • 2026成都整装套餐靠谱服务商甄选全攻略:含合规资质、性价比等多维度评估+签约避坑全流程FAQ及核心选型标准 - 行业观察网
  • 20260814 5.5+5 182.5
  • 第54届安妮奖增设国际动画单元,影视后期实训机构实测,赛事级作品集择校指南 - 生活动态圈
  • 中小企业选GEO代运营技巧,2026高性价比服务商严选
  • 联想工作站找谁买?售后SLA对比与保修避坑全指南
  • 2026园区物业公卫设备集采贴牌商家选型指南:正规合规供应商盘点+合作避坑全维度FAQ - U渠道
  • 2026西藏旅行社口碑发布:迎昭16年未出投诉,凭什么? - zhongxing1
  • miniRV CPU 设计实战:从数据通路到 FPGA 下板运行 CoreMark
  • 2026厦门经济犯罪律师选择指南:3家专业刑辩律所对比 帮信罪/合同诈骗委托避坑要点 - 商业大观
  • 经营驾驶舱:业务财务贯通让异常可逐级追溯
  • 0061基于 SpringBoot 的投稿与稿件处理系统设计与实现
  • 盘锦装修签合同前门窗选购要看哪些细节
  • 请假陪床3天,被扣光全勤[特殊字符][特殊字符]
  • 2026生成式引擎优化平台品牌代运营哪家口碑好?严选评析分享
  • 如何通过一张照片来获取 ip 地址?
  • 微修点喷和整车喷漆,哪种更赚钱?从成本、效率、复购看艺猫点喷的独有优势 - 资讯报道
  • 2026成都一站式高性价比家装公司选型指南:3家合规靠谱品牌盘点+签约避坑全维度FAQ - 行业观察网
  • 2026四大AI论文写作软件深度测评|从降重到润色,各有所长别盲选
  • 厦门合同诈骗辩护律所:3家商事犯罪律所对比与合作选择指南(2026版) - 行业观察网
  • NeteaseCloudMusicFlac 快速上手:一条命令批量下载网易云无损FLAC音乐
  • 《2026成都全屋整装公司推荐大全:正规合规、高性价比、口碑扎实、全场景适配的服务商盘点+选型标准与签约避坑全维度FAQ》 - 商业大观
  • 登报道歉范文怎么写?怎么办?流程怎么走?5分钟搞定!
  • 上饶4家景区新晋国家3A!2026上饶旅行社怎么选?北京出发家庭游看这篇 - 江西旅讯
  • Skill - 把风格写成规格:拆解 ian-xiaohei-illustrations 中文配图 Skill
  • 毕业证公证认证流程全解:从国内公证到海牙领事认证完整操作指南
  • 2026正规靠谱的转转垫生产代工厂甄选指南:行业头部代工厂盘点+选型标准+合作避坑FAQ - U渠道
  • 2026年智能运维平台选型指南:四类技术路线的定位差异与决策框架
  • 新一轮国补来了!国补政策 2026 最新消息:8 月第三批国补重磅落地!买手机、家电、电脑、空调国补领取方法操作流程一览!学生还有返校季优惠叠加! - 生活动态圈
  • 【电子战】电子战系列博客预告:从检测到定位——MATLAB 实战指南【含matlab代码】