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