GPU使用状況の監視(CUDA)


223

コンピューターにCUDAツールキットをインストールし、GPUでBOINCプロジェクトを開始しました。BOINCでは、GPUで実行されていることがわかりますが、GPUで実行されているもの(GPU使用量とメモリ使用量)の詳細を表示できるツールはありますか?

回答:


251

Nvidia GPUには、nvidia-smiメモリ使用量、GPU使用率、GPUの温度を表示できるツールがあります。計算プロセスのリストといくつかのオプションもありますが、私のグラフィックカード(GeForce 9600 GT)は完全にはサポートされていません。

Sun May 13 20:02:49 2012       
+------------------------------------------------------+                       
| NVIDIA-SMI 3.295.40   Driver Version: 295.40         |                       
|-------------------------------+----------------------+----------------------+
| Nb.  Name                     | Bus Id        Disp.  | Volatile ECC SB / DB |
| Fan   Temp   Power Usage /Cap | Memory Usage         | GPU Util. Compute M. |
|===============================+======================+======================|
| 0.  GeForce 9600 GT           | 0000:01:00.0  N/A    |       N/A        N/A |
|   0%   51 C  N/A   N/A /  N/A |  90%  459MB /  511MB |  N/A      Default    |
|-------------------------------+----------------------+----------------------|
| Compute processes:                                               GPU Memory |
|  GPU  PID     Process name                                       Usage      |
|=============================================================================|
|  0.           Not Supported                                                 |
+-----------------------------------------------------------------------------+

1
私のIONチップも使用方法を示していません。:/
ラファエル

123
watch -n 0.5 nvidia-smi、端末に出力を入れずに出力を更新し続けます。
バー

31
@Bar良いヒント。watch -d -n 0.5 nvidia-smiさらに良くなります。
zeekvfu

3
@zeekvfu -dフラグが何をするのかを説明する方が良いと思います
-donlucacorleone

5
@donlucacorleoneはman watch教えてくれる-dフラグは出力の違いを強調して、それは指標が時間の経過とともに変化しているハイライトするのを助けることができます。
デビッドカチンスキ

71

Linuxの場合、use nvidia-smi -l 1は1秒の更新間隔でgpuの使用情報を継続的に提供します。


74
watch -n 1 nvidia-smi端末に出力を入れずに継続的な更新を取得するために使用することを好みます
-ali_m

1
watchを使用すると、毎秒新しいプロセスを開始してカードをポーリングすることになります。毎秒ではなく-lを実行する方が良いでしょう。毎分または5分ごとに提案します。
ミックT


55

Intel GPUの場合、http://intellinuxgraphics.org/intel-gpu-toolsからプロジェクトが存在します。このプロジェクトは、intel_gpu_top(とりわけ)コマンドをもたらします。topおよびhtopに似ていますが、特にIntel GPU用です。

   render busy:  18%: ███▋                                   render space: 39/131072
bitstream busy:   0%:                                     bitstream space: 0/131072
  blitter busy:  28%: █████▋                                blitter space: 28/131072

          task  percent busy
           GAM:  33%: ██████▋                 vert fetch: 0 (0/sec)
          GAFS:   3%: ▋                       prim fetch: 0 (0/sec)
            VS:   0%:                      VS invocations: 559188 (150/sec)
            SF:   0%:                      GS invocations: 0 (0/sec)
            VF:   0%:                           GS prims: 0 (0/sec)
            DS:   0%:                      CL invocations: 186396 (50/sec)
            CL:   0%:                           CL prims: 186396 (50/sec)
           SOL:   0%:                      PS invocations: 8191776208 (38576436/sec)
            GS:   0%:                      PS depth pass: 8158502721 (38487525/sec)
            HS:   0%:                      
            TE:   0%:                      
          GAFM:   0%:                      
           SVG:   0%:                      

35

nvidia-smi一部のLinuxマシンでは機能しません(多くのプロパティでN / Aが返されます)。nvidia-settings代わりに使用できます(これは、mat kelceyがpythonスクリプトで使用したものでもあります)。

