perf性能调优

工具准备

ubuntu:sudo apt-get install perf

嵌入式平台:下载源码编译

注意:编译过程中会有Auto-detectiing system feature的依赖库打印,注意其中off的,代表此库没有符号表;

测试程序增加-fno-omit-fram-pointer, 避免调用栈浅的问题; 

调优

查找系统热点

  1. sudo perf top:得到热点函数
  2. 查找热点函数的调用栈

查找进程热点

  1. 确保进程中每个线程都有自己的名字:否则同个函数名字的统计会被叠加到一起;
  2. sudo perf record -p pid sleep n : 采集n秒的数据;
  3. sudo perf report:查看热点函数;
  4. 若需要知道热点函数的调用栈,在录制数据时加 -g 参数;

进程火焰图

  1. sudo perf record -g -p pid sleep n
  2. sudo chown xxx:xxx perf.data
  3. 用perf script解析perf.data: perf script -i perf.data > perf.unfold
  4. 用FlameGraph折叠符号:./FlameGraph/stackcollapse-perf.pl perf.unfold > perf.folded
  5. 生成向量图(svg图): ./FlameGraph/flamegraph.pl perf.folded > perf.svg
  6. 用Firefox或chome浏览器打开图片即可

查找代码性能缺陷

sudo perf stat

  1. branch miss
  2. 缺页
  3. cache抖动
原文地址:https://www.cnblogs.com/zengjianrong/p/11777703.html