我是靠谱客的博主 粗心玫瑰,最近开发中收集的这篇文章主要介绍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下的显示效果:
图的解析
- y 轴表示调用栈,每一层都是一个函数。调用栈越深,火焰就越高,顶部就是正在执行的函数,下方都是它的父函数。
- x 轴表示抽样数,如果一个函数在 x 轴占据的宽度越宽,就表示它被抽到的次数多,即执行的时间长。注意,x 轴不代表时间,而是所有的调用栈合并后,按字母顺序排列的。
- 火焰图就是看顶层的哪个函数占据的宽度最大。只要有”平顶”(plateaus),就表示该函数可能存在性能问题。
更详细的说明,请点这里
perf是非常强大的工具,有兴趣的可以继续学习和使用。
最后
以上就是粗心玫瑰为你收集整理的perf+flame分析程序性能,并生成火焰图。安装perf工具安装flame工具perf命令简介生成火焰图的全部内容,希望文章能够帮你解决perf+flame分析程序性能,并生成火焰图。安装perf工具安装flame工具perf命令简介生成火焰图所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复