使用perf记录分析linux应用程序

时间:2017-04-17 19:59:23

标签: c++ linux performance perf

我一直在尝试按照this article on perf record在Linux中分析我的C ++应用程序。我的理解是我需要做的就是运行perf record program [program_options],其中program是程序可执行文件,[program options]是我想传递给程序的参数。但是,当我尝试像这样描述我的应用程序时:

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

perf几乎立即返回报告。但是,在没有perf的情况下运行./csvJsonTransducer -enable-AVX-deletion test.csv testout.json需要将近30秒,并且我希望perf监视我的程序以执行其整个执行,而不是立即返回。为什么perf返回的速度如此之快?如何将整个程序考虑在内?

1 个答案:

答案 0 :(得分:0)

您的命令似乎没问题。尝试更改/proc/sys/kernel/perf_event_paranoid处的偏执级别。将此参数设置为-1(以root身份)应解决权限问题:

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

强制监控周期。