我是靠谱客的博主 粗心玫瑰,最近开发中收集的这篇文章主要介绍perf+flame分析程序性能,并生成火焰图。安装perf工具安装flame工具perf命令简介生成火焰图,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

安装perf工具

sudo apt-get install linux-tools-common linux-tools-generic linux-tools-`uname -r`

安装flame工具

git clone git@github.com:brendangregg/FlameGraph.git
cd ./FlameGraph
chmod +x *.pl

perf命令简介

usage: perf [--version] [--help] [OPTIONS] COMMAND [ARGS]

 The most commonly used perf commands are:
   annotate        Read perf.data (created by perf record) and display annotated code
   archive         Create archive with object files with build-ids found in perf.data file
   bench           General framework for benchmark suites
   buildid-cache   Manage build-id cache.
   buildid-list    List the buildids in a perf.data file
   c2c             Shared Data C2C/HITM Analyzer.
   config          Get and set variables in a configuration file.
   data            Data file related processing
   diff            Read perf.data files and display the differential profile
   evlist          List the event names in a perf.data file
   ftrace          simple wrapper for kernel's ftrace functionality
   inject          Filter to augment the events stream with additional information
   kallsyms        Searches running kernel for symbols
   kmem            Tool to trace/measure kernel memory properties
   kvm             Tool to trace/measure kvm guest os
   list            List all symbolic event types
   lock            Analyze lock events
   mem             Profile memory accesses
   record          Run a command and record its profile into perf.data
   report          Read perf.data (created by perf record) and display the profile
   sched           Tool to trace/measure scheduler properties (latencies)
   script          Read perf.data (created by perf record) and display trace output
   stat            Run a command and gather performance counter statistics
   test            Runs sanity tests.
   timechart       Tool to visualize total system behavior during a workload
   top             System profiling tool.
   version         display the version of perf binary
   probe           Define new dynamic tracepoints
   trace           strace inspired tool

 See 'perf help COMMAND' for more information on a specific command.

使用示例

进入~/shlian/目录

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

-e cpu-clock : 监控cpu的周期
-g :记录函数调用关系
-p :指定分析的进程id

运行之后,会在当前目前生成perf.data文件,可使用命令:perf record -i perf.data 查看 perf.data中的内容,如下图所示:
在这里插入图片描述

也能看,但看起来没那么直观,有没有更直观的方法呢?答案是有的。

生成火焰图

以刚刚生成的perf.data为例,生成火焰图:

生成perf.unfold文件

进入~/shlian目录
解析perf.data文件,并生成perf.unfold文件: bash perf script -i perf.data > perf.unfold

根据perf.unfold文件生成perf.fold文件

进入FlameGraph目录

./stackcollapse-perf.pl  ~/shlian/perf.unfold > ~/shlian/perf.folded

生成svg图

进入FlameGraph目录

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

在windows下的显示效果:
在这里插入图片描述

图的解析

  1. y 轴表示调用栈,每一层都是一个函数。调用栈越深,火焰就越高,顶部就是正在执行的函数,下方都是它的父函数。
  2. x 轴表示抽样数,如果一个函数在 x 轴占据的宽度越宽,就表示它被抽到的次数多,即执行的时间长。注意,x 轴不代表时间,而是所有的调用栈合并后,按字母顺序排列的。
  3. 火焰图就是看顶层的哪个函数占据的宽度最大。只要有”平顶”(plateaus),就表示该函数可能存在性能问题。

更详细的说明,请点这里

perf是非常强大的工具,有兴趣的可以继续学习和使用。

最后

以上就是粗心玫瑰为你收集整理的perf+flame分析程序性能,并生成火焰图。安装perf工具安装flame工具perf命令简介生成火焰图的全部内容,希望文章能够帮你解决perf+flame分析程序性能,并生成火焰图。安装perf工具安装flame工具perf命令简介生成火焰图所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(335)

评论列表共有 0 条评论

立即
投稿
返回
顶部