我一直在尝试按照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
返回的速度如此之快?如何将整个程序考虑在内?
答案 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
强制监控周期。