帮你快速理解、总结文档立即下载

NodeProblemDetectorPlus 说明

最近更新时间:2026-09-10 17:36:01
本文档已由 AI 辅助审校
我的收藏

版本说明

本组件基于 Kubernetes 社区 node-problem-detector v0.8.2 版本继续演进,并非直接跟随社区后续版本或 master 分支迭代,GPU/DCU 相关能力由 TKE 团队自研并独立演进。与社区版本的主要差异见下表。
差异点
社区 v0.8.2 / master 分支
本组件(TKE 版)
GPU 检测
无 NVML 主动轮询能力(master 分支同样未引入)
新增 gpuMonitor(NVML 主动轮询温度/功率/ECC/NVLink/PCIe 等)及 xidMonitor(解析 NVIDIA XID 日志)
海光 DCU 检测
不支持
新增 dcuMonitor(hy-smi 主动轮询)及 dcuXidMonitor/dcuSxidMonitor(解析海光 XID/SXID 日志)
僵尸进程检测
不支持
新增 zombieprocessmonitor
卡死/挂起进程检测
不支持
新增 stuck_process_monitor(D/T 状态检测,含自身豁免与二次确认过滤瞬时抖动)
磁盘只读检测
不支持
新增 diskromonitor 及 disk-ro-check 检测项
kubelet root-dir 漂移检测
不支持
新增 kubelet_rootdir_check
Docker/Containerd/Kubelet 组件健康检查
仅支持 kubelet、docker
扩展支持 containerd、CRI 独立健康检查
日志计数类检测(频繁重启/连接异常等)
不支持
新增 log-counter 系列检测项(FrequentKubeletRestart、ConnectApiServer、PLEGNotHealthy 等)
Windows 支持
支持
不支持(本组件仅面向 Linux 节点,已移除 Windows 相关适配代码)

简介

组件介绍

Node-Problem-Detector-Plus 是 Kubernetes 集群节点的健康监测组件。在容器服务 TKE 环境中以 DaemonSet 方式运行,帮助用户实时检测节点上的各种异常情况,并将检测结果报告给上游的 kube-apiserver。
支持检测的异常类型包括:操作系统级异常(内核死锁、文件系统只读、OOM 等)、容器运行时异常(Docker/Containerd 频繁重启)、NVIDIA GPU 硬件故障,以及海光 DCU 设备故障(掉卡、高温、ECC 错误、HySwitch 异常等)。

部署在集群内的 Kubernetes 对象

Kubernetes 对象名称
类型
资源量
Namespaces
node-problem-detector
DaemonSet
0.5C512M
kube-system
node-problem-detector
ServiceAccount
-
kube-system
node-problem-detector
ClusterRole
-
-
node-problem-detector
ClusterRoleBinding
-
-

使用场景

使用 Node-Problem-Detector-Plus 组件可以监控节点的工作状态,包括内核死锁、OOM、系统线程数压力、系统文件描述符压力等指标,通过 Node Condition 和 Event 的形式上报给 apiserver。
您可以通过检测相应的指标,提前预知节点的资源压力,可以在节点开始驱逐 Pod 之前手动释放或扩容节点资源压力,防止 Kubernetes 进行资源回收或节点不可用可能带来的损失。
对于 GPU/DCU 异构计算节点,NPD 还能主动检测硬件故障(如设备丢失、温度过高、ECC 错误等),并通过 Node Condition 上报,方便运维侧及时发现并处理故障设备。

限制条件

在集群中使用 NPD,需要在集群内安装该扩展组件。NPD 容器资源限制(Limits)为 0.5 核 CPU、512M 内存,资源请求(Requests)为 0.1 核 CPU、200M 内存。

组件权限说明

权限说明

该组件权限是当前功能实现的最小权限依赖。

权限场景

功能
涉及对象
涉及操作权限
需要监听节点列表变化,在节点遇到故障时上报故障信息,需要修改 node 的 condition
nodes、nodes/status
get/list/watch、patch
需要发送 event 通知集群
event
create/patch/update
检测幽灵容器等场景需要获取节点上的 Pod 列表
pods
list

权限定义

