BCC 采样出图
BCC 工具集里的栈采样工具直接输出折叠格式,省掉了先导出事件流再转换的中间步骤,适合快速出图。它按固定频率对运行中的处理器采样,统计各调用栈出现次数,再把折叠文件交给火焰图脚本渲染即可。
基本信息
| 适用平台 | Linux,需要内核 eBPF 支持与相应权限 |
|---|---|
| 工具位置 | 随发行版不同,常见于系统工具目录 |
| 关键参数 | 采样频率、输出折叠格式、采样时长、目标进程 |
| 输出 | 折叠栈文件,一行一条调用链加计数 |
| 命名差异 | 发行版常在工具名后加统一后缀 |
典型使用场景
- 现场快速出图,不依赖额外的转换脚本。
- 按指定进程采样,避免整机噪声干扰。
- 定期出图归档,观察热点随时间的变化。
- 与基于内核采样工具的结果互相印证。
- 在容器或云主机上做只读观测,不修改应用。
生成
生成
profile-bpfcc -F 99 -f 30 > /tmp/oncpu.folded # 99Hz 采样 30 秒,输出折叠格式
profile-bpfcc -F 99 -f -p 12345 30 > /tmp/app.folded # 只采样指定进程
ls /usr/share/bcc/tools/profile # 确认工具实际路径
./flamegraph.pl /tmp/oncpu.folded > /tmp/oncpu.svg # 渲染火焰图
wc -l /tmp/oncpu.folded # 看折叠文件规模,判断采样是否覆盖充分常用参数
| 参数 | 作用 | 使用建议 |
|---|---|---|
| 采样频率 | 每秒采样次数 | 先低频试跑,确认影响后再提高 |
| 折叠输出 | 直接产出折叠格式 | 便于接火焰图脚本 |
| 采样时长 | 窗口长度 | 覆盖完整业务周期 |
| 目标进程 | 限定采样对象 | 减少无关噪声 |
| 栈类型选择 | 用户态栈或内核栈 | 按问题所在层次选择 |
不同发行版的工具名与安装路径不同,脚本里硬编码路径容易在不同机器上失败;先用目录列表确认再写进自动化脚本。
采样频率提高会明显增加开销,且不带目标进程时是全系统采样,噪声偏多;生产环境先用低频小窗口试跑,确认可接受再扩大。