Perf
是用来进行软件性能分析的工具。它随
Linux
内核代码一同发布和维护,由内核社区维护和发展。
这里推荐两篇介绍
perf
的文章
英文原版的介绍
https://perf.wiki.kernel.org/index.php/Tutorial
中文的使用介绍
http://www.ibm.com/developerworks/cn/linux/l-cn-perf1/index.html
http://www.ibm.com/developerworks/cn/linux/l-cn-perf2/index.html
以上的介绍,都是分析直接运行在操作系统层面的应用,对于
java
这类运行在虚拟机里的应用,
perf
再强大也无能为力。不过幸运的是,我们团队的高人对
perf
打了
patch
,为了区别于perf,
我们
先称它为
tperf
吧,对
jdk
也打了
patch
,这样就能够使用
tperf
来分析
java
的应用了。下面介绍一下如果用
tPerf
分析
java
应用。
要求
kernel
版本在
2.6.32
及以上,
jdk
为
taobao-jdk 6u32
及以上
在运行
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, 16
CPUs)
-------------------------------------------------------------------------------
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
应用。
目前来看,
tperf
可以帮助
java
工程师解决一些问题,但是
tperf
本身也存在一些问题,目前对
top
的支持较好,对
record
的支持还是存在问题的,我就用
record
搞挂过几次机器。期待后续我们团队大牛对
tperf
的改进吧。
分享到:
相关推荐
使用Linux perf分析应用程序性能 - Jinyao 1
perf-tooling, 性能分析监视和优化工具列表 性能工具 欢迎使用高性能工具。性能工具是一个共享资源,用来跟踪新的和现有的性能工具。捐赠添加新工具你想添加一个工具? Great !创建一个问题,我们将把它添加到 perf...
Linux高级系统级性能分析工具perf教程 Linux高级系统级性能分析工具perf教程
perf的使用方法介绍
rack-perftools_profiler, 使用 perftools.rb 配置 rack 兼容应用程序的中间件 Rack::PerftoolsProfiler使用 perftools.rb 配置机架兼容应用的中间件快速启动假定应用程序使用 Rails 3 ( 你已经在下一节中安装了需求...
perf4j perf4j perf4j perf4j perf4j
自己写的csapp上的性能优化实验的kernels.c。
如果使用googler开发的google-perftools优化Nginx和MySQL的内存管理,性能将会有一定程度的提升。特别是对高并发下的服务器,效果更明显
google-perftools 简介 google-perftools 是一款针对 C/C++ 程序的性能分析工具,它...本文介绍了一个 Linux 平台上的性能剖析工具 google-perftools,并结合实例向读者展示了如何使用该工具配置、使用及分析性能瓶颈。
非常强大的Linux系统性能检测工具。非常强大的Linux系统性能检测工具。
perf 性能分析工具
中科大程序设计与计算机系统,实验4,代码优化,亲测可用,版本优化相当高
用于优化应用程序性能的最佳实践和资源的集合
基于Linux Perf和ECharts的可视化系统噪声分析工具.pdf
perflab——代码性能优化,兼顾算法原型的理解,学会以底层的角度对抽象计算作最大限度的优化。
perf callgraph文档
ubuntu20.04离线安装perf3
一个Java代理生成/tmp/perf-<pid>.map只是在实时(JIT)文件与使用-compiled方法。 建造 确保将JAVA_HOME配置为指向JDK。 您需要cmake> = 2.8.6(请参阅 )。 然后在命令行上运行以下命令: cmake . make # will ...