使用 ethtool -k 查看网卡卸载功能状态,如 rx-checksumming、tcp-segmentation-offload 等是否启用;2. 检查 gro/gso/lro 是否开启,可通过 ethtool -k 启用;3. 用 lspci 和 dmesg 查看网卡型号及内核加载信息确认硬件能力;4. 通过 tcpdump 或 iperf 测试验证实际效果。linux 下可通过上述步骤检测网络硬件卸载和加速功能状态,确保网卡特性被有效利用以提升网络性能。
linux系统下检测网络硬件卸载和查看网卡加速功能状态,其实并不复杂。这些功能是否开启,直接影响到网络性能表现。如果你用的是支持这些特性的网卡,但没启用相关设置,那就白白浪费了硬件能力。
下面几个方面是你日常排查或调优时最常用到的内容:
1. 查看网卡是否支持卸载功能(ethtool -k)
ethtool
是 Linux 下管理网卡配置的常用工具。使用
ethtool -k
可以看到当前网卡支持的卸载功能以及它们是否已启用。
执行命令如下:
ethtool -k eth0
这里
eth0
是你的网络接口名称,可以根据实际环境替换为
enpXsY
或其他名称。
在输出中你会看到类似以下内容:
rx-checksumming: on tx-checksum-ipv4: on scatter-gather: on tcp-segmentation-offload: on Generic-segmentation-offload: on generic-receive-offload: on
这些就是常见的硬件卸载功能。比如
TCP segmentation offload
表示 TCP 分段由网卡完成,减轻 CPU 负担。
注意:有些功能默认是关闭的,你可以通过 ethtool -K 命令手动开启,前提是网卡支持。
2. 检查 GRO/GSO/LRO 是否启用
这几个缩写分别是:
- GRO(Generic Receive Offload):接收端聚合多个数据包,减少中断次数。
- GSO(Generic Segmentation Offload):发送端大包分片,延迟交给网卡处理。
- LRO(Large Receive Offload):类似 GRO,但更老一些,部分网卡还在用。
查看方法同样用
ethtool -k
,在输出里找对应项。例如:
large-receive-offload: on generic-receive-offload: on generic-segmentation-offload: on
如果看到这些是
off
,可以尝试启用:
ethtool -K eth0 lro on ethtool -K eth0 gro on
不过要注意,并不是所有驱动都支持这些操作,而且某些场景下关闭它们反而能提升稳定性,比如你在做性能测试或者抓包分析时。
3. 使用
lspci
lspci
和
dmesg
辅助判断网卡能力
除了直接查看运行时状态,也可以从硬件层面确认网卡是否具备卸载能力。
- 查看网卡型号:
lspci | grep -i eth
输出类似:
03:00.0 Ethernet controller: Intel Corporation I211 Gigabit Network Connection
然后你可以去官网查这款网卡支持哪些特性。
- 查看内核加载信息:
dmesg | grep -i eth0
有时候能看到网卡初始化时是否启用了特定功能,比如 TSO、GSO 等。
4. 实际效果验证:用
tcpdump
tcpdump
或
iperf
测试
光看状态不一定代表真正生效。可以通过以下方式简单验证:
- 使用
tcpdump
抓包,观察是否有大量小包(说明卸载没开),还是较少的大包(说明可能开启了 GSO)。
- 用
iperf
打流量,对比开启/关闭卸载功能时的 CPU 占用率变化。
举个例子:
iperf -s # 在一端启动服务器模式 iperf -c 目标IP # 客户端发流
发流过程中用
top
或
htop
看 CPU 使用情况,明显下降就说明卸载起了作用。
基本上就这些。检查的时候建议先看
ethtool -k
的输出,再结合具体网卡型号和系统日志判断。这些功能虽然不复杂,但容易被忽略,尤其是新部署的服务器或虚拟机环境,很可能默认没开。