2017-04-17 2 views
0

Ich habe versucht, meine C++ - Anwendung in Linux zu profilieren, indem Sie this article on perf record folgen. Mein Verständnis ist alles, was ich tun muss, ist perf record program [program_options] ausführen, wo program ist das Programm ausführbar und [program options] sind die Argumente, die ich an das Programm übergeben möchte. Allerdings, wenn ich versuche, meine Anwendung wie diese zum Profil:Profiling Linux-Anwendung mit Perf-Datensatz

perf record ./csvJsonTransducer -enable-AVX-deletion test.csv testout.json

perf kehrt fast sofort mit einem Bericht. Es dauert fast 30 Sekunden, um ./csvJsonTransducer -enable-AVX-deletion test.csv testout.json ohne perf zu laufen, und ich will perf, um mein Programm für die Gesamtheit seiner Ausführung zu überwachen, nicht sofort zurückzukehren. Warum kehrt perf so schnell zurück? Wie kann ich den gesamten Ablauf meines Programms berücksichtigen?

Antwort

0

Ihre Befehle scheinen in Ordnung zu sein. Versuchen Sie, die paranoide Ebene unter /proc/sys/kernel/perf_event_paranoid zu ändern. Wenn dieser Parameter auf -1 (als root) sollte Berechtigungsprobleme lösen:

echo "-1" > /proc/sys/kernel/perf_event_paranoid 

Sie können auch die Veranstaltung zu setzen versuchen, die Sie mit perf record überwachen möchten. Das Standardereignis ist cycles (falls unterstützt). Überprüfen Sie man perf-list.

Sie den Befehl:

perf record -e cycles ./csvJsonTransducer -enable-AVX-deletion test.csv testout.json 

die Überwachung von Zyklen zu erzwingen.