rules:
- apiGroups:
- ""
resources:
- nodes
verbs:
- get
- list
- watch
- apiGroups:
- ""
resources:
- nodes/status
verbs:
- patch
- apiGroups:
- ""
resources:
- events
verbs:
- create
- patch
- update
- apiGroups:
- ""
resources:
- pods
verbs:
- list

使用方法

1. 登录 容器服务控制台,在左侧导航栏中选择集群
2. 在集群列表中,单击目标集群 ID,进入集群详情页。
3. 选择左侧菜单栏中的组件管理,在组件管理页面单击新建
4. 新建组件管理页面中勾选 Node-Problem-Detector-Plus
5. 单击完成即可创建组件。组件安装成功后,您的集群中会有对应的 node-problem-detector 资源,在 Node 的 Condition 中也会增加相应的条目。

检测项说明

NPD 内置多种检测器,按检测对象分为 6 大类。每类检测器均可在组件的高级配置中单独开启或关闭。

系统内核检测

检测项
检测对象
检测方式
触发条件
对应 Condition
内核死锁检测
Docker/AUFS 相关内核任务是否阻塞
解析内核日志(/dev/kmsg)中的任务阻塞信息
检测到任务被阻塞超过设定时长
KernelDeadlock
文件系统只读检测
根文件系统是否被动重新挂载为只读
解析内核日志中的重新挂载事件
检测到内核主动将文件系统重新挂载为只读
ReadonlyFilesystem
磁盘只读检测
指定挂载点(/、/data)是否变为只读
主动尝试写入测试文件
连续多次写入失败
DiskReadOnly
XFS 元数据错误检测
XFS 文件系统是否发生元数据 I/O 错误
解析内核日志中的 XFS 错误信息
检测到 XFS 元数据 I/O 错误日志
XFSError
OOM 事件检测
进程或 Pod 是否被系统 OOM Killer 杀死
解析内核日志中的 OOM Killer 记录
检测到进程/Pod 被杀死的日志
无(仅产生 Event,不生成 Condition)
D 状态进程检测
是否存在长时间处于不可中断睡眠(D 状态)的进程
周期扫描系统进程状态,排除 NPD 自身进程及其派生的插件子进程,候选进程需连续 2 次采样(间隔 500ms)仍处于目标状态才计入,避免磁盘瞬时抖动导致的误报
检测到进程处于 D 状态超过 120 秒
StuckProcess
挂起进程检测
是否存在被 SIGSTOP 挂起(T 状态)的进程
周期扫描系统进程状态,排除规则与 D 状态进程检测一致
检测到进程处于 T 状态超过 120 秒
StoppedProcess
Ext4/IO 错误检测
文件系统是否发生 Ext4 错误或 Buffer I/O 错误
解析内核日志
检测到相应错误日志
无(仅产生 Event,不生成 Condition)

容器运行时与 Kubelet 检测

检测项
检测对象
检测方式
触发条件
对应 Condition
Docker Overlay2 损坏检测
Docker overlay2 存储层是否损坏
解析 dockerd 日志中的 readlink 错误
检测到存储层读取异常日志
CorruptDockerOverlay2
服务运行状态检测
kubelet/Docker/Containerd 系统服务是否处于运行状态
通过 systemd 查询服务状态
服务处于非运行状态
KubeletProblem、DockerdProblem、ContainerdProblem
服务健康检查
kubelet/Docker/Containerd/CRI 是否能正常响应健康检查请求
定期调用组件的健康检查接口
健康检查连续失败
KubeletUnhealthy、ContainerRuntimeUnhealthy、ContainerdRuntimeUnhealthy、ContainerRuntimeInterfaceUnhealthy
服务频繁重启检测
kubelet/Docker/Containerd 是否频繁重启
统计一段时间窗口内服务启动日志出现的次数
20 分钟内重启次数达到 5 次
FrequentKubeletRestart、FrequentDockerRestart、FrequentContainerdRestart
幽灵容器检测
是否存在容器运行时记录中已不存在对应进程的幽灵容器
周期扫描容器运行时状态并与实际进程比对
检测到幽灵容器
HasGhostContainer
API Server 连接检测
kubelet 与 API Server 的连接是否正常
统计 kubelet 日志中连接异常的出现次数
一段时间窗口内连接异常次数达到阈值
ConnectApiServer
PLEG 健康检测
kubelet 的 Pod 生命周期事件生成器(PLEG)是否健康
统计 kubelet 日志中 PLEG 异常的出现次数
一段时间窗口内异常次数达到阈值
PLEGNotHealthy
kubelet 根目录漂移检测
kubelet 修改 root-dir 配置后,存量运行中的 Pod 是否仍挂载旧路径的卷
周期扫描节点上容器的卷挂载路径,判断是否存在多个不同的 root-dir 前缀
检测到 2 个及以上不同的 root-dir 前缀
KubeletRootDirMismatch

