zl程序教程

您现在的位置是:首页 >  其它

当前栏目

nvidia-smi简介及各参数的详解与字段的详解和使用

详解 参数 简介 NVIDIA 使用
2023-09-14 09:13:29 时间

在这里插入图片描述

🍁博主简介

  🏅云计算领域优质创作者
  🏅华为云开发者社区专家博主
  🏅阿里云开发者社区专家博主
💊交流社区:运维交流社区 欢迎大家的加入!

nvidia-smi简介

1、什么是nvidia-smi

nvidia-smi是nvidia 的系统管理界面 ,其中smi是 System management interface 的缩写,它可以收集各种级别的信息,查看显存使用情况,显卡的温度… …。此外, 可以启用和禁用 GPU 配置选项 (如 ECC 内存功能)。

2、介绍nvidia-smi

nvidia-sim简称NVSMI,提供监控GPU使用情况和更改GPU状态的功能,是一个跨平台工具,支持所有标准的NVIDIA驱动程序支持的Linux和WindowsServer 2008 R2 开始的64位系统。这个工具是N卡驱动附带的,只要使用nvidia显卡,完成安装驱动就会有nvidia-smi命令;

nvidia-smi命令详解

表格参数详解

在这里插入图片描述

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 515.57       Driver Version: 515.57       CUDA Version: 11.7     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  Off  | 00000000:65:00.0 Off |                  N/A |
| 30%   22C    P8     3W / 350W |   9815MiB / 12288MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A     37593      C   java                             2869MiB |
|    0   N/A  N/A     48477      C   python3                          2779MiB |
+-----------------------------------------------------------------------------+

 
 

| NVIDIA-SMI 515.57       Driver Version: 515.57       CUDA Version: 11.7     |

NVIDIA-SMI 515.57   #GRID版本
Driver Version: 515.57  #驱动版本
CUDA Version: 11.7   #CUDA最高支持的版本

| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  Off  | 00000000:65:00.0 Off |                  N/A |
| 30%   22C    P8     3W / 350W |   9815MiB / 12288MiB |      0%      Default |

|===============================+======================+======================|
为分隔符:上下两行是对应关系,上1对下1,上2对下2
 

  • GPU         #本机中的GPU编号,(多块显卡的时候,编号从0开始)图上GPU的编号为:0。
  • Fan         #风扇转速(0%-100%);N/A表示没有风扇;err表示风扇可能损坏;图上表示风扇转速为:30%。
  • Name        #GPU类型(显卡型号),图上GPU的类型为:NVIDIA GeForce RTX 3080 Ti。
  • Temp         #GPU的温度(GPU温度过高会导致GPU的频率下降),单位摄氏度C;图上温度为:22C。
  • Perf         #GPU的性能状态,从P0(最大性能)到P12(最小性能),图上是:P8
  • Persistence-M    #持续模式的状态,持续模式虽然耗能大,但是在新的GPU应用启动时花费的时间更少,图上显示的是:off
  • Pwr:Usage/Cap    #能耗表示,Usage:用了多少,Cap总共多少;图上Usage显示:3W,Cap显示:350W。
  • Bus-Id        #GPU总线相关显示,domain:bus:device.function
  • Disp.A        #Display Active ,表示GPU的显示是否初始化
  • Memory-Usage    #显存使用率
  • Volatile GPU-Util    #GPU使用率
  • Uncorr. ECC      #关于ECC的东西,是否开启错误检查和纠正技术,0/disabled,1/enabled
  • Compute M      #计算模式,0/DEFAULT,1/EXCLUSIVE_PROCESS,2/PROHIBITED
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0       762      C   java                                        1995MiB |
|    1       354      C   python3                                     2101MiB |

|=============================================================================|
为分隔符:分隔符上面对应下面的所有
 

  • Processes       #显示每个进程占用的显存使用率、进程号、占用的哪个GPU。
     
  • GPU          #当前进程占用的那块显卡。
  • PID          #当前进程的PID,可使用ps -ef | grep PID 查看详细命令。
  • Type          #当前进程的运行状态。
  • Process name     #当前进程的运行主命令。
  • GPU Memory Usage   #该进程占用的显存。

nvidia-smi --help命令详解

列表选项:
-L			#列出所有可用的 NVIDIA 设备
-B			#列出所有被拉入黑名单的NVIDIA设备

查询选项:
-q			#查询显示GPUnvidia的相关信息

配合选项:
-u、 --unit #显示单位属性,而不是GPU属性。
-i、 --id	#以特定GPU或单元为目标。可指定显卡编号
--format	#指定输出的格式csv
--filename	#输入csv文件,--filename=后跟自定义csv文件名;
--query-gpu	#指定输出的字段,后可跟timestamp时间、name,

