Giám sát sử dụng GPU (CUDA)


223

Tôi đã cài đặt bộ công cụ CUDA trên máy tính của mình và bắt đầu dự án BOINC trên GPU. Trong BOINC tôi có thể thấy rằng nó đang chạy trên GPU, nhưng có một công cụ nào có thể cho tôi biết thêm chi tiết về những gì đang chạy trên GPU - sử dụng GPU và sử dụng bộ nhớ?

Câu trả lời:


251

Đối với GPU Nvidia, có một công cụ nvidia-smicó thể hiển thị mức sử dụng bộ nhớ, mức độ sử dụng GPU và nhiệt độ của GPU. Ngoài ra còn có một danh sách các quy trình tính toán và một vài tùy chọn khác nhưng card đồ họa của tôi (GeForce 9600 GT) không được hỗ trợ đầy đủ.

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
Chip ION của tôi cũng không hiển thị cách sử dụng. : /
Raphael

123
watch -n 0.5 nvidia-smi, sẽ giữ đầu ra được cập nhật mà không làm đầy thiết bị đầu cuối của bạn với đầu ra.
Bar

31
@Bar Mẹo hay. watch -d -n 0.5 nvidia-smisẽ còn tốt hơn
zeekvfu

3
@zeekvfu Tôi nghĩ sẽ tốt hơn nếu giải thích -dlá cờ làm gì
donlucacorleone

5
@donlucacorleone man watchcho chúng ta biết -dcờ làm nổi bật sự khác biệt giữa các đầu ra, vì vậy nó có thể giúp làm nổi bật các số liệu nào đang thay đổi theo thời gian.
David Kaczynski

71

Đối với linux, việc sử dụng nvidia-smi -l 1sẽ liên tục cung cấp cho bạn thông tin sử dụng gpu, với khoảng thời gian làm mới là 1 giây.


74
Tôi thích sử dụng watch -n 1 nvidia-smiđể có được các bản cập nhật liên tục mà không làm đầy thiết bị đầu cuối với đầu ra
ali_m

1
Sử dụng đồng hồ có nghĩa là bạn bắt đầu một quy trình mới mỗi giây để thăm dò các thẻ. Tốt hơn nên làm -l, và không phải mỗi giây, tôi đề nghị mỗi phút hoặc mỗi 5 phút.
Mick T


55

Đối với GPU của Intel, tồn tại dự án intel-gpu-toolstừ http://intellinuxgraphics.org/ , mang lại lệnh intel_gpu_top(trong số những thứ khác). Nó tương tự tophtop, nhưng đặc biệt dành cho GPU Intel.

   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-smikhông hoạt động trên một số máy linux (trả về N / A cho nhiều thuộc tính). Bạn có thể sử dụng nvidia-settingsthay thế (đây cũng là những gì mat kelcey đã sử dụng trong kịch bản python của anh ấy).

nvidia-settings -q GPUUtilization -q useddedicatedgpumemory

Bạn cũng có thể dùng:

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

để theo dõi liên tục.


4
Vui mừng vì đây không phải là một bình luận. Đó chính xác là những gì tôi đã tìm kiếm khi tôi gặp câu hỏi này.
Điểm_Under

Cảm ơn, đây là những gì làm việc cho tôi, vì tôi có thẻ GeForce không được hỗ trợ bởi nvidia-smi.
alexg

4
Bạn có thể làm nvidia-settings -q allđể xem những thông số khác bạn có thể theo dõi. Tôi đang theo dõi GPUCurrentProcessorClockFreqsGPUCurrentClockFreqs.
alexg

1
Cảm ơn người đàn ông, ý tưởng tốt để truy vấn tất cả, vì mỗi thẻ có thể có các chuỗi khác nhau để theo dõi!
ruoho ruotsi 2/2/2016

Nếu bạn chỉ muốn số và không có gì khác (ví dụ: cho conky), hãy sử dụng cái này:nvidia-settings -q [gpu:0]/UsedDedicatedGPUMemory -t
hLk

16

Đối với Linux, tôi sử dụng công cụ giống như HTOP này do tôi tự viết. Nó theo dõi và đưa ra một cái nhìn tổng quan về nhiệt độ GPU cũng như việc sử dụng bus lõi / VRAM / PCI-E & bộ nhớ. Nó không theo dõi những gì đang chạy trên GPU.

người kiểm tra

nhập mô tả hình ảnh ở đây


1
nvidia-settingsyêu cầu X11 chạy, điều này không phải lúc nào cũng đúng.
Victor Sergienko

làm việc cho tôi không có rắc rối!
Hennadii Madan

15

