ethtool查不到速率通常因网卡设备名错误或驱动未加载;显示Speed: Unknown!则多因物理链路断开、协商失败、光模块不兼容或固件过旧;真实速率上限需结合Supported link modes、lspci和ethtool -i/-m综合判断。
ethtool 查不到速率:网卡驱动没加载或设备名写错了
直接运行 ethtool eth0 却显示 No such device 或空输出,大概率是网卡设备名不对,或者驱动根本没起来。Linux 下万兆网卡(比如 ixgbe、i40e、ice)常被识别为 enp1s0f0、ens2f0 这类名字,而不是老式的 eth0。
先用以下命令确认真实接口名和驱动状态:
ip -br link show | grep -E "UP|DOWN" lspci | grep -i ethernet lsmod | grep -E "ixgbe|i40e|ice"
如果 lsmod 没输出对应驱动,说明驱动未加载,需手动 modprobe ixgbe(按实际芯片选),再检查 dmesg | tail -20 看有没有硬件识别日志。
ethtool 显示 Speed: Unknown!:链路未建立或协商失败
运行 ethtool enp1s0f0 后看到 Speed: Unknown!,常见于以下几种情况:
- 物理链路断开(网线没插、光模块未上电、对端关机)
- 双工/速率强制设置不匹配(比如本端设为 10G 全双工,对端设为自动协商)
- 万兆光模块未被识别(尤其第三方兼容模块缺少 EEPROM 支持,
ethtool -m enp1s0f0可能报错或无输出) - 网卡固件版本过旧,无法正确报告速率(
ethtool -i enp1s0f0查看firmware-version,对比厂商 Release Notes)
临时验证链路是否可达:拔掉网线再插回,观察 ethtool enp1s0f0 中 Link detected: yes 和 Speed: 是否恢复显示。
查看真实速率上限:别只信 “Speed”,要看 “Supported link modes”
ethtool 输出里的 Speed: 是当前协商结果,不是硬件能力。万兆网卡通常支持多档速率(如 10000baseT/Full, 1000baseT/Full, 100baseT/Full),得看 Supported link modes 行:
CentOS Linux 7.9.2009
CentOS Linux 7.9.2009是传统CentOS Linux 7的最后主要版本,也是很多企业历史服务器中仍可能遇到的系统版本。它以稳定、兼容RHEL 7生态、文档丰富和软件支持广泛著称,曾长期用于Web服务、数据库、虚拟化节点和企业内部业务系统。不过CentOS Linux 7已于2024年6月30日停止维护,现在继续使用会面临安全补丁缺失风险。该版本更适合旧业务迁移、历史环境恢复或离线兼容性测试。
下载
ethtool enp1s0f0 | grep "Supported link modes"
→ Supported link modes: 10000baseT/Full
1000baseT/Full
100baseT/Full
这表示该网卡 PHY 层原生支持 10G、1G、100M;但能否跑满 10G,还取决于:
- 使用的线缆类型(DAC 铜缆 or 光纤?Cat6a 以上才支持 10GBASE-T)
- 交换机端口是否开启 10G 模式(有些交换机默认降速到 1G)
- BIOS/UEFI 中是否启用 PCIe Gen3 x8 或更高带宽(万兆卡若插在 Gen2 x4 插槽,可能限速)
万兆网卡跑不满 10Gbps:瓶颈常不在 ethtool 显示的“速率”上
即使 ethtool 显示 Speed: 10000Mb/s,实测吞吐仍可能只有 7–9 Gbps,这不是工具问题,而是现实约束:
- TCP/IP 协议栈开销(包头、确认、重传)天然吃掉约 5–10% 带宽
- 单队列网卡 + 单核 CPU 无法打满 10G(中断集中在 1 个 CPU 上,
cat /proc/interrupts | grep enp1s0f0可验证) - 未启用
irqbalance或未手工绑定 RSS(Receive Side Scaling)队列到多核 - 网卡 offload 功能未开(
ethtool -K enp1s0f0 gso on tso on gro on)
简单压测建议用 iperf3 -c -t 30 -P 4(-P 4 启动 4 并发流),比单流更能暴露调度瓶颈。
真正要确认硬件上限,得结合 ethtool -i(驱动/固件)、ethtool -m(模块诊断)、lspci -vv -s $(lspci | grep Ethernet | head -1 | awk '{print $1}')(PCIe 链路宽度与速率)三者交叉验证——单独看 Speed: 容易误判。
