间隔输出
默认情况下 perf stat 只在整个窗口结束时给出一行汇总。加上间隔参数后,计数会按固定毫秒数分段输出,形成一个时间序列。这样就能把性能波动与时间线上的事件对齐:发布开始、压测加压、定时任务触发、告警产生,都能在序列里找到对应的突变点。
基本信息
| 适用平台 | Linux(内核自带性能工具) |
|---|---|
| 间隔单位 | 毫秒 |
| 输出形态 | 每个间隔一行,含时刻与本段计数 |
| 配套选项 | 输出到文件后配合脚本处理 |
| 权衡 | 间隔越短开销越高,输出量也越大 |
典型使用场景
- 观察发布或配置重载瞬间计数是否出现突变。
- 定位周期性任务造成的规律抖动,比如定时批处理与垃圾回收。
- 把采集结果与监控指标时间线对齐,验证告警与资源消耗是否同源。
- 采样结果落盘留档,作为优化前后的对照依据。
- 确认抖动是持续存在还是仅出现在某个时间段。
间隔采样
间隔采样
perf stat -I 1000 -e cycles,instructions,cache-misses -p 12345 # 每秒一行,Ctrl-C 结束
perf stat -I 1000 -e cycles,instructions -a -- sleep 60 # 整机口径,限定 60 秒
perf stat -I 1000 -e context-switches -p 12345 -o /tmp/stat.log # 落盘后再用脚本分析
awk 'NR>2 && $1 > 0 {print}' /tmp/stat.log | head # 先看格式再决定统计方式间隔输出解读
| 列 | 含义 | 排查用法 |
|---|---|---|
| 时间戳 | 本间隔结束时刻 | 与发布、压测时间线对齐 |
| 计数 | 本间隔内的事件次数 | 与上一间隔比较找突变 |
| 变化幅度 | 间隔之间抖动大小 | 判断干扰或负载变化 |
| 缩放标记 | 事件复用时的估算提示 | 出现时应减少事件数复核 |
间隔输出天然会放大瞬时噪声:判断趋势要看连续多段的变化,而不是抓住某个尖峰就下结论。
间隔设得过小会让采集本身成为干扰源,尤其在高频事件上;同时长时间运行的输出文件会快速膨胀,落盘前先估算行数与磁盘占用。