安裝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%;" />