遇到的問題: 執行nvidia-smi的時候, 會出現某個GPU故障 (如下圖)
因為機器在機房, 也不太可能跑過去拆顯卡 (光是從機櫃搬下來就超累了 QQ)
然後就查了一下, 看是否有辦法用指令的方式停用顯卡, 然後就找到下列討論串:
* https://forums.developer.nvidia.com/t/how-to-turn-off-specific-gpu/107574
* https://forums.developer.nvidia.com/t/nvidia-smi-drain-failed-to-parse-device-specified-at-the-command-line/180402/3
* https://man.archlinux.org/man/nvidia-smi.1.en
* https://juejin.cn/post/7232665460714012731
步驟如下:
1. 使用nvidia-smi查詢狀態, 找出有異常的Bus-Id. 以第一張圖為例, 是第二個顯卡有問題, 顯示ERR! 他的ID是00000000:03:00.0
2. 接著用 nvidia-smi drain -p 0000:03:00.0 -q 查詢drain mode狀態 (原本ID第一組數字有8個0, 只要打4個0就好)
> The current drain state of GPU 00000000:03:00.0 is: not draining.
3. 設定drain mode: sudo nvidia-smi drain -p 0000:03:00.0 -m 1
> Successfully set GPU 00000000:03:00.0 drain state to: draining.
4. 確認狀態: nvidia-smi drain -p 0000:03:00.0 -q
> The current drain state of GPU 00000000:03:00.0 is: draining.
5. GPU reset: sudo nvidia-smi drain -p 0000:03:00.0 -r
>GPU 00000000:03:00.0 successfully removed.
然後再用nvidia-smi就看不到那張出問題的GPU了
補充: 查詢錯誤原因
ref:
* https://docs.nvidia.com/deploy/xid-errors/index.html
* https://houmin.cc/posts/feaa4605/
搜尋系統log, 路徑是/var/log/syslog, 不過也有可能變成syslog.1, 偷懶的話可以直接搜尋整個log資料夾: grep "NVRM: Xid" /var/log/*
以我的情況為例, 有看到
NVRM: Xid (PCI:0000:03:00): 62,
NVRM: Xid (PCI:0000:03:00): 32,
NVRM: Xid (PCI:0000:03:00): 31,
接著再去xid-errors網站查詢對應的資訊
31: GPU memory page fault
32: Invalid or corrupted push buffer stream
62: Internal micro-controller halt (newer drivers)
雖然看到原因, 可是也不知道要怎麼處理 QQ (應該就是換GPU吧? XD