系统资源检测

检测项
检测对象
检测方式
默认阈值
对应 Condition
文件描述符压力检测
主机文件描述符使用率
读取系统文件描述符使用情况
使用率达到最大值的 80%
FDPressure、FDProblem
PID 压力检测
节点进程号(PID)资源使用率
读取系统 PID 使用情况
使用率达到最大值的 90%
CustomPIDPressure
线程数压力检测
系统线程数使用率
读取系统线程数使用情况
使用率达到最大值的 90%
ThreadPressure
Conntrack 表压力检测
conntrack 连接跟踪表使用率
读取系统 conntrack 表使用情况
使用率达到 90%
ConntrackProblem
磁盘使用率检测(Overlay)
容器存储盘(/data)使用率
读取磁盘使用情况
使用率达到 80%
OverlayDiskPressure
持续 D 态进程数量检测
全机持续处于不可中断睡眠(D 状态)的进程数量
周期扫描全机进程状态,统计连续两次采样均处于 D 状态的进程数,排除 NPD 自身进程及其派生的插件子进程
数量超过 10 个
ProcessProblem
系统负载检测
系统 5 分钟平均负载
读取系统 load average
超过设定阈值
SystemLoadProblem
网络设备检测
网络设备是否处于 down 状态、是否频繁注销
读取网络设备状态、解析内核日志中的网卡注销记录
检测到设备异常或频繁注销
NetDeviceProblem、FrequentUnregisterNetDevice
MTU 缓存检测
路由 MTU 缓存是否过期
读取路由缓存信息
缓存过期
MtuCacheProblem
TCP 时间戳检测
net.ipv4.tcp_timestamps 内核参数是否被禁用
读取系统内核参数
参数被禁用
NetIpv4TcpTimeStampProblem

服务健康检查

检测项
检测对象
检测方式
默认周期
对应 Condition
NTP 时间同步检测
ntpd/chronyd/systemd-timesyncd 时间同步服务是否运行
通过 systemd 查询服务状态
1 分钟
NTPProblem

GPU(NVIDIA)硬件检测

