章节摘要:机制讲完,该开箱验货了。本章逐个上手四组主力工具:perf(采样剖析瑞士军刀)、火焰图(证据可视化)、ftrace 与 bpftrace(动态追踪双枪)、strace 与 ltrace(系统调用审讯)。每一节都以可直接敲的命令和真实输出为主,读完即可在自己的机器上复现。
工具不在多,在组合。四个工具覆盖 90% 的单机取证场景。
perf stat/record/report 三板斧,PMC 与软件事件双通道。
从 perf 数据到火焰图,怎么读图、怎么不误读。
内核自带 ftrace 侦探线;bpftrace 一行命令挂 eBPF 探针。
问出"卡在哪个调用",以及为什么它不适合测性能。
3.1 采样采证据 ──→ 3.2 把证据画出来给人看 │ └────────→ 3.3 对热点定向追踪(采样的下一手) │ └──→ 3.4 兜底审讯:连热点都找不到时问系统调用
本章四件工具各管一段:perf 做统计画像与硬件计数分析,火焰图把采样数据变成可读地图,ftrace/bpftrace 负责动态追踪与逐事件证据,strace/ltrace 审讯系统调用边界。接到案件先按问题形态选工具,而不是顺手抓最熟的那件:
# 不知道热点在哪 -> 先采一张 on-CPU 画像 perf record -F 199 -g -p $PID -- sleep 15 && perf report --stdio | head -30 # 知道路径但要看单次耗时分布 -> 动态追踪 bpftrace -e 'kprobe:vfs_read { @=hist(nsecs); }' # 占位示意, 实际按目标挂点 # 怀疑进程在内核边界折腾 -> 系统调用审计 strace -c -f -p $PID
perf 一节的重点是测量精度:锁频、绑核、重复运行拿方差,是让对比可信的前置条件。火焰图一节强调读图纪律,宽度是占比不是绝对耗时,微分图是回归定位的第一工具。ftrace 与 bpftrace 一节给出 tracepoint 优先于 kprobe 的选型原则,以及从路径(function_graph)到分布(直方图)的两步法。strace 一节的核心结论是开销量级与替代方案——-c 汇总优先,逐条跟踪收窄事件集,不能接受开销时换 eBPF 旁路。按这个边界组合使用,四件工具覆盖了单机九成以上的取证场景。
工具箱章节的最终目的不是记住几十个参数,而是把"选型—采集—解读—交叉验证"四步压缩成肌肉记忆:选型按问题形态走(统计问题给采样、时序问题给追踪、边界问题给审讯),采集时永远先想开销与窗口,解读时永远先核对样本量与口径,交叉验证时永远用第二个独立工具确认第一个的结论。建议读者在读完本章后做一次自测:随机挑一个自己环境里的进程,在十五分钟内回答三个问题——它最烧 CPU 的路径是什么、它在内核边界最频繁的系统调用是什么、它当前的阻塞点分布是什么。三问都能给出带命令出图的答案,本章的工具就算真正上手了。