首页/系统/Linux 内核与性能调优速查/tc -s qdisc 出口队列读数
网络栈调优98 条

tc -s qdisc 出口队列读数

出口排队情况要看 qdisc 统计: backlog 表示当前排队字节, dropped/overlimits/requeues 提示限速与竞争情况。

tc -s qdisc 读什么

tc -s qdisc 输出出口队列的运行统计,是判断发送侧是否出现排队与丢弃的直接依据。backlog 是当前排队字节数,dropped 是队列溢出丢弃数,overlimits 与限速策略相关,requeues 反映调度冲突的次数。比起接口层的 TX dropped 计数,它能把「在排队」与「已丢弃」区分开。

基本信息

读取命令tc -s qdisc show dev eth0
连续观察watch -n1 'tc -s qdisc show dev eth0 | head -8'
关键字段backlog、dropped、overlimits、requeues
权限要求root
交叉验证与 ip -s link 的 TX dropped、网卡计数互证

典型使用场景

  • 发送方向出现丢包,判断是否由队列溢出导致
  • 限速策略验证:确认规则生效并且统计随之变化
  • 网络抖动排查:观察 backlog 是否随突发流量周期性抬升
  • 压测时记录队列统计,作为出口容量的证据
  • 网关类设备排查转发丢包,区分排队与丢弃

读取方法

读取方法
tc -s qdisc show dev eth0                        # 一次性输出当前队列与统计
watch -n1 'tc -s qdisc show dev eth0 | head -8'  # 连续观察变化趋势
ip -s link show eth0                             # 与接口层计数对照
ethtool -S eth0 | grep -iE 'drop|miss'           # 与网卡侧计数交叉验证

字段判读

字段含义判读
backlog当前排队字节数持续非零说明出口存在排队
dropped队列溢出丢弃的包数增长说明队列已不够用
overlimits超过限制的次数与限速规则相关,不一定代表故障
requeues重新入队的次数持续增长说明存在调度竞争
qdisc 行当前生效的队列规则确认与预期配置一致

判读顺序

  • 先确认生效的 qdisc 类型与预期一致,再谈统计
  • 看 backlog 的变化趋势而不是某一个瞬时值
  • dropped 持续增长时才考虑扩容或调大队列
  • overlimits 增长需结合限速规则判断,属于策略生效而非故障
  • 最后把队列结论与出口带宽、应用发送速率对照,区分能力不足与发送过猛
backlog 非零本身不是故障:有流量的接口在排队是常态,只有持续高企并伴随延迟上升或丢弃,才说明出口能力不足。
不同 qdisc 类型的统计字段不完全相同,例如限速类队列会额外给出速率与令牌相关信息,判读前先看清楚当前生效的是哪一类。

易错点

  • 把 backlog 非零直接判定为故障,未结合延迟与业务指标一起判断
  • 忽略 requeues 与 overlimits 字段,漏掉调度竞争与限速生效的线索
  • 只在一台机器上看统计,未与对端或中间设备交叉验证
  • 把限速导致的 overlimits 当成丢包问题处理,越查越偏

数据来源与参考

  • man tc
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