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
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
banderaman 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.