NPD 通过 NVIDIA 官方 NVML 库主动轮询 GPU 硬件计数器,并解析系统日志中的 NVIDIA XID 错误码,双通道检测 GPU 硬件问题。
主动轮询检测
检测项
检测方式
默认阈值
默认检测周期
对应 Condition
GPU 温度检测
读取 GPU 温度计数器
超过 85℃
15 秒
GPUTempError
GPU 功率检测
读取 GPU 功率使用率
超过 120%
15 秒
GPUPowerError
NVLink 检测
读取 NVLink CRC 错误增量
检测周期内新增超过 10 个
60 秒
GPUNvlinkError
ECC 模式检测
比对当前 ECC 模式与待生效 ECC 模式是否一致
不一致
30 秒
GPUEccModeError
GPU 设备丢失检测
统计健康 GPU 数量与初始数量的差异
设备数量减少
5 秒
GPUDeviceLost
InfoROM 完整性检测
读取 InfoROM 校验和
校验异常
60 秒
GPUInfoROMCorrupted
行重映射检测
读取显存行重映射计数
可纠正行超过 10 或不可纠正行新增
30 秒
GPURemappingRowsError
退役页检测
读取待生效的显存退役页信息
存在待生效退役页
30 秒
GPUPendingRetiredPages
双比特 ECC 错误检测
读取显存双比特(不可纠正)ECC 错误计数增量
检测到任意新增
30 秒
GPUDoubleBitEccError
单比特 ECC 错误率检测
统计检测周期内单比特(可纠正)ECC 错误增量
检测周期内新增超过 30 个
30 秒
GPUHighSingleBitEccError
PCIe 链路检测
读取 GPU 与主机间的 PCIe 链路状态
链路异常
30 秒
GPUPCIeError
说明:
GPUDeviceLost、GPUInfoROMCorrupted、GPURemappingRowsError、GPUPendingRetiredPages、GPUDoubleBitEccError、GPUHighSingleBitEccError、GPUPCIeError 属于永久性告警,一旦触发不会自动恢复为 False,需要人工确认硬件状态后重启 NPD 组件才能清除;其余检测项在故障消失后会自动恢复。
NVIDIA XID 日志检测
xidMonitor 解析 GPU 系统日志(/var/log/messages)中形如 NVRM: Xid (PCI:xxx): <错误码>, <描述> 的记录,按错误码所属集合匹配为致命、警告、应用级、忽略、兜底五类,同一 Condition/Event 可能对应多个错误码:
检测项
检测对象
检测方式
触发条件
对应 Condition
GPU 致命 XID 检测
GPU 硬件级致命故障
解析 GPU 系统日志中的 XID 错误码,匹配致命错误码集合
检测到 XID 74(NVLink 错误)或 79(GPU 从 PCIe 总线掉线)中任一
GPUXIDFatalError
GPU 警告 XID 检测
GPU 硬件级警告故障(ECC 错误、上下文切换超时、固件通信异常等)
解析 GPU 系统日志中的 XID 错误码,匹配警告错误码集合
检测到 XID 48(显存双比特不可纠正 ECC 错误)、92(单比特 ECC 错误率过高)、95(不可控 ECC 错误)、63(ECC 页面退役/行重映射记录事件)、94(行重映射失败后的可控 ECC 错误隔离)、137(不可纠正的 NVLink 错误)、140(未恢复的 ECC 错误)、13(图形引擎异常)、31(显存缺页错误)、43(GPU 停止处理)、45(前序错误触发的抢占式清理)、62(内部微控制器停止运行)、68(视频解码引擎异常)、109(上下文切换超时)、110(安全故障)、119(GSP RPC 调用超时)、120(GSP 固件内部错误)、122/123/124(固件 SPI 总线读取/写入/擦除失败)中任一
GPUXIDWarningError
GPU 应用级 XID 检测
应用程序触发的 GPU 异常(越界访问显存、ECC 记录失败等)
解析 GPU 系统日志中的 XID 错误码,匹配应用级错误码集合
检测到 XID 13、31、43、45、63、68、94(同时属于警告类,触发时会同时产生 Event 并将 GPUXIDWarningError 置为 True)或 64(仅属于应用级,只产生 Event,不影响节点 Condition)中任一
无(仅产生 Event:DeviceHasApplicationXidError)
GPU 忽略 XID 检测
已知良性事件
命中忽略错误码集合后直接丢弃,不产生日志解析结果
检测到 XID 141
无(不产生任何告警或事件)
GPU 其他 XID 检测
未归入以上任何分类的新增错误码
解析 GPU 系统日志中的 XID 错误码,未命中以上错误码集合时兜底捕获
检测到上述以外的任意 XID 错误码
无(仅产生 Event:DeviceHasOtherXidError)
说明:
致命、警告两类为 permanent 规则,触发后对应 Condition 置为 True 且长期保留,需要重启 NPD 组件才能清除;应用级、兜底两类为 temporary 规则,仅产生一次性 Event,不会体现在节点 Condition 中;忽略类命中后直接丢弃,不产生任何告警或事件。

海光 DCU 硬件检测

