登入服务器后,输入命令(注意中间无空格):

  1. nvidia-smi

查看GPU、CPU的使用信息 - 图1

或者可以使用命令(可以自动实时刷新 GPU 的使用情况):

  1. nvidia-smi -l

如果要周期性地输出显卡的使用情况,可以用 watch 指令实现(命令行参数 - n,后边跟的是执行命令的周期,以 s 为单位。所以下面的命令表示,每 10s 刷新一下显示):

  1. 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 个卡好了。

  1. import os
  2. os.environ["CUDA_VISIBLE_DEVICES"] = '4' # 指定使用第5块GPU

补充

查看内存使用情况:

  1. free -m

查看GPU、CPU的使用信息 - 图2

查看 CPU 使用情况:

  1. top

查看GPU、CPU的使用信息 - 图3

https://blog.csdn.net/Cloudox_/article/details/78651637

https://www.huaweicloud.com/articles/5aa242b53bffb5e802ad441021ab0102.html