Ich versuche, einen Prozess zu überwachen, der Cuda und MPI verwendet. Gibt es eine Möglichkeit, dies zu tun, etwa den Befehl "top", der aber auch die GPU überwacht?
cuda
resource-monitor
natorro
quelle
quelle
Antworten:
Ich finde gpustat sehr nützlich. In kann mit installiert
pip install gpustat
werden und druckt eine Aufschlüsselung der Nutzung durch Prozesse oder Benutzer.quelle
watch gpustat -cp
, können Sie Statistiken kontinuierlich sehen, aber die Farben sind weg. Wie behebt man das? @Alleowatch -c
. @ Roman Orac, danke, das hat auch bei Redhat 8 funktioniert, als ich beim Importieren von _curses in Python einen Fehler bekam.watch -c gpustat -cp --color
watch -n 0.5 -c gpustat -cp --color
--watch
Option:gpustat -cp --watch
Gehen Sie folgendermaßen vor, um in Echtzeit einen Einblick in die verwendeten Ressourcen zu erhalten:
nvidia-smi -l 1
Dadurch wird die Ansicht jede Sekunde wiederholt und aufgerufen.
Wenn Sie vergangene Spuren des geloopten Anrufs im Konsolenverlauf nicht beibehalten möchten, können Sie außerdem Folgendes tun:
watch -n0.1 nvidia-smi
Wobei 0,1 das Zeitintervall in Sekunden ist.
quelle
Mir ist nichts bekannt, das diese Informationen kombiniert, aber Sie können das
nvidia-smi
Tool verwenden, um die Rohdaten wie folgt abzurufen (danke an @jmsu für den Tipp zu -l):quelle
watch -n 0.5 nvidia-smi
, was vermeidet, Ihr Terminal mit Ausgabe zuDownloaden und installieren Sie neueste stabile CUDA - Treiber (4.2) von hier . Unter Linux bietet Ihnen nVidia-smi 295.41 genau das, was Sie wollen. Verwenden Sie
nvidia-smi
:BEARBEITEN: In den neuesten NVIDIA-Treibern ist diese Unterstützung auf Tesla-Karten beschränkt.
quelle
Für weitere Hilfe folgen Sie bitte
quelle
Verwenden
watch nvidia-smi
Sie einfach , es wird die Nachricht standardmäßig im 2-Sekunden-Intervall ausgegeben.Zum Beispiel wie im folgenden Bild:
Sie können auch
watch -n 5 nvidia-smi
(-n 5 x 5s Intervall) verwenden.quelle
Ein weiterer nützlicher Überwachungsansatz ist die Verwendung
ps
gefilterter Prozesse, die Ihre GPUs verbrauchen. Ich benutze dieses oft:Das zeigt alle nvidia GPU-nutzenden Prozesse und einige Statistiken darüber.
lsof ...
Ruft eine Liste aller Prozesse mit einer NVIDIA-GPU ab, die dem aktuellen Benutzer gehört, undps -p ...
zeigt dieps
Ergebnisse für diese Prozesse an.ps f
Zeigt eine schöne Formatierung für untergeordnete / übergeordnete Prozessbeziehungen / -hierarchien an und-o
gibt eine benutzerdefinierte Formatierung an. Dies ähnelt demps u
einfachen Vorgang, fügt jedoch die Prozessgruppen-ID hinzu und entfernt einige andere Felder.Ein Vorteil davon
nvidia-smi
ist, dass sowohl Prozessgabeln als auch Hauptprozesse angezeigt werden, die die GPU verwenden.Ein Nachteil ist jedoch, dass es auf Prozesse beschränkt ist, die dem Benutzer gehören, der den Befehl ausführt. Um es für alle Prozesse zu öffnen, die einem Benutzer gehören, füge ich ein
sudo
vor dem hinzulsof
.Zuletzt kombiniere ich es mit
watch
, um ein kontinuierliches Update zu erhalten. Am Ende sieht es also so aus:Welches hat Ausgabe wie:
quelle
sudo
dies zu tun :nvidia-smi --query-compute-apps=pid --format=csv,noheader
nvidia-smi
nicht alle Prozesse aufgelistet, sodass Ihr Speicher von Prozessen verwendet wird, die dort nicht aufgeführt sind. Dies ist die Hauptmethode, mit der ich diese Prozesse verfolgen und beenden kann.pmem
gegeben vonps
berücksichtigt den Gesamtspeicher der GPU, sondern den der CPU, weilps
nicht "Nvidia GPU" bewusst istSie können es versuchen
nvtop
, das dem weit verbreitetenhtop
Tool ähnelt, jedoch für NVIDIA-GPUs. Hier ist ein Screenshotnvtop
davon in Aktion.quelle
Dies mag nicht elegant sein, aber Sie können es versuchen
Ich habe auch die Methode von @Edric ausprobiert, die funktioniert, aber ich bevorzuge das ursprüngliche Layout von
nvidia-smi
.quelle
nvidia-smi -l 2
. Oder um wiederholte Konsolenausgabe zu verhindern,watch -n 2 'nvidia-smi'
Wenn Sie nur den Prozess suchen möchten, der auf GPU ausgeführt wird, können Sie einfach den folgenden Befehl verwenden:
Für mich
nvidia-smi
undwatch -n 1 nvidia-smi
sind in den meisten Fällen genug. Manchmalnvidia-smi
wird kein Prozess angezeigt, aber der GPU-Speicher ist aufgebraucht, sodass ich den obigen Befehl verwenden muss, um die Prozesse zu finden.quelle
In Linux Mint und höchstwahrscheinlich in Ubuntu können Sie "nvidia-smi --loop = 1" ausprobieren.
quelle
Es gibt Prometheus GPU Metrics Exporter (PGME) , der die nvidai-smi-Binärdatei nutzt. Sie können dies ausprobieren. Sobald der Exporter ausgeführt wird, können Sie über http: // localhost: 9101 /metrics darauf zugreifen . Für zwei GPUs sieht das Beispielergebnis folgendermaßen aus:
quelle
Sie können
nvidia-smi pmon -i 0
jeden Prozess in GPU 0 überwachen, einschließlich Rechenmodus, SMS-Nutzung, Speichernutzung, Encoder-Nutzung und Decoder-Nutzung.quelle
Sie können die Monitoring - Programm verwenden Blicke mit seiner GPU Monitoring Plug-in:
sudo apt-get install -y python-pip; sudo pip install glances[gpu]
sudo glances
Es überwacht auch die CPU, die Festplatten-E / A, den Speicherplatz, das Netzwerk und einige andere Dinge:
quelle
Ich habe eine Batchdatei mit dem folgenden Code auf einem Windows-Computer erstellt, um jede Sekunde zu überwachen. Für mich geht das.
nvidia-smi exe befindet sich normalerweise unter "C: \ Programme \ NVIDIA Corporation", wenn Sie den Befehl nur einmal ausführen möchten.
quelle