使用性能记录分析 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 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

Linux c++ 性能分析工具gprof

perf + 火焰图分析程序性能

Linux性能分析工具

[转]perf + 火焰图分析程序性能

Linux环境下Java应用性能分析定位-CPU使用篇

Linux程序性能分析和火焰图