189

CUDAとMPIを使用するプロセスを監視しようとしていますが、コマンド「top」のように、GPUも監視する方法はありますか?

4

16 に答える 16

217

使用済みリソースに関するリアルタイムの洞察を得るには、次のようにします。

nvidia-smi -l 1

これにより、毎秒ループしてビューが呼び出されます。

ループされた呼び出しの過去のトレースをコンソール履歴に保持したくない場合は、次のこともできます。

watch -n0.1 nvidia-smi

ここで、0.1は秒単位の時間間隔です。

ここに画像の説明を入力してください

于 2016-03-03T07:33:43.907 に答える
138

gpustatはとても便利だと思います。でインストールできpip install gpustat、プロセスまたはユーザーによる使用状況の内訳を出力します。

ここに画像の説明を入力してください

于 2018-07-18T15:43:50.870 に答える
86

この情報を組み合わせたものは何も知りませんが、このnvidia-smiツールを使用して生データを取得できます(-lのヒントを提供してくれた@jmsuに感謝します)。

$ 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 %
于 2011-11-22T10:43:43.560 に答える
28

を使用するだけwatch nvidia-smiで、デフォルトでは2秒間隔でメッセージが出力されます。

たとえば、次の画像のように:

ここに画像の説明を入力してください

watch -n 5 nvidia-smi(-n 5 x 5s間隔)を使用することもできます。

于 2018-06-29T03:29:26.993 に答える
23

引数「--query-compute-apps=」を使用します

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

さらにヘルプが必要な場合は、フォローしてください

nvidia-smi --help-query-compute-app
于 2017-04-25T14:01:24.020 に答える
20

を試すことができますnvtop。これは、広く使用されているツールに似ていhtopますが、NVIDIAGPU用です。これが実際の動作のスクリーンショットですnvtop

動作中のnvtopのスクリーンショット

于 2019-03-09T12:46:55.693 に答える
19

ここから最新の安定したCUDAドライバー(4.2)をダウンロードしてインストールします。Linuxでは、nVidia-smi295.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ドライバーでは、このサポートはテスラカードに限定されています。

于 2012-09-26T19:05:46.287 に答える
18

もう1つの便利な監視アプローチはps、GPUを消費するプロセスでフィルター処理を使用することです。私はこれをよく使います:

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

これにより、すべてのnvidiaGPU使用プロセスとそれらに関するいくつかの統計が表示されます。lsof ...現在のユーザーが所有するnvidiaGPUを使用してすべてのプロセスのリストを取得し、それらのプロセスの結果をps -p ...表示します。子/親プロセスの関係/階層の適切なフォーマットを示し、カスタムフォーマットを指定します。これは、実行するのと似ていますが、プロセスグループIDを追加し、他のいくつかのフィールドを削除します。psps f-ops u

これに対する利点の1つnvidia-smiは、GPUを使用するメインプロセスだけでなくプロセスフォークも表示されることです。

ただし、欠点の1つは、コマンドを実行するユーザーが所有するプロセスに限定されることです。任意のユーザーが所有するすべてのプロセスに開くために、の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
于 2016-06-06T18:15:15.753 に答える
11

最近、インタラクティブなNVIDIA-GPUプロセスビューアと呼ばれる監視ツールを作成しnvitopまし

スクリーンショットモニター

純粋なPythonで記述されており、インストールが簡単です。

PyPIからインストール:

pip3 install --upgrade nvitop

GitHubから最新バージョンをインストールします(推奨):

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

リソースモニターとして実行します。

nvitop -m

nvitopGPUステータスが表示されますnvidia-smiが、追加のファンシーバーと履歴グラフが表示されます。

psutilプロセスの場合、プロセス情報を収集し、、、、およびフィールドを表示するためUSERに使用%CPUされます。これは%MEM、よりもはるかに詳細です。さらに、モニターモードでのユーザー入力に応答します。GPUでプロセスを中断または強制終了できます。TIMECOMMANDnvidia-smi

