ethtool怎样调整网卡参数

联启 网络工具 13

Linux网卡调优实战:ethtool命令详解与参数优化指南

目录导读


ethool是什么?

ethool是Linux系统下最强大的网卡诊断与调优工具,它直接与网卡驱动交互,允许管理员查看、修改网卡硬件参数,而无需重启网络服务,无论是排查丢包、提升吞吐量,还是降低延迟,ethool都是运维人员的核心武器。

ethtool怎样调整网卡参数-第1张图片-电脑手机工具软件下载 - 免费实用工具合集 | 联启科技

基本用法示例:

# 安装(CentOS/Ubuntu通用)
yum install ethtool -y   # CentOS/RHEL
apt install ethtool -y   # Ubuntu/Debian
# 查看网卡基本信息
ethtool eth0

核心参数解析:速度、双工与自动协商

1 查看当前链路状态

ethtool eth0

重点关注:

  • Speed: 当前实际速率(如1000Mb/s)
  • Duplex: 双工模式(Full/Half)
  • Auto-negotiation: 是否开启自动协商

2 手动调整速率与双工

当自动协商失败或需强制特定模式时,使用:

# 强制1000M全双工,关闭自动协商
ethtool -s eth0 speed 1000 duplex full autoneg off

Q:何时需要手动配置?
A:常见于连接老旧交换机或存在协商异常时,强制配置能跳过握手过程,但必须确保对端设备支持且配置一致,否则会导致链路不通。

3 验证修改

ethtool eth0 | grep -E "Speed|Duplex|Auto-negotiation"

高级调优:Ring Buffer、Offload与中断合并

1 Ring Buffer优化(降低丢包)

网卡驱动使用环形缓冲区(Ring Buffer)暂存数据帧,当流量突发时,缓冲区满会导致丢包。

查看当前Ring大小

ethtool -g eth0

调整Ring大小(示例:接收/发送队列改为4096):

ethtool -G eth0 rx 4096 tx 4096

Q:Ring越大越好吗?
A:不一定,增大Ring可减少突发丢包,但会增加单个包的内存占用和延迟,建议根据实际流量峰值逐步调整,观察ethtool -S eth0中的rx_dropped指标。

2 Offload卸载功能调优

硬件Offload技术将部分协议处理任务交给网卡,减轻CPU负担。

查看当前Offload状态

ethtool -k eth0

常用开关(以接收校验和卸载为例):

# 关闭(适用于需要CPU完全控制或驱动bug场景)
ethtool -K eth0 rx off
# 开启(推荐CPU负载高时)
ethtool -K eth0 rx on

Q:哪些场景需要关闭Offload?
A:抓包分析(tcpdump)时,Offload会导致内核看到的包与实际线缆包不一致(如大包分段或校验和假值),部分虚拟化环境或老旧驱动可能对Offload支持不佳。

3 中断合并(Coalescing)调优

中断合并通过延迟中断响应,降低CPU频繁上下文切换,提升吞吐量;但会增加延迟。

查看当前中断合并参数

ethtool -c eth0

调优示例(降低延迟场景):

# 减少合并帧数(缩短延迟)
ethtool -C eth0 rx-frames 1 tx-frames 1
# 增大合并帧数(提升吞吐量,适合大文件传输)
ethtool -C eth0 rx-frames 128 tx-frames 128

持久化配置方案

手动修改的ethool参数在重启网络服务或系统后失效,有两种持久化方法:

1 方案一:写入网卡配置文件(推荐)

/etc/sysconfig/network-scripts/ifcfg-eth0(CentOS)或/etc/network/interfaces(Debian)中添加:

# CentOS ifcfg示例
ETHTOOL_OPTS="-G eth0 rx 4096 tx 4096; -K eth0 rx on; -s eth0 speed 1000 duplex full"

2 方案二:系统服务方式(通用性更强)

创建/etc/systemd/system/ethtool.service

[Unit]
Description=Apply ethtool settings
After=network.target
[Service]
Type=oneshot
ExecStart=/sbin/ethtool -s eth0 speed 1000 duplex full autoneg off
ExecStart=/sbin/ethtool -G eth0 rx 4096 tx 4096
ExecStart=/sbin/ethtool -K eth0 rx on tx on
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target

然后启用服务:

systemctl enable ethtool.service
systemctl start ethtool.service

常见问题与Q&A

Q1:修改参数后网络中断,如何恢复?

A:若远程操作,建议先利用screentmux保留会话,若已断开,可通过带外管理(如IPMI、iLO)或本地登录恢复,在本地执行ethtool -s eth0 autoneg on重新开启协商。

Q2:为什么ethtool -S显示的rx_dropped很高?

A:通常原因包括:

  1. Ring Buffer过小 → 增大rx
  2. 驱动bug或中断亲和性不当 → 检查/proc/interrupts中CPU分布
  3. 网卡过热或硬件故障 → 检查dmesg | grep eth0错误信息

Q3:如何在多网卡场景下批量应用配置?

A:编写循环脚本:

for iface in eth0 eth1 eth2; do
    ethtool -G $iface rx 4096 tx 4096
done

Q4:校验和Offload开启后,为何tcpdump显示错误?

A:Offload会在数据到达软件前由网卡计算校验和并附在帧尾,tcpdump捕获的是“预计算”后的正确包,若想看到实际线路上的“错误”校验和,需关闭rx-checksumtx-checksum


总结与最佳实践

ethool是网卡调优的瑞士军刀,建议遵循以下步骤:

  1. 基线测量:使用nstatdstatperf监控当前延迟、吞吐量和丢包率。
  2. 单变量测试:每次只调整一个参数(如仅增大Ring Buffer),观察10-30分钟数据。
  3. 持久化配置:避免仅靠命令行手动设置,必须写入启动脚本或服务。
  4. 版本兼容性:不同网卡驱动(ixgbe、e1000e、mlx5)支持的参数略有差异,执行ethtool -h查看帮助。
  5. 安全回滚:保持autoneg on为默认回退方案;若强制设置speed/duplex,确保对端硬件支持。

没有“万能”的ethool参数组合,最佳配置取决于你的网络负载模型(低延迟交易、大流量视频、混合云场景),持续监控并调优,才能发挥硬件最大潜力。

标签: 网卡参数

抱歉,评论功能暂时关闭!