应使用ethtool查看网卡当前实际协商速率,执行sudo ethtool 网卡名后关注speed(如1000mb/s)、duplex(应为full)和link detected(必须为yes)三行;/sys/class/net/网卡名/speed可快速获取数值型速率(单位mbps),但仅链路up时有效。

IP地址配置本身不包含网卡物理连接速度信息。要查看网卡当前实际运行的物理速率(比如是100Mb/s、1000Mb/s还是10000Mb/s),必须绕过IP层,直接读取网卡PHY芯片与对端设备(如交换机)协商后的链路状态。
用 ethtool 查看真实协商速率
这是最可靠、最常用的方法,输出的 Speed 值就是当前链路实际跑的速度:
- 先确认网卡名:运行
ip -br link | grep LOWER_UP,找到处于物理连通状态的接口(如ens1f0、enp3s0f0) - 执行命令:
sudo ethtool ens1f0 - 重点看三行:
-
Speed: 如
1000Mb/s表示千兆,10000Mb/s表示万兆 -
Duplex: 应为
Full;若显示Half,极易丢包,需检查对端配置或网线质量 -
Link detected: 必须为
yes,否则物理链路未通
-
Speed: 如
通过 sysfs 快速读取速率数值
适合脚本调用或快速验证,但仅在链路 UP 时有效:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
- 运行:
cat /sys/class/net/ens1f0/speed - 输出为纯数字,单位 Mbps(如
1000表示千兆) - 若报错或显示
Unknown!,先检查Link detected: no、网线、对端设备或驱动是否正常
辅助判断:排查为什么速率低于预期
当看到 Speed: 100Mb/s 但期望是千兆时,常见原因有:
- 对端交换机端口被强制设为百兆,或关闭了自动协商
- 使用了超长或劣质网线(尤其五类线超过100米易降速)
- 网卡或交换机一端
Auto-negotiation为off,另一端为on,导致协商失败降级 - 运行
ethtool -S ens1f0 | grep -i "negotiation_failures\|link_failures"查错误计数 - 运行
dmesg | grep -i "ens1f0.*link\|phy"看内核是否报autoneg failed
注意:别被这些误导
以下信息不能代表当前物理速率:
-
ip link show或ifconfig输出中的mtu、state up—— 这些只反映软件层面状态,不体现物理速率 -
ethtool中的Supported link modes—— 这只是网卡硬件支持的能力列表,不是当前启用的速率 -
lspci查到的 PCIe 速率(如 8 GT/s)—— 这是总线带宽,和以太网链路速率无关










