安装GPU驱动的系统下,root用户任意目录下执行命令:nvidia-bug-report.sh
html
执行命令后,当前目录下会生成日志压缩包:nvidia-bug-report.log.gzlinux
对于GPU服务器建议客户维持较新的GPU驱动版本、禁用nouveau模块、打开GPU驱动内存常驻模式并配置开机自启动。ios
对于GPU服务器,建议进行如下配置:git
ipmitool power reset
命令对服务器进行冷重启后观察故障是否消失或重现GPU驱动下载注意事项:shell
从NVIDIA官网进行GPU驱动下载vim
nouveau是NVIDIA显卡的开源驱动程序,会与NVIDIA官方GPU驱动发生冲突,须要在系统下禁用nouveau模块。bash
# 如下命令没有任何输出表示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 -f [root@zj ~]# shutdown -ry 0
打开GPU驱动内存常驻模式能够减小GPU掉卡、GPU带宽下降、GPU温度监测不到等诸多问题。建议打开GPU驱动内存常驻模式并配置开机自启动。app
GPU驱动内存常驻模式检查经常使用方法:ide
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 # 重启系统进行验证
# 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
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 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 | +-------------------------------+----------------------+----------------------+
优先对不识别的GPU进行对调测试,判断是否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' 或 nvidia-smi --format=csv --query-gpu=index,name,serial,gpu_bus_id,pcie.link.width.current 示例一: [root@localhost ~]# nvidia-smi -q | grep -i -A 2 'Link width' Link Width Max : 16x Current : 16x -- Link Width Max : 16x Current : 16x -- 示例二: [root@localhost ~]# nvidia-smi --format=csv --query-gpu=index,name,serial,gpu_bus_id,pcie.link.width.current index, name, serial, pci.bus_id, pcie.link.width.current 0, Tesla P40, 1321020022261, 00000000:04:00.0, 16 1, Tesla P40, 1320220073456, 00000000:05:00.0, 16 2, Tesla P40, 1320220073723, 00000000:08:00.0, 16 3, Tesla P40, 1320220073383, 00000000:09:00.0, 16 4, Tesla P40, 1320220073482, 00000000:85:00.0, 16 5, Tesla P40, 1320220073313, 00000000:86:00.0, 16 6, Tesla P40, 1320220073379, 00000000:89:00.0, 16 7, Tesla P40, 1320220073579, 00000000:8A:00.0, 16
优先对不识别的GPU进行对调测试,判断是否GPU或链路其余部件故障。
nvidia官网连接:nvidia GPU ECC RMA标准
How many pages can be mapped out before the GPU should be returned for repair? If a board is found to exhibit 5 or more retired pages from uncorrectable memory errors within 30 days, or 10 or more retired pages from uncorrectable memory errors over the warranty period, it can be evaluated for an RMA. Please track the page retirement information for RMA application. Additionally, a board that generates 60 or more total dynamic retired pages from correctable and uncorrectable memory errors is eligible for an RMA.
以上表示,对于GPU retired pages计数,知足如下任一条件或nvidia fieldiag 检测fail都可进行GPU更换。
Retired Pages参数中:
- 30天内产生的 double bit ecc ≥5
- 质保期内 double bit ecc ≥10
- 质保期内double bit ecc+single bit ecc≥60
# 使用 -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
以下输出中Pending 的标志为No表示全部ECC报错地址空间已经被屏蔽,报错地址空间后续不会再被软件程序调用,不会再影响程序运行。
Pending :No
Yes 表示有须要被屏蔽的ECC报错地址,须要重启系统或重置GPU使其变为No。
该方法只能查看retired pages计数,没法查看retired pages是否已经被屏蔽
nvidia-smi -q -i <target gpu> | grep -i 'bit ecc' #示例 查看0号GPU的retired pages计数 [root@localhost ~]# nvidia-smi -q -i 0 | grep -i 'bit ecc' Single Bit ECC : 0 Double Bit ECC : 0 #不使用 -i 参数能够查看全部GPU的retired pages计数 [root@inspur ~]# nvidia-smi -q | grep -i 'bit ecc' Single Bit ECC : 0 Double Bit ECC : 0 Single Bit ECC : 1 Double Bit ECC : 0 ...
该方法能够查看全部retired pages的产生时间,便于判断是否知足nvidia RMA标准。
该方法须要较新的GPU驱动版本支持,不然没法查看retired pages产生时间
nvidia-smi -i <target gpu> --query-retired-pages=gpu_name,gpu_bus_id,gpu_serial,retired_pages.cause,retired_pages.timestamp --format=csv
GPU ECC计数请根据NVIDIA指标要求进行GPU更换,另需确保有ECC计数的GPU 报错地址空间已经被屏蔽,即Pending :No
。
Pending :No
,不然可重启系统或重置GPU屏蔽报错地址后再次测试程序运行是否仍会报错。Volatile
和Aggregate
条目下出现的GPU ECC报错,可以使用nvidia-smi -p 0/1
进行清除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 | +-------------------------------+----------------------+----------------------+
也能够经过nvidia-bug-report日志中的
Fan Speed
或Power Draw
字段是否为Unknown Error
来判断。
故障现象:事件日志出现GPU高温告警或nvidia-smi
监控到GPU温度异常。
参考NVIDIA XID Errors官方建议进行问题排查。
可使用cuda samples自带的BandwidthTest、P2pBandwidthLatencyTest等程序进行GPU性能检测,不一样型号的GPU带宽等表现不一样。
以下是cuda samples P2pBandwidthLatencyTest 的结果展现,GPU 六、7带宽异常。
<img src="https://gitee.com/Gavin_zj/blog/raw/master/blog_img/20201201112635.png" alt="GPU性能异常" style="zoom:150%;" />