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
的改进吧。
分享到:
相关推荐
Perf4J是一款轻量级的Java性能度量和监控工具,主要设计用于提供应用程序的性能剖析和计时。这个工具允许开发者轻松地在代码中插入性能计时器,然后收集和报告这些...通过合理的使用,可以显著提高Java应用的运行效率。
标题“perf tools jre2”指的是使用perf性能分析工具针对Java运行环境(JRE)的第二个版本进行优化和调试的相关内容。perf是Linux系统中一个强大的性能分析工具,它可以用来剖析程序的性能瓶颈,帮助开发者优化代码...
Perf4j的引入可以有效地帮助我们跟踪和优化应用程序的性能,特别是在大型系统中,对于定位性能瓶颈具有重要意义。 在Logback中整合Perf4j,主要涉及以下几个关键组件: 1. **Slf4...
综上所述,"perf tools p0"是一个针对性能优化的工具集,可能包含了用于系统性能分析、数据库日志记录、Java运行环境、插件扩展、配置管理以及可能与Eclipse相关的组件。这些工具可以帮助开发者和系统管理员识别性能...
标题“perf tools jre1”和描述中的关键词“perf”暗示了这可能与Java...在实际使用中,配合Linux的perf工具,可以对Java应用程序进行硬件级别的性能分析,获取CPU、内存等资源的使用情况,从而提升软件的运行效率。
"perf tools p3" 是一个专注于性能分析的工具集,主要应用于Linux系统,它提供了丰富的功能来帮助开发者和系统管理员深入理解程序...用户可以通过这个工具,深入理解Java应用程序的性能表现,优化代码,提升系统效率。
通过集成各种日志框架,如 Log4J 和 Commons Logging,Perf4J 可以将性能数据记录到日志文件中,以便后续分析和优化。 1. **Perf4J 概要** - Perf4J 主要用于衡量代码执行的效率,通过使用 `StopWatch` 对象来追踪...
例如,`jps` 可以显示运行的Java应用程序的进程ID。 3. **`top` 命令**: - `top` 提供了一个实时的视图,显示了系统资源的使用情况,包括CPU和内存。通过`top`,你可以看到哪个Java进程占用了最多的CPU。 4. **`...
总的来说,"perf:多实例&性能相关模块"涵盖了Java开发中关于性能优化和多实例管理的重要知识点,涉及并发编程、内存管理、工具使用等多个层面,对于提升Java应用的性能和可扩展性具有重要意义。开发者需要深入了解...
理解这些区域的工作原理和垃圾收集机制,如新生代、老年代、Minor GC和Full GC,是优化Java应用的基础。 2. **垃圾收集器**:Java提供了多种垃圾收集器,如Serial、Parallel、CMS(Concurrent Mark Sweep)和G1...
使用性能分析工具(如gprof、perf等)监控内存使用情况,找出内存瓶颈,优化程序设计。 十、编程实践建议 1. 尽量减少全局变量和大对象的使用,避免长时间占用内存。 2. 及时释放不再使用的内存,避免内存泄漏。 3....
《JMH性能测试详解:深度探索Hibernate项目的微基准实验》 在Java开发领域,性能测试是确保代码高效...通过深入理解JMH和其在Hibernate项目中的应用,我们可以更好地提升Java应用的运行效率,从而提高整体系统的性能。
- **应用场景**:适用于快速识别瓶颈和优化系统配置。 - **示例**:使用性能顾问分析日志文件,获取具体的调优建议。 ### 总结 通过以上分析,我们可以看出"WAS_Perf_Tunning_sw5561show.pdf"是一份专注于IBM ...
WebSphere是IBM提供的一个企业级Java应用服务器,用于运行和管理Java应用程序和服务。当WAS的CPU使用率持续高位时,可能会影响系统的稳定性和效率,因此需要进行深入分析找出问题根源。 描述中提到的“WAS CPU高...
本文主要探讨了在Java中几种不同的字符串拼接方法的性能差异,包括使用操作符`+`、`String.concat()`、`StringBuffer.append()`和`StringBuilder.append()`。以下是对这些方法的详细分析: 1. **字符串拼接操作符 ...
根据提供的文件信息,以下是从标题、描述、标签以及部分内容中提取和整理的相关知识点: ### 关于sonar-runner-dist-2.4 ...以上工具各有特色,可以根据具体需求选择合适的工具来进行 Java 应用程序的性能分析和优化。
在本指导演练中,我们将深入探讨Java Web服务的性能方面,旨在帮助开发者和运维人员优化他们的应用程序,提高系统效率和响应速度。Java Web服务通常基于Servlet、JSP、Spring MVC等框架,它们在处理HTTP请求、数据...
8. **垃圾收集分析**: Java的自动内存管理依赖于垃圾收集器,分析其行为对优化内存使用和减少延迟至关重要。 9. **代码覆盖率工具**: 为了确保性能测试覆盖了所有关键路径,开发者可能会使用JaCoCo或Cobertura等...