我想使用硬件性能计数器来分析由 Linux 上的 JIT 生成的代码。据我所知,最常见的分析器是oprofile
和perf
。
如何集成 JIT 和 oprofile/perf?
我的 JIT 不是 oprofile 已经支持的 JAVA。(性能?)
例如,我们可以考虑 LLVM 的 JIT。我想要
- 查看 JIT-ted 代码中最热门的函数(它们的名称)
- 查看最热门函数的反汇编,并为每条指令分配性能计数器统计信息
要使用 perf 分析 JITed 代码,请下载、编译和安装perf-map-agent库,然后(对于 java 代码)将其添加
-agentpath:<path>/libperfmap.so
到命令行。
对于非 java 代码,只要生成了/tmp/perf-$pid.map
符号映射文件,perf 就会在生成性能报告时使用这些文件。
Brendan Gregg 有一篇博文,其中包含相关参考资料。