登入服務器後,輸入命令(注意中間無空格):
nvidia-smi
或者可以使用命令(可以自動實時刷新GPU的使用情況):
nvidia-smi -l
如果要週期性地輸出顯卡的使用情況,可以用watch指令實現(命令行參數-n,後邊跟的是執行命令的週期,以s爲單位。所以下面的命令表示,每10s刷新一下顯示):
watch -n 10 nvidia-smi
上圖顯示的顯卡信息,第一行是版本信息,第二行是標題欄,第三行是具體的顯卡信息。如果有多個顯卡,就會有多行對應標題欄的信息。例如我上面顯示了共0~4號,共5個卡。
- GPU:顯卡編號,從0開始。
- Fan:風扇轉速,在0~100%之間變動。這個速度是計算機期望的風扇轉速,實際情況下如果風扇堵轉,可能就不會顯示具體轉速值。有的設備不會返回轉速,因爲它不依賴風扇冷卻,而是通過其他外設保持低溫,比如我們實驗室的服務器是常年放在空掉房間裏面的。
- Name:顯卡名,以上都是Tesla。
- Temp:顯卡內部的溫度,以上分別是54、49、46、50、39攝氏度。
- Perf:性能狀態,從P0到P12,P0性能最大,P12最小 。
- Persistence-M:持續模式的狀態開關,持續模式雖然耗能大,但是在新的GPU應用啓動時,花費的時間更少。以上都是Off的狀態。
- Pwr:能耗表示。
- Bus-Id:涉及GPU總線的相關信息。
- Disp.A:是Display Active的意思,表示GPU的顯示是否初始化。
- Memory-Usage:顯存的使用率。
- GPU-Util:GPU的利用率。
- Compute M.:計算模式。
- 下面的Process顯示每塊GPU上每個進程所使用的顯存情況。
顯卡佔用和GPU佔用是兩個不一樣的東西,顯卡是由GPU和顯卡等組成的,顯卡和GPU的關係有點類似於內存和CPU的關係,兩個指標的佔用率不一定是互相對應的。例如跑tensorflow代碼的時候,可能顯存佔得多,GPU佔得少。
我使用該命令,主要是看 Memory-Usage 信息,避免使用了其他夥伴已經佔用的顯卡,然後在代碼中就可以指定空閒的GPU。例如上圖服務器顯示前4個卡都在用,我就在我的tensorflow代碼中 指定使用第5個卡好了。
import os
os.environ["CUDA_VISIBLE_DEVICES"] = '4' # 指定使用第5塊GPU
補充
查看內存使用情況:
free -m
查看CPU使用情況:
top