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

利用CoreDump文件分析哪个函数占用CPU多。听起来有些离奇,CoreDump是系统出现问题时自动产生的CoreDump文件,可以分析出现问题时候的函数调用栈,怎么就可以分析哪个函数占用CPU多呢?思路:人为产生CoreDump文件(例如:kill -3那个占用CPU最多的Java线程),分析那个时刻,线程执行到了哪...显示全部

利用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

返回youki2008的回答

youki2008youki2008系统架构师DDT

好文章,收藏了

互联网服务 · 2020-07-13
浏览1291

回答者

youki2008
系统架构师DDT
擅长领域: 服务器云计算数据库

youki2008 最近回答过的问题

回答状态

  • 发布时间:2020-07-13
  • 关注会员:3 人
  • 回答浏览:1291
  • X社区推广