GPU的顶级命令使用CUDA

时间:2011-11-22 08:19:41

标签: cuda resource-monitor

我正在尝试监控使用cuda和MPI的进程,有什么方法可以做到这一点,比如命令“top”但是监视GPU呢?

16 个答案:

答案 0 :(得分:84)

要获得对已使用资源的实时洞察,请执行以下操作:

nvidia-smi -l 1

这将循环并每秒调用视图。

如果您不想在控制台历史记录中保留循环调用的痕迹,您还可以执行以下操作:

watch -n0.1 nvidia-smi

其中0.1是时间间隔,以秒为单位。

enter image description here

答案 1 :(得分:76)

我不知道任何结合了这些信息的内容,但你可以使用nvidia-smi工具来获取原始数据,就像这样(感谢@jmsu获取-l上的提示):

$ nvidia-smi -q -g 0 -d UTILIZATION -l

==============NVSMI LOG==============

Timestamp                       : Tue Nov 22 11:50:05 2011

Driver Version                  : 275.19

Attached GPUs                   : 2

GPU 0:1:0
    Utilization
        Gpu                     : 0 %
        Memory                  : 0 %

答案 2 :(得分:37)

我发现gpustat非常有用。 In可以与pip install gpustat一起安装,并按进程或用户打印使用情况的细分。

enter image description here

答案 3 :(得分:19)

here下载并安装最新的稳定CUDA驱动程序(4.2)。在linux上,nVidia-smi 295.41可以满足您的需求。使用nvidia-smi

[root@localhost release]# nvidia-smi 
Wed Sep 26 23:16:16 2012       
+------------------------------------------------------+                       
| NVIDIA-SMI 3.295.41   Driver Version: 295.41         |                       
|-------------------------------+----------------------+----------------------+
| Nb.  Name                     | Bus Id        Disp.  | Volatile ECC SB / DB |
| Fan   Temp   Power Usage /Cap | Memory Usage         | GPU Util. Compute M. |
|===============================+======================+======================|
| 0.  Tesla C2050               | 0000:05:00.0  On     |         0          0 |
|  30%   62 C  P0    N/A /  N/A |   3%   70MB / 2687MB |   44%     Default    |
|-------------------------------+----------------------+----------------------|
| Compute processes:                                               GPU Memory |
|  GPU  PID     Process name                                       Usage      |
|=============================================================================|
|  0.  7336     ./align                                                 61MB  |
+-----------------------------------------------------------------------------+

编辑:在最新的NVIDIA驱动程序中,此支持仅限于特斯拉卡。

答案 4 :(得分:13)

另一种有用的监控方法是对使用GPU的进程使用ps进行过滤。我经常使用这个:

ps f -o user,pgrp,pid,pcpu,pmem,start,time,command -p `lsof -n -w -t /dev/nvidia*`

这将显示所有nvidia GPU利用流程以及有关它们的一些统计信息。 lsof ...使用当前用户拥有的nvidia GPU检索所有进程的列表,ps -p ...显示这些进程的ps结果。 ps f显示了子/父进程关系/层次结构的良好格式,-o指定了自定义格式。那个类似于只执行ps u但添加了进程组ID并删除了其他一些字段。

这个优于nvidia-smi的一个优点是它会显示进程分支以及使用GPU的主要进程。

但是,一个缺点是,它仅限于执行命令的用户拥有的进程。要将其打开到任何用户拥有的所有进程,我会在sudo之前添加lsof

最后,我将其与watch结合使用以获得持续更新。所以,最后看起来像:

watch -n 0.1 'ps f -o user,pgrp,pid,pcpu,pmem,start,time,command -p `sudo lsof -n -w -t /dev/nvidia*`'

其输出如下:

