perf使用

perf record

记录运行的程序数据

基本参数

-F, --freq=:设置采样频率(每秒的样本数)。
-p, --pid=:监控指定的进程 ID。
-t, --tid=:监控指定的线程 ID。
-g:记录调用栈信息,用于生成火焰图等。
-o, --output=:指定输出文件,默认为 perf.data
–sleep-max=:设置最大睡眠时间
–call-graph=:设置调用栈记录模式,如 dwarf(更精确)或 fp(基于帧指针)

使用示例

perf record -F 99 -p 12345 -g -- sleep 60

这条命令以 99 Hz 的频率监控 PID 为 12345 的进程,同时记录调用栈信息,并在 60 秒后结束

perf record -g -o perf2.data --call-graph=dwarf -b ./programanalysis/build-clang/bin/pa-llvm --pa-dir=/docker/pa --project=pa  --log-level=info  --cg-build /usr/local/bin/clang++ -DSQLITE_ENABLE_COLUMN_METADATA -DSQLITE_ENABLE_JSON1 -I/docker/programanalysis/external/SQLiteCpp/sqlite3 -I/docker/programanalysis/external/SQLiteCpp/include -O2 -gline-tables-only -Wall -Wextra -Wno-unused-variable -Wno-unused-parameter -fPIC -Wall -Wextra -Wpedantic -Wswitch-enum -Wshadow -Wno-long-long -g -fPIC -fstack-protector -std=c++17 -o CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.o -c /docker/programanalysis/external/SQLiteCpp/src/Backup.cpp

生成perf2.data

perf report

基本参数

-i, --input=:指定输入文件,默认是 perf.data。
-g, --call-graph:显示调用图。这个选项后面可以跟不同的参数来指定调用图的样式,如 graph、flat 等
–dsos=<dso[,dso,…]>:仅显示指定动态共享对象(库)的性能数据。
–symbols=<symbol[,symbol,…]>:仅显示指定函数的性能数据。

perf annotate

基本参数

-s, --symbol=:指定要注释的符号(通常是函数名)
-l, --line:显示行号(如果可用)
–asm-raw:显示原始汇编代码
–no-source:不显示源代码,只显示汇编代码
–source:强制显示源代码(如果可用)
-d, --dso=:指定动态共享对象(库)
-i, --input=:从指定的文件读取性能数据(默认是 perf.data)

使用示例

perf record -g -o perf2.data --call-graph=dwarf -b ./programanalysis/build-clang/bin/pa-llvm --pa-dir=/docker/pa --project=pa  --log-level=info  --cg-build /usr/local/bin/clang++ -DSQLITE_ENABLE_COLUMN_METADATA -DSQLITE_ENABLE_JSON1 -I/docker/programanalysis/external/SQLiteCpp/sqlite3 -I/docker/programanalysis/external/SQLiteCpp/include -O2 -gline-tables-only -Wall -Wextra -Wno-unused-variable -Wno-unused-parameter -fPIC -Wall -Wextra -Wpedantic -Wswitch-enum -Wshadow -Wno-long-long -g -fPIC -fstack-protector -std=c++17 -o CMakeFiles/SQLiteCpp.dir/src/Backup.cpp.o -c /docker/programanalysis/external/SQLiteCpp/src/Backup.cpp
perf annotate -i perf2.data --source 

annotate界面操作

enter:光标call汇编命令进行跳转
l:显示代码所在的文件路径
s:切换源码显示
p:切换百分比类型(局部/全局)

FlameGraph

Log in as a root user.
git clone https://github.com/brendangregg/FlameGraph # or download it from GitHub
cd FlameGraph
perf record -F 99 -a -g – sleep 60
perf script | ./stackcollapse-perf.pl > out.perf-folded
./flamegraph.pl out.perf-folded > perf.svg
firefox perf.svg # or any other web browser, etc.

参考链接

linux perf 官方文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

h52013141

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值