Linux + 为什么删除 ifconfig 显示的问题而不是 ethtool 显示的问题?

Linux + 为什么删除 ifconfig 显示的问题而不是 ethtool 显示的问题?

我们有 Linux VM red hat 7.2 版本,带有两个 LAN 接口

Linux 机器在 ESXi - 5.5.0 上崩溃

我们有一个非常奇怪的问题,

该冲突是 ifconfig 命令与 ethtool 命令之间的结果!

为什么 ethtool 的结果没有表明 eth1 上存在掉线问题

而从 ifconfig 中我得到的指示表明 eth1 存在掉线问题?

(查看 ifconfig - 掉线时数字增加表示掉线错误)

   # ethtool -S eth1 | grep -i drop
   drv dropped tx total: 0
   drv dropped tx total: 0
   drv dropped rx total: 0
   drv dropped rx total: 0

eth1 上的 ifconfig 结果:

    # ifconfig -a | grep RX | grep dropped
    RX errors 0  dropped 123136  overruns 0  frame 0
    RX errors 0  dropped 140938047  overruns 0  frame 0
    RX errors 0  dropped 0  overruns 0  frame 0

    # ifconfig -a | grep RX | grep dropped
    RX errors 0  dropped 123136  overruns 0  frame 0
    RX errors 0  dropped 140938083  overruns 0  frame 0  <--------------  after second
    RX errors 0  dropped 0  overruns 0  frame 0

第二,将 ethtool 的结果视为真实结果,而 ifconfig 的结果实际上表明存在问题,这样正确吗?

备注 - 下垂问题仅显示在 Linux 版本 7.x 上,而不显示在 Linux 版本 6.x 或 5.x 上

答案1

ethtool命令将 RX(接收)丢包分为不同的类别,但将 TX(发送)丢包归为一组。例如,运行ifconfig显示:

# ifconfig eth0 | grep dropped
          RX packets:169700121 errors:0 dropped:2811 overruns:0 frame:0
          TX packets:173242722 errors:0 dropped:0 overruns:0 carrier:0

但如果我现在运行ethtool并仅查找 RX 错误,我会看到:

# ethtool -S eth0 | egrep rx_.*_errors                                                                                                                                                                  
     rx_length_errors: 0
     rx_over_errors: 0
     rx_crc_errors: 0
     rx_frame_errors: 0
     rx_missed_errors: 2811
     rx_long_length_errors: 0
     rx_short_length_errors: 0
     rx_align_errors: 0
     rx_csum_offload_errors: 203

现在您可以看到由于 ,有 2811 个数据包被丢弃rx_missed_errors

相关内容