性能分析中的一项常见任务是确定哪些代码段消耗的 CPU 时间最多。这通常需要对堆栈跟踪进行剖析。Flame 图形的出现改变了我们对这些剖析进行可视化的方式。它能直观地显示应用程序中占用 CPU 最多的部分。本文将介绍如何使用 perf 生成这些火焰图。
步骤
1)安装perf
代码语言:txt复制yum install -y perf
2) 获取性能数据
在我们的示例中,我们将捕获 mysqld 进程 60 秒的性能数据。
代码语言:bash复制perf record -a -g -F99 -p 1685 -- sleep 60
注:1685就是MySQL的进程号
3)转换捕获的数据
数据捕获后,最初是二进制格式。为了理解这些数据,我们需要将其转换成更可读的格式。
代码语言:bash复制perf script > perf.script
虽然这些数据现在是人类可读的格式,但图表更容易让人类读懂。
4)安装FlameGraph
代码语言:bash复制shell> git clone https://github.com/brendangregg/FlameGraph
shell>./FlameGraph/stackcollapse-perf.pl perf.script | ./FlameGraph/flamegraph.pl > flamegraph.svg
现在,你可以在自己喜欢的网络浏览器中打开 flamegraph.svg,以交互方式探索图表。
5)利用GPT读懂火焰图
你把perf.script文件上传到GPT上,然后问它哪个函数调用频率高,它会给你回复。