7.2 perf + FlameGraph 使用教程
工具简介
perf
perf
是 Linux 内核自带的性能分析工具,能够对系统或应用程序的运行时性能进行采样和分析。其核心功能包括:
- CPU 使用率和函数调用栈采集
- 热点函数识别与性能瓶颈定位
- 系统调用、上下文切换及缓存命中率分析
官方文档:perf wiki
FlameGraph
FlameGraph(火焰图)是 Brendan Gregg 提出的一种性能可视化方法,能够直观展示函数调用的 CPU 消耗情况。
图形特征:
- X 轴:函数占用 CPU 时间比例(宽度越大,消耗越多)
- Y 轴:调用栈层级(底部为入口函数,向上为调用链)
- 方块宽度:表示函数执行时间或 CPU 消耗大小
准备工作
安装 perf
在大多数 Linux 发行版中,perf 随内核提供。可执行以下命令安装:
sudo apt update
sudo apt install linux-tools-common linux-tools-$(uname -r)
验证安装:
perf --version
安装完成后,需要调整内核配置以允许 perf 采样:
sudo sh -c 'echo "kernel.perf_event_paranoid=-1" >> /etc/sysctl.conf'
sudo sysctl -p
安装 FlameGraph
FlameGraph 是 Brendan Gregg 写的一个 Perl 工具包,用来将 perf 采样数据可视化。
git clone https://github.com/brendangregg/FlameGraph.git
cd FlameGraph
里面有几个主要脚本:
stackcollapse-perf.pl