nvidia-smi查看GPU的使用信息并分析
程序员文章站
2024-02-26 22:02:22
...
登入服务器后,输入命令(注意中间无空格):
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