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

发布时间:2026/10/6 12:57:58

[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:cliDaemonSet 里实际执行的是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定义内部数据结构比如HealthStatus、HealthDetails、ErrorDetails、CallbackInterface。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_PCIE、DCGM_HEALTH_WATCH_NVLINK、DCGM_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字段包括agentgpu-health-monitor、componentClassGPU、checkName、isFatal、isHealthy、errorCode、entitiesImpacted、recommendedAction。它通过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 文件对应HealthEvent、PlatformConnectorgRPC client 等。业务代码里通过这些类构造HealthEvent并调用PlatformConnectorStub.HealthEventOccurredV1。metrics.py、dcgm_watcher/metrics.py、platform_connector/metrics.py是 Prometheus metrics 定义分别覆盖 feature flag、DCGM API latency/failure、发送到 UDS 成功/失败、active events 等。logger.py配置结构化 JSON 日志给日志统一加modulegpu-health-monitor和版本号。它具体监控什么它使用 DCGM 的健康 watchDCGM_HEALTH_WATCH_ALL所以会覆盖 DCGM 支持的 GPU/NVSwitch 健康类别例如 PCIe、NVLink、memory/ECC、thermal、power、driver、NVSwitch 等。DCGM 返回 incident 后dcgm.py会提取watch/system 类型GPU entity idDCGM error codeerror 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.inipoll interval、socket path、启用的 event processor、field monitoring 开关dcgmerrorsmapping.csvDCGM error - RecommendedAction 映射/var/run/nvsentinel.sockplatform-connector UDS socket/var/lib/nvsentinel/gpu_metadata.jsonmetadata collector 生成的 GPU 元数据镜像基于 NVIDIA DCGM runtime image 构建所以容器内有 DCGM Python binding。Dockerfile 会构建 Python wheel然后安装到 DCGM runtime 镜像中。一句话总结这个目录就是gpu-health-monitor的运行时主体负责“DCGM 健康检查 - NVSentinel HealthEvent - platform-connector”的转换和发送。
延伸阅读

更多相关文章

2026/9/30 19:57:03

2027具身智能机器人技术展官方聚焦国家战略:

2027具身智能机器人技术展官方聚焦国家战略: 人形机器人、智能低空装备、高端智能制造是我国高端装备制造领域的重点国家战略发展赛道,2027具身智能机器人技术展(赛逸展)精准聚焦这三大核心方向,推出六大全新专业主题展…

2026/10/6 12:54:09

UE USTRUCT 转 JSON:反射序列化与 FJsonObjectConverter 完整指南

项目标题:将 USTRUCT 类型的实例对象,转换成对应的 JSON 字符串格式服务端要做一份配置下发接口,要求客户端把玩家当前状态打包成 JSON 字符串 POST 上去。我第一次图省事,用FString::Printf一段一段手工拼 JSON,十几个…

2026/10/6 12:54:09

PHP名片网站源码拆包与在线下单全链路实战

简介:这是一套面向中小商家、个人创业者及PHP初学者的在线名片制作整站程序源码,可帮助用户快速搭建一个集名片设计、提交、下单与上传于一体的业务平台。程序内置3000多套模板与2000多套案例,覆盖多种行业风格,适合用于名片定制类…

2026/10/6 12:54:09

UE中USTRUCT转JSON字符串的完整实现与避坑指南

1. 项目概述与核心需求拆解1.1 这个需求到底在解决什么问题USTRUCT 是 Unreal Engine 里进行数据组织和网络同步的基础单元,而 JSON 是跨语言、跨平台交换数据时几乎绕不开的文本格式。把 USTRUCT 实例对象转成 JSON 字符串,最典型的场景包括&#xff1a…

2026/10/6 12:54:09

手写内容AI率爆表?免费工具+人工校准,从65%稳降到14%

先交代一下背景。前阵子一个朋友找我,说他自己一个字一个字敲出来的课程作业,拿去测AIGC率,居然显示65%,直接判定为“高度疑似AI生成”。这已经不是个例了,我身边陆续有人遇到同样的问题——明明是自己写的、手打的、原…

2026/10/6 12:54:09

加密恶意流量检测实战:基于机器学习的平台构建与避坑指南

简介:基于机器学习的加密恶意流量分析与检测平台是完整可运行的毕业设计项目,面向信息安全、人工智能等计算机相关专业学生与开发者,适合毕设、课设或安全方向实践。项目覆盖数据预处理、特征提取、模型训练与Web可视化检测全流程&#xff0c…

2026/10/6 12:49:09

基于PaddleNLP的ERNIE标点恢复:中文文本自动加标点实战

简介:基于PaddleNLP的标点恢复(punctuation restoration)源码包,面向自然语言处理初学者与工程开发者,用于为无标点的预测文本自动添加中文标点。包内选用ernie_linear系列中文标点预训练模型,覆盖不同推理…

2026/10/5 6:32:56

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/6 4:01:51

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/5 17:38:27

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/6 0:03:23

MR25H40CDF+STM32F031C6工业级高可靠数据存储方案

1. 项目概述:为什么在工业现场非得用 MR25H40CDF 配 STM32F031C6 做数据存储?在工厂产线的 PLC 控制柜里、在风电变流器的散热片背面、在矿井监测终端的金属外壳下,你经常能看到一块指甲盖大小的黑色芯片——它既不是 Flash,也不是…

2026/10/6 0:03:23

MRAM+STM32工业断电数据保全实战指南

1. 项目概述:为什么在工业现场非得用 MR25H40CDF 配 STM32F031C6 做数据存储?在工厂产线的PLC柜里、在野外无人值守的环境监测终端里、在高速运转的包装机控制板上,你经常能看到一块指甲盖大小的黑色芯片,旁边贴着“MR25H40CDF”丝…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