如何查看哪些进程正在使用 GPU?

如何查看哪些进程正在使用 GPU?

我发现我的 GPU 占用了大量计算能力。它经常超过 70%,从未低于 50%(重启后直接测量)

14:06:34 ~/  $ gpustat
laptop0                                       Wed Mar  9 14:09:11 2022  
[0] NVIDIA GeForce RTX 2060 with Max-Q Design | 56'C,  74 % |  1369 /  5934 MB 

但这只能说明 GPU 的整体使用情况。我不知道哪个进程正在使用 GPU。

cpu-stat可以选择列出进程,但这只会显示内存使用情况:

14:10:38 ~/  $ gpustat -cp
laptop0                                       Wed Mar  9 14:10:44 2022  
[0] NVIDIA GeForce RTX 2060 with Max-Q Design | 54'C,  50 % |  1358 /  5934 MB |
Xorg/4904(843M) gnome-shell/5106(163M) mattermost-desktop/5640(55M) jetbrains-toolbox/6338(22M) 
brave/8888(269M)

我尝试过但没能找到一个可以显示每个进程的 GPU 使用情况的工具。有很多程序可以显示 GPU 使用情况,但只能显示整体,而不能显示每个进程的使用情况。

我试过了:

  • glances
  • cpu-stat
  • nvidia-smi

也许我遗漏了另一个参数?也许是因为 NVidia 的专有特性,这是不可能的?

答案1

nvidia-smi工具可以访问GPU并查询信息。例如:

nvidia-smi --query-compute-apps=pid --format=csv,noheader

这将返回pid当前正在运行的应用程序。它有点用,但可能存在以下注意事项。

> nvidia-smi
Fri Nov 11 02:08:18 2022
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 520.61.05    Driver Version: 520.61.05    CUDA Version: 11.8     |
|-------------------------------+----------------------+----------------------+
| 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 ...  On   | 00000000:01:00.0 Off |                  N/A |
| 50%   61C    P2   301W / 350W |  23683MiB / 24576MiB |     69%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A   2747694      C   python                          23680MiB |
+-----------------------------------------------------------------------------+

> nvidia-smi --query-compute-apps pid --format=csv,noheader
2747694

这很简单,因为只有一个进程。在具有多个进程的机器上,可能会令人惊讶:

> nvidia-smi
Fri Nov 11 11:10:38 2022
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 510.85.02    Driver Version: 510.85.02    CUDA Version: 11.6     |
|-------------------------------+----------------------+----------------------+
| 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 ...  On   | 00000000:01:00.0 Off |                  N/A |
| N/A   32C    P8    N/A /  N/A |   3546MiB /  4096MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      1515      G   /usr/lib/xorg/Xorg                 28MiB |
|    0   N/A  N/A      1724      G   /usr/bin/gnome-shell               67MiB |
|    0   N/A  N/A      2806      G   /usr/lib/xorg/Xorg                296MiB |
|    0   N/A  N/A      3025      G   /usr/bin/gnome-shell               22MiB |
|    0   N/A  N/A      3569      G   ...AAAAAAAAA= --shared-files       10MiB |
|    0   N/A  N/A     12329      G   /usr/lib/firefox/firefox           34MiB |
|    0   N/A  N/A     13708      G   ...oken=16615837409882897952        8MiB |
|    0   N/A  N/A     28690      C   ...abcdef/venv/bin/python3.7     3069MiB |
+-----------------------------------------------------------------------------+

> nvidia-smi --query-compute-apps=pid --format=csv,noheader
28690

它只返回我感兴趣的进程(幸运),类型为 C。这可能令人惊讶,但是说得通,因为 C 代表计算,而查询过滤器用于计算(G 代表图形)。

相关内容