GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux – Wie analysiert man Profildaten aus „perf Record –a“ (systemweite Sammlung)?

Ich verwende perf von linux-2.6.36-gentoo-r4. Die Datei /proc/sys/kernel/perf_event_paranoid auf 0 gesetzt, also sollte es von dort keine Probleme geben.

Da eine lang laufende Anwendung, die ich profiliere, manchmal aus unbekannten Gründen abstürzt (ich konnte keine Informationen darüber finden, warum sie nicht mehr funktioniert), wandte ich mich der systemweiten Profilerstellung mit perf-Ereignissen zu.

Die fragliche Anwendung führt parallelisierte numerische Berechnungen durch und verwendet MPI (Message Passing Interface) für die Kommunikation. Vor dem Ausführen der Anwendung (mit mpirun ) Ich habe begonnen, systemweite Profildaten auf one aufzuzeichnen von Knoten wird es ausgeführt mit:

$ perf record -o perf.all.cycles,graph.data -g -e cycles -a &

Nachdem ich festgestellt habe, dass die Anwendung abgestürzt ist, habe ich perf beendet Aufgabe.

Es war gegangen

$ du -sh perf.all.cycles,graph.data 
14G     perf.all.cycles,graph.data

14 GB Daten. Leider perf report unterstützt das -a nicht wechseln.

Wie kann ich systemweite Profildaten von perf analysieren Werkzeug ?

Einfach perf report ausführen erzeugt keine nützliche Ausgabe:

$ perf report -i perf.all.cycles,graph.data
#
# (For a higher level overview, try: perf report --sort comm,dso)
#

Das ist die gesamte Ausgabe von 14 GB Profildaten …

Akzeptierte Antwort:

Wenn Sie die Berechnungen mit MPI verteilen, erhalten Sie mit einem MPI-fähigen Tool sinnvollere Ergebnisse:Bei einer verteilten Anwendung treten möglicherweise Probleme mit einem Lastungleichgewicht auf, bei dem ein MPI-Prozess im Leerlauf ist und darauf wartet, dass Daten von anderen Prozessen kommen . Wenn Sie zufällig genau diesen MPI-Prozess profilieren, ist Ihr Leistungsprofil völlig falsch.

Der erste Schritt besteht also normalerweise darin, das Kommunikations- und Lastausgleichsmuster Ihres Programms herauszufinden und eine Beispieleingabe zu identifizieren, die Ihnen die gewünschte Arbeitslast liefert (z. B. CPU-intensiv auf Rang 0). Zum Beispiel ist mpiP ein MPI Profiling-Tool, das einen sehr vollständigen Bericht über das Kommunikationsmuster erstellen kann, wie viel Zeit jeder MPI-Anruf gedauert hat usw.

Dann können Sie ein Code-Profiling-Tool auf einem oder mehreren ausgewählten MPI-Rängen ausführen. Wie auch immer, mit perf auf einem einzelnen MPI-Rang ist wahrscheinlich keine gute Idee, da seine Messungen auch die Leistung des MPI-Bibliothekscodes enthalten, was wahrscheinlich nicht das ist, wonach Sie suchen.


Linux
  1. So verhindern und wiederherstellen Sie versehentliches Löschen von Dateien in Linux

  2. Wie man SSH unter Linux von Android aus macht

  3. Linux – Wie führe ich einen Bootloader von Linux aus?

  4. Wie nimmt man Audio mit ffmpeg unter Linux auf?

  5. So generieren Sie Netflow-Daten unter Linux

So greifen Sie von Windows 10 auf Linux-Partitionen zu

So zeigen Sie Daten aus einer Textdatei in Linux an

So entfernen Sie einen Befehl aus dem Verlauf in Linux

So installieren Sie Software von der Quelle in Linux

So entfernen Sie (^M) Zeichen aus einer Datei in Linux

So erstellen Sie einen Linux-Kernel von Grund auf neu