性能分析中的一项常见任务是确定哪些代码段消耗的 CPU 时间最多。这通常需要对堆栈跟踪进行剖析。Flame 图形的出现改变了我们对这些剖析进行可视化的方式。它能直观地显示应用程序中占用 CPU 最多的部分。本文将介绍如何使用 perf 生成这些火焰图。

步骤

1)安装perf

yum install -y perf


2) 获取性能数据

在我们的示例中,我们将捕获 mysqld 进程 60 秒的性能数据。

perf record -a -g -F99 -p 1685 -- sleep 60
  • 1.

注:1685就是MySQL的进程号


3)转换捕获的数据

数据捕获后,最初是二进制格式。为了理解这些数据,我们需要将其转换成更可读的格式。

perf script > perf.script
  • 1.

虽然这些数据现在是人类可读的格式,但图表更容易让人类读懂。


4)安装FlameGraph

shell> git clone https://github.com/brendangregg/FlameGraph
shell> ./FlameGraph/stackcollapse-perf.pl perf.script | ./FlameGraph/flamegraph.pl > flamegraph.svg
  • 1.
  • 2.

现在,你可以在自己喜欢的网络浏览器中打开 flamegraph.svg,以交互方式探索图表。


5)利用GPT读懂火焰图

你把perf.script文件上传到GPT上,然后问它哪个函数调用频率高,它会给你回复。

使用 perf 和 Flame Graphs 分析 MySQL_数据