当前位置:网站首页>性能瓶颈查找-火焰图分析
性能瓶颈查找-火焰图分析
2022-07-17 05:08:00 【HjasnJH】
什么是火焰图
⽕焰图仅⽤⼀张⼩图,就可以定量展示所有的性能瓶颈的全景图,⽽不论⽬标软件有多么复杂。
传统的性能分析⼯具通常会给⽤户展示⼤量的细节信息和数据, ⽽⽤户很难看到全貌,反⽽容易去优化那些并不重要的地⽅,经常浪费⼤量时间和精⼒却看不到明显效果。传统分析器的另⼀个缺点是,它们通常会孤⽴地显示每个函数调⽤的延时,但很难看出各个函数调⽤的上下⽂,⽽且⽤户还须刻意区分当前函数本身运⾏的时间和包括了其调⽤其他函数的时间在内的总时间。
火焰图可以分析什么
可以通过传统的工具分析函数的cpu时间,阻塞时间,还有哪些函数频繁的分配内存。
火焰图的样子

从火焰图中,我们可以看到函数的调用栈,而从左到右是函数调用所占用的次数,从图中可以看到最底层到最底层,占用的时间依次递减。
火焰图的类型及应用场景
常⻅的⽕焰图类型有 On-CPU,Off-CPU,还有 Memory,Hot/Cold,Differential 等等。它们有各⾃适合处理的场景
生成火焰图
1、下载火焰图生成源码
git clone https://gitee.com/mirrors/FlameGraph.git2、通过工具生成对应的数据
火焰图支持多种工具

从源码就可以看出,支持的各种各样的工具
下面以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_schedstats2、使用工具生成
perf record -e sched:sched_stat_sleep -e sched:sched_switch -e sched:sched_process_exit -p 27645 -g -o perf.data.raw sleep 30
perf inject -v -s -i perf.data.raw -o perf.data3、生成火焰图
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
边栏推荐
- Internship project 1 - personalized homepage configuration
- 轮播图节流阀原理及本地存储归总
- Use echars to realize water drop, ring, segmentation, stacking, organization chart, map outline and other charts
- 小程序editor富文本编辑使用及rich-text解析富文本
- Nacos configuration management
- Use (offset, page) in JS to achieve login effect
- LeetCode53. 最大子数组和
- 使用Echars实现水滴状、环形图、分割图、堆叠、组织架构图、地图轮廓等图表
- OpenDDS的QoS和自定义QoS(校时TimingQosPolicy)
- Easypoi之excel多sheet导入
猜你喜欢
随机推荐
Bi design: distributed high concurrency epidemic prevention health management system based on vue+socket+redis
Web3js development technology
【C语言—零基础第六课】输入输出语句格式与复合语句
基于PaddleOCR解决文本检测训练模型与inference模型预测效果不一致的问题
Baidu map realizes thermal map
Easypoi之excel简单导出
热更新及其原理
【Es6】详细解说Set ,Array的常用对象及其他方法(完整版)
Wechat applet obtains the week, morning, noon and evening of month, year and day
Excel calculates the remaining days of the month
Case summary of rotation chart moving speed (constant speed, slow motion)
Submit the uniapp form (input, radio, picker) to get the parameter value
Rk356x u-boot Institute (command section) 3.4 usage of MEM memory related commands
CityEngine 三维管道建模教程
多功能(实现)封装函数
Cesium BIND Mouse Events and remove Mouse Events
Email (including attachments, Netease, QQ)
微信小程序5-基础加强(没写完)
ArcGIS 点云(xyz)数据转DEM
云服务器部署WEB项目









