Respuestas:
Para las GPU Nvidia, existe una herramienta nvidia-smi
que puede mostrar el uso de la memoria, la utilización de la GPU y la temperatura de la GPU. También hay una lista de procesos informáticos y algunas opciones más, pero mi tarjeta gráfica (GeForce 9600 GT) no es totalmente compatible.
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
, mantendrá la salida actualizada sin llenar su terminal con salida.
watch -d -n 0.5 nvidia-smi
Será aún mejor.
-d
bandera
man watch
nos dice que la -d
bandera resalta las diferencias entre los resultados, por lo que puede ayudar a resaltar qué métricas están cambiando con el tiempo.
Para Linux, el uso nvidia-smi -l 1
le proporcionará continuamente la información de uso de la GPU, con un intervalo de actualización de 1 segundo.
watch -n 1 nvidia-smi
para obtener actualizaciones continuas sin llenar el terminal con salida
Recientemente he escrito una sencilla utilidad de línea de comandos llamada gpustat
(que es una envoltura de nvidia-smi
): eche un vistazo a https://github.com/wookayin/gpustat .
Para Intel GPU existe la intel-gpu-tools
de http://intellinuxgraphics.org/ proyecto, que trae el comando intel_gpu_top
(entre otras cosas). Es similar a top
y htop
, pero específicamente para la 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
no funciona en algunas máquinas Linux (devuelve N / A para muchas propiedades). En su nvidia-settings
lugar, puede usar (esto también es lo que mat kelcey usó en su script de python).
nvidia-settings -q GPUUtilization -q useddedicatedgpumemory
También puedes usar:
watch -n0.1 "nvidia-settings -q GPUUtilization -q useddedicatedgpumemory"
para monitoreo continuo.
nvidia-settings -q all
para ver qué otros parámetros puede monitorear. Estoy monitoreando GPUCurrentProcessorClockFreqs
y GPUCurrentClockFreqs
.
nvidia-settings -q [gpu:0]/UsedDedicatedGPUMemory -t
Para Linux, uso esta herramienta similar a HTOP que escribí yo mismo. Supervisa y ofrece una visión general de la temperatura de la GPU, así como el uso del núcleo / VRAM / PCI-E y el bus de memoria. Sin embargo, no supervisa lo que se ejecuta en la GPU.
nvidia-settings
requiere un X11 en ejecución, que no siempre es el caso.
Tengo una tarjeta de video GeForce 1060 GTX y descubrí que el siguiente comando me da información sobre la utilización de la tarjeta, la temperatura, la velocidad del ventilador y el consumo de energía:
$ nvidia-smi --format=csv --query-gpu=power.draw,utilization.gpu,fan.speed,temperature.gpu
Puede ver la lista de todas las opciones de consulta con:
$ nvidia-smi --help-query-gpu
memory.used
o ( memory.free
) también.
La última versión de atMonitor para admitir funciones relacionadas con GPU es atMonitor 2.7.1.
- y el enlace a 2.7.1 ofrece 2.7b.
Para la versión más reciente de la aplicación, atMonitor - FAQ explica:
Para hacer que atMonitor sea compatible con MacOS 10.8, hemos eliminado todas las funciones relacionadas con la GPU.
Experimenté con 2.7b aka 2.7.1 en Mountain Lion con un MacBookPro5,2 con NVIDIA GeForce 9600M GT. La aplicación se ejecutó durante unos segundos antes de salir, mostró temperatura pero no uso:
He finalizado procesos (probablemente muertos o bloqueados) y sigo usando recursos, pero no figuran en la lista nvidia-smi
. Por lo general, estos procesos solo tomaban memoria gpu.
Si cree que tiene un proceso que utiliza recursos en una GPU y no se muestra en él nvidia-smi
, puede intentar ejecutar este comando para verificar dos veces. Le mostrará qué procesos están usando sus GPU.
sudo fuser -v /dev/nvidia*
Esto funciona en EL7, Ubuntu u otras distribuciones pueden tener sus dispositivos nvidia listados bajo otro nombre / ubicación.
Glances tiene un complemento que muestra la utilización de GPU y el uso de memoria.
http://glances.readthedocs.io/en/stable/aoa/gpu.html
Utiliza la biblioteca nvidia-ml-py3: https://pypi.python.org/pypi/nvidia-ml-py3
para nvidia en linux utilizo el siguiente script de python que usa un retraso opcional y repito como iostat y 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}
Puede usar nvtop
, es similar htop
pero para las GPU NVIDIA. Enlace: https://github.com/Syllo/nvtop
La siguiente función agrega información como PID, nombre de usuario, uso de CPU, uso de memoria, uso de memoria de GPU, argumentos de programa y tiempo de ejecución de procesos que se ejecutan en la GPU, a la salida de 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
}
Salida de ejemplo:
$ 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
Este script es más legible y está diseñado para modificaciones y extensiones fáciles.
Puede reemplazar gnome-terminal con su programa de ventana de terminal favorito.
#! /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
#
Licencia: GNU GPLv2, TranSeed Research
Puedes usar
nvidia-smi pmon -i 0
para monitorear cada proceso en la GPU 0. incluyendo el modo de cómputo / gráfico, uso de sm, uso de memoria, uso de codificador, uso de decodificador.
No he visto que en las respuestas disponibles (excepto tal vez en un comentario), así que pensé que me gustaría añadir que se puede obtener un refrescante agradable nvidia-smi
con watch
. Esto actualiza la pantalla con cada actualización en lugar de desplazarse constantemente.
watch -n 1 nvidia-smi
para actualizaciones de un segundo intervalo. Reemplace el 1
con lo que quiera, incluidos los segundos fraccionarios:
watch -n 5 nvidia-smi
watch -n 0.1 nvidia-smi