读书人

应用perf 分析优化java应用

发布时间: 2012-09-28 00:03:35 作者: rapoo

使用perf 分析优化java应用。

要求kernel版本在2.6.32及以上,jdk为taobao-jdk 6u32及以上

2.??????运行实例

在运行java时,需要添加两个选项-agentpath:/xxx/libjvmti_perf.so.0.0 -XX:+UseOprofile, agentpath是修改后perf工具中agent库。

然后sudo perf top即可看到实时的分析结果数据。

以gcbench为例,运行结果如下。

-------------------------------------------

?? PerfTop:???1083 irqs/sec? kernel: 8.8%? exact:?0.0% [1000Hz cycles],? (all, 16CPUs)

-------------------------------------------

?

???????????? samples? pcnt function????????????????????? DSO

???????????? _______ __________________________________ ______________________

?

???????????? 4102.00 38.1% LGCBench;Populate(ILNode;)V?? hs-vm-3612-1 (deleted)

???????????? 3562.00 33.1% LGCBench;MakeTree(I)LNode;??? hs-vm-3612-1 (deleted)

????????????? 880.00? 8.2% PSMarkSweepDecorator::precomp libjvm.so

????????????? 716.00? 6.7% instanceKlass::oop_adjust_poi libjvm.so

????????????? 487.00? 4.5% instanceKlass::oop_follow_con libjvm.so

????????????? 208.00? 1.9% intel_idle??????????????????? [kernel.kallsyms]

??????????? ??182.00?1.7% PSMarkSweepDecorator::adjust_ libjvm.so

????????????? 161.00? 1.5% MarkSweep::follow_stack()???? libjvm.so

????????????? 119.00? 1.1% PSMarkSweepDecorator::compact libjvm.so

?????????????? 55.00? 0.5% __GI_memmove????????????????? /lib64/libc-2.5.so

?????????????? 43.00? 0.4% CardTableExtension::scavenge_ libjvm.so

?????????????? 42.00? 0.4% SpinPause???????????????????? libjvm.so

?????????????? 31.00? 0.3% _wordcopy_fwd_aligned???????? /lib64/libc-2.5.so

?????????????? 27.00? 0.3% clear_page_c????????????????? [kernel.kallsyms]

??????????????23.00? 0.2%StealTask::do_it(GCTaskManage libjvm.so

通过结果我们可以看到,里面既有java方法,又有c的方法。排在前两位的就是java方法,这个java工程师比较喜欢了,可以从这里入手尝试去优化java应用。

?

3.??????讨论

?????? 目前来看,tperf可以帮助java工程师解决一些问题,但是tperf本身也存在一些问题,目前对top的支持较好,对record的支持还是存在问题的,我就用record搞挂过几次机器。期待后续我们团队大牛对tperf的改进吧。

读书人网 >开源软件

热点推荐