什么是火焰图

⽕焰图仅⽤⼀张⼩图,就可以定量展示所有的性能瓶颈的全景图,⽽不论⽬标软件有多么复杂。
传统的性能分析⼯具通常会给⽤户展示⼤量的细节信息和数据, ⽽⽤户很难看到全貌,反⽽容易去优化那些并不重要的地⽅,经常浪费⼤量时间和精⼒却看不到明显效果。传统分析器的另⼀个缺点是,它们通常会孤⽴地显示每个函数调⽤的延时,但很难看出各个函数调⽤的上下⽂,⽽且⽤户还须刻意区分当前函数本身运⾏的时间和包括了其调⽤其他函数的时间在内的总时间。

火焰图可以分析什么

可以通过传统的工具分析函数的cpu时间,阻塞时间,还有哪些函数频繁的分配内存。

火焰图的样子

从火焰图中,我们可以看到函数的调用栈,而从左到右是函数调用所占用的次数,从图中可以看到最底层到最底层,占用的时间依次递减。

火焰图的类型及应用场景

常⻅的⽕焰图类型有 On-CPU,Off-CPU,还有 Memory,Hot/Cold,Differential 等等。它们有各⾃适合处理的场景

生成火焰图

1、下载火焰图生成源码

git clone https://gitee.com/mirrors/FlameGraph.git

2、通过工具生成对应的数据

火焰图支持多种工具

从源码就可以看出,支持的各种各样的工具

下面以perf工具为例子,如果你的系统没有,直接使用命令安装yum或者apt-get

2、CPU-ON

编写程序,使cpu尽量处于能占用100%的状态

top查看进程ID,以我的为例子

使用工具:

perf record -F 99 -p 27645 -g -- sleep 120

生成avg

perf script | ./stackcollapse-perf.pl | ./flamegraph.pl > curl.svg

打开火焰图

3、 CPU-OFF

1、使能sched_schedstats统计

echo 1 > /proc/sys/kernel/sched_schedstats

2、使用工具生成

perf record -e sched:sched_stat_sleep -e sched:sched_switch -e sched:sched_process_exit -p 27645 -g -o perf.data.raw sleep 30perf inject -v -s -i perf.data.raw -o perf.data

3、生成火焰图

perf script -F comm,pid,tid,cpu,time,period,event,ip,sym,dso,trace | awk '
NF > 4 { exec = $1; period_ms = int($5 / 1000000) }
NF > 1 && NF <= 4 && period_ms > 0 { print $2 }
NF < 2 && period_ms > 0 { printf "%s\n%d\n\n", exec, period_ms }' | \
./stackcollapse.pl | \
./flamegraph.pl --countname=ms --title="Off-CPU Time Flame
Graph" --colors=io > offcpu.svg

性能瓶颈查找-火焰图分析相关推荐

  1. ali arthas 火焰图_使用arthas 生成火焰图分析jvm

    arthas 是阿里巴巴开源的强大的jvm 应该分析工具,以下是使用arthas 生成jvm 火焰图的一个学习 项目使用docker-compose 运行,对于生成的火焰图使用nginx 提供一个访问 ...

  2. mysql火焰图_【性能】如何使用perf和火焰图分析系统性能?

    一.实验环境 二.实验案例分析 安装完成后,我们先在第一个终端,执行下面的命令运行案例,也就是一个最基本的 Nginx 应用: 运行 Nginx 服务并对外开放 80 端口 # docker run ...

  3. python生成分析图_Pyflame 生成火焰图分析 Python 程序

    Pyflame 生成火焰图分析 Python 程序 后台回复[入门资料] 送你十本Python电子书 文 | EarlGrey 推荐 | 编程派公众号 微信号:codingpy Pyflame 是 U ...

  4. perf + 火焰图分析程序性能

    From: https://www.cnblogs.com/happyliu/p/6142929.html 1.perf命令简要介绍 性能调优时,我们通常需要分析查找到程序百分比高的热点代码片段,这便 ...

  5. mysql火焰图_perf + 火焰图分析程序性能 - 刘志鹏的Blog - 博客园

    1.perf命令简要介绍 性能调优时,我们通常需要分析查找到程序百分比高的热点代码片段,这便需要使用 perf record 记录单个函数级别的统计信息,并使用 perf report 来显示统计结果 ...

  6. linux性能优化——利用perf火焰图分析内核调用

    1.内核进程 我们知道,在 Linux 中,用户态进程的"祖先",都是 PID 号为 1 的 init 进程.比如,现在主流的 Linux 发行版中,init 都是 systemd ...

  7. mysql火焰图_perf + 火焰图分析程序性能

    1.perf命令简要介绍 性能调优时,我们通常需要分析查找到程序百分比高的热点代码片段,这便需要使用 perf record 记录单个函数级别的统计信息,并使用 perf report 来显示统计结果 ...

  8. C++ 之 perf+火焰图分析与Debug

    0. 简介 在遇到一些内存异常的时候,经常这部分的代码是很难去进行分析的,之前作者就专门写过两篇博客(Ubuntu环境下便于调试代码的工具.Valgrind对ROS程序的可视化分析)来介绍性能分析的问 ...

  9. CentOS 7 Linux实时内核下的epoll性能分析后续 | 火焰图分析

    在<CentOS 7 Linux实时内核下的epoll性能分析>从源码角度分析了epoll在实时内核和非实时内核之间的差异,为了更好的展示问题所在,这里给出epoll和select在实时内 ...

最新文章

  1. size_t与ssize_t
  2. java文件放桌面怎么运行不了,不可能使用Java桌面在网络上启动文件吗?
  3. Maven实战(八)——常用Maven插件介绍(下)
  4. springmvc+json 前后台数据交互
  5. C++基础与深度解析第五章: 语句
  6. webform计算某几列结果_工业CAE案例实战精选|脱硫吸收塔工艺仿真计算系统
  7. 比较nio大体上优于io的方面
  8. 图解前端之正则表达式
  9. 编译原理 - 实验四 - yacc基本使用(bison)
  10. 熊逸《唐诗50讲》聚散篇 - 学习笔记与感想
  11. 下载mooc视频字幕
  12. 解决xShell4某些情况下按删除键会输出^H的问题
  13. 微信电脑pc端显示不了头像和加载不了表情包,怎么解决该问题
  14. 如何删除Mac下载PS后莫名其妙多出来的几个程序
  15. 服务器虚拟机移动,从物理服务器迁移到虚拟机的两大方案
  16. osgEarth编译
  17. 交叉线、直通线、反转线的区别与应用
  18. 【修真院PM小课】什么是消息推送?
  19. Flink Partitioning,不只是Shuffle
  20. 颜值在线的Mac播放器推荐-IINA

热门文章

  1. 我的世界服务器如何显示svip,SVIP如何设置王者段位显示 | 手游网游页游攻略大全...
  2. gridview大全
  3. MS2130和MS2131产品使用评测及分享 USB3.0高清采集卡广泛应用网络直播一体机游戏机
  4. 诛仙3饮马江南服务器信息,梦回江南 《诛仙3》新服本周五开启
  5. 荆小花推荐伤感非主流日志:一次想你,都感觉心痛!
  6. 修改下hosts文件,提高百度云管家下载速度的方法!
  7. phpcms 初次建站心得
  8. be delegated to target bean. Switch its visibility to package or protected.
  9. series中的markpoint和markline
  10. python中装饰器的使用教程详解(wraps)