nvidia-settings -q GPUUtilization -q useddedicatedgpumemory

以下も使用できます。

watch -n0.1 "nvidia-settings -q GPUUtilization -q useddedicatedgpumemory"

継続的な監視のため。


4
これがコメントではなかったことを嬉しく思います。この質問に出くわしたときにまさに探していたものです。
Score_Under

おかげで、私はnvidia-smiでサポートされていないGeForceカードを持っているので、これは私のために働いたものです。
alexg

4
あなたは行うことができますnvidia-settings -q allあなたが監視することができ、他のどのようなパラメータを参照してください。私は監視GPUCurrentProcessorClockFreqsしていGPUCurrentClockFreqsます。
alexg

1
おかげで、すべてのカードを照会することをお勧めします。カードごとに監視する文字列が異なる場合があるためです。
ruohoのruotsi

あなただけ(例えばConkyのため。)数と他には何をしたい場合は、この使用:nvidia-settings -q [gpu:0]/UsedDedicatedGPUMemory -t
HLK

16

Linuxの場合、自分で作成したこのHTOPのようなツールを使用します。GPUの温度とコア/ VRAM / PCI-Eおよびメモリバスの使用状況を監視し、概要を提供します。ただし、GPUで実行されているものは監視しません。

gmonitor

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


1
nvidia-settings実行中のX11が必要ですが、常にそうであるとは限りません。
ビクターセルギエンコ

手間をかけずに動作します!
ヘンナディマダン

15

完全を期すために、AMDには2つのオプションがあります。

  1. fglrx(クローズドソースドライバー)。

    $ aticonfig --odgc --odgt
    
  2. mesa(オープンソースドライバー)、RadeonTopを使用できます。

    総アクティビティ率と個々のブロックの両方のGPU使用率を表示します。


13

GeForce 1060 GTXビデオカードを持っていますが、次のコマンドを使用すると、カードの使用率、温度、ファン速度、消費電力に関する情報が得られることがわかりました。

$ nvidia-smi --format=csv --query-gpu=power.draw,utilization.gpu,fan.speed,temperature.gpu

以下を使用して、すべてのクエリオプションのリストを表示できます。

$ nvidia-smi --help-query-gpu

1
memory.usedまたは(memory.free)を追加する価値もあります。
ゾルタン

3

OS Xの場合

マウンテンライオンを含む

iStatメニュー

マウンテンライオンを除く

atMonitor

GPU関連機能をサポートするatMonitorの最後のバージョンはatMonitor 2.7.1です。

– 2.7.1へのリンクは2.7bを提供します。

アプリの最新バージョンについては、atMonitor-FAQで説明しています。

atMonitorがMacOS 10.8と互換性を持つように、GPU関連の機能をすべて削除しました。

NVIDIA GeForce 9600M GTを搭載したMacBookPro5,2とMountain Lionで2.7b(別名2.7.1)を試しました。アプリは終了する前に数秒間実行され、温度は表示されましたが、使用状況は表示されませんでした。

                                                  Mountain LionのatMonitor 2.7bのスクリーンショット


3

プロセスを終了(おそらく強制終了またはクラッシュ)し、リソースを使用し続けましたが、にはリストされていませんnvidia-smi。通常、これらのプロセスはGPUメモリを使用していました。

GPU上のリソースを使用するプロセスがあり、それがに表示されていないと思われる場合は、nvidia-smiこのコマンドを実行して再確認してください。どのプロセスがGPUを使用しているかが表示されます。

sudo fuser -v /dev/nvidia*

これは、EL7、Ubuntu、または他のディストリビューションで動作し、nvidiaデバイスが別の名前/場所でリストされている場合があります。



2

Linux上のnvidiaでは、iostatやvmstatのようなオプションの遅延と繰り返しを使用する次のPythonスクリプトを使用します

https://gist.github.com/matpalm/9c0c7c6a6f3681a0d39d