NPD 通过海光官方管理工具 hy-smi 主动轮询 DCU 硬件计数器,并解析系统日志中的海光 XID/SXID 错误码,双通道检测 DCU 硬件问题。使用该能力需要节点已安装海光 DCU 驱动及 hy-smi 管理工具。
主动轮询检测
检测项
检测方式
默认阈值
默认检测周期
对应 Condition
DCU 温度检测
读取 DCU 温度传感器(取最高温度点)
超过 90℃
15 秒
HygonDCUHighTemp
DCU ECC 错误检测
读取 DCU 各硬件模块的 ECC 错误计数
不可纠正错误任意新增,或可纠正错误检测周期内新增超过 30、或单比特错误率超过阈值
30 秒
HygonDCUUncorrectableErr、HygonDCUHighSBERate
HSL 互联检测
读取 DCU 间高速互联(HSL)链路状态
CRC 错误检测周期内新增超过 10
60 秒
HygonHySwitchError
PCIe 链路检测
读取 DCU 与主机间的 PCIe 链路状态
链路降级或丢失
30 秒
HygonDCUPCIeLinkLost
海光 DCU XID 日志检测
dcuXidMonitor 解析海光 DCU 日志中形如 hycu<设备地址> hycu: (serial:xxx) XID: <错误码>, info: <描述> 的记录,覆盖 DCU 硬件 RAS(可靠性、可用性、可服务性)模块、温度、驱动、固件等各类故障,同一 Condition/Event 可能对应多个错误码:
检测项
检测对象
检测方式
触发条件
对应 Condition
DCU 不可纠正 RAS 错误检测
DCU 各硬件模块(显存控制器、图形引擎、DMA 控制器、内存集线器、互联总线等)的不可纠正错误
解析 DCU 日志中的 XID 错误码
检测到 XID 2、4、6、8、10、12、14、16、18、30、82 中任一
HygonDCUUncorrectableErr
DCU 高温检测(日志)
DCU 温度过高
解析 DCU 日志中的 XID 错误码
检测到 XID 50 或 301 中任一
HygonDCUHighTemp
DCU 隔离检测
DCU 因连续不可恢复错误被驱动主动隔离
解析 DCU 日志中的 XID 错误码
检测到 XID 51
HygonDCUIsolation
DCU 设备丢失检测(日志)
DCU 驱动初始化失败
解析 DCU 日志中的 XID 错误码
检测到 XID 190
HygonDCUDeviceLost
DCU PCIe 链路丢失检测(日志)
DCU 与主机间 PCIe 链路丢失
解析 DCU 日志中的 XID 错误码
检测到 XID 160
HygonDCUPCIeLinkLost
DCU 驱动错误检测
DCU 内部控制器超时、驱动加载失败、微引擎控制器错误、图形计算单元 Harvest 事件
解析 DCU 日志中的 XID 错误码
检测到 XID 76、77、87、112、124 中任一
HygonDCUDriverError
DCU ECC 页面退役检测
DCU 显存 ECC 页面修复事件、行重映射记录失败
解析 DCU 日志中的 XID 错误码
检测到 XID 120 或 122 中任一
HygonDCUEccPageRetire
DCU 高 SBE 错误率检测
DCU 单比特 ECC 错误率过高(不可纠正错误的早期预警)
解析 DCU 日志中的 XID 错误码
检测到 XID 130
HygonDCUHighSBERate
DCU 虚拟机故障检测
用户态应用非法访问 DCU 显存
解析 DCU 日志中的 XID 错误码
检测到 XID 81
HygonDCUVMFault
DCU 固件错误检测
DCU 板卡 VBIOS 启动/加载失败、SMU 固件初始化异常
解析 DCU 日志中的 XID 错误码
检测到 XID 200、201、300 中任一
HygonDCUFirmwareError
DCU 可纠正 RAS 错误检测
DCU 各硬件模块的可纠正错误
解析 DCU 日志中的 XID 错误码
检测到 XID 1、3、5、7、9、11、13、15、17、19 中任一
无(仅产生 Event:DCUHasCorrectableRASError)
DCU MEC 警告检测
DCU 微引擎控制器警告,严重程度低于驱动错误
解析 DCU 日志中的 XID 错误码
检测到 XID 111
无(仅产生 Event:DCUMECWarning)
DCU 其他 XID 检测
未归入以上任何分类的新增错误码
解析 DCU 日志中的 XID 错误码,未命中以上错误码集合时兜底捕获
检测到上述以外的任意 DCU XID 错误码
无(仅产生 Event:DCUHasOtherXidError)
说明:
前 10 项为 permanent 规则,触发后对应 Condition 置为 True 且长期保留,需要重启 NPD 组件才能清除;后 3 项为 temporary 规则,仅产生一次性 Event,不会体现在节点 Condition 中。
海光 HySwitch SXID 日志检测
dcuSxidMonitor 解析海光日志中形如 hyfm: SXID: <错误码> <描述>(HFM 管理任务上报)或 hsw<设备地址>: SXID: <错误码> <描述>(HySwitch 硬件直接上报)的记录,用于检测多 DCU 互联架构中 HySwitch 互联芯片及 HFM(HySwitch Fabric Manager)管理任务的故障,故障会导致整节点的 DCU 资源不可用:
检测项
检测对象
检测方式
触发条件
对应 Condition
HySwitch 致命错误检测
HySwitch 驱动加载失败、寄存器读取超时、HSL 链路不可纠正错误、内部控制核心故障、PCIe 链路丢失,以及 HFM 任务检测到的驱动加载失败、数量不匹配、建链失败、复位失败、寄存器读取失败、DCU 数量不符、VBIOS 不支持 HSL 等故障
解析 HySwitch/HFM 日志中的 SXID 错误码
检测到 SXID 20、200、201、204、206、207、251、253、255、257、259、261、262、263、264、265 中任一
HygonHySwitchError
HySwitch 警告检测
HySwitch 固件更新结果通知、固件与驱动版本匹配校验结果、HSL 链路可纠正错误
解析 HySwitch/HFM 日志中的 SXID 错误码
检测到 SXID 202、203、205 中任一
HygonHySwitchWarning
HySwitch 其他 SXID 检测
未归入以上任何分类的新增错误码
解析 HySwitch/HFM 日志中的 SXID 错误码,未命中以上错误码集合时兜底捕获
检测到上述以外的任意 SXID 错误码
无(仅产生 Event:HySwitchOtherSXidError)
说明:
致命、警告两类均为 permanent 规则,触发后对应 Condition 置为 True 且长期保留,需要重启 NPD 组件才能清除;兜底类为 temporary 规则,仅产生一次性 Event。SXID 200~207 由 HySwitch 硬件直接上报,SXID 20、251~265 由 HFM 管理任务上报,两者共用同一套 Condition。

