GPU服务器故障诊断-未来人
source link: https://blog.51cto.com/zaa47/2469983
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
1. GPU日志收集
安装GPU驱动的系统下,任意目录下执行命令:nvidia-bug-report.sh
执行命令后,当前目录下会生成日志压缩包:nvidia-bug-report.log.gz
2. GPU基础状态检测
对于GPU服务器建议客户维持较新的GPU驱动版本、禁用nouveau模块、打开GPU驱动内存常驻模式并配置开机自启动。
对于GPU服务器,建议以下进行以下配置:
- 维持较新的、正确的GPU驱动版本
- 禁用nouveau模块
- 打开GPU驱动内存常驻模式并配置开机自启动
处理GPU服务器故障时,只要涉及服务器关机的操作,均建议对GPU基础状态进行检测,基础状态检测包括:
nouveau模块是否禁用、GPU识别情况、GPU驱动内存常驻模式、GPU 带宽、GPU ECC报错、GPU ERR报错、GPU nvlink状态。
2.1 nouveau 模块禁用检查
Nouveau是由一群开发人员构建的Nvidia显卡的开源驱动程序,会与nvidia官方GPU驱动发生冲突,需要在系统下禁用nouveau模块。
# 以下命令没有任何输出表示nouveau模块已经禁用
[root@zj ~]# lsmod | grep -i nouveau
# 以下输出表示nouveau模块没有禁用
[root@zj ~]# lsmod | grep -i nouveau
nouveau 1662531 0
mxm_wmi 13021 1 nouveau
wmi 19086 2 mxm_wmi,nouveau
i2c_algo_bit 13413 1 nouveau
video 24538 1 nouveau
drm_kms_helper 176920 2 nouveau,vmwgfx
ttm 99555 2 nouveau,vmwgfx
drm 397988 6 ttm,drm_kms_helper,nouveau,vmwgfx
i2c_core 63151 5 drm,i2c_piix4,drm_kms_helper,i2c_algo_bit,nouveau
禁用nouveau模块的方法参考如下:
- CentOS 7:
# 编辑或新建 blacklist-nouveau.conf 文件
[root@zj ~]# vim /usr/lib/modprobe.d/blacklist-nouveau.conf
blacklist nouveau
options nouveau modeset=0
# 执行如下命令并重启系统使内核生效
[root@zj ~]# dracut -force
[root@zj ~]# shutdown -ry 0
2.2 GPU驱动内存常驻模式
打开GPU驱动内存常驻模式可以减少GPU掉卡、GPU带宽降低、GPU温度监测不到等诸多问题。建议打开GPU驱动内存常驻模式并配置开机自启动。
GPU驱动内存常驻模式检查常用方法:
-
nvidia-smi 输出中
Persistence-M
状态为on
-
nvidia-but-report.log中,
Persistence Mode
为Enabled
nvidia-smi 输出:
nvidia-but-report.log日志:
GPU 00000000:3B:00.0
Product Name : Tesla P40
Product Brand : Tesla
Display Mode : Enabled
Display Active : Disabled
Persistence Mode : Enabled
请确保现场服务器:
-
打开GPU驱动内存常驻模式
- 配置开机自启动
GPU驱动内存常驻模式开启方法,执行命令:
nvidia-smi -pm 1
或
# 以下命令对较新版本的GPU驱动有效
nvidia-persistenced --persistence-mode
开机自启动配置示例:
# vim /etc/rc.d/rc.local
# 在文件中添加一行
# nvidia-smi -pm 1
# 赋予/etc/rc.d/rc.local文件可执行权限
# chmod +x /etc/rc.d/rc.local
# 重启系统进行验证
2.3 检测GPU是否识别
GPU识别状态检测时,首先要确保lspci
命令识别所有GPU,其次确保nvidia-smi
命令识别所有GPU。
-
lspci 检查GPU识别情况
lspci | grep -i nvidia
命令输出中确保所有GPU识别正常,并且每个GPU末尾标识为(rev a1)。输出信息末尾为(rev ff),表示GPU异常。
# 如下命令表示识别到8个GPU,且末尾标识为(rev a1)的GPU状态正常
# b5:00.0 GPU末尾标识为(rev ff),表示该GPU状态异常
~]# lspci | grep -i nvidia
3e:00.0 3D controller: NVIDIA Corporation Device 1db8 (rev a1)
3f:00.0 3D controller: NVIDIA Corporation Device 1db8 (rev a1)
40:00.0 3D controller: NVIDIA Corporation Device 1db8 (rev a1)
41:00.0 3D controller: NVIDIA Corporation Device 1db8 (rev ff)
- nvidia-smi 检查GPU识别情况
# nvidia-smi Thu Dec 26 09:53:57 2019 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 418.67 Driver Version: 418.67 CUDA Version: 10.1 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | |===============================+======================+======================| | 0 Tesla V100-SXM3... On | 00000000:3E:00.0 Off | 0 | | N/A 42C P0 54W / 350W | 0MiB / 32480MiB | 0% Default | +-------------------------------+----------------------+----------------------+ | 1 Tesla V100-SXM3... On | 00000000:3F:00.0 Off | 0 | | N/A 40C P0 48W / 350W | 0MiB / 32480MiB | 0% Default | +-------------------------------+----------------------+----------------------+ | 2 Tesla V100-SXM3... On | 00000000:40:00.0 Off | 0 | | N/A 40C P0 52W / 350W | 0MiB / 32480MiB | 0% Default | +-------------------------------+----------------------+----------------------+ | 3 Tesla V100-SXM3... On | 00000000:41:00.0 Off | 0 | | N/A 43C P0 54W / 350W | 0MiB / 32480MiB | 0% Default | +-------------------------------+----------------------+----------------------+
2.4 GPU带宽检查
需要确保GPU当前带宽与额定带宽一致,一般为x16表示正常。
可以使用lspci 命令或nvidia-smi命令进行GPU带宽检查。
# lspci 命令
额定带宽:lspci -vvd 10de: | grep -i Lnkcap:
当前带宽:lspci -vvd 10de: | grep -i Lnksta:
# nvidia-smi 命令检查
nvidia-smi -q | grep -i -A 2 'Link width'
2.5 GPU ECC计数检查
GPU ECC计数可以通过以下方法进行检查。
如下输出中Pending 的标志为No表示所有ECC报错地址空间已经被屏蔽,报错地址空间后续不会再被软件程序调用,不会再影响程序运行。
Pending :No
Yes 表示有需要被屏蔽的ECC报错地址,需要重启系统或重置GPU使其变为No。
# 使用 -i 参数指定GPU id查询某一块GPU的ECC计数
# nvidia-smi -i <target gpu> -q -d PAGE_RETIREMENT
...
Retired pages
Single Bit ECC : 2
Double Bit ECC : 0
Pending : No
# 不使用 -i 参数查询所有GPU的ECC计数
# nvidia-smi -q -d PAGE_RETIREMENT
也可通过nvidia-smi | grep -i 'bit ecc'
命令进行查看。
GPU ECC计数请根据公司指标要求进行GPU更换,另需确保有ECC计数的GPU 报错地址空间已经被屏蔽,即Pending :No
。
2.6 GPU ERR报错检查
GPU运行过程中会出现Fan ERR以及功率ERR报错,可以通过检查nvidia-smi
输出中是否包含ERR!
报错判断。
# nvidia-smi
Thu Dec 26 09:53:57 2019
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 418.67 Driver Version: 418.67 CUDA Version: 10.1 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 Tesla V100-SXM3... On | 00000000:3E:00.0 Off | 0 |
| ERR! 44C P0 ERR!/ 350W | 0MiB / 32480MiB | 0% Default |
+-------------------------------+----------------------+----------------------+
2.7 GPU序列号查询
# nvidia-smi -q | grep -i serial
Serial Number : 0324018045603
Serial Number : 0324018044864
Serial Number : 0324018027716
Serial Number : 0323918059881
# 可以通过nvidia-smi -q -i id 来检查指定id的GPU序列号
# nvidia-smi -q -i 0 | grep -i serial
Serial Number : 0324018045603
3. GPU故障诊断流程
以下为GPU常见故障检查流程图
3.1 GPU基础状态检查
3.2 lspci GPU不识别
3.3 nvidia-smi GPU不识别
3.4 GPU ERR报错
3.5 GPU ECC报错检查
3.6 GPU带宽检查
3.7 GPU背板无法加电
3.8 GPU驱动版本检查
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK