使用 perf 和 Flame Graphs 分析 MySQL

2024-06-27 16:44:38 浏览数 (1)

性能分析中的一项常见任务是确定哪些代码段消耗的 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上,然后问它哪个函数调用频率高,它会给你回复。

火焰图火焰图

0 人点赞