文章目录
- 一、安装软件包
- 二、数据采集
- 2.1 perf top
- 2.2 perf record
- 三、数据加工和解读
一、安装软件包
sudo yum install -y perf
git clone https://github.com/brendangregg/FlameGraph
二、数据采集
2.1 perf top
perf top -g -p
pidof mysqld`
- 第一列:符号引发的性能事件的比例,默认指占用的cpu周期比例。
- 第二列:符号所在的DSO(Dynamic Shared Object),可以是应用程序、内核、动态链接库、模块。
- 第三列:DSO的类型。[.]表示此符号属于用户态的ELF文件,包括可执行文件与动态链接库)。[k]表述此符号属于内核或模块。
- 第四列:符号名。有些符号不能解析为函数名,只能用地址表示。
2.2 perf record
-
采集mysqld进程10秒的性能数据
- perf record -a -F 99 -g -p
pidof mysqld
– sleep 10
- perf record -a -F 99 -g -p
-
持续采集mysqld性能数据,直到ctrl+c取消。
- perf record -a -F 99 -g -p
pidof mysqld
- perf record -a -F 99 -g -p
-
采集mysqld从启动到关闭整个生命周期的性能数据,尤其适合采集mysqld刚启动时的性能数据。
- perf record -a -F 99 -g – mysqld_safe --defaults-file=/etc/my.cnf &
-
采集执行某个SQL时的性能数据。
- perf record -a -F 99 -g -p
pidof mysqld
mysql -e “SELECT * FROM sbtest.sbtest1 limit 1;”
- perf record -a -F 99 -g -p
使用perf record
数据采集完成后,通常会生成一个二进制数据文件perf.data,通过perf report可以读取perf.data文件并在终端中展示。
perf report
三、数据加工和解读
Flame Graphs 使用perf采集的数据进行图形化展示;使用perf record
数据采集完成后,通常会生成一个二进制数据文件perf.data,通过下面的命令将采集的二进制数据进行加工,转换成易于阅读的文本文件:
perf script > perf.script
将perf.script文件作为输入,通过Flame Graphs工具,生成svg格式的性能图形。之后结合不同函数在图里的占比来分析具体的资源消耗点。
./FlameGraph/stackcollapse-perf.pl perf.script | ./FlameGraph/flamegraph.pl > flamegraph.svg