火焰图

yum install perf

采样

使用perf在所有(-a)CPU上以49Hz(-F 49: 每秒采样数) 对栈(-g)跟踪,采样30秒
perf record -F 49 -a -g -- sleep 5

建议使用49Hz或者99Hz作为采样频率,避免和某些以100Hz发生的事件合拍,这样可以提高采样的精准度
也可以使用-p选项跟踪单个进程: perf record -F 49 -g -p ${PID}
启动进程的时候并跟踪: perf record -F 999 ./test

生成火焰图

下面示例采样5秒,然后生成火焰图(out.svg)

perf record -F 49 -a -g -- sleep 5; perf script --header > out.stacks
git clone https://github.com/brendangregg/FlameGraph.git; cd  FlameGraph
./stackcollapse-perf.pl < ../out.stacks | ./flamegraph.pl --hash > out.svg

Linux 5.8中加入了火焰图报告功能,将上面的原始火焰图软件组合成了一个命令 perf scipt report flamegraph

查看剖析报告

perf report

报告生成来自于源文件perf.data,可以在生成火焰图前使用report查看

了解更多: Perf零侵入应用性能瓶颈分析


调用跟踪

跟踪Mysqld进程的系统调用

perf trace -p $(pgrep mysqld)

系统调用内核时间分析, 捕捉3秒

perf trace -s -p $(pgrep mysqld) -- sleep 3

该输出显示了每个线程系统调用的技术和时间,直接trace进程时,在任何繁忙的应用程序上都会产生大量的输出,-s汇总参数能帮助我们先从汇总信息开始

IO剖析

perf trace -e sendto -p $(pgrep mysqld)

Copyright © 运维知识库 all right reserved,powered by Gitbook文件修订时间: 2023-09-19 10:45:38

results matching ""

    No results matching ""