登入服务器后,输入命令(注意中间无空格):
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
https://blog.csdn.net/Cloudox_/article/details/78651637
https://www.huaweicloud.com/articles/5aa242b53bffb5e802ad441021ab0102.html