nvidia-smi参数说明及显存高gpu低的原因

本文详细解析了nvidia-smi工具的各项参数含义及其在GPU监控中的应用,包括GPU性能状态、显存使用率等关键指标,并针对GPU利用率低而显存占用高的问题提供了解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、nvidia-smi

  • Driver Version和CUDA Version不是一回事
    • CUDA Version实际是环境变量中Path配置的,如果一台机器同时装了多个CUDA,那么这里的CUDA Version显示的是Path中靠前的CUDA版本(和nvcc -V的显示是一样的)
    • 下方的GPU使用信息网上有很多资料,但是比较靠谱的资料是去官网查手册,这里不再赘述,只挑几个比较重要的说一下:
  1. Temp = Temperature,温度
  2. Perf = Performance,性能,P0-P12,由低到高
  3. Memory / Usage ,其实下方的数据是“已经使用的显存/总显存”
  4. GPU-Util,GPU使用率
  • 下方的Processes显示的使用GPU的线程信息:GPU序号,线程ID,线程名,GPU显存使用量
  • N/A可以理解为无法显示,并不是无限大的意思

解释二:

参数:
    GPU:GPU编号
    Name:GPU型号
    Persistence-M:持续模式的状态。持续模式虽然耗能⼤,但是在新的GPU应⽤启动时,花费的时间更少,这⾥显⽰的是off的状态;
    Fan:风扇转速,从0到100%之间变动; 
    Temp:温度,单位是摄⽒度; 
    Perf:性能状态,从P0到P12,P0表⽰最⼤性能,P12表⽰状态最⼩性能(即 GPU 未⼯作时为P0,达到最⼤⼯作限度时为P12)。 
    Pwr:Usage/Cap:能耗; 
    【*】Memory Usage:显存使用率; 
    Bus-Id:涉及GPU总线的东西,domain:bus:device.function; 
    Disp.A:Display Active,表示GPU的显示是否初始化; 
    【*】Volatile GPU-Util:浮动的GPU利用率; 
    Uncorr. ECC:Error Correcting Code,错误检查与纠正; 
    Compute M:compute mode,计算模式。
    下面的 Processes 表示每个进程对 GPU 的显存使用率。

2、

命令:nvidia-smi -L  #列出所有可用的 NVIDIA 设备信息。

3、

命令3:watch -n 1 nvidia-smi  #每 1s 显示 GPU 使用情况,在原有上面修改方式刷新


4、nvidia-smi -l  #每1s显示gpu的使用情况,追加方式刷新

 

5、其他刷新频率

nvidia-smi -l 5   # 每隔5秒刷新一次
nvidia-smi -lms    # 每隔1ms刷新一次,( L小写字母,不是1)
nvidia-smi -lms 500   # 每隔500毫秒刷新一次

二、 显存占用高,但是CPU使用率低

参考地址:TensorFlow 显存占用率高 GPU利用率低 - it610.com

显存占用率:5456MiB/6144MiB = 88.80%
GPU利用率(GPU-Util):0%
(即使100ms刷新一次也捕捉不到GPU利用率的提高)
PS:
这里先补充一个知识,回想一下CPU和内存的关系,同理,GPU和显存是两回事,理所当然,GPU利用率和显存占用率也是两回事,现在的情况相当于:内存快占满,但CPU使用率很低,eg:
如Java中while(true)创建对象,内存会爆,但是CPU使用率并不高。
上述显卡显存占用率高,GPU利用率低的情况出现在笔记本跑深度学习时,最初以为是显存太低的缘故(load一个batch_size((一次训练的图片数))的数据即过载),换在16G显存的服务器中跑,同样出现该问题:
修改batch_size(一次训练的图片数)大小,无效,改大改小都不行。

怎么解决呢?

答:
试了n多的方法,终于找到原因:
训练的原始图片大小为3024 * 4032,实际大小为2-3M,太大了。。。
如果解释为什么,则先了解一个背景知识,类似于CPU与内存的关系,在GPU工作流水线中,也是按照显存准备数据——GPU拿数据运算——显存准备数据——GPU拿数据运算 …的方式工作的。如果图片的分辨率太大,图片放入显存直接爆了,GPU利用率当然也无从谈起,外在表现就是显存几乎占满,但同时GPU等不到数据,一直空闲。解决方法是将图片分辨率改小就OK了。


