首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >分析java服务器并解释火焰图

分析java服务器并解释火焰图
EN

Stack Overflow用户
提问于 2018-08-25 13:41:38
回答 1查看 400关注 0票数 1

我正在分析java服务器。我正在看火焰图表:http://www.brendangregg.com/flamegraphs.html。我有几个关于如何解释火焰轮廓的问题。我是java的新手,所以它们听起来可能非常基础。

1)在配置文件中,我观察到的顶部帧libjvm_so占用了38.6%的cpu。这在java进程和服务器中是正常的吗?这个共享对象到底是什么?它通常需要这么多的处理吗?

2)函数/栈取x%意味着什么。这是相对的还是绝对的?按进程划分的总cpu使用率的x%或x% cpu。这就引出了我的第二个问题,当我比较两个火焰图时,比较是否按进程的所有cpu使用率进行了标准化?也就是说,如果一个方法在一个配置文件中占用10%,在另一个配置文件中占用15%,这是否意味着该函数实际上消耗了更多的cpu。或者,在最初的进程中,总体cpu使用率是50%,但在第二个进程中,cpu使用率是30%,因此从绝对值来看,第二个配置文件显示函数的cpu使用率降低了。( 50%的10%大于30%的15% )。

EN

回答 1

Stack Overflow用户

发布于 2019-06-12 01:38:36

对于问题1:

我认为libjvm.so包括了编译和垃圾收集所花费的时间。如果进程的CPU利用率很高,并且进程已经运行了一段时间,那么在libjvm.so中花费大量CPU时间通常不是预期的,因此可能表示进程在GC或编译上花费的时间比预期的要多。如果概要文件是在进程启动时收集的(因此将更多的时间花在编译上),则可能会出现这种情况。

对于问题2:

火焰图中的百分比通常指的是进程使用的CPU总量的百分比。因此,如果配置文件显示总CPU时间为5s,则使用1s CPU时间的方法将显示为使用所有CPU时间的20%。

Stackdriver Profiler收集的CPU配置文件是在10秒的持续时间内收集的,可以用来了解进程使用的CPU百分比。例如,当进程使用大约50%的CPU时,收集的配置文件总时间为5秒。

对于Stackdriver Profiler中的配置文件比较,火焰图根据两个配置文件中CPU使用率的绝对差异进行着色。工具提示中报告了绝对差异和占总数百分比的差异。

火焰图的高级概述记录在here中。

(披露:我在谷歌从事Stackdriver Profiler的工作)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52014377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档