附录

Node Conditions

安装 NPD 插件后,会在节点中增加以下特定的 Conditions:

系统与运行时 Conditions

Condition Type
默认值
描述
KernelDeadlock
False
内核是否存在死锁
ReadonlyFilesystem
False
文件系统是否只读
DiskReadOnly
False
磁盘挂载是否变为只读
XFSError
False
是否存在 XFS 元数据 I/O 错误
FDPressure
False
主机文件描述符数量是否达到最大值的80%
FDProblem
False
文件描述符是否异常
CustomPIDPressure
False
当前节点 PID 数是否达到最大值的90%
ThreadPressure
False
系统线程数是否达到最大值的90%
ConntrackProblem
False
conntrack 表用量是否异常
ProcessProblem
False
全机持续处于 D 状态的进程数量是否超过阈值
SystemLoadProblem
False
系统负载是否异常
MtuCacheProblem
False
MTU 缓存是否异常
NetDeviceProblem
False
网络设备是否异常
NetIpv4TcpTimeStampProblem
False
TCP 时间戳设置是否异常
FrequentUnregisterNetDevice
False
网络设备是否频繁注销
NTPProblem
False
NTP 时间同步服务是否正常运行
OverlayDiskPressure
False
Overlay 磁盘空间是否不足
StuckProcess
False
是否存在 D 状态进程超过 120s
StoppedProcess
False
是否存在被 SIGSTOP 挂起(T 状态)的进程超过 120s
CorruptDockerOverlay2
False
Docker Overlay2 是否存在问题
ConnectApiServer
False
是否能正常连接 API Server
PLEGNotHealthy
False
PLEG 是否健康
KubeletRootDirMismatch
False
kubelet root-dir 配置变更后是否存在存量 Pod 挂载旧路径卷

容器运行时与 Kubelet Conditions

Condition Type
默认值
描述
FrequentKubeletRestart
False
Kubelet 是否在20min 内重启超过5次
FrequentDockerRestart
False
Docker 是否在20min 内重启超过5次
FrequentContainerdRestart
False
Containerd 是否在20min 内重启超过5次
KubeletProblem
False
Kubelet service 是否 Running
KubeletUnhealthy
False
Kubelet 健康检查是否通过
DockerdProblem
False
Docker service 是否 Running(若节点运行时为 Containerd,则一直为 False)
ContainerdProblem
False
Containerd service 是否 Running(若节点运行时为 Docker,则一直为 False)
ContainerRuntimeUnhealthy
False
容器运行时是否健康
ContainerRuntimeInterfaceUnhealthy
False
CRI 接口是否健康
ContainerdRuntimeUnhealthy
False
Containerd 运行时是否健康
HasGhostContainer
False
是否存在幽灵容器进程

