专栏首页鹅厂少年的奇妙之旅perf + 火焰图分析程序性能

perf + 火焰图分析程序性能

1、perf命令简要介绍

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

perf record

perf report

举例:

sudo perf record -e cpu-clock -g -p 2548

-g 选项是告诉perf record额外记录函数的调用关系

-e cpu-clock 指perf record监控的指标为cpu周期

-p 指定需要record的进程pid

程序运行完之后,perf record会生成一个名为perf.data的文件,如果之前已有,那么之前的perf.data文件会被覆盖

获得这个perf.data文件之后,就需要perf report工具进行查看

perf report -i perf.data

-i 指定要查看的文件

 以诊断mysql为例,report结果:

$sudo perf report  -i perf.data

这种格式很不直观

 2、使用火焰图展示结果

1、Flame Graph项目位于GitHub上:https://github.com/brendangregg/FlameGraph

2、可以用git将其clone下来:git clone https://github.com/brendangregg/FlameGraph.git

我们以perf为例,看一下flamegraph的使用方法:

1、第一步

$sudo perf record -e cpu-clock -g -p 28591

Ctrl+c结束执行后,在当前目录下会生成采样数据perf.data.

2、第二步

用perf script工具对perf.data进行解析

perf script -i perf.data &> perf.unfold

3、第三步

将perf.unfold中的符号进行折叠:

#./stackcollapse-perf.pl perf.unfold &> perf.folded

4、最后生成svg图:

./flamegraph.pl perf.folded > perf.svg

原文链接:http://www.cnblogs.com/happyliu/p/6142929.html

我来说两句

0 条评论
登录 后参与评论

相关文章

  • GCC编译优化选项

    查看GCC各选项打开的优化项:gcc -Q --help=optimizers。分为如下:

    后台搬砖鹅
  • 【2018手Q春节红包系列】春节排行榜性能优化小记

    这次优化,从接触学习压测工具开始,到昨天优化告一段落,断断续续持续了有3、4天左右。感谢团长、双太、drog、温总在优化过程中提供的帮助和建议!

    后台搬砖鹅
  • Go语言源码笔记 --- netpoller

    总览:Go中网络交互采用多路复用的技术,具体到各个平台,即Kqueue、Epoll、Select、Poll等,下面以Linux下的Epoll实现为例进行分析。

    后台搬砖鹅
  • Perf分析CPU性能问题笔记

    容器内的进程实际上可以在host machine上看到,ps -ef | grep <text>可以找得到。

    颇忒脱
  • NodeJS 性能优化之 CPU 看图篇

    作为前端出身的 NodeJS 开发者们,产生共鸣的那就是如何能够直观且快速发现性能瓶颈,能够像调试前端的 JS 代码那样可视化,堆栈化,接下来我们就针对常见的 ...

    web爱好者
  • 【Node.js丨主题周】理解perf 与火焰图

    火焰图(Flame Graph)看起来就像一团跳动的火焰,因此得名,它可以将 CPU 的使用情况可视化,使我们直观地了解到程序的性能瓶颈。我们通常要结合操作系统...

    博文视点Broadview
  • Linux性能分析工具与图形化方法

    在项目开发中,经常会遇到程序启动时间过长、CPU使用率过高等问题,这个时候需要依靠性能分析工具来定位性能的消耗点。

    Techeek
  • linux性能诊断-perf工具

    启动docker测试时,记得使用 --privileged=true 允许超级权限模式

    用户2825413
  • honggfuzz漏洞挖掘技术深究系列(5)—— Intel Processor Trace

    Intel® Processor Trace (Intel® PT) 是在i5/i7 5000以上型号上加入的功能,由于它是硬件级的特性,相比Qemu或Boch...

    泉哥

扫码关注云+社区

领取腾讯云代金券