Để hoàn thiện, AMD có hai tùy chọn:

  1. fglrx (trình điều khiển nguồn đóng).

    $ aticonfig --odgc --odgt
    
  2. mesa (trình điều khiển nguồn mở), bạn có thể sử dụng RadeonTop .

    Xem mức độ sử dụng GPU của bạn, cả cho tổng phần trăm hoạt động và các khối riêng lẻ.


13

Tôi có thẻ video GeForce 1060 GTX và tôi thấy rằng lệnh sau cung cấp cho tôi thông tin về việc sử dụng thẻ, nhiệt độ, tốc độ quạt và mức tiêu thụ điện năng:

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

Bạn có thể xem danh sách tất cả các tùy chọn truy vấn với:

$ nvidia-smi --help-query-gpu

1
Nó sẽ có giá trị thêm memory.usedhoặc ( memory.free) là tốt.
Zoltan

3

Dành cho hệ điều hành X

Bao gồm Sư tử núi

Thực đơn iStat

Không bao gồm Sư tử núi

atMonitor

Phiên bản cuối cùng của atMonitor để hỗ trợ các tính năng liên quan đến GPU là atMonitor 2.7.1.

- và liên kết đến 2.7.1 cung cấp 2.7b.

Đối với phiên bản mới hơn của ứng dụng, atMonitor - FAQ giải thích:

Để làm cho atMonitor tương thích với MacOS 10.8, chúng tôi đã xóa tất cả các tính năng liên quan đến GPU.

Tôi đã thử nghiệm 2.7b hay 2.7.1 trên Mountain Lion với MacBookPro5,2 với NVIDIA GeForce 9600M GT. Ứng dụng chạy trong vài giây trước khi thoát, nó hiển thị nhiệt độ nhưng không sử dụng:

                                                  ảnh chụp màn hình của atMonitor 2.7b trên Mountain Lion


3

Tôi đã có các quá trình chấm dứt (có thể bị giết hoặc bị rơi) và tiếp tục sử dụng tài nguyên, nhưng không được liệt kê trong nvidia-smi. Thông thường các quá trình này chỉ lấy bộ nhớ gpu.

Nếu bạn nghĩ rằng bạn có một quy trình sử dụng tài nguyên trên GPU và nó không được hiển thị nvidia-smi, bạn có thể thử chạy lệnh này để kiểm tra lại. Nó sẽ cho bạn thấy các quy trình đang sử dụng GPU của bạn.

sudo fuser -v /dev/nvidia*

Điều này hoạt động trên EL7, Ubuntu hoặc các bản phân phối khác có thể có các thiết bị nvidia của họ được liệt kê dưới tên / vị trí khác.



2

Đối với nvidia trên linux, tôi sử dụng tập lệnh python sau, sử dụng độ trễ tùy chọn và lặp lại như iostat và vmstat

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

Hàm sau sẽ nối các thông tin như PID, tên người dùng, mức sử dụng CPU, mức sử dụng bộ nhớ, mức sử dụng bộ nhớ GPU, đối số chương trình và thời gian chạy của các tiến trình đang chạy trên GPU, vào đầu ra của 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
}

Ví dụ đầu ra:

$ 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

Thật cẩn thận, tôi không nghĩ rằng pmem do ps cung cấp có tính đến tổng bộ nhớ của GPU nhưng là của CPU vì ps không biết "GPU Nvidia"
SebMa

0

Kịch bản này dễ đọc hơn và được thiết kế để dễ dàng sửa đổi và mở rộng.

Bạn có thể thay thế gnome-terminal bằng chương trình cửa sổ terminal yêu thích của bạn.


#! /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

#

Giấy phép: GNU GPLv2, Nghiên cứu TranSeed


0

Bạn có thể dùng

nvidia-smi pmon -i 0

để giám sát mọi quá trình trong GPU 0. bao gồm chế độ tính toán / đồ họa, sử dụng sm, sử dụng bộ nhớ, sử dụng bộ mã hóa, sử dụng bộ giải mã.


0

Tôi không nhìn thấy nó trong các câu trả lời có sẵn (trừ có lẽ trong một chú thích), vì vậy tôi nghĩ rằng tôi muốn thêm rằng bạn có thể có được một làm mới đẹp hơn nvidia-smivới watch. Điều này làm mới màn hình với mỗi bản cập nhật thay vì cuộn liên tục.

watch -n 1 nvidia-smi

để cập nhật khoảng thời gian một giây. Thay thế 1bằng bất cứ thứ gì bạn muốn, kể cả giây phân đoạn:

watch -n 5 nvidia-smi
watch -n 0.1 nvidia-smi
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.