ethtool 看的是什么
ethtool 读写网卡(以及部分虚拟接口)的链路层与驱动层信息:默认输出协商速率、双工、链路状态与能力集;-S 是厂商驱动统计,包含错误、丢包与队列计数;-g/-G 看与调环形缓冲;-k/-K 看与改卸载特性。排查“网络慢、丢包”时它回答的是物理层与驱动层的问题,与 ip、ss 的应用层视角互补。
基本信息
| 适用平台 | Linux(物理网卡完整支持;veth/bond/bridge 支持有限) |
|---|---|
| 权限要求 | 读信息普通用户即可;修改链路参数需 root |
| 安装 | ethtool 软件包(最小化系统常未预装) |
| 语法 | ethtool [选项] 接口名 |
| 常用选项 | -S 驱动统计、-g/-G 环缓冲、-k/-K 卸载特性、-i 驱动版本、-a 暂停帧 |
典型使用场景
- 带宽上不去:先确认协商速率是否掉到 100Mb/s 或双工变成 Half
- 排查丢包:对比驱动统计里的错误数与队列丢弃,判断问题在链路还是在主机处理能力
- 小包场景吞吐异常:检查卸载特性(GRO/TSO 之类)是否为诱因
- 网络抖动延迟高:结合中断队列与环缓冲看是否存在溢出
- 更换网线、光模块或交换机端口后复核协商结果与错误计数是否归零
常用示例
常用示例
ethtool eth0 # 总览:速率、双工、链路状态、协商能力
ethtool eth0 | grep -E 'Speed|Duplex|Link detected' # 只看链路三要素
ethtool -S eth0 | grep -iE 'err|drop|miss|discard' | head # 驱动统计里挑关键项
ethtool -i eth0 # 驱动名与固件版本,上报问题时一并附上
ethtool -g eth0 # 环形缓冲当前值与可设上限
ethtool -k eth0 | grep -E 'generic-receive|tcp-segmentation' # 卸载特性是否开启
sudo ethtool -G eth0 rx 4096 tx 4096 # 调整环大小,高流量丢包时的常见手段输出逐列读法
| 字段 | 含义 | 异常信号 |
|---|---|---|
| Speed | 当前协商速率 | 与对端不匹配(千兆端口却显示 100Mb/s)先查网线与端口 |
| Duplex | 双工模式 | 显示 Half 基本等同于故障,大流量下会伴随严重冲突与重传 |
| Link detected | 物理链路状态 | no 说明网线、光模块或对端端口有问题 |
| Supported/Advertised link modes | 双方支持的协商能力 | 交集为空说明协商失败,链路会起不来或降速 |
| -S 的 rx_errors/rx_dropped | 驱动侧错误与丢弃计数 | rx_errors 增长多为链路或硬件问题;rx_dropped 多为缓冲不足或主机处理不过来 |
虚拟机的网卡由 virtio 或厂商驱动呈现,Speed 常显示为虚拟上限而非物理链路速率,这时要回到宿主与虚拟交换机侧排查。
用 ethtool -s 修改速率与双工是高风险操作:写错可能当场断网,务必在带外管理或本地控制台环境下进行,改完立即用 Link detected 与连通性测试复核。