2017-04-17 65 views
0

我一直試圖通過以下this article on perf record在Linux中剖析我的C++應用程序。我的理解是我需要做的是運行perf record program [program_options],其中program是可執行程序,[program options]是我想傳遞給程序的參數。然而,當我試圖分析我的應用程序是這樣的:分析與perf記錄的linux應用程序

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

perf回報幾乎立即報告。儘管如此,運行./csvJsonTransducer -enable-AVX-deletion test.csv testout.json需要將近30秒的時間,但我希望perf能夠監視我的程序的整個執行過程,而不是立即返回。爲什麼perf這麼快回來?我如何才能將整個計劃的運行考慮在內?

回答

0

你的命令似乎沒問題。嘗試改變偏執級別/proc/sys/kernel/perf_event_paranoid。這個參數設置爲1(根)要解決權限問題:

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

您也可以嘗試設置要與perf record監控的事件。默認事件是cycles(如果支持)。檢查man perf-list

嘗試該命令:

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

強制循環的監控。