前言
火焰图能显示系统级别的cpu调用情况,CPU的内存访问情况,在不改代码的情况下,通过火焰图分析Doris be 卡点,性能问题等,是相对快捷的手段。
perf 介绍
安装
sudo apt install linux-tools-common
sudo apt install linux-tools-5.15.0-101-generic
PS: ctyunos linux已经默认安装
FlamerGraph 介绍
此处作用为根据perf生成的数据,生成可视化的文档。
安装
在linux机器上
- 已有git命令的情况下:
git clone https://github.com/brendangregg/FlameGraph.git
- zip包的方式
从FramerGraph的git上下来对应的zip文件, 传上去解压
至此,安装完成。在ctyunos的主机上可以直接执行相关命令了。
使用
用root用户操作,注意采样频率降低影响。
- 根据进程生成源数据
此处 3887为doris be的PID, 采集30s的数据
会生成perf.data的结果文件,每次执行需要先删除
perf record -F 99 -p 3887(PID) -g -- sleep 30
- 解析源数据
perf script -i perf.data&> perf.unfold
- 调用命令生成可视化火焰图
根据FlameGraph路径调整如下命令:
./FlameGraph/stackcollapse-perf.pl perf.unfold &> perf.folded
./FlameGraph/flamegraph.pl perf.folded > perf.svg
用浏览器打开perf.svg. 通过点击条目,可以定位具体的函数,以及这个时间段内, 函数耗cpu时间的占比
举个例子:点击Scan_nromal, 显示它占比71.96%, 通过对比doris be代码, 确认操作为扫描数据。