-x、 --xml	#格式生成xml输出。

-l			#持续刷新显存状态
-lms		#循环动态显示;每毫秒

--dtd		#显示xml输出时,嵌入dtd。

-d、 --display	#仅显示选定信息:MEMORY,

列出所有可用的 NVIDIA 设备

nvidia-smi -L

在这里插入图片描述

作用:可用作统计服务器中的显卡数量。

列出所有被拉入黑名单的NVIDIA设备

nvidia-smi -B

在这里插入图片描述

No blacklisted devices found. 未找到列入黑名单的设备。

查询nvidiaGPU的相关信息

nvidia-smi -q

在这里插入图片描述

持续刷新显存状态

#每两秒刷新一次显存状态
nvidia-smi -l 2

也可用watch -n 1 nvidia-smi #1秒刷新一次显存状态

查询所有的csv文件--query-gpu可使用的字段及字段说明、实例

#查询可使用的所有字段
nvidia-smi --help-query-gpu


timestamp			#查询位置的时间戳,格式为“YYYY/MM/DD HH:MM:SS.msec”	;	nvidia-smi --format=csv --query-gpu=timestamp
memory.total		#查询已安装的GPU显存总数。								nvidia-smi --format=csv --query-gpu=memory.total
memory.used			#查询已安装的GPU显存使用率。							nvidia-smi --format=csv --query-gpu=memory.used
memory.free			#查询已安装的GPU剩余显存。								nvidia-smi --format=csv --query-gpu=memory.free
driver_version		#查询已安装的NVIDIA显示器驱动程序的版本;					nvidia-smi --format=csv --query-gpu=driver_version
index				#输出显卡的编号:										nvidia-smi --format=csv --query-gpu=index
pstate				#GPU的当前性能状态。状态范围从P0(最大性能)到P12(最小性能)	nvidia-smi --format=csv --query-gpu=pstate
power.draw			#显存功耗,对应Pwr:Usage使用:							nvidia-smi --format=csv --query-gpu=power.draw
temperature.gpu		#输出GPU温度,核心GPU温度。							nvidia-smi --format=csv --query-gpu=temperature.gpu
utilization.gpu		#输出GPU的使用率:									nvidia-smi --format=csv --query-gpu=utilization.gpu
utilization.memory  #输出显存的使用率:									nvidia-smi --format=csv --query-gpu=utilization.memory
count				#查询位置的时间戳,格式为“YYYY/MM/DD HH:MM:SS.msec”;	nvidia-smi --format=csv --query-gpu=count
"name" or "gpu_name"		#查询显卡型号,适用于所有产品;												nvidia-smi --format=csv --query-gpu=name,gpu_name
"serial" or "gpu_serial"	#该编号与每个板上实际打印的序列号相匹配。它是全局唯一的不可变字母数字值。			nvidia-smi --format=csv --query-gpu=serial,gpu_serial
"uuid" or "gpu_uuid"		#此值是GPU的全局唯一不可变字母数字标识符。它与电路板上的任何物理标签都不对应。		nvidia-smi --format=csv --query-gpu=uuid,gpu_uuid
"pci.bus_id"or"gpu_bus_id"	#PCI总线id为“域:总线:设备.功能”,十六进制。									nvidia-smi --format=csv --query-gpu=pci.bus_id,gpu_bus_id
pci.domain			#PCI域名,十六进制。									nvidia-smi --format=csv --query-gpu=pci.domain
pci.bus				#PCI总线编号,十六进制。								nvidia-smi --format=csv --query-gpu=pci.bus
pci.device			#PCI设备编号,十六进制。								nvidia-smi --format=csv --query-gpu=pci.device
pci.device_id		#PCI供应商设备id,十六进制								nvidia-smi --format=csv --query-gpu=pci.device_id
pci.sub_device_id	#PCI子系统id,十六进制									nvidia-smi --format=csv --query-gpu=pci.sub_device_id
vbios_version		#GPU板的BIOS。										nvidia-smi --format=csv --query-gpu=vbios_version
inforom.oem			#OEM配置数据的版本。									nvidia-smi --format=csv --query-gpu=inforom.oem
inforom.ecc			#ECC记录数据的版本。									nvidia-smi --format=csv --query-gpu=inforom.ecc
driver_model.current		#当前使用的驱动程序模型。在Linux上始终为“N/A”		nvidia-smi --format=csv --query-gpu=driver_model.current
accounting.buffer_size		#循环缓冲区的大小,该缓冲区包含可查询会计统计信息的进程列表。这是在有关最旧进程的信息被有关新进程的信息覆盖之前,将为其存储记帐信息的最大进程数		nvidia-smi --format=csv --query-gpu=accounting.buffer_size

