使用perf和perl工具进行C++性能分析和生成火焰图
简介
安装
perf安装
perf指令位于linux-tools通用包内,因此要安装适配当前运行内核的包
1 | apt update -y |
获取火焰图生成工具
1 | git clone https://github.com/brendangregg/FlameGraph.git |
开始性能分析
perf采样
perf采样可以有多种方式
运行并采样
1
2
3
4
5
6sudo perf record -F 99 -g ./cmd --sleep 60
参数说明:
-F 99 : 每秒采样 99 次(平衡精度与开销)
-a : 监控所有 CPU
-g : 记录调用栈(stack trace)
-- sleep : 采样持续时间采样特定pid的进程
1
2
3
4
5
6
7
8
9获取待采样的进程的pid
ps aux | grep <进程名>
根据pid采样进程,假设pid为 <PID>
perf record -F 99 -p 1 -- sleep 300
采样多线程程序,这段指令需要手动输入ctrl + C 停止采样
perf record -F 99 -g -e cycles:uk -p 1
生成调用图的版本
perf record -F 99 -g -e cycles:u -p 1 --call-graph fp
绘制火焰图
1 | perf record -g ./cmd sleep10 |
样例
被测试的示例代码如下:
1 |
|
我们把文件下载到本机然后打开:
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 supdriver的博客!
评论