perf及火焰图使用

下载及解压

wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.10.tar.xz
tar -xf linux-5.10.tar.xz
cd linux-5.10/tools/perf

linux-5.10/tools/perf 目录中执行以下命令编译 perf 工具,这会在当前目录生成一个可执行的 perf 文件.

make

安装完成后,使用以下命令确认安装是否成功

./perf --version

如果成功,添加 perf 到你的 PATH

export PATH=$PATH:/path/to/perf

使用以下命令检查

which perf

为了使 perf 能够正确分析代码,建议在编译代码时添加调试信息(-g)和适当的优化选项,这将生成带有调试符号的可执行文件 your_program.

gcc -g -O2 -o your_program your_program.c

使用 perf 来收集性能数据。一般的命令格式如下,这条命令会运行你的程序 your_program 并记录所有性能相关的事件,结果会保存到 perf.data 文件中。

perf record -o perf.data ./your_program

程序运行结束后,可以使用以下命令来查看性能分析结果

perf report -i perf.data

二、生成火焰图(集群中大概率因为权限问题没办法生成火焰图)

1.下载

使用 git 来克隆 FlameGraph 的 GitHub 仓库:

git clone https://github.com/brendangregg/FlameGraph.git

2.确认 stackcollapse-perf.pl 脚本的位置

克隆完成后,进入 FlameGraph 目录并确认 stackcollapse-perf.pl 文件存在,如果你能看到 stackcollapse-perf.pl 文件,那么你已经成功下载了脚本。

cd FlameGraph
ls -l stackcollapse-perf.pl

3.解决路径问题

建议你将 FlameGraph 目录添加到你的 PATH 中。你可以编辑 ~/.bashrc~/.bash_profile

export PATH=$PATH:/path/to/FlameGraph
source ~/.bashrc

4. 生成性能数据

运行你的程序并使用 perf 记录性能数据:(这一步在集群中,节点用户无法实现,因为有权限限制,所以后续工作也就不能完成)。这条命令会记录程序运行期间的性能数据,并保存到 perf.data 文件中。-F 99 表示每秒钟采样 99 次,-a 表示全系统跟踪,-g 表示记录调用栈。

perf record -F 99 -a -g -- ./your_program

5.生成原始脚本文件

使用 perf scriptperf.data 转换为文本格式的脚本文件:

perf script > out.perf

6.生成火焰图的折叠数据

使用 FlameGraph 工具中的 stackcollapse-perf.pl 脚本生成火焰图所需的折叠数据:

./FlameGraph/stackcollapse-perf.pl out.perf > out.folded

7.生成火焰图

最后,使用 FlameGraph 工具生成火焰图:

./FlameGraph/flamegraph.pl out.folded > flamegraph.svg

分析火焰图

打开生成的 flamegraph.svg 文件,你可以看到不同函数调用所消耗的 CPU 时间,以火焰形状展示,越高的区域代表调用栈越深,越宽的区域代表消耗的时间越多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值