工作筆記: 管理並定位故障的Nvidia顯卡

  • 定位有故障的顯卡

故障的現像是:運行命令$ nvidia-smi之後要么不顯示顯卡的情況,要么顯示很緩慢。並且結果中有ERR! 提示。

1. 查看顯卡情況:$ nvidia-smi,可以看到有一張顯卡出現了故障。並且只要有這張顯卡插在服務器上,這個命令的輸出都會非常緩慢,可以看到,由於我沒有壞顯卡,所以用圖中顯卡BUS-ID是000:1B:00為例子;在機房我們如何找到這張顯卡呢?


2. 通過$ nvidia-smi -q 查看BUS-ID和顯卡的序列號之間的對應關係


可以,看看例子的顯卡000:B7:00的序列號(Serial Number)尾號再找回對應卡的Serial Number: N/A ...。那這張顯卡插在哪個PCIE卡槽?

3. 通過$ sudo dmidecode -t slot查看BUS-ID(BUS Address)和卡槽的對應關係:
可以看到BUS-ID 00:1B:00 對應的卡槽為SLOT-11,SLOT標號一般在主板上,白色字體,在每個PCIE插槽(很長的那個插槽,插顯卡的)的上方。

還可以通過總結命令 $ sudo dmidecode -t slot | egrep -i "slot|add" 查看 (輸出更簡潔),輸出類似於:

4. 去機房,找到這台服務器上SLOT-11卡槽插的序列號(顯卡上一般會貼有白色的序列號標籤)尾號為4953的那張卡!拔下來維修!!!:P

------------------------------------------------------------------

  • 查看GPU的信息与使用情况

1. 查看顯卡信息

由於測試環境使用的是NVIDIA的顯卡,這裡直接通過lspci命令即可查詢具體顯卡信息

$ lspci | grep -i nvidia

$ lspci -v -s 1b:00.0


“1b:00.0”,這一個參數是總線編號,第二個是插槽編號,第三個是功能編號,它們都是十六進制的數字。

2. 查看顯存以及GPU的使用情況

Nvidia自帶一個命令行工具可以查看顯存的使用情況:$ nvidia-smi

參數解釋:

Fan:顯示風扇轉速,數值在0到100%之間,是計算機的期望轉速,如果計算機不是通過風扇冷卻或者風扇壞了,顯示出來就是N/A;

Temp:顯卡內部的溫度,單位是攝氏度;

Perf:表徵性能狀態,從P0到P12,P0表示最大性能,P12表示狀態最小性能;

Pwr:能耗表示;

Bus-Id:涉及GPU總線的相關信息;

Disp.A:是Display Active的意思,表示GPU的顯示是否初始化;

Memory Usage:顯存的使用率;

Volatile GPU-Util:浮動的GPU利用率;

Compute M:計算模式;


3. 週期性的輸出顯卡的使用情況

可以參考如下命令:

$ watch -n 5 nvidia-smi

命令行參數-n後邊跟的是執行命令的周期,以s為單位。


4. 要以1秒的更新间隔监控GPU的总体使用情况

$ nvidia-smi dmon

5. 加上-r参数可以重启某个GPU卡(0是GPU卡的序号)

$ nvidia-smi -r -i 0


------------------------------------------------------------------

  • 安裝顯卡所需驅動

1. 首先先安裝一個ubuntu-drivers-common去桃查你顯卡所需要的version

sudo apt install ubuntu-drivers-common

2. 之後使用工具查出要裝的顯卡驅動

 ubuntu-drivers devices 


3. 之後使用apt工具裝的顯卡驅動

 sudo apt install nvidia-driver-495 


-------------------------------------------------------------------------------------------------------------

  • linux - nvidia-smi進程掛起,也無法使用SIGKILL殺死

在server發出nvidia-smi命令時,它會無限期地掛起。
當我再次登錄並嘗試殺死nvidia-smi進程(例如kill -9 <PID>)時,它並沒有被殺死。
如果我給出另一個nvidia-smi命令,我會發現兩個進程都在運行-當然是從另一個shell登錄時,因為它像以前一樣卡住了。

最後我通過在每次啟動時執行來解決此問題
 sudo nvidia-smi -pm 1 
上面的命令啟用持久性模式。這個問題已經影響nvidia驅動程序超過兩年了,但是他們似乎對修復它不感興趣。似乎與電源管理問題有關,在引導至操作系統後,如果nvidia-persistenced服務啟用了no-persistence-mode選項,則GPU將節省電源,並且nvidia-smi命令將掛起等待,等待其重新控制設備

關於linux - nvidia-smi進程掛起,也無法使用SIGKILL殺死,在Stack Overflow上找到一個類似的問題: https://stackoverflow.com/questions/41489070/
 
另外可啟動 

加上-e參數可以切換ECC支持:0/禁用,1/啟用
 sudo nvidia-smi -e 1 
ECC 是一種指令糾錯技術,能夠檢測並糾正常見的各種內存數據損壞情況,即Error Checking and Correcting。  

sudo nvidia-smi -pl 150 -i 5    # 把功率限制从默认的250W调整到150W, -i 指定一張卡的功率


Comments