Skip to content

xgro

南京翼辉网络部 · SylixOS 软件 GRO 模块

···Armory 获取
GRO接收卸载
64并发流
TCP/UDP协议支持
SylixOS目标平台

简介

xgro 是专为 SylixOS 设计的高性能软件 GRO(Generic Receive Offload,通用接收卸载)内核模块。它在数据包进入协议栈之前,将同一流的多个小包聚合为大包,显著降低高速网络下的 CPU 占用和中断处理开销。

核心特性:

  • Cache 对齐关键数据结构,避免多核伪共享
  • Jenkins 类哈希算法,最小化流表碰撞
  • 无锁快慢路径,减少自旋锁竞争
  • 支持 TCP/IPv4 和 UDP/IPv4
  • 单网卡最多 64 个并发流(可配置)

使用方法

模块加载后在 Shell 中注册 xgro 命令:

bash
xgro <ifname> [on|off] [cnt <val>] [size <val>] [interval <val>] [timeout <val>]
xgro show [ifname]

开启 GRO

bash
xgro en1 on

查看状态

bash
xgro show en1

输出示例:

==============================================================
 Interface: en1        (Netdev Index: 1)
==============================================================
 [ Configuration ]
   GRO State            : Enabled
   Max Flows            : 64
   Max Merge Count      : 64 packets
   Max Merge Size       : 65535 bytes
   Flow Timeout         : 20 ms
   Timer Interval       : 20 ms

 [ Statistics ]
   Active Flows         : 5
   RX Packets           : 125890
   Merged Packets       : 98000
==============================================================

性能调优

bash
# 提升吞吐量:增大聚合数量和大小
xgro en1 cnt 64 size 65535

# 降低延迟:减小超时时间
xgro en1 timeout 10

配置参数

参数关键字默认值说明
最大聚合数量cnt32单个聚合链最大包数
最大聚合大小size32KB聚合后最大字节数
流超时时间timeout20ms超时后立即上送协议栈
定时器间隔interval20ms检查过期流的频率

故障排查

TCP 接收速度异常 通过 xgro en1 cnt 16 适当降低聚合包数,或使用 iftcpwnd 调整 TCP 窗口大小。

哈希碰撞过高xgro showHash Collisions 持续升高时,增大 GRO_MAX_FLOWS(必须为 2 的幂)并重新编译。

最新更新

v2.0.0重大版本
  • 重构为 2.0.0 版本
  • 新增 Cache 对齐优化,避免多核伪共享
  • 优化哈希算法,减少流表碰撞
v2.0.0修复补丁
  • 修复以太网头长度比较问题

翼辉信息 · 网络技术部