Câu trả lời:
Đối với GPU Nvidia, có một công cụ nvidia-smi
có 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 |
+-----------------------------------------------------------------------------+
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.
watch -d -n 0.5 nvidia-smi
sẽ còn tốt hơn
-d
lá cờ làm gì
man watch
cho chúng ta biết -d
cờ 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.
Đối với linux, việc sử dụng nvidia-smi -l 1
sẽ 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.
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
Gần đây tôi đã viết một tiện ích dòng lệnh đơn giản được gọi là gpustat
(là một trình bao bọc của nvidia-smi
): vui lòng xem tại https://github.com/wookayin/gpustat .
Đối với GPU của Intel, tồn tại dự án intel-gpu-tools
từ http://intellinuxgraphics.org/ , mang lại lệnh intel_gpu_top
(trong số những thứ khác). Nó tương tự top
và htop
, 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%:
nvidia-smi
khô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-settings
thay 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.
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 GPUCurrentProcessorClockFreqs
và GPUCurrentClockFreqs
.
nvidia-settings -q [gpu:0]/UsedDedicatedGPUMemory -t
Đố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.
nvidia-settings
yêu cầu X11 chạy, điều này không phải lúc nào cũng đúng.
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
memory.used
hoặc ( memory.free
) là tốt.
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:
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.
Glances có một plugin cho thấy việc sử dụng GPU và sử dụng bộ nhớ.
http://glances.readthedocs.io/en/urdy/aoa/gpu.html
Sử dụng thư viện nvidia-ml-py3: https://pypi.python.org/pypi/nvidia-ml-py3
Đố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}
Bạn có thể sử dụng nvtop
, nó tương tự htop
nhưng đối với GPU NVIDIA. Liên kết: https://github.com/Syllo/nvtop
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
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
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ã.
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-smi
vớ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ế 1
bằ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