经验分享:CoreDump文件是如何能分析出哪个函数占用CPU高的过程分享

利用CoreDump文件分析哪个函数占用CPU多。听起来有些离奇,CoreDump是系统出现问题时自动产生的CoreDump文件,可以分析出现问题时候的函数调用栈,怎么就可以分析哪个函数占用CPU多呢?

思路:人为产生CoreDump文件(例如:kill -3那个占用CPU最多的Java线程),分析那个时刻,线程执行到了哪个函数。然后,隔一段时间产生一次CoreDump文件(因为CoreDump文件很大,产生CoreDump文件需要消耗时间、CPU、IO资源,因此需要隔一段时间),产生N个CoreDump后,分析他们都停到了哪个函数。如果10个CoreDump里,有4-5个都停到了同一个函数,从统计的角度可以说明,至少40-50%的CPU时间片是被这个函数占用的。

对于java程序,nmon中可以看到的函数级最低就是java,占用CPU最多的就是java进程。至于java里面什么函数占用CPU多并不清楚,此时CoreDump文件就要大展身手了。

对于C程序,也可以产生CoreDump,并采用dbx分析,但需要用源程序的配合。

可参考我的文章

性能指标之资源指标-CPU-谁占用了CPU-函数级-CoreDump

参与4

1同行回答

youki2008youki2008系统架构师DDT
好文章,收藏了显示全部

好文章,收藏了

收起
互联网服务 · 2020-07-13
浏览1262

提问者

yangjianxv
部门总经理成方金融科技有限公司
擅长领域: 服务器中间件数据库

问题来自

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2016-12-26
  • 关注会员:3 人
  • 问题浏览:4860
  • 最近回答:2020-07-13
  • X社区推广