首页/系统/Linux 内核与性能调优速查/ethtool -S 网卡统计解读
网络栈调优98 条

ethtool -S 网卡统计解读

驱动级计数器(丢包、错误、暂停帧)都在 ethtool -S: 针对性地筛选增长项, 判断问题在硬件侧还是协议栈侧。

ethtool -S 是什么

ethtool -S 输出网卡的驱动级计数器,是判断丢包与错误发生在网卡侧还是协议栈侧的关键证据。计数器名称与含义由驱动决定,同一类问题在不同网卡上可能叫完全不同的名字,因此第一步应当导出一次全量列表,再按需筛选关注项。

基本信息

全量导出ethtool -S eth0
筛选命令ethtool -S eth0 | grep -iE 'drop|err|miss|discard'
观察方式间隔采集两次,比较增量而不是总量
常见计数项rx_missed_errors、rx_no_buffer_count、tx_errors、tx_carrier_errors
交叉对照ip -s link 的接口计数、协议栈的 snmp 计数

典型使用场景

  • 收包丢失定位:区分是网卡缓冲不够还是上游根本没送到
  • 链路质量核查:carrier 类错误增长通常指向线缆、光模块或对端端口
  • 压测前后基线对比:确认压测是否引入了硬件侧错误
  • 虚拟化排障:核对虚拟网卡统计与宿主物理口是否一致
  • 变更验证:更换网线或模块后比较错误计数是否停止增长

筛选与对比

筛选与对比
ethtool -S eth0 | head -40                        # 先看该驱动提供了哪些计数器
ethtool -S eth0 | grep -iE 'drop|err|miss|discard' # 只筛出与丢弃和错误相关的项
ethtool -S eth0 > /tmp/s1; sleep 60; ethtool -S eth0 > /tmp/s2   # 间隔采样
ip -s link show eth0                              # 与接口层计数对照

常见计数器指向

计数器示例含义指向
rx_missed_errors因缓冲不足被丢弃的收包网卡环缓冲或 CPU 处理不过来
rx_no_buffer_count无可用描述符而丢包环缓冲偏小或中断被延迟
tx_errors发送错误总数链路协商或驱动异常
tx_carrier_errors载波异常导致的发送失败线缆、光模块或对端端口
pause 帧计数流控暂停帧收发属正常流控,不一定代表故障

判读顺序

  • 先确认计数器名称属于哪一类:丢弃类、错误类还是流控类
  • 再看增量:总量大但不再增长通常是历史遗留
  • 然后对照 ip -s link 与协议栈计数,确认丢包发生在哪一层
  • 最后与对端和交换机侧同类计数交叉验证,避免单侧归因
计数器命名因驱动而异,同一厂商不同型号也可能不同。保留一份全量导出作为基线,能避免在下一次排查时把新出现的计数项当成异常。
暂停帧等流控计数增长说明链路两端在协商流量节奏,属于机制正常工作,只有与丢包同时出现时才需要进一步分析。

易错点

  • 只看总量不看增量,把历史遗留的计数当成正在发生的故障
  • 把所有非零计数都当作异常,忽略了流控类计数的正常语义
  • 不同型号网卡的计数器直接横向对比,命名与含义并不通用
  • 只在本端排查,未核对交换机与对端的同类计数,归因方向偏差

数据来源与参考

  • man ethtool
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