Detaillierte Pro-Prozess-Profilerstellung

7

Ich suche nach einer Möglichkeit, einen einzelnen Prozess zu profilieren, einschließlich der Zeit, die für CPU, E / A, Speichernutzung im Laufe der Zeit und optional Systemaufrufe aufgewendet wird.

Ich weiß bereits, dass ich callgrindeinige grundlegende Profilierungsfunktionen anbieten kann, jedoch nur mit Debugging-Informationen und ohne die meisten anderen genannten Informationen.

Ich weiß, strace -cdass ich eine Zusammenfassung aller Systemaufrufe und ihrer erforderlichen CPU-Zeit bereitstellen kann.

Ich kenne mehrere IO-bezogene Tools wie (io)top, iostat, vmstataber alle von ihnen fehlen Statistiken über einen einzigen Prozess beschrieben. Es gibt auch /proc/$PID/ioeinige E / A-Statistiken zu einem einzelnen Prozess, die ich jedoch in festgelegten Intervallen lesen müsste, um E / A-Informationen im Laufe der Zeit zu sammeln.

Ich weiß pidstat, wie man CPU-Auslastung, E / A-Statistiken und Speicherauslastung bereitstellt, aber keine Systemaufrufe, nur mit hoher Granularität und nicht im Laufe der Zeit.

Man könnte natürlich mehrere der beschriebenen Werkzeuge kombinieren, um diese Informationen im Laufe der Zeit zu sammeln, aber es fehlt eine hohe Granularität und somit fehlen wichtige Informationen. Was ich suche, ist ein einziges Tool, das alle (oder zumindest die meisten) der genannten Informationen im Idealfall im Laufe der Zeit bereitstellt. Gibt es ein solches Tool?

scai
quelle
Abhängig von der Version psund den verfügbaren Optionen sind einige dieser Informationen dort verfügbar. Aber ... ja, ich würde mich über eine All-Inclusive-Leistungskonsole freuen, wie sie unter Windows 7 zu finden ist. Eine mögliche Hilfe ... Es gibt ein verdammt umfassendes Perf-Dienstprogramm, das ursprünglich für AIX (IBM Unix) namens NMON gedacht war und meines Erachtens für die Verwendung unter (einigen) Linux (s) portiert wurde. Viel Glück.
Shellter

Antworten:

3

In der Zwischenzeit habe ich mein eigenes Programm - audria - geschrieben, mit dem die Ressourcennutzung eines oder mehrerer Prozesse überwacht werden kann, einschließlich der aktuellen / durchschnittlichen CPU-Auslastung, der Auslastung des virtuellen Speichers, der E / A-Auslastung und anderer Informationen.

scai
quelle
1

Haben Sie versucht, remotetaskmonitor.com ? Sie können einen einzelnen Prozess oder Thread auswählen und dann die CPU-Auslastung für diesen Zeitraum erfassen. Es generiert für Sie die CPU- und Speichernutzungsdiagramme.

Eine andere Option könnte cpuprofiler.com sein . Damit werden Ihre CPU-Daten in der Cloud gespeichert und Sie können sich über einen Webbrowser anmelden, um die CPU-Berichte anzuzeigen.

Rosenwasser
quelle
1
Vielen Dank für Ihre Vorschläge. Remote Task Monitor scheint jedoch nur unter Windows zu laufen (obwohl behauptet wird, Linux-Geräte überwachen zu können). Und CPU Profiler überwacht nur einen sehr begrenzten Satz von Anwendungseigenschaften sowie den Nachteil, dass alle Daten in die Cloud hochgeladen werden müssen.
Scai
1

Oprofile , Pakete, die in den meisten Distributions-Repos verfügbar sind, bieten optionale prozess- oder systemweite Ereignis- und Prozessprofile mithilfe der Hardware-Leistungsindikatoren der CPU.

hellork
quelle