如何测量GPU使用率?


5根据情况而定,如果你使用的是Radeon显卡,你可以使用radeontop工具(http://askubuntu.com/a/382160/169736),对于Nvidia显卡,也有另外一款工具,但我目前手头没有它的名字。 - Braiam
2对于NVIDIA来说,命令行工具是nvidia-smi,但对于Jetsons而言,它是tegrastats - Jus
2对于NVIDIA GPU,您可以使用nvidia-smi -l 5命令,它将每5秒提供一次更新。(您可以更改此数字以在不同的时间间隔内进行更新。) - mikey
11个回答

  • 对于Nvidia显卡,有一个工具nvidia-smi可以显示内存使用情况、GPU利用率和GPU温度。
  • 对于Intel显卡,可以使用intel-gpu-tools
  • AMD有两个选项:

    1. fglrx(闭源驱动程序):

      aticonfig --odgc --odgt
      
    2. 对于mesa(开源驱动程序),您可以使用RadeonTop 通过软件中心安装

来源:GPU使用情况监控


86使用watch nvidia-smi来实时更新。 - Lenar Hoyt
1aticonfig无法通过SSH工作。它声称需要一个正在运行的X服务器才能工作(实际上有一个正在运行)。然而,RadeonTop(sudo apt-get radeontop可以与fglrx一起使用(需要root权限)。太棒了!不幸的是,RadeonTop没有提供任何温度读数。 - Ken Sharp
aticonfig可以通过SSH工作,但需要运行启用了tcp的X服务器。这可以通过配置lightdm来实现,方法是设置xserver-allow-tcp=true。在该网站上使用这些关键词进行搜索应该能找到结果。 - jyalim
2不确定为什么,但是watch -n 1 nvidia-smi给我提供了实时更新。而watch nvidia-smi则有2秒的更新延迟。 - markroxor
8在终端中运行命令sudo intel_gpu_top可以实时显示Intel GPU的使用情况。 - George D
我喜欢Radeontop。 - Melroy van den Berg
你可以使用nvidia-smi -l 1来实时更新。来源:GPU使用情况监控(CUDA) - Vthechamp

你可以使用gpustat,这是一个简单的命令行脚本(nvidia-smi的包装器),用于查询和监控GPU状态。

enter image description here


10注意:仅适用于Nvidia - Mr. Developerdude
7pip install gpustat - Shital Shah
1使用专有驱动程序完美运行,谢谢。 - Smeterlink

对于英特尔:
  1. 安装 intel-gpu-tools(很可能已经安装了)

    sudo apt-get install intel-gpu-tools 
    
  2. 使用以下命令启动类似于 top 的实用工具

    sudo intel_gpu_top
    
  3. 查看您的统计数据,然后按下 Ctrl+C 退出

这就是你得到的东西:

enter image description here

谢谢@Mitch!:)


1不,它似乎不是默认安装的。我正在使用Skylake GT2(Intel HD Graphics 520)。 - wyphan

Nvidia:要持续更新nvidia-smi的输出,您可以使用nvidia-smi --loop=1(刷新间隔为1秒)或nvidia-smi --loop-ms=1000(刷新间隔为1000毫秒)。
   -l SEC, --loop=SEC
       Continuously  report  query data at the specified interval, rather than
       the default of  just  once.   The  application  will  sleep  in-between
       queries.   Note  that on Linux ECC error or XID error events will print
       out during the sleep period if the -x flag was not specified.  Pressing
       Ctrl+C at any time will abort the loop, which will otherwise run indef‐
       initely.  If no argument is specified for the -l form a default  inter‐
       val of 5 seconds is used.

   -lms ms, --loop-ms=ms
       Same as -l,--loop but in milliseconds.

FYI:

你可以使用监控程序glances及其GPU monitoring插件:
  • 开源
  • 安装方法:sudo apt-get install -y python-pip; sudo pip install glances
  • 启动方法:sudo glances

Screenshot: close-up to glances's load details

它还监控CPU、磁盘IO、磁盘空间、网络以及其他一些内容。

Screenshot: glances running


你还需要执行pip install nvidia-ml-py3操作。 - Paul Williams
1它还可以在没有sudo权限的情况下工作,只需为用户安装:pip install --user glances[gpu],然后运行glances - Ivan Kovtun

我使用以下命令:
nvidia-smi -l 2

每2秒钟它就会给我更新一次。

looks like this

或者:
watch -n0.1 "nvidia-settings -q GPUUtilization -q useddedicatedgpumemory"

在AMD上使用:
aticonfig --odgc --odgt

enter image description here


useddedicatedgpumemory Тў»ТїЄ Tensor Cores уџётѕЕућеујЄтљЌ№╝Ъ - Fadwa
如果你安装了NVIDIA驱动程序,它很可能已经安装好了。使用whereis nvidia-smi命令来查找其位置。 - bvdb

Conky

我喜欢使用 conky 作为实时监控CPU和GPU的工具。安装非常简单:

sudo apt install conky

Intel i7-6700HQ iGPU HD 530

在这个例子中,我使用的是集成显卡而不是nVidia GTX 970M:

Intel GPU.gif

conky代码根据使用prime-select intelprime-select nvidia启动而进行调整:

nVidia GPU GTX 970M

在这种情况下,我使用的是nVidia GTX 970M而不是集成的GPU:

nVidia GPU.GIF


Conky代码

最近修改了Conky代码,使其能够自动检测GPU。现在在重新启动到不同的GPU时,无需手动修改:

#------------+
# Intel iGPU |
#------------+
${color orange}${hr 1}${if_existing /sys/class/drm/card0/gt_cur_freq_mhz}
${color2}${voffset 5}Intel® Skylake GT2 HD 530 iGPU @${alignr}${color green}
${execpi .001 (cat /sys/class/drm/card0/gt_cur_freq_mhz)} MHz
${color}${goto 13}Min. Freq:${goto 120}${color green}${execpi .001 (cat /sys/class/drm/card0/gt_min_freq_mhz)} MHz${color}${goto 210}Max. Freq:${alignr}${color green}${execpi .001 (cat /sys/class/drm/card0/gt_max_freq_mhz)} MHz
${color orange}${hr 1}${else}
#------------+
# Nvidia GPU |
#------------+
#${color orange}${hr 1}${if_match "${lsmod | grep nvidia_uvm}">""}
${color2}${voffset 5}${execpi .001 (nvidia-smi --query-gpu=gpu_name --format=csv,noheader)} ${color1}@ ${color green}${execpi .001 (nvidia-smi --query-gpu=clocks.sm --format=csv,noheader)} ${alignr}${color1}Temp: ${color green}${execpi .001 (nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader)}°C
${color1}${voffset 5}Ver: ${color green}${execpi .001 (nvidia-smi --query-gpu=driver_version --format=csv,noheader)} ${color1} P-State: ${color green}${execpi .001 (nvidia-smi --query-gpu=pstate --format=csv,noheader)} ${alignr}${color1}BIOS: ${color green}${execpi .001 (nvidia-smi --query-gpu=vbios_version --format=csv,noheader)}
${color1}${voffset 5}GPU:${color green}${execpi .001 (nvidia-smi --query-gpu=utilization.gpu --format=csv,noheader)} ${color1}Ram:${color green}${execpi .001 (nvidia-smi --query-gpu=utilization.memory --format=csv,noheader)} ${color1}Pwr:${color green}${execpi .001 (nvidia-smi --query-gpu=power.draw --format=csv,noheader)} ${alignr}${color1}Freq: ${color green}${execpi .001 (nvidia-smi --query-gpu=clocks.mem --format=csv,noheader)}
${color orange}${hr 1}${endif}

这些答案中可以找到完整代码清单的不同版本:


请问您能提供安装Conky并设置主题与您的Nvidia示例相似的步骤吗? - Tak
@Tak 我已经更新了答案,并附上了安装说明和现有的代码链接。 - WinEunuuchs2Unix

我刚刚找到了这个命令:
nvidia-smi --query-gpu=utilization.gpu --format=csv --loop=1

这是一个演示:

enter image description here


没人提到 nvtop 吗?一个很好用的工具,类似于我们以前使用的 htop。 安装很简单,只需执行以下命令:
$ sudo apt install nvtop
or
$ snap install nvtop

Snap的版本通常更新得更快。其吸引人之处在于它可以显示使用GPU的进程占用情况。一张典型的截图如下所示: enter image description here

在我的情况下,nvidia-smi 没有显示 GPU 的负载百分比,只显示了内存使用情况(我猜我的 GTX 650 太旧了)。
对我有效的是 NVIDIA X Server Settings 图形界面应用程序(我相信它是随驱动程序一起提供的)。导航到名为 GPU 0 - (Your Model) 的部分 - 它显示了 GPU 使用情况的详细状态信息,每 2 秒更新一次:

enter image description here