1. Bimodal latency(双峰延迟)的成因,GC pause、CPU steal、I/O readahead 的模式识别。
Bimodal latency(双峰延迟)的成因有哪些?如何通过 GC pause、CPU steal、I/O readahead 等模式识别来定位?
- 双峰延迟的定义与典型成因
- 如何区分 GC pause、CPU steal、I/O readahead 三类模式
- 可观测工具与信号识别
双峰延迟指延迟分布呈现两个明显峰值(一个低延迟主峰和一个高延迟次峰),而非单一近似正态分布。常见成因包括:GC pause——JVM/Go 等托管运行时在 GC 时 STW(Stop-The-World)暂停,导致请求延迟瞬间飙升;CPU steal——在虚拟化/云环境下宿主机抢占导致 vCPU 被偷走,表现为 guest 侧 CPU 时间被静默扣除;I/O readahead——顺序读时内核预读(readahead)触发,冷数据首次访问需等待磁盘扇区读取导致延迟突增。识别方法:GC pause 可用 GC 日志或运行时 metrics 观察,暂停时间与 GC 事件对齐;CPU steal 可用 /proc/stat 的 steal 字段或 vmstat 的 st 列观察;I/O readahead 可用 iostat 观察 await 指标与 blk 相关 tracepoint。
双峰延迟本质是"叠加的慢路径"——多数请求走快速路径,少数请求触发某种"偶发慢事件"。定位的关键是把延迟分布与基础设施事件(GC 日志、CPU steal、I/O 队列)做时间对齐,找出哪类事件与高延迟峰强相关。