Every 0.1s: ps f -o user,pgrp,pid,pcpu,pmem,start,time,command -p `sudo lsof -n -w -t /dev/nvi...  Mon Jun  6 14:03:20 2016
USER      PGRP   PID %CPU %MEM  STARTED     TIME COMMAND
grisait+ 27294 50934  0.0  0.1   Jun 02 00:01:40 /opt/google/chrome/chrome --type=gpu-process --channel=50877.0.2015482623
grisait+ 27294 50941  0.0  0.0   Jun 02 00:00:00  \_ /opt/google/chrome/chrome --type=gpu-broker
grisait+ 53596 53596 36.6  1.1 13:47:06 00:05:57 python -u process_examples.py
grisait+ 53596 33428  6.9  0.5 14:02:09 00:00:04  \_ python -u process_examples.py
grisait+ 53596 33773  7.5  0.5 14:02:19 00:00:04  \_ python -u process_examples.py
grisait+ 53596 34174  5.0  0.5 14:02:30 00:00:02  \_ python -u process_examples.py
grisait+ 28205 28205  905  1.5 13:30:39 04:56:09 python -u train.py
grisait+ 28205 28387  5.8  0.4 13:30:49 00:01:53  \_ python -u train.py
grisait+ 28205 28388  5.3  0.4 13:30:49 00:01:45  \_ python -u train.py
grisait+ 28205 28389  4.5  0.4 13:30:49 00:01:29  \_ python -u train.py
grisait+ 28205 28390  4.5  0.4 13:30:49 00:01:28  \_ python -u train.py
grisait+ 28205 28391  4.8  0.4 13:30:49 00:01:34  \_ python -u train.py

答案 5 :(得分:13)

  

使用参数“--query-compute-apps =”

nvidia-smi --query-compute-apps=pid,process_name,used_memory --format=csv

如需进一步帮助,请按照

nvidia-smi --help-query-compute-app

答案 6 :(得分:8)

只需使用watch nvidia-smi,默认情况下它将以2s的间隔输出消息。

例如,如下图所示:

enter image description here

您还可以使用watch -n 5 nvidia-smi(-n 5 x 5s间隔)。

答案 7 :(得分:2)

这可能不太优雅,但您可以尝试

while true; do sleep 2; nvidia-smi; done

我也尝试过@Edric的方法,但是我更喜欢nvidia-smi的原始布局。

答案 8 :(得分:2)

您可以尝试nvtop,该工具类似于广泛使用的android:textDirection="anyRtl"工具,但适用于NVIDIA GPU。这是其中htop的屏幕截图。

Screenshot of nvtop in action

答案 9 :(得分:2)

在Linux Mint和最有可能的Ubuntu中,您可以尝试“ nvidia-smi --loop = 1”

答案 10 :(得分:0)

Prometheus GPU Metrics Exporter (PGME)利用nvidai-smi二进制文件。你可以尝试一下。导出器运行后,您可以通过http://localhost:9101/metrics访问它。对于两个GPU,示例结果如下所示:

temperature_gpu{gpu="TITAN X (Pascal)[0]"} 41
utilization_gpu{gpu="TITAN X (Pascal)[0]"} 0
utilization_memory{gpu="TITAN X (Pascal)[0]"} 0
memory_total{gpu="TITAN X (Pascal)[0]"} 12189
memory_free{gpu="TITAN X (Pascal)[0]"} 12189
memory_used{gpu="TITAN X (Pascal)[0]"} 0
temperature_gpu{gpu="TITAN X (Pascal)[1]"} 78
utilization_gpu{gpu="TITAN X (Pascal)[1]"} 95
utilization_memory{gpu="TITAN X (Pascal)[1]"} 59
memory_total{gpu="TITAN X (Pascal)[1]"} 12189
memory_free{gpu="TITAN X (Pascal)[1]"} 1738
memory_used{gpu="TITAN X (Pascal)[1]"} 10451

答案 11 :(得分:0)

您可以使用nvidia-smi pmon -i 0来监视GPU 0中的每个进程。 包括计算模式,短信使用率,内存使用率,编码器使用率,解码器使用率。

答案 12 :(得分:0)

您可以将监控程序glances及其GPU monitoring插件一起使用:

  • 开源
  • 要安装:sudo apt-get install -y python-pip; sudo pip install glances[gpu]
  • 启动:sudo glances

enter image description here

它还监视CPU,磁盘IO,磁盘空间,网络和其他一些东西:

enter image description here

答案 13 :(得分:0)

我在Windows机器中用以下代码创建了一个批处理文件,以每秒进行一次监视。它对我有用。

:loop
cls
"C:\Program Files\NVIDIA Corporation\NVSMI\nvidia-smi"
timeout /T 1
goto loop

nvidia-smi exe通常位于“ C:\ Program Files \ NVIDIA Corporation”中,如果您只想运行一次命令。

答案 14 :(得分:0)

如果只想查找在gpu上运行的进程,只需使用以下命令即可:

SET character_set_server = 'utf8mb4';
SET collation_server = 'utf8mb4_unicode_ci';

CREATE TABLE authors (
  id INT NOT NULL AUTO_INCREMENT,
  name VARCHAR(150) CHARACTER SET utf8mb4,
  personal_name VARCHAR(150) CHARACTER SET utf8mb4,
  PRIMARY KEY(id)
);

对我来说,lsof /dev/nvidia* nvidia-smi在大多数情况下就足够了。有时watch -n 1 nvidia-smi没有显示任何进程,但gpu内存已用完,因此我需要使用以上命令来查找进程。

答案 15 :(得分:0)

最近,我编写了一个名为 nvitop 的监控工具,交互式 NVIDIA-GPU 进程查看器。它是用纯 Python 编写的,易于安装。

从 PyPI 安装:

pip3 install --upgrade nvitop

从 GitHub 安装最新版本(推荐):

pip3 install git+https://github.com/XuehaiPan/nvitop.git#egg=nvitop

作为资源监视器运行:

nvitop -m

nvitop 将像 nvidia-smi 一样显示 GPU 状态,但带有额外的花哨条和历史图表。

对于进程,它将使用psutil来收集进程信息并显示USER%CPU%MEMTIME和{{1} } 字段,比 COMMAND 详细得多。 此外,它可以响应监控模式下的用户输入。您可以中断终止 GPU 上的进程。

有关详细信息,请参阅 https://github.com/XuehaiPan/nvitop