J'essaie de surveiller un processus qui utilise cuda et MPI, y a-t-il un moyen de le faire, quelque chose comme la commande "top" mais qui surveille aussi le GPU?
cuda
resource-monitor
natorro
la source
la source
Réponses:
Je trouve gpustat très utile. In peut être installé avec
pip install gpustat
et imprime la répartition de l'utilisation par processus ou utilisateurs.la source
watch gpustat -cp
vous pouvez voir les statistiques en continu mais les couleurs ont disparu. Comment résolvez-vous cela? @Alleowatch -c
. @Roman Orac, Merci, cela a également fonctionné pour moi sur redhat 8 lorsque j'obtenais une erreur en raison de l'importation de _curses en python.watch -c gpustat -cp --color
watch -n 0.5 -c gpustat -cp --color
--watch
option:gpustat -cp --watch
Pour obtenir des informations en temps réel sur les ressources utilisées, procédez comme suit:
nvidia-smi -l 1
Cela va boucler et appeler la vue à chaque seconde.
Si vous ne souhaitez pas conserver les traces passées de l'appel en boucle dans l'historique de la console, vous pouvez également faire:
watch -n0.1 nvidia-smi
Où 0,1 est l'intervalle de temps, en secondes.
la source
Je ne suis au courant de rien qui combine ces informations, mais vous pouvez utiliser l'
nvidia-smi
outil pour obtenir les données brutes, comme ceci (merci à @jmsu pour le conseil sur -l):la source
watch -n 0.5 nvidia-smi
, ce qui évite de remplir votre terminal de sortieTéléchargez et installez le dernier pilote CUDA stable (4.2) à partir d' ici . Sous Linux, nVidia-smi 295.41 vous donne exactement ce que vous voulez. utiliser
nvidia-smi
:EDIT: dans les derniers pilotes NVIDIA, cette prise en charge est limitée aux cartes Tesla.
la source
pour obtenir de l'aide, veuillez suivre
la source
Il suffit de l'utiliser
watch nvidia-smi
, il affichera le message par intervalle de 2 s par défaut.Par exemple, comme l'image ci-dessous:
Vous pouvez également utiliser
watch -n 5 nvidia-smi
(-n intervalle de 5 par 5 s).la source
Une autre approche de surveillance utile consiste à utiliser des
ps
processus filtrés qui consomment vos GPU. J'utilise beaucoup celui-ci:Cela montrera tous les processus utilisant le GPU nvidia et quelques statistiques à leur sujet.
lsof ...
récupère une liste de tous les processus utilisant un GPU nvidia appartenant à l'utilisateur actuel etps -p ...
affiche lesps
résultats pour ces processus.ps f
montre une mise en forme agréable pour les relations / hiérarchies de processus enfant / parent, et-o
spécifie une mise en forme personnalisée. Celui-ci est similaire à ce que vous faites,ps u
mais ajoute l'ID du groupe de processus et supprime certains autres champs.L'un des avantages de cela
nvidia-smi
est qu'il affichera les fourchettes de processus ainsi que les principaux processus qui utilisent le GPU.Un inconvénient, cependant, est qu'il est limité aux processus appartenant à l'utilisateur qui exécute la commande. Pour l'ouvrir à tous les processus appartenant à n'importe quel utilisateur, j'ajoute un
sudo
avant lelsof
.Enfin, je le combine avec
watch
pour obtenir une mise à jour continue. Donc, au final, ça ressemble à:Qui a une sortie comme:
la source
sudo
comme ceci:nvidia-smi --query-compute-apps=pid --format=csv,noheader
nvidia-smi
ne répertorie pas tous les processus, vous vous retrouvez donc avec votre mémoire utilisée par des processus qui n'y figurent pas. C'est la principale façon dont je peux suivre et tuer ces processus.pmem
donné parps
prenne en compte la mémoire totale du GPU mais celle du CPU carps
n'est pas conscient de "Nvidia GPU"Vous pouvez essayer
nvtop
, qui est similaire à l'htop
outil largement utilisé mais pour les GPU NVIDIA. En voici une capture d'écrannvtop
en action.la source
Ce n'est peut-être pas élégant, mais vous pouvez essayer
J'ai également essayé la méthode de @Edric, qui fonctionne, mais je préfère la mise en page originale de
nvidia-smi
.la source
nvidia-smi -l 2
. Ou pour empêcher la sortie répétée de la console,watch -n 2 'nvidia-smi'
Si vous souhaitez simplement trouver le processus qui s'exécute sur gpu, vous pouvez simplement utiliser la commande suivante:
Pour moi
nvidia-smi
etwatch -n 1 nvidia-smi
suffisent dans la plupart des cas. Parfoisnvidia-smi
, aucun processus ne s'affiche mais la mémoire gpu est épuisée, je dois donc utiliser la commande ci-dessus pour trouver les processus.la source
Dans Linux Mint, et très probablement Ubuntu, vous pouvez essayer "nvidia-smi --loop = 1"
la source
Il existe Prometheus GPU Metrics Exporter (PGME) qui exploite le binaire nvidai-smi. Vous pouvez essayer ceci. Une fois l'exportateur en cours d'exécution, vous pouvez y accéder via http: // localhost: 9101 / metrics . Pour deux GPU, l'exemple de résultat ressemble à ceci:
la source
vous pouvez utiliser
nvidia-smi pmon -i 0
pour surveiller chaque processus dans le GPU 0. y compris le mode de calcul, l'utilisation sm, l'utilisation de la mémoire, l'utilisation de l'encodeur, l'utilisation du décodeur.la source
Vous pouvez utiliser le programme de surveillance glances avec son plug-in de surveillance GPU :
sudo apt-get install -y python-pip; sudo pip install glances[gpu]
sudo glances
Il surveille également le processeur, les E / S disque, l'espace disque, le réseau et quelques autres choses:
la source
J'ai créé un fichier de commandes avec le code suivant dans une machine Windows pour surveiller chaque seconde. Ça marche pour moi.
nvidia-smi exe se trouve généralement dans «C: \ Program Files \ NVIDIA Corporation» si vous souhaitez exécuter la commande une seule fois.
la source