运行队列延迟分布
用直方图展示任务从「已经可运行」到「真正拿到处理器」之间的等待时间,直接反映调度侧压力。它与调度事件分析工具互补:一个给出整体分布形态,一个能追到具体任务。处理器占用率不高但任务还是慢时,这个分布常常能解释原因。
基本信息
| 适用平台 | Linux,需要内核 eBPF 支持与较高权限 |
|---|---|
| 输出形态 | 按等待时间分桶的直方图 |
| 常用参数 | 窗口与刷新间隔、按进程聚合 |
| 观察重点 | 长尾桶是否进入毫秒量级 |
| 配套指标 | 系统负载平均值中的可运行进程数 |
典型使用场景
- 判断处理器是否真的饱和,还是线程数不足造成的假象。
- 定位服务抖动是否来自排队等待。
- 对比容器限额或优先级调整前后的等待分布。
- 区分处理器能力不足与高优先级任务抢占。
- 与调度事件分析交叉验证,确认结论一致。
用法
用法
runqlat-bpfcc 10 1 # 10 秒窗口,每秒刷新一次
runqlat-bpfcc -P 10 1 # 按进程聚合,定位具体服务
runqlat-bpfcc 60 1 > /tmp/runq.txt # 长窗口留档
vmstat 1 5 # 结合可运行进程数列一起看
nproc # 确认处理器数量,判断并发压力
uptime # 结合负载平均值判断趋势直方图读法
| 现象 | 含义 | 方向 |
|---|---|---|
| 主要落在微秒级 | 调度响应良好 | 当前调度压力不大 |
| 长尾进入毫秒级 | 存在排队等待 | 看处理器饱和与抢占 |
| 呈现双峰 | 两类负载混跑 | 按进程拆开分析 |
| 分布随业务量显著移动 | 容量接近上限 | 考虑扩容或错峰 |
要结合处理器数量解读:同等等待时间在 4 核与 64 核机器上的含义完全不同,先确认可供调度的处理器资源再下结论。
容器环境中注意限额:容器被限制处理器时间时,等待分布会显示排队,但根因是配额而不是物理机算力,扩容物理机的收益有限。