容器服务 NodeProblemDetectorPlus 说明

本组件基于 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。

20、Node Conditions

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

21、系统与运行时 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 挂载旧路径卷

22、容器运行时与 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 是否存在幽灵容器进程

23、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 行重映射是否存在错误

24、海光 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 检测)

25、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,用于发现新出现的未分类故障码。

26、海光 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,用于发现新出现的未分类故障码。

27、海光 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。

赞 (0)
上一篇 4天前
下一篇 4天前