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
相关产品推荐
相关产品推荐

