Estoy tratando de monitorear un proceso que usa cuda y MPI, ¿hay alguna forma de que pueda hacer esto, algo como el comando "top" pero que también monitorea la GPU?
cuda
resource-monitor
natorro
fuente
fuente
Respuestas:
Encuentro gpustat muy útil. Se puede instalar con
pip install gpustat
e imprime un desglose del uso por procesos o usuarios.fuente
watch gpustat -cp
, puede ver las estadísticas continuamente, pero los colores se han ido. ¿Cómo arreglas eso? @Alleowatch -c
. @Roman Orac, Gracias, esto también funcionó para mí en redhat 8 cuando recibí un error debido a la importación de _curses en Python.watch -c gpustat -cp --color
watch -n 0.5 -c gpustat -cp --color
--watch
opción:gpustat -cp --watch
Para obtener información en tiempo real sobre los recursos utilizados, haga lo siguiente:
nvidia-smi -l 1
Esto hará un bucle y llamará a la vista cada segundo.
Si no desea mantener rastros anteriores de la llamada en bucle en el historial de la consola, también puede hacer:
watch -n0.1 nvidia-smi
Donde 0.1 es el intervalo de tiempo, en segundos.
fuente
No tengo conocimiento de nada que combine esta información, pero puede usar la
nvidia-smi
herramienta para obtener los datos sin procesar, así (gracias a @jmsu por el consejo sobre -l):fuente
watch -n 0.5 nvidia-smi
, que evita llenar su terminal con salidaDescargue e instale el controlador CUDA estable más reciente (4.2) desde aquí . En Linux, nVidia-smi 295.41 le ofrece justo lo que desea. utilizar
nvidia-smi
:EDITAR: En los últimos controladores de NVIDIA, este soporte se limita a las tarjetas Tesla.
fuente
para obtener más ayuda, siga
fuente
Solo usa
watch nvidia-smi
, generará el mensaje en un intervalo de 2 segundos de forma predeterminada.Por ejemplo, como la siguiente imagen:
También puede utilizar
watch -n 5 nvidia-smi
(-n intervalo de 5 por 5 s).fuente
Otro enfoque de monitoreo útil es utilizar
ps
procesos filtrados que consumen sus GPU. Yo uso mucho este:Eso mostrará todos los procesos que utilizan la GPU de nvidia y algunas estadísticas sobre ellos.
lsof ...
recupera una lista de todos los procesos que utilizan una GPU nvidia propiedad del usuario actual yps -p ...
muestra losps
resultados de esos procesos.ps f
muestra un formato agradable para las relaciones / jerarquías de procesos hijo / padre, y-o
especifica un formato personalizado. Eso es similar a simplemente hacerps u
pero agrega el ID del grupo de procesos y elimina algunos otros campos.Una ventaja de esto sobre
nvidia-smi
es que mostrará las bifurcaciones de proceso, así como los procesos principales que usan la GPU.Sin embargo, una desventaja es que se limita a los procesos propiedad del usuario que ejecuta el comando. Para abrirlo a todos los procesos propiedad de cualquier usuario, agrego un
sudo
antes dellsof
.Por último, lo combino con
watch
para obtener una actualización continua. Entonces, al final, se ve así:Que tiene salida como:
fuente
sudo
así:nvidia-smi --query-compute-apps=pid --format=csv,noheader
nvidia-smi
, no enumera todos los procesos, por lo que termina con su memoria utilizada por procesos que no figuran allí. Esta es la forma principal en la que puedo rastrear y eliminar esos procesos.pmem
dado porps
tenga en cuenta la memoria total de la GPU sino la de la CPU porqueps
no es compatible con "Nvidia GPU"Puede probar
nvtop
, que es similar a lahtop
herramienta ampliamente utilizada pero para las GPU NVIDIA. Aquí hay una captura de pantallanvtop
en acción.fuente
Puede que esto no sea elegante, pero puedes intentarlo
También probé el método de @Edric, que funciona, pero prefiero el diseño original de
nvidia-smi
.fuente
nvidia-smi -l 2
. O para evitar la salida repetida de la consola,watch -n 2 'nvidia-smi'
Si solo desea encontrar el proceso que se está ejecutando en gpu, simplemente puede usar el siguiente comando:
Para mí
nvidia-smi
yawatch -n 1 nvidia-smi
son suficientes en la mayoría de los casos. A vecesnvidia-smi
no muestra ningún proceso, pero la memoria de la gpu está agotada, así que necesito usar el comando anterior para encontrar los procesos.fuente
En Linux Mint, y probablemente en Ubuntu, puede probar "nvidia-smi --loop = 1"
fuente
Existe Prometheus GPU Metrics Exporter (PGME) que aprovecha el binario nvidai-smi. Puedes probar esto. Una vez que tenga el exportador en ejecución, puede acceder a él a través de http: // localhost: 9101 / metrics . Para dos GPU, el resultado de la muestra se ve así:
fuente
puede usar
nvidia-smi pmon -i 0
para monitorear todos los procesos en GPU 0. incluido el modo de cómputo, uso de sm, uso de memoria, uso del codificador, uso del decodificador.fuente
Puede utilizar las miradas del programa de monitoreo con su complemento de monitoreo de GPU :
sudo apt-get install -y python-pip; sudo pip install glances[gpu]
sudo glances
También supervisa la CPU, la E / S del disco, el espacio en disco, la red y algunas otras cosas:
fuente
Creé un archivo por lotes con el siguiente código en una máquina con Windows para monitorear cada segundo. Esto funciona para mi.
nvidia-smi exe generalmente se encuentra en "C: \ Archivos de programa \ NVIDIA Corporation" si desea ejecutar el comando solo una vez.
fuente