$ gpu_stat.py 1 2
{"util":{"PCIe":"0", "memory":"10", "video":"0", "graphics":"11"}, "used_mem":"161", "time": 1424839016}
{"util":{"PCIe":"0", "memory":"10", "video":"0", "graphics":"9"}, "used_mem":"161", "time":1424839018}


1

次の関数は、PID、ユーザー名、CPU使用量、メモリ使用量、GPUメモリ使用量、プログラム引数、GPUで実行されているプロセスの実行時間などの情報を、の出力に追加しますnvidia-smi

function better-nvidia-smi () {
    nvidia-smi
    join -1 1 -2 3 \
        <(nvidia-smi --query-compute-apps=pid,used_memory \
                     --format=csv \
          | sed "s/ //g" | sed "s/,/ /g" \
          | awk 'NR<=1 {print toupper($0)} NR>1 {print $0}' \
          | sed "/\[NotSupported\]/d" \
          | awk 'NR<=1{print $0;next}{print $0| "sort -k1"}') \
        <(ps -a -o user,pgrp,pid,pcpu,pmem,time,command \
          | awk 'NR<=1{print $0;next}{print $0| "sort -k3"}') \
        | column -t
}

出力例:

$ better-nvidia-smi
Fri Sep 29 16:52:58 2017
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 378.13                 Driver Version: 378.13                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GT 730      Off  | 0000:01:00.0     N/A |                  N/A |
| 32%   49C    P8    N/A /  N/A |    872MiB /   976MiB |     N/A      Default |
+-------------------------------+----------------------+----------------------+
|   1  Graphics Device     Off  | 0000:06:00.0     Off |                  N/A |
| 23%   35C    P8    17W / 250W |    199MiB / 11172MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|    0                  Not Supported                                         |
|    1      5113    C   python                                         187MiB |
+-----------------------------------------------------------------------------+
PID   USED_GPU_MEMORY[MIB]  USER    PGRP  %CPU  %MEM   TIME      COMMAND
9178  187MiB                tmborn  9175  129   2.6    04:32:19  ../path/to/python script.py args 42

気をつけて、私はPSは「のNvidia GPU」認識していないので、PSで与えPMEMは、アカウントに合計GPUのメモリが、CPUのそれを取るとは思わない
SebMa

0

このスクリプトはより読みやすく、簡単なmodおよび拡張用に設計されています。

gnome-terminalをお気に入りのターミナルウィンドウプログラムに置き換えることができます。


#! /bin/bash

if [ "$1" = "--guts" ]; then
    echo; echo "    ctrl-c to gracefully close"
    f "$a"
    f "$b"
    exit 0; fi

# easy to customize here using "nvidia-smi --help-query-gpu" as a guide
a='--query-gpu=pstate,memory.used,utilization.memory,utilization.gpu,encoder.stats.sessionCount'
b='--query-gpu=encoder.stats.averageFps,encoder.stats.averageLatency,temperature.gpu,power.draw'
p=0.5    # refresh period in seconds
s=110x9  # view port as width_in_chars x line_count

c="s/^/    /; s/, +/\t/g"
t="`echo '' |tr '\n' '\t'`"
function f() { echo; nvidia-smi --format=csv "$1" |sed -r "$c" |column -t "-s$t" "-o   "; }
export c t a b; export -f f
gnome-terminal --hide-menubar --geometry=$s -- watch -t -n$p "`readlink -f \"$0\"`" --guts

#

ライセンス:GNU GPLv2、TranSeed Research


0

使用できます

nvidia-smi pmon -i 0

GPU 0のすべてのプロセスを監視します。計算/グラフィックモード、sm使用、メモリ使用、エンコーダ使用、デコーダ使用など。


0

私は利用可能な回答にそれを見なかったので(コメントの場合を除いて)、でもっとすっきりすることができると付け加えたいと思いnvidia-smiましたwatch。これにより、常にスクロールするのではなく、更新ごとに画面が更新されます。

watch -n 1 nvidia-smi

1秒間隔で更新します。を、1秒の小数部を含め、必要なものに置き換えます。

watch -n 5 nvidia-smi
watch -n 0.1 nvidia-smi
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.