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 类型的统计字段不完全相同,例如限速类队列会额外给出速率与令牌相关信息,判读前先看清楚当前生效的是哪一类。