NVIDIA GPU Conditions

在装有 NVIDIA GPU 的节点上,NPD 会注册以下 Conditions:
Condition Type
默认值
描述
GPUXIDFatalError
False
GPU 是否存在致命 XID 错误
GPUXIDWarningError
False
GPU 是否存在警告级 XID 错误
GPUDeviceLost
False
GPU 设备是否丢失/不可访问
GPUDoubleBitEccError
False
GPU 是否存在双比特 ECC 错误
GPUHighSingleBitEccError
False
GPU 单比特 ECC 错误率是否超阈值
GPUEccModeError
False
GPU ECC 模式是否异常(已禁用或需重启启用)
GPUTempError
False
GPU 温度是否超阈值
GPUPowerError
False
GPU 电源线缆是否接触不良
GPUPCIeError
False
GPU PCIe 链路是否异常
GPUNvlinkError
False
GPU NVLink 是否异常
GPUInfoROMCorrupted
False
GPU InfoROM 是否损坏
GPUPendingRetiredPages
False
GPU 是否存在待退役页面
GPURemappingRowsError
False
GPU 行重映射是否存在错误

海光 DCU Conditions

在装有海光 DCU 设备的节点上,NPD 会注册以下 Conditions(需节点安装海光管理工具 hy-smi):
Condition Type
默认值
描述
HygonDCUDeviceLost
False
DCU 设备丢失或初始化失败
HygonDCUHighTemp
False
DCU 温度过高
HygonDCUUncorrectableErr
False
DCU 不可纠正 RAS 错误
HygonDCUIsolation
False
DCU 设备被隔离
HygonDCUPCIeLinkLost
False
DCU PCIe 链路丢失
HygonDCUDriverError
False
DCU 驱动或固件错误
HygonDCUHighSBERate
False
DCU 单比特 ECC 错误率过高
HygonDCUEccPageRetire
False
DCU ECC 页面退役
HygonDCUVMFault
False
DCU 虚拟机故障
HygonDCUFirmwareError
False
DCU 固件错误(通过 XID 检测)
HygonHySwitchError
False
HySwitch 交换芯片严重错误(通过 SXID 检测)
HygonHySwitchWarning
False
HySwitch 交换芯片警告(通过 SXID 检测)

NVIDIA GPU XID 错误码含义

以下为 xidMonitor 检测到的各 NVIDIA GPU XID 错误码具体含义,检测规则与对应 Condition/Event 详见「检测项说明 - GPU(NVIDIA)硬件检测」。
XID
分类
含义
13
警告 / 应用级
图形引擎异常(Graphics Engine Exception),常见于应用越界访问显存
31
警告 / 应用级
GPU 显存缺页错误(GPU memory page fault),通常是应用越界访问导致
43
警告 / 应用级
GPU 停止处理(GPU stopped processing),常伴随驱动或应用崩溃
45
警告 / 应用级
因前序错误触发的抢占式清理,通常是其他错误码的伴生现象
48
警告
显存双比特不可纠正 ECC 错误,属于硬件级严重问题
62
警告
GPU 内部微控制器停止运行
63
警告 / 应用级
ECC 页面退役或行重映射记录事件(尚未失败)
64
应用级
ECC 页面退役或行重映射记录失败,严重程度高于错误码 63
68
警告 / 应用级
视频解码引擎(NVDEC)异常
74
致命
NVLink 错误,常见于多卡高速互联训练场景
79
致命
GPU 从 PCIe 总线上掉线,属于硬件级严重故障
92
警告
单比特 ECC 错误率过高,属于早期预警信号
94
警告 / 应用级
行重映射失败后触发的可控 ECC 错误隔离
95
警告
不可控 ECC 错误,故障可能已扩散影响计算结果正确性
109
警告
上下文切换超时(Context Switch Timeout)
110
警告
安全故障,如显存加密或信任区异常
119
警告
GPU 系统处理器(GSP)RPC 调用超时,通常是驱动或固件通信异常
120
警告
GSP 固件内部错误
122
警告
固件 SPI 总线读取失败
123
警告
固件 SPI 总线写入失败
124
警告
固件 SPI 总线擦除失败
137
警告
不可纠正的 NVLink 错误
140
警告
未恢复的 ECC 错误
141
忽略
已知良性事件,不产生任何告警
说明:
错误码 13、31、43、45、63、68、94 同时属于警告类和应用级;触发时会同时产生一次性 Event,并将对应的警告类 Condition 置为 True。错误码 64 仅属于应用级,只产生 Event,不会影响节点 Condition。未列出的其他错误码统一归为兜底分类,仅产生一次性 Event,用于发现新出现的未分类故障码。