所以这个问题的解决思路是这样的: ① 确认代码在GPU上跑了 方法可以top-down: * 单独建测试文件test.py,代码:

import os
from tensorflow.python.client import device_lib
os.environ["TF_CPP_MIN_LOG_LEVEL"] = "99"

if __name__ == "__main__":
    print(device_lib.list_local_devices())

如果正常的话,会打印GPU信息。

或者也可以直接运行项目的训练模型,如果TensorFlow调用了GPU,也会输出类似上面测试代码的运行效果——输出的GPU信息(猜测是TensorFlow内部也有类似上面的打印GPU信息的代码),此时(必须正在运行TensorFLow代码)查看nvidia-smi的线程信息会有python.exe():


好,已经能够确定TensorFlow调用了GPU跑代码。

② 观察显存和GPU利用率
一定要使用动态刷新nvidia-smi命令,因为有时GPU利用率是跳跃式变化的,同时尽量关
闭其他使用GPU的程序,单独观察tensorflow利用情况。

  • 显存占用低,GPU利用率低
    很明显,这是因为batch_size太小,显存没完全利用,GPU没有喂饱,尝试增大batch_size
  • 显存占用高,GPU利用率低
    大概率batch_size太高,即显存成为bottle_neck,GPU一直在等显存的数据。如果batch_size已经为1,问题依旧,则考虑是不是单张图片分辨率太大的问题。
### 回答1: zabbix-nvidia-smi-multi-gpu是一个用于监控多个NVIDIA GPU的Zabbix插件。它通过NVIDIA System Management Interface(nvidia-smi)来获取GPU的相关信息,并将这些信息发送到Zabbix服务器进行监控和分析。 这个插件在多GPU环境中非常有用,特别是在服务器集群或大规模GPU集群中。它可以帮助管理员实时监控每个GPU的使用情况、温度、功耗以及其他性能指标,以便更好地管理和优化GPU集群的资源。 使用zabbix-nvidia-smi-multi-gpu插件,管理员可以轻松配置Zabbix服务器来监控和收集GPU的数据。插件会定期执行nvidia-smi命令以获取GPU的信息,并将这些数据发送到Zabbix服务器上的特定主机。 在Zabbix服务器上,管理员可以设置触发器和报警规则,当GPU的使用率或温度超过设定的阈值时,会触发报警通知。这样管理员就可以及时采取措施来解决GPU过热或过载的问题,确保系统的稳定性和可靠性。 总而言之,zabbix-nvidia-smi-multi-gpu是一个强大的插件,为管理员提供了实时监控和管理多个GPU的功能。通过使用该插件,管理员可以更好地优化GPU集群的性能,确保系统的正常运行。 ### 回答2: zabbix-nvidia-smi-multi-gpu是一个用于监控多个GPU设备的Zabbix插件。在服务器上安装了多个显卡设备,该插件可以帮助我们实时监控各个GPU的性能和使用情况。 该插件基于NVIDIASMI(System Management Interface)工具开发,通过查询SMI的API来获取GPU的信息。它可以监测GPU的温度、利用率、电源使用情况、显存使用情况等指标,并将这些信息传递给Zabbix监控系统。 使用zabbix-nvidia-smi-multi-gpu插件,我们可以在Zabbix的监控面板上实时查看多个GPU的状态。我们可以了解每个GPU的温度是否正常,以及其负载情况。如果某个GPU的温度过或负载过载,我们可以及时采取措施,如调整风扇速度或优化算法,以保证GPU的稳定性和性能。 此外,zabbix-nvidia-smi-multi-gpu还具有告警功能,当GPU的某些参数超过预设的阈值时,它会发出警报通知管理员。这样,我们可以在GPU出现故障或异常情况时快速采取措施,避免系统崩溃或性能下降。 总之,zabbix-nvidia-smi-multi-gpu是一个方便实用的插件,可用于监控多个GPU设备的性能和状态。它可以帮助我们追踪GPU的使用情况,提供有价值的数据,以优化系统性能和提工作效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值