9.3. 在具有高 UDP 流量的服务器上禁用 Generic Receive Offload 功能
使用高速度 UDP 批量传输的应用程序应该在 UDP 套接字上启用和使用 UDP Generic Receive Offload (GRO)。但是,如果满足以下条件,您可以禁用 GRO 来提高吞吐量:
- 应用程序不支持 GRO,且无法添加该功能。
TCP 吞吐量不相关。
警告禁用 GRO 可显著降低 TCP 流量的接收吞吐量。因此,不要在与 TCP 性能相关的主机上禁用 GRO。
先决条件
- 主机主要处理 UDP 流量。
- 应用程序不使用 GRO。
- 主机不使用 UDP 隧道协议,如 VXLAN。
- 主机不运行虚拟机(VM)或容器。
流程
可选:显示 NetworkManager 连接配置文件:
nmcli connection show
# nmcli connection show NAME UUID TYPE DEVICE example f2f33f29-bb5c-3a07-9069-be72eaec3ecf ethernet enp1s0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在连接配置文件中禁用 GRO 支持:
nmcli connection modify example ethtool.feature-gro off
# nmcli connection modify example ethtool.feature-gro offCopy to Clipboard Copied! Toggle word wrap Toggle overflow 重新激活连接配置文件:
nmcli connection up example
# nmcli connection up exampleCopy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
验证 GRO 是否已禁用:
ethtool -k enp1s0 | grep generic-receive-offload
# ethtool -k enp1s0 | grep generic-receive-offload generic-receive-offload: offCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 监控服务器上的吞吐量。如果设置对主机上的其他应用程序有负面影响,则在 NetworkManager 配置文件中重新启用 GRO。