海光 DCU XID 错误码含义

以下为 dcuXidMonitor 检测到的各海光 DCU XID 错误码具体含义,检测规则与对应 Condition/Event 详见「检测项说明 - 海光 DCU 硬件检测」。
XID
严重程度
含义
1、3、5、7、9、11、13、15、17、19
仅监控
DCU 各硬件模块(显存控制器、图形引擎、DMA 控制器、内存集线器、互联总线等)的可纠正错误
2、4、6、8、10、12、14、16、18、30、82
致命
DCU 各硬件模块的不可纠正错误,计算结果可能已受影响
50
致命
DCU 温度过高
51
致命
DCU 因连续不可恢复错误被驱动主动隔离
160
致命
DCU 与主机间 PCIe 链路丢失
190
致命
DCU 驱动初始化失败
200、201
致命
DCU 板卡 VBIOS 启动或加载失败
300
致命
DCU SMU 固件初始化异常
76、77
严重
DCU 内部控制器(QCM/HDP)操作超时
87
严重
DCU 驱动加载失败
112
严重
DCU 微引擎控制器(MEC)错误
124
严重
DCU 图形计算单元 Harvest 事件
81
严重
DCU 虚拟机故障,通常由用户态应用非法访问显存导致,重启相关业务即可清除
111
预警
DCU 微引擎控制器(MEC)警告,严重程度低于错误码 112
120
预警
DCU 显存 ECC 页面修复事件(自愈机制生效)
122
预警
DCU 显存行重映射记录失败,严重程度高于错误码 120
130
预警
DCU 单比特 ECC 错误率过高,属于不可纠正错误的早期预警
301
预警
DCU 温度临界警告
说明:
未列出的其他 DCU XID 错误码统一归为兜底分类,仅产生一次性 Event,用于发现新出现的未分类故障码。

海光 HySwitch SXID 错误码含义

以下为 dcuSxidMonitor 检测到的各海光 HySwitch SXID 错误码具体含义,检测规则与对应 Condition/Event 详见「检测项说明 - 海光 DCU 硬件检测」。
SXID
严重程度
含义
20、200
致命
HySwitch 驱动加载失败
201
致命
读取 HySwitch 寄存器超时
204
致命
HSL 互联链路发生不可纠正错误
206
致命
HySwitch 内部控制核心故障
207
致命
HySwitch 芯片 PCIe 链路丢失
202
预警
HySwitch 固件更新结果通知
203
预警
HySwitch 固件与驱动版本匹配校验结果
205
预警
HSL 互联链路发生可纠正错误
251
致命
HFM 任务检测到 HySwitch 驱动加载失败
253
致命
HFM 任务检测到 HySwitch 数量与配置不匹配
255
致命
HFM 任务检测到 HySwitch 建链失败
257
致命
HFM 任务检测到 HySwitch 复位失败
259
致命
HFM 任务在无 DCU 驱动情况下尝试复位 DCU 出错
261
致命
HFM 任务检测到整机复位次数达到上限
262
致命
HFM 任务读取 DCU 寄存器失败,可能存在掉卡风险
263
致命
HFM 任务读取 DCU 或 HySwitch 数量失败
264
致命
HFM 任务检测到 DCU 数量与预期不符
265
致命
HFM 任务检测到部分 DCU 的 VBIOS 不支持 HSL 互联
说明:
SXID 200~207 由 HySwitch 硬件直接上报,SXID 20、251~265 由 HFM 管理任务上报,两者共用同一套 Condition。未列出的其他 SXID 错误码统一归为兜底分类,仅产生一次性 Event。