簡介
nvidia-smi – nvidia system management interface program
nvidia smi(也稱為NVSMI)為來自 Fermi 和更高體系結構系列的 nvidia Tesla、Quadro、GRID 和 GeForce 設備提供監控和管理功能。GeForce Titan系列設備支持大多數功能,為GeForce品牌的其余部分提供的信息非常有限。NVSMI是一種跨平臺工具,支持所有標準NVIDIA驅動程序支持的linux發行版,以及從Windows Server 2008 R2開始的64位版本的Windows。
?nvidia-smi
NVIDIA 系統管理介面 (nvidia-smi) 是一個命令行工具,基於 NVIDIA Management Library (NVML) 之勝,旨在協助管理和監控 NVIDIA GPU 設備。
此實用程序允許管理員查詢 GPU 設備狀態,并允許管理員使用適當的權限修改 GPU 設備狀態。它針對Tesla, GRID, Quadro和 Titan X 產品,但其他 NVIDIA GPU 也提供有限的支持。
NVIDIA-smi 在 Linux 上附帶 NVIDIA GPU 顯示驅動程序,以及 64 位 Windows Server 2008 R2 和 Windows 7。Nvidia-smi 可以將查詢信息報告為 XML 或人類可讀的純文本到標準輸出或文件。
?常用nvidia-smi命令顯示GPU所有信息
nvidia-smi
間隔1秒刷新GPU信息
nvidia-smi?-l?1
列出當前所有GPU設備
nvidia-smi?-L
查看當前的 GPU 時鐘速度、默認時鐘速度和最大可能的時鐘速度
nvidia-smi?-q?-d?CLOCK
PS:
nvidia-smi 命令
直接在命令行輸入 nvidia-smi 命令應該是各位煉丹師再熟悉不過的命令了。
注意:建議使用 watch -n 0.5 nvidia-smi 來動態地觀察 GPU 的狀態。
通過 nvidia-smi 命令,我們會得到這樣一個信息豐富的頁面:
Tue Nov ?9 13:47:51 2021
+—————————————————————————–+
| NVIDIA-SMI 495.44 ? ? ? Driver Version: 495.44 ? ? ? CUDA Version: 11.5 ? ? |
|——————————-+———————-+———————-+
| GPU ?Name ? ? ? ?Persistence-M| Bus-Id ? ? ? ?Disp.A | Volatile Uncorr. ECC |
| Fan ?Temp ?Perf ?Pwr:Usage/Cap| ? ? ? ? Memory-Usage | GPU-Util ?Compute M. |
| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | ? ? ? ? ? ? ? ? ? ? ?| ? ? ? ? ? ? ? MIG M. |
|===============================+======================+======================|
| ? 0 ?NVIDIA GeForce … ?Off ?| 00000000:17:00.0 Off | ? ? ? ? ? ? ? ? ?N/A |
| 62% ? 78C ? ?P2 ? 155W / 170W | ?10123MiB / 12051MiB | ? ?100% ? ? ?Default |
| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | ? ? ? ? ? ? ? ? ? ? ?| ? ? ? ? ? ? ? ? ?N/A |
+——————————-+———————-+———————-+
| ? 1 ?NVIDIA GeForce … ?Off ?| 00000000:65:00.0 Off | ? ? ? ? ? ? ? ? ?N/A |
|100% ? 92C ? ?P2 ? 136W / 170W | ?10121MiB / 12053MiB | ? ? 99% ? ? ?Default |
| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | ? ? ? ? ? ? ? ? ? ? ?| ? ? ? ? ? ? ? ? ?N/A |
+——————————-+———————-+———————-+
| ? 2 ?NVIDIA GeForce … ?Off ?| 00000000:B5:00.0 Off | ? ? ? ? ? ? ? ? ?N/A |
| 32% ? 34C ? ?P8 ? ?12W / 170W | ? ? ?5MiB / 12053MiB | ? ? ?0% ? ? ?Default |
| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | ? ? ? ? ? ? ? ? ? ? ?| ? ? ? ? ? ? ? ? ?N/A |
+——————————-+———————-+———————-+
| ? 3 ?NVIDIA GeForce … ?Off ?| 00000000:B6:00.0 Off | ? ? ? ? ? ? ? ? ?N/A |
| 30% ? 37C ? ?P8 ? ?13W / 170W | ? ? ?5MiB / 12053MiB | ? ? ?0% ? ? ?Default |
| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? | ? ? ? ? ? ? ? ? ? ? ?| ? ? ? ? ? ? ? ? ?N/A |
+——————————-+———————-+———————-++—————————————————————————–+
| Processes: ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|
| ?GPU ? GI ? CI ? ? ? ?PID ? Type ? Process name ? ? ? ? ? ? ? ? ?GPU Memory |
| ? ? ? ?ID ? ID ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? Usage ? ? ?|
|=============================================================================|
| ? ?0 ? N/A ?N/A ? ? ?1258 ? ? ?G ? /usr/lib/xorg/Xorg ? ? ? ? ? ? ? ? ?6MiB |
| ? ?0 ? N/A ?N/A ? ? 10426 ? ? ?C ? …a3/envs/JJ_env/bin/python ? ?10111MiB |
| ? ?1 ? N/A ?N/A ? ? ?1258 ? ? ?G ? /usr/lib/xorg/Xorg ? ? ? ? ? ? ? ? ?4MiB |
| ? ?1 ? N/A ?N/A ? ? 10427 ? ? ?C ? …a3/envs/JJ_env/bin/python ? ?10111MiB |
| ? ?2 ? N/A ?N/A ? ? ?1258 ? ? ?G ? /usr/lib/xorg/Xorg ? ? ? ? ? ? ? ? ?4MiB |
| ? ?3 ? N/A ?N/A ? ? ?1258 ? ? ?G ? /usr/lib/xorg/Xorg ? ? ? ? ? ? ? ? ?4MiB |
+—————————————————————————–+
其中顯存占用和 GPU 利用率當然是我們最常來查看的參數,但是在一些情況下(比如要重點監控 GPU 的散熱情況時)其他參數也很有用,筆者簡單總結了一下該命令輸出的各個參數的含義如下圖:
可以看到其中各個位置的對應含義在輸出本身中其實都已經指出了(藍框),紅框則指出了輸出各個部分的含義,大部分輸出的作用一目了然,這里筆者將其中幾個不那么直觀的參數簡單整理一下:
-
Fan:從0到100%之間變動,這個速度是計算機期望的風扇轉速,實際情況下如果風扇堵轉,可能打不到顯示的轉速。
-
Perf:是性能狀態,從P0到P12,P0表示最大性能,P12表示狀態最小性能。
-
Persistence-M:是持續模式的狀態,持續模式雖然耗能大,但是在新的GPU應用啟動時,花費的時間更少,這里顯示的是off的狀態。
-
Disp.A:Display Active,表示GPU的顯示是否初始化。
-
Compute M:是計算模式。
-
Volatile Uncorr. ECC:是否開啟 ECC 糾錯。
-
type:進程類型。C 表示計算進程,G 表示圖形進程,C+G 表示都有。
nvidia-smi 命令的其他參數
除了直接運行 nvidia-smi 命令之外,還可以加一些參數,來查看一些本機 Nvidia GPU 的其他一些狀態。下面筆者簡單介紹幾個常用的參數,其他的有需要可以去手冊中查找:man nvidia-smi。
-L
-L 參數顯示連接到系統的 GPU 列表。
nvidia-smi?-L #?輸出: GPU?0:?NVIDIA?GeForce?RTX?3060?(UUID:?GPU-55275dff-****-****-****-6408855fced9) GPU?1:?NVIDIA?GeForce?RTX?3060?(UUID:?GPU-0a1e7f37-****-****-****-df9a8bce6d6b) GPU?2:?NVIDIA?GeForce?RTX?3060?(UUID:?GPU-38e2771e-****-****-****-d5cbb85c58d8) GPU?3:?NVIDIA?GeForce?RTX?3060?(UUID:?GPU-8b45b004-****-****-****-46c05975a9f0)
GPU UUID:此值是GPU的全球唯一不可變字母數字標識符。它與主板上的物理標簽無關。
-i
-i 參數指定某個 GPU,多用于查看 GPU 信息時指定其中一個 GPU。
-q
-q 參數查看 GPU 的全部信息。可通過 -i 參數指定查看某個 GPU 的參數。
如:
nvidia-smi?-i?0?-q
輸出太長了,筆者這里就不列了,大家可以自己試一下,是很完整的信息。
topo
topo 展示多GPU系統的拓撲連接信息,通常配合 -m 參數即 nvidia-smi topo -m,其他參數可自行查閱。
輸出如下,這里用代碼塊沒法對齊,就直接貼圖了: