mysql火焰图_Linux 性能分析利器 -火焰图 flame graph
简述
Perf 命令(performance的简写)是 Linux 系统原生提供的性能分析工具,返回 CPU 正在执行的函数名以及调用栈(stack)。
通常,它的执行频率是 99Hz(每秒99次),如果99次都返回同一个函数名,那就说明 CPU 这一秒钟都在执行同一个函数,可能存在性能问题。
$ sudo perf record -F 99 -p 13204 -g -- sleep 30
注:perf record表示记录,-F 99表示每秒99次,-p 13204是进程号,即对哪个进程进行分析,-g表示记录调用栈,sleep 30则是持续30秒。
执行之后会产生一个文本文件(perf.data)。为了便于阅读,使用 perf record 命令可以统计每个调用栈出现的百分比,然后从高到低排列。
$ sudo perf report -n --stdio
火焰图
火焰图是基于 perf 结果产生的 SVG 图片,用来展示 CPU 的调用栈。
y 轴表示调用栈,每一层都是一个函数。调用栈越深,火焰就越高,顶部就是正在执行的函数,下方都是它的父函数。
x 轴表示抽样数,如果一个函数在 x 轴占据的宽度越宽,就表示它被抽到的次数多,即执行的时间长。
注意,x 轴不代表时间,而是所有的调用栈合并后,按字母顺序排列的。
火焰图就是看顶层的哪个函数占据的宽度最大。只要有"平顶"(plateaus),就表示该函数可能存在性能问题。
颜色没有特殊含义,因为火焰图表示的是 CPU 的繁忙程度,所以一般选择暖色调。
互动性
火焰图是 SVG 图片,可以与用户互动。
鼠标悬浮显示
火焰的每一层都会标注函数名,鼠标悬浮时会显示完整的函数名、抽样抽中的次数、占据总抽样次数的百分比。
下面是一个例子。
mysqld'JOIN::exec (272,959 samples, 78.34 percent)
点击查看详细
在某一层点击,火焰图会水平放大,该层会占据所有宽度,显示详细信息。
左上角会同时显示**"Reset Zoom"**,点击该链接,图片就会恢复原样。
搜索
按下 Ctrl + F 会显示一个搜索框,用户可以输入关键词或正则表达式,所有符合条件的函数名会高亮显示。
局限
在这两种情况下,无法画出火焰图,需要修正系统行为。
调用栈不完整
当调用栈过深时,某些系统只返回前面的一部分(比如前10层)。
函数名缺失
有些函数没有名字,编译器只用内存地址来表示(比如匿名函数)。
参考资料
mysql火焰图_Linux 性能分析利器 -火焰图 flame graph相关推荐
- 【Linux性能分析】火焰图(Flame Graphs)的安装和基本用法
转载:火焰图(Flame Graphs)的安装和基本用法 火焰图(Flame Graphs)的安装和基本用法 火焰图(Flame Graphs) 一.概述: 火焰图(flame graph)是性能分析 ...
- CentOS 7 Linux实时内核下的epoll性能分析后续 | 火焰图分析
在<CentOS 7 Linux实时内核下的epoll性能分析>从源码角度分析了epoll在实时内核和非实时内核之间的差异,为了更好的展示问题所在,这里给出epoll和select在实时内 ...
- Golang pprof 性能分析与火焰图
文章目录 1. 安装graphviz 1.1 下载 graphviz (windows 环境) 1.2 测试graphviz是否安装成功 2. 使用pprof 2.1 修改代码 2.2 火焰图生成 3 ...
- linux java火焰图_Linux程序性能分析和火焰图
Linux程序性能分析和火焰图 Linux程序的性能分析工具数量比较多,涉及到整个操作系统的方方面面,可能是开源的原因吧,相对于Windows来说丰富太多.其中应用分析性能方面Dtrace, Syst ...
- mysql show profile详解_SQL 性能分析利器 show profile
本文首发个人公众号<andyqian>, 期待你的关注- 前言 在之前的文章中,我们提到过一些慢SQL优化的步骤.其中就包括:使用 explain 关键字来查看执行计划,是否命中索引. 通 ...
- Linux性能分析工具与图形化方法
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~. 作者:赵坤|腾讯魔王工作室后台开发工程师 在项目开发中,经常会遇到程序启动时间过长.CPU使用率过高等问题,这个时候需要依靠性能分析工具来 ...
- mysql bytessent_如何对DSQLSERVER、MySQL、Orache语句性能分析
SQLSERVER语句性能分析 SQL SERVER通过设置STATISTICS查看执行SQL时的系统情况. SET STATISTICS PROFILE ON:显示分析.编译和执行查询所需的时间(以 ...
- MySQL 进阶 索引 -- SQL性能分析(SQL执行频率:查看当前数据库的INSERT、UPDATE、DELETE、SELECT的访问频次、慢查询日志、 profile详情、explain)
文章目录 1. SQL性能分析 1.1 SQL执行频率(可以查看当前数据库SQL的访问频次) 1.2 慢查询日志(可以记录用时较长的SQL) 1.2.1 开启慢查询日志 1.2.2 慢查询日志测试 1 ...
- MySQL调优之性能分析
目录 1.SQL执行频率 2.SQL性能分析 慢查询日志 profile详情 开启profile 使用profile explain 1.SQL执行频率 MySQL客户端连接成功后,通过 show[s ...
最新文章
- 某厂:有微服务经验者优先!
- 机器人 海难饥荒_饥荒:这个人物后期轻松单挑Boss,缺点却很小,大力士都比不过...
- 【IOS 开发】Object - C 数组使用详解
- 深入了解 Java 之虚拟机内存
- 为Windows Server 2012 R2指定授权服务器
- jquery UI集合
- loadrunner11安装,提示少了Microsoft Visual c++2005 sp1运行时组件解决办法
- vue项目打包之后首页白屏的问题
- 静态HTML模板渲染
- win8系统用友U8服务器的设置,用友u8服务器参数配置
- JAVA:实现PigeonholeSort鸽巢排序算法(附完整源码)
- 慢下来,等一等自己的灵魂
- 牛牛找工作--网易2019实习生招聘编程题
- C语言常见问题(10):Sections of code should not be commented out
- win7计算机二进制,二进制-系统爱好者
- MyEclipse如何配置Tomcat
- java微信公众号面试题_使用微信公众号开发模拟面试功能
- 【LeetCode-1109】航班预订统计<Java版>
- 疫情期间,天天对着你“开枪”的额温枪,你知道它的工作原理吗?
- Intellij IDEA导入Github中的MAVEN多模块项目【保持项目样式】
热门文章
- 字节跳动自研线上引流回放系统的架构演进
- 【Ubuntu系统配置】006Ubuntu20.04安装QQ for Linux v3.0(del文件安装卸载)
- 搭建CTF-AWD训练平台
- native app 集成 cocos-2dx-js 3.11 (Android篇)
- 怎样在for循环变量中,将循环变量赋值给一个变量 批处理 bat
- 数据挖掘基本流程 CRISP-DM --项目实战总结 可操作性强
- python中取整求余的计算步骤
- (遇到问题) AAAI2021 pdf要求: CYMK颜色空间,png图片300DPI,字体嵌入pdf
- php表单数据类型,form表单中enctype属性的三种类型
- 小王的研发日记-自动对焦(硬件与计算机通信)