2
我使用Ubuntu的12.04 PERF工具Hadoop的Java代码符号进行解码来分析的Hadoop的2.4.1地图系统级性能/做减少作业:如何让PERF到
perf record -ag -F 100 sleep 60
我的目标是确定哪些进程/例程正在使用cpu并确定优化的候选者。
内核符号被正确解码,但java代码不正确。 Perf报告看起来是这样的:
Samples: 39K of event 'cycles', Event count (approx.): 11326629675790000f9f0 â
+ 10.64% java perf-9201.map [.] 0x00007eff6c188127
+ 10.57% java perf-8988.map [.] 0x00007f71ac7b9a29
+ 9.91% java perf-9077.map [.] 0x00007fa9e92073e0
+ 9.77% java perf-9025.map [.] 0x00007f849cdf41a9
+ 9.26% java perf-8747.map [.] 0x00007f078c6bda82
+ 7.85% java perf-31343.map [.] 0x00007f6671041cb4
+ 5.81% java perf-8835.map [.] 0x00007f5df0d5afc4
+ 5.78% java liblzo2.so.2.0.0 [.] lzo1x_decompress
+ 2.61% java [kernel.kallsyms] [k] copy_user_generic_string
+ 1.58% java libc-2.15.so [.] 0x000000000008ce40
+ 0.93% java perf-9677.map [.] 0x00007f7c81012887
+ 0.86% swapper [kernel.kallsyms] [k] intel_idle
+ 0.69% java libjvm.so [.] SpinPause
所以问题是,我该如何获得perf来解码Java代码的符号?
要看什么JVM供应商你。如果它是oracle,如果Oracle想给你source/dbg符号,你可以发送一封不错的邮件。 – 2014-09-25 12:50:07
是的,它是oracle。猜猜我可能需要切换到openjdk?我的印象是,使用他们的版本会更好,但现在我正在重新考虑...... – seacoder 2014-09-25 13:04:54
为什么你想看看JVM?你认为瓶颈在java解释器中吗? – 2014-09-25 13:14:42