持续监控nvidia-smi结果写入自定义csv文件,并指定写入文件的监控字段

nvidia-smi -l 1 --format=csv --filename=report.csv --query-gpu=timestamp,name,index,utilization.gpu,memory.total,memory.used,memory.free,power.draw

-l      #隔多久记录一次,我们写的是每秒记录一次。
--format   #结果记录文件格式是csv类型。(csv)
--filename  #结果记录文件的名字。(report.csv)
--query-gpu  #都记录哪些数据到csv文件中;
  timestamp     #输出每块显卡的时间戳:nvidia-smi --format=csv --query-gpu=timestamp
  name        #输出显卡的型号(名称):nvidia-smi --format=csv --query-gpu=name
  index       #输出显卡的编号:nvidia-smi --format=csv --query-gpu=index
  utilization.gpu  #输出GPU的使用率:nvidia-smi --format=csv --query-gpu=utilization.gpu
  memory.total    #显存大小,输出总显存值:nvidia-smi --format=csv --query-gpu=memory.total
  memory.used     #显存大小,输出使用了多少显存:nvidia-smi --format=csv --query-gpu=memory.used
  memory.free     #显存大小,输出剩余多少显存:nvidia-smi --format=csv --query-gpu=memory.free;不太准,建议使用:总显存-使用显存来计算;
  power.draw     #显存功耗,对应Pwr:Usage使用:nvidia-smi --format=csv --query-gpu=power.draw

持续监控nvidia-smi结果为csv类型并双重重定向到csv文件中,并指定写入文件的监控字段

 nvidia-smi -lms --query-gpu=timestamp,pstate,temperature.gpu,utilization.gpu,utilization.memory,memory.total,memory.free,memory.used --format=csv | tee gpu-log.csv

-lms     #循环动态显示;每毫秒
--query-gpu  #都记录哪些数据到csv文件中;
  timestamp     #输出每块显卡的时间戳:nvidia-smi --format=csv --query-gpu=timestamp
  pstate     #输出GPU的性能状态:nvidia-smi --format=csv --query-gpu=pstate
  temperature.gpu     #输出GPU的显卡温度:nvidia-smi --format=csv --query-gpu=temperature.gpu
  utilization.gpu  #输出GPU的使用率:nvidia-smi --format=csv --query-gpu=utilization.gpu
  utilization.memory  #输出显存的使用率:nvidia-smi --format=csv --query-gpu=utilization.memory
  memory.total    #显存大小,输出总显存值:nvidia-smi --format=csv --query-gpu=memory.total
  memory.used     #显存大小,输出使用了多少显存:nvidia-smi --format=csv --query-gpu=memory.used
  memory.free     #显存大小,输出剩余多少显存:nvidia-smi --format=csv --query-gpu=memory.free;不太准,建议使用:总显存-使用显存来计算;
--format   #结果记录文件格式是csv类型。(csv)
tee      #双重重定向到gpu-log.csv文件中。

指定0显卡输出csv类型的显存总空间及使用空间和剩余空间

nvidia-smi -i 0 --format=csv  --query-gpu=memory.total,memory.used,memory.free

-i       #指定显卡编号;不使用-i,默认是显示所有的显卡型号的数据;nvidia-smi --format=csv --query-gpu=memory.total,memory.used,memory.free
--format    #结果记录文件格式是csv类型。(csv)
--query-gpu  #都记录哪些数据到csv文件中;
  memory.total    #显存大小,输出总显存值:nvidia-smi --format=csv --query-gpu=memory.total
  memory.used     #显存大小,输出使用了多少显存:nvidia-smi --format=csv --query-gpu=memory.used
  memory.free     #显存大小,输出剩余多少显存:nvidia-smi --format=csv --query-gpu=memory.free;不太准,建议使用:总显存-使用显存来计算;

查询所有的csv文件--format可使用的字段及字段说明、实例

csv			文件格式			vidia-smi --format=csv --query-gpu=memory.total
noheader	去除文件头部标题	vidia-smi --format=csv,noheader --query-gpu=memory.total
nounits		去除单位,比如MiB	nvidia-smi --format=csv,noheader,nounits --query-gpu=memory.total

查询总显存不带头部标题

nvidia-smi --format=csv,noheader --query-gpu=memory.total

在这里插入图片描述

查询总显存不带头部标题并且不带单位

nvidia-smi --format=csv,noheader,nounits --query-gpu=memory.total

在这里插入图片描述

附加:计算某显卡的剩余显存脚本

下载地址:计算显卡的剩余显存脚本:nvidia.sh
下载时记得看下面的说明和用法哈;
注▲:没有积分可购买时,可私信我发你;但是还是需要进去看一下说明和用法,保证能够顺利使用。