You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

EL7/EL8系统中ethtool上报的丢包统计差异分析验证问询

EL7/EL8系统中ethtool上报的丢包统计差异分析验证问询

各位好!最近我一直在深挖操作系统不同工具(以及不同层级)上报的丢包细节,但谷歌搜出来的信息大多模棱两可,所以想把自己的分析放上来,问问大家是不是这个理儿。

首先说下前提:我观察的目标主机里,/proc/net/softnet_stat显示零丢包,我觉得这应该说明NIC的环形缓冲区大小是配置到位的。接下来看看ethtool的输出:

先看这个NIC的多队列配置:

# ethtool -l em1

Channel parameters for em1:

Pre-set maximums:

RX:     16

TX:     16

Other:      n/a

Combined:   n/a

Current hardware settings:

RX:     16

TX:     16

Other:      n/a

Combined:   n/a

然后是同一接口的RX丢包统计:

# ethtool -S em1 | grep rx.*dropped:

rx_dropped: 1742

rx0_dropped: 0

rx1_dropped: 0

rx2_dropped: 0

rx3_dropped: 0

rx4_dropped: 0

rx5_dropped: 0

rx6_dropped: 0

rx7_dropped: 0

rx8_dropped: 0

rx9_dropped: 0

rx10_dropped: 0

rx11_dropped: 0

rx12_dropped: 0

rx13_dropped: 0

rx14_dropped: 0

rx15_dropped: 0

我这里的猜想是:这16个独立队列对应NIC的多队列环形缓冲区,这里全零的结果和softnet_stat的显示一致。而且我觉得如果softnet_stat里有丢包的话,这里的队列丢包计数应该会体现出来(现在显然没有)。

剩下的就是那个有点模糊的rx_dropped字段,它一直在增长。我猜测这个不是和NIC环形缓冲区相关的丢包,而是更高协议层的丢包计数器,而且这个数值确实和ip -s命令的接口统计对应上了:

# ip -s link show dev em1

2: em1: <BROADCAST,MULTICAST,SLAVE,UP,LOWER_UP> mtu 9000 qdisc mq master bond0 state UP mode DEFAULT group default qlen 1000

link/ether 94:18:82:70:2e:42 brd ff:ff:ff:ff:ff:ff

RX:       bytes      packets errors dropped  missed   mcast

219512805660516 147616023841      0    1742       0 5624266

TX:       bytes      packets errors dropped carrier collsns

649765242476657 450168813646      0       0       0       0

我觉得这些丢包可能是各种协议相关的问题导致的,比如畸形包、错误端口、应用缓冲区拥塞之类的情况。

大家觉得这个分析合理吗?能不能解释ethtool -S上报的这些“不同”的丢包统计差异?

备注:内容来源于stack exchange,提问作者guzzijason

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 07:40:29