nvitopツリービュー画面と環境画面が付属しています。

ツリー表示

環境


さらに、nvitop他のアプリケーションに統合することができます。たとえば、PyTorchトレーニングコードに統合します。

import os
from nvitop.core import host, Device, HostProcess, GpuProcess
from torch.utils.tensorboard import SummaryWriter

device = Device(0)
this_process = GpuProcess(os.getpid(), device)
writer = SummaryWriter()
for epoch in range(n_epochs):

    # some training code here
    # ...

    this_process.update_gpu_status()
    writer.add_scalars(
        'monitoring',
        {
            'device/memory_used': float(device.memory_used()) / (1 << 20),  # convert bytes to MiBs
            'device/memory_utilization': device.memory_utilization(),
            'device/gpu_utilization': device.gpu_utilization(),

            'host/cpu_percent': host.cpu_percent(),
            'host/memory_percent': host.memory_percent(),

            'process/cpu_percent': this_process.cpu_percent(),
            'process/memory_percent': this_process.memory_percent(),
            'process/used_gpu_memory': float(this_process.gpu_memory()) / (1 << 20),  # convert bytes to MiBs
        },
        global_step
    )

詳細については、 https://github.com/XuehaiPan/nvitopを参照してください。

GPLv3ライセンスnvitopの下でリリースされています。自分のプロジェクトのパッケージまたは依存関係として自由に使用してください。ただし、の一部の機能を追加または変更する場合、またはの一部のソースコードを独自のコードにコピーする場合は、ソースコードもGPLv3ライセンスの下でリリースする必要があります。nvitopnvitop

于 2021-05-19T07:51:35.750 に答える
6

これはエレガントではないかもしれませんが、試すことができます

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

@Edricによる方法も試しましたが、これは機能しますが、元のレイアウトを好みますnvidia-smi

于 2015-11-10T00:02:40.897 に答える
5

監視プログラムの概要は、 GPU監視プラグインで使用できます。

  • オープンソース
  • インストールするには:sudo apt-get install -y python-pip; sudo pip install glances[gpu]
  • 打ち上げへ:sudo glances

ここに画像の説明を入力してください

また、CPU、ディスクIO、ディスクスペース、ネットワーク、およびその他のいくつかのものを監視します。

ここに画像の説明を入力してください

于 2019-02-09T20:19:08.263 に答える
3

GPUで実行されているプロセスを検索するだけの場合は、次のコマンドを使用するだけです。

lsof /dev/nvidia*

私にとって はnvidia-smiwatch -n 1 nvidia-smiほとんどの場合十分です。プロセスが表示されない場合もありnvidia-smiますが、GPUメモリが使い果たされているため、上記のコマンドを使用してプロセスを見つける必要があります。

于 2019-10-22T12:32:00.873 に答える
3

Linux Mint、そしておそらくUbuntuでは、「nvidia-smi --loop=1」を試すことができます

于 2020-02-27T22:58:39.820 に答える
2

毎秒監視するために、Windowsマシンで次のコードを使用してバッチファイルを作成しました。わたしにはできる。

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

コマンドを1回だけ実行する場合、nvidia-smi exeは通常「C:\ ProgramFiles\NVIDIACorporation」にあります。

于 2019-06-14T12:28:11.120 に答える
0

nvidai-smiバイナリを活用するPrometheusGPUMetrics Exporter(PGME)があります。これを試してみてください。エクスポータを実行すると、 http:// localhost:9101/metricsからアクセスできます。2つの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
于 2018-06-12T18:11:56.867 に答える
0

nvidia-smi pmon -i 0コンピューティングモード、sm使用量、メモリ使用量、エンコーダー使用量、デコーダー使用量など、GPU0のすべてのプロセスを監視するために使用できます。

于 2019-01-16T08:51:08.877 に答える