cpu profiler及火焰图学习

转自:https://blog.csdn.net/10km/article/details/83820080

1.profiler输出

 大字体显示的节点就是CPU使用率的’热点’。上述为SVG模式,可伸缩向量图形(Scalable Vector Graphics)。

 图形风格的性能报告由节点和有向边组成, 每个节点代表一个函数,节点数据格式:

有向边:调用者指向被调用者,有向边上的时间表示被调用者所消耗的CPU时间。 

性能分析通过抽样方法完成,默认是1秒100个样本,一个样本是10毫秒,即时间单位是10毫秒;可以通过环境变量CPUPROFILE_FREQUENCY设置采样频率。

2.火焰图

转自:https://www.infoq.cn/article/a8kmnxdhbwmzxzsytlga

  • 每一列代表一个调用栈,每一个格子代表一个函数

  • 纵轴展示了栈的深度,按照调用关系从下到上排列,下面是上面的父函数。最顶上格子代表采样时,正在占用 cpu 的函数。

  • 横轴的意义是指:火焰图将采集的多个调用栈信息,通过按字母横向排序的方式将众多信息聚合在一起。需要注意的是它并不代表时间。

  • 横轴格子的宽度代表其在采样中出现频率,调用频次,所以一个格子的宽度越大,说明它是瓶颈原因的可能性就越大。(表示这个函数占用的cpu时间长)

  • 火焰图格子的颜色是随机的暖色调,方便区分各个调用信息。

  • 其他的采样方式也可以使用火焰图, on-cpu 火焰图横轴是指 cpu 占用时间,off-cpu 火焰图横轴则代表阻塞时间。

  • 不同类型火焰图适合优化的场景不同,比如 on-cpu 火焰图适合分析 cpu 占用高的问题函数,off-cpu 火焰图适合解决阻塞和锁抢占问题。(还没学过)

  

posted @ 2023-01-16 00:18  lypbendlf  阅读(460)  评论(0编辑  收藏  举报