首页/系统/Linux 内核与性能调优速查/runqlat 运行队列延迟分布

runqlat 运行队列延迟分布

直方图展示任务可运行到实际获得 CPU 的等待, 直接反映调度侧压力。

运行队列延迟分布

用直方图展示任务从「已经可运行」到「真正拿到处理器」之间的等待时间,直接反映调度侧压力。它与调度事件分析工具互补:一个给出整体分布形态,一个能追到具体任务。处理器占用率不高但任务还是慢时,这个分布常常能解释原因。

基本信息

适用平台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 核机器上的含义完全不同,先确认可供调度的处理器资源再下结论。
容器环境中注意限额:容器被限制处理器时间时,等待分布会显示排队,但根因是配额而不是物理机算力,扩容物理机的收益有限。

易错点

  • 把队列延迟直接归因于处理器核数不足,忽略抢占与优先级影响。
  • 忽略同机其它负载的时段影响,采集窗口内混入别的业务高峰。
  • 不看处理器数量就判断等待是否严重,结论缺乏参照。
  • 在容器里忽略配额限制,把配额排队当成物理算力不足。
  • 只看一次采集,不结合趋势,无法判断是持续问题还是瞬时抖动。

数据来源与参考

  • BCC 工具集文档 runqlat
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