使用性能记录分析 linux 应用程序
Posted
技术标签:
【中文标题】使用性能记录分析 linux 应用程序【英文标题】:profiling linux application with perf record 【发布时间】:2017-04-17 19:59:23 【问题描述】:我一直在尝试通过关注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
几乎立即返回报告。但是,在没有性能的情况下运行./csvJsonTransducer -enable-AVX-deletion test.csv testout.json
需要将近 30 秒,我希望perf
监视我的程序的整个执行过程,而不是立即返回。为什么perf
这么快就回来了?我怎样才能让它考虑到我的程序的整个运行?
【问题讨论】:
【参考方案1】:您的命令似乎没问题。尝试在/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
强制监控周期。
【讨论】:
以上是关于使用性能记录分析 linux 应用程序的主要内容,如果未能解决你的问题,请参考以下文章