云容器引擎 CCE-GPU故障处理:故障定位步骤
故障定位步骤
- NVML显存重映射行数查询异常
GPU驱动或GPU设备存在异常,请根据GPU设备所在的节点类型(E CS 或BMS),联系对应的客服进行处理。
- GPU设备DBE错误与SBE错误总数过高
GPU驱动或GPU设备存在异常,请根据GPU设备所在的节点类型(ECS或BMS),联系对应的客服进行处理。
- GPU设备存在Uncorrectable ECC错误
- 登录GPU隔离事件发生的节点。
- 进入/usr/local/nvidia/bin目录,执行nvidia-smi -q命令。
若nvidia-smi命令不存在或执行失败,有可能是驱动安装未就绪导致,可以重新安装GPU驱动后,再重试。
- 观察执行结果中的ECC ERROR(发生ECC故障的记录)。
- Correctable Error:不会影响业务,不会触发GPU隔离。
- Uncorrectable Error:会导致业务中断,会触发GPU隔离。
- 若存在Uncorrectable Error,可以尝试通过以下手段恢复:
- 配置目标节点污点(taints),驱逐目标节点存量的业务负载。
- 重启目标节点。
- 若重启后仍有该现象,则需要收集nvidia-smi -q命令的输出,然后根据GPU设备所在的节点类型(ECS或BMS),联系对应的客服进行处理。
- NVML获取设备UUID异常
- 登录GPU隔离事件发生的节点。
- 进入/usr/local/nvidia/bin目录。
- 执行nvidia-smi,观察执行结果中的设备ID,例如:00:0D.0。
若nvidia-smi命令不存在或执行失败,有可能是驱动安装未就绪导致,可以重新安装GPU驱动后,再重试。
- 执行lspci | grep NVIDIA,观察执行结果中的设备ID。
- 比对上述两者结果,若存在不匹配的现象,收集两者输出结果,然后根据GPU设备所在的节点类型(ECS或BMS),联系对应的客服进行处理。
- GPU设备存在Xid错误
- 登录GPU隔离事件发生的节点。
- 执行dmesg -T | grep -i NVRM,观察结果输出。
- 假如存在Xid(PCI:0000:00:0x): xx格式的信息,则需要收集错误码,根据Nvidia Xid Error页面中确认详细原因。然后将详细原因和错误信息,根据GPU设备所在的节点类型(ECS或BMS),联系对应的客服进行处理。
- GPU虚拟化设备可用内存远小于GPU物理显存
- 登录GPU虚拟化节点。
- 执行/usr/local/nvidia/bin/nvidia-smi,观测目标GPU卡的物理显存,记录其序号。
- 执行cat /proc/xgpu/{GPU卡序号}/meminfo,注意替换命令中的{GPU卡序号}为步骤2获取的GPU卡序号,观测GPU虚拟化的可用显存。
- 比较步骤2和步骤3的可用显存。
由于GPU厂商的驱动程序,本身就会占用一定量的物理显存,量级在300MB左右,这属于正常现象。例如Tesla T4配套510.47.03,驱动程序默认会占用280MiB;而该显存占用与厂商的驱动程序版本也有一定相关性,例如535系列驱动比470系列占用更多。
若发现GPU虚拟化的可用显存远小于GPU卡的物理显存,一般是因为存在一些非GPU虚拟化发放的容器,占用了显存。
- 通过CCE控制台或kubectl命令,将目标节点的GPU负载排空。
- 执行rmmod xgpu_km,进行GPU虚拟化模块的删除。
- 通过CCE控制台或kubectl命令,将目标节点的nvidia-gpu-device-plugin Pod进行删除。
- 等待nvidia-gpu-device-plugin Pod重建完成后,重新按照步骤2和步骤3进行结果核验。