欢迎光临深圳市联瑞电子有限公司官网!
全国服务热线 : 4000-588-108 | 网站地图 | English 京东店铺 淘宝店铺1688店铺天猫店铺 关注LR-LINK官方微博
LR-LINK联瑞电子官网
[返回上一页]您现在的位置:首页 > 新闻中心 > 选型指导
选型指导

信创环境下网卡性能实测报告(深度版)

2026-07-15 选型指导信创网卡驱动编译,ring buffer调优,中断亲和性配置,RSS队列配置,ethtool参数 浏览: 19

前两篇信创网卡文章聊了选型和基础实测,这篇往深里走。驱动装上了只是第一步——ring buffer 设多大、中断怎么绑核、RSS 队列怎么分,这些参数直接决定网卡能不能跑满带宽。本文从驱动编译开始,一步步拆解信创环境下网卡性能调优的完整链路。

如果你还在选型阶段,建议先看《信创环境下网卡性能实测报告(2026版)》,那篇覆盖了芯片方案对比和基础性能数据。本文聚焦的是"装好驱动之后"的事情。

驱动编译安装:从源码到内核模块

2026年,麒麟V10 SP1(内核5.10+)和统信UOS 1070(内核5.15+)已经内置了主流国产网卡驱动。LRES1031PF-2SFP+(沐创 RNP N10)和 LRES2045PT(网迅 WX1860)在这两个系统上都能免驱识别。但实际项目中,你大概率会遇到以下三种需要手动编译的场景:

接口2×SFP+
速率10G
PCIe3.0 x8
芯片沐创 RNP N10
查看详情

场景一:老版本系统。 麒麟V10初始发行版(2019年,内核4.19)和统信UOS 1050之前的版本,内核中没有集成沐创和网迅的驱动模块。

场景二:自定义内核。 部分信创项目出于安全加固需求会裁剪或重编内核,导致网卡驱动模块被移除。

场景三:新芯片方案的首发驱动。 比如 LRES1530PF-2SFP28 的网迅 WX5025 方案,如果系统内核版本低于5.15,可能需要从 LR-LINK 官网下载新版驱动源码编译。

手动编译的标准流程:

# 1. 确认内核版本和头文件
uname -r
# 输出类似:5.10.0-106.ky10.aarch64

# 2. 安装内核开发包(麒麟V10)
sudo yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r)

# 3. 解压驱动源码包
tar xf LR-LINK_nic_driver_v3.x.tar.gz
cd LR-LINK_nic_driver_v3.x/

# 4. 编译(注意指定内核源码路径)
make KSRC=/usr/src/kernels/$(uname -r)

# 5. 安装模块
sudo make install

# 6. 加载模块
sudo modprobe lr_nic
# 或
sudo insmod src/lr_nic.ko

# 7. 验证
ip link show
dmesg | tail -20
编译前检查 gcc 版本

国产 OS 自带的 gcc 版本可能和内核编译时使用的版本不一致。运行 gcc --versioncat /proc/version 对比——如果 gcc 大版本号不同(比如内核用 gcc 10 编译,系统装的是 gcc 12),编译驱动时可能报 modpversion 错误。解决办法是安装和内核匹配的同版本 gcc,或者用 make KCFLAGS="-Wno-error" 跳过版本检查。

内核参数调优:ring buffer 与中断合并

驱动装好之后,默认参数通常是"保守配置"——保证能跑,但不是最优。调优的第一步是 ring buffer 和中断合并(interrupt coalescing),这两个参数都通过 ethtool 命令调整(参考 ethtool 手册)。

Ring buffer(收发队列深度)。 这个参数决定了网卡硬件和驱动之间缓冲区的容量。默认值通常是 256 或 512,在高并发小包场景下容易溢出导致丢包。

# 查看当前 ring buffer 设置
ethtool -g eth1
# 输出示例:
# Pre-set maximums:
# RX:     4096
# TX:     4096
# Current hardware settings:
# RX:     512
# TX:     512

# 调大到最大值(或 2048,视内存情况)
sudo ethtool -G eth1 rx 2048 tx 2048

实测数据:在 LRES1031PF-2SFP+ 上,ring buffer 从 512 调到 2048 后,64 字节小包 UDP 线速测试的丢包率从 0.08% 降到了 0.01% 以下。对于 LRES1530PF-2SFP28 这类 25G 网卡效果更明显——25G 线速下每秒约 37.2Mpps 的 64 字节包,ring buffer 不够用时丢包是毫秒级发生的。

中断合并(Interrupt Coalescing)。 这个参数控制网卡"攒多少个包才触发一次中断"。设得太低,CPU 被中断淹没;设得太高,延迟上升。

# 查看当前中断合并设置
ethtool -c eth1
# 输出示例:
# rx-usecs: 50
# rx-frames: 32
# tx-usecs: 50
# tx-frames: 32

# 吞吐量优先:增大合并窗口
sudo ethtool -C eth1 rx-usecs 200 rx-frames 128

# 延迟优先:减小合并窗口
sudo ethtool -C eth1 rx-usecs 10 rx-frames 8
吞吐量 vs 延迟的权衡

信创环境中,数据库和存储网络场景优先调低延迟(rx-usecs 设 10-30);文件传输和备份场景优先调高吞吐(rx-usecs 设 100-500)。没有一组参数能同时满足两种需求——根据业务类型分别配置。

中断亲和性与 RSS 队列配置

单核处理所有网卡中断是性能杀手。25G 网卡线速运行时,每秒数百万次中断如果全压在一个 CPU 核心上,那个核心直接跑满,其他核心却在闲置。解决办法是两件事:中断亲和性(IRQ Affinity)和 RSS(Receive Side Scaling)。

中断亲和性 是把网卡的不同中断分散绑定到不同 CPU 核心上(详见 Linux 内核 IRQ 亲和性文档)。

# 查看网卡中断号
cat /proc/interrupts | grep eth1
# 输出示例(4个中断向量):
# 128:  1234567  IRQ  eth1-Tx-0
# 129:  2345678  IRQ  eth1-Rx-0
# 130:  3456789  IRQ  eth1-Rx-1
# 131:  4567890  IRQ  eth1-Rx-2

# 将 Rx-0 绑到 CPU0,Rx-1 绑到 CPU1,Rx-2 绑到 CPU2
echo 1 | sudo tee /proc/irq/129/smp_affinity_list
echo 2 | sudo tee /proc/irq/130/smp_affinity_list
echo 4 | sudo tee /proc/irq/131/smp_affinity_list

RSS 队列 则是网卡硬件层面把入站流量哈希分发到多个接收队列,每个队列对应一个独立的中断向量和 CPU 核心。

# 查看当前 RSS 队列数
ethtool -l eth1
# 输出示例:
# Pre-set maximums:
# RX:     8
# Current hardware settings:
# RX:     2    ← 默认只开了2个队列

# 开到最大(或设为 CPU 核心数,取较小值)
sudo ethtool -L eth1 rx 8

实测对比:在飞腾 S2500(8核)+ LRES1530PF-2SFP28 的平台上,RSS 从默认 2 队列调到 8 队列后,8 线程 iperf TCP 吞吐量从 18.6 Gbps 提升到 23.4 Gbps——提升幅度接近 26%。瓶颈不在网卡硬件,而在单核处理能力被均匀分摊了。

irqbalance 守护进程的注意事项

国产 OS 默认运行的 irqbalance 服务会自动重新分配中断亲和性,可能覆盖你的手动配置。生产环境中建议二选一:要么关掉 irqbalance(systemctl stop irqbalance)然后手动绑定,要么保留 irqbalance 但用 irqbalance --oneshot 做一次初始分配后锁定。不要两边同时操作,否则参数会互相打架。

CPU+OS 兼容性矩阵

信创环境的复杂性在于 CPU 架构和 OS 版本的排列组合。下表汇总了 LR-LINK 主要网卡在不同平台上的兼容性状态(基于 2026 年 Q2 实测):

网卡型号芯片方案飞腾+麒麟V10鲲鹏+麒麟V10海光+UOS龙芯+麒麟V10
LRES2045PT网迅 WX1860免驱 ✔免驱 ✔免驱 ✔免驱 ✔
LRES1031PF-2SFP+沐创 RNP N10免驱 ✔免驱 ✔免驱 ✔需编译 ⚠
LRES1530PF-2SFP28网迅 WX5025免驱 ✔免驱 ✔免驱 ✔需编译 ⚠
LRES1027PF-4SFP28Intel E810需驱动包 ⚠需驱动包 ⚠免驱 ✔不支持 ✘
SP681华为全国产需 HISI 驱动 ⚠免驱 ✔需驱动包 ⚠不支持 ✘
SP670华为全国产需 HISI 驱动 ⚠免驱 ✔需驱动包 ⚠不支持 ✘

几个要点说明:

x86 平台(海光、兆芯) 兼容性最好。所有网卡驱动最初都在 x86 上开发和调试,海光 + UOS 的组合基本能做到开箱即用。

ARM 平台(飞腾、鲲鹏) 需要注意 dma_mask 设置。部分网卡在 ARM 架构上需要 64 位 DMA 地址空间,如果 BIOS 中 IOMMU 配置不当,可能出现"驱动加载成功但收不到包"的现象。鲲鹏平台对华为自家网卡的兼容性最优,这是预期之中的。

LoongArch 平台(龙芯) 驱动生态还在完善中。沐创和网迅的驱动在龙芯上需要打补丁后编译,建议直接联系 LR-LINK 技术获取龙芯专用驱动包。

高级基准测试方法

基础测试用 iperf 跑一下吞吐量就够了,但要做严谨的性能评估,需要更系统的方法。

测试前准备清单:

# 1. 关闭系统节能特性(避免 CPU 降频影响结果)
sudo cpupower frequency-set -g performance

# 2. 关闭网卡节能特性
sudo ethtool --set-eee eth1 eee off 2>/dev/null

# 3. 确认 PCIe 链路速率和宽度
sudo lspci -vvv -s $(ethtool -i eth1 | grep bus-info | awk '{print $2}') | grep Lnk

# 4. 设置 MTU(如需 Jumbo Frame)
sudo ip link set eth1 mtu 9000

# 5. 清空 ARP 表避免首次包延迟
sudo ip neigh flush dev eth1

单线程 vs 多线程测试。 先用单线程暴露驱动瓶颈,再开多线程验证线速能力:

# 单线程 TCP(暴露单队列瓶颈)
iperf -c 192.168.1.2 -t 30 -i 1

# 8线程 TCP(验证多队列聚合带宽)
iperf -c 192.168.1.2 -t 30 -i 1 -P 8

# UDP 线速测试(验证丢包率)
iperf -c 192.168.1.2 -t 30 -u -b 25G -l 1472

# 延迟测试(用 qperf 更精确)
qperf 192.168.1.2 -oo msg_size:1:64K:*2 -t 60 tcp_lat
23.4 Gbps
LRES1530PF-2SFP28 优化后 8 线程吞吐
26%
RSS 8 队列 vs 默认 2 队列提升
<0.01%
ring buffer 调优后 UDP 丢包率

双向测试。 iperf 默认只测单向。真实业务中网卡同时收发,双向测试更能反映实际表现:

# 服务端启动双向模式
iperf -s -d

# 客户端同时收发
iperf -c 192.168.1.2 -d -t 30 -P 4

长时间稳定性测试。 跑 30 分钟以上的持续流量,观察吞吐量是否波动、是否出现间歇性丢包。这类问题通常和驱动内存泄漏或 PCIe 总线错误有关。测试期间用 dmesg -w 实时监控内核日志。

调优效果对比

LRES1530PF-2SFP28(网迅 WX5025,25G 双口)在飞腾 S2500 + 麒麟V10 SP1 平台为例,调优前后的关键指标变化:

接口2×SFP28
速率25G
PCIe3.0 x8
芯片网迅 WX5025
查看详情
测试项默认配置调优后变化
TCP 8线程吞吐18.6 Gbps23.4 Gbps+26%
TCP 单线程吞吐12.3 Gbps16.8 Gbps+37%
UDP 64B 丢包率0.08%<0.01%改善 8 倍
TCP 延迟(p99)186 μs94 μs-49%
CPU 占用(满载)单核 89%8核均摊 28%负载均衡

调优手段对应关系:吞吐提升主要来自 RSS 队列扩展(8 队列)和 ring buffer 加大;延迟下降来自中断合并参数调低(rx-usecs 从 50 降到 10);CPU 均衡来自中断亲和性手动绑定。


信创网卡性能调优路径总结
  • 第一步:确认驱动正确安装,PCIe 链路速率和宽度符合预期
  • 第二步:调大 ring buffer(rx/tx 设 2048 起步),降低小包丢包率
  • 第三步:根据业务类型设置中断合并参数(延迟敏感 vs 吞吐优先)
  • 第四步:扩展 RSS 队列到 CPU 核心数,手动绑定中断亲和性
  • 第五步:用单线程 + 多线程 + UDP 三组测试交叉验证

常见问题 FAQ

信创服务器上 ethtool 命令找不到,怎么安装?

麒麟V10 用 yum install ethtool,统信UOS 用 apt install ethtool。如果软件源中没有 ethtool 包,可以从源码编译:从 kernel.org 下载对应内核版本的 ethtool 源码,./configure && make && sudo make install 即可。部分信创项目会预装 ethtool 到 /usr/sbin/ 目录下,先试试 which ethtool 看看是否已有。

RSS 队列数是不是设得越大越好?

不是。RSS 队列数应设为"实际使用的 CPU 核心数"和"网卡最大队列数"中的较小值。比如飞腾 FT-2000/4 只有 4 核,即使网卡支持 8 队列,设成 4 就够了——多出来的队列绑不到核心反而浪费中断资源。另外,如果服务器上还有其他高负载任务(如数据库),需要预留 1-2 个核心给业务进程,不要把所有核心都分给网卡中断。

国产网卡调优后需要重启才能生效吗?

不需要。ethtool 的参数修改(ring buffer、中断合并、RSS 队列数)都是运行时生效,立即生效但重启后丢失。如果要持久化,在麒麟V10 中把命令写入 /etc/rc.local 或创建 NetworkManager dispatcher 脚本;统信UOS 中可以用 systemd service 在开机时自动执行。中断亲和性同理,建议写一个初始化脚本放在开机自启中。

25G 网卡和 10G 网卡在同一台服务器上能共存吗?调优参数一样吗?

可以共存,LRES1031PF-2SFP+(10G)和 LRES1530PF-2SFP28(25G)可以分别插在不同的 PCIe 槽位同时工作。调优参数的思路一样(ring buffer 调大、RSS 队列扩展、中断绑核),但具体数值需要根据各自带宽调整——25G 网卡的 ring buffer 建议设更大(4096),中断合并的 rx-usecs 阈值也需要比 10G 更激进才能发挥带宽优势。注意两张卡的中断不要绑到同一组核心上。

龙芯 LoongArch 平台上网卡性能能达到标称值的多少?

取决于驱动成熟度。在龙芯 3A5000 + 麒麟V10(LoongArch 版)上,沐创 RNP N10 的 10G 网卡经过补丁编译后,TCP 吞吐可以跑到 8.5-9.0 Gbps(标称 10G 的 85-90%),差距主要在 LoongArch 的 PCIe 控制器效率和驱动优化程度。网迅 WX5025 的 25G 方案在龙芯上的实测约 20-21 Gbps(80-84%)。如果项目对性能要求严格,建议优先选飞腾或鲲鹏平台,驱动成熟度更高,性能损耗更小。

本文涉及产品

  • LRES1031PF-2SFP+ — 10G / SFP+ / 双口 / PCIe 3.0 x8 / 沐创 RNP N10
  • LRES1530PF-2SFP28 — 25G / SFP28 / 双口 / PCIe 3.0 x8 / 网迅 WX5025
  • LRES1027PF-4SFP28 — 25G / SFP28 / 四口 / PCIe 3.0 x8
  • SP681 — 25G / SFP28 / 双口 / 华为全国产方案
  • SP670 — 100G / QSFP28 / 双口 / 华为全国产方案
  • LRES2045PT — 1G / RJ45 / 双口 / PCIe 3.0 x1 / 网迅 WX1860
粤ICP备18078389号      Copyright © All Rights Reserved. 深圳市联瑞电子有限公司 版权所有
网安备案标识

粤公网安备 44030602003563号

产品咨询
关注官方微信
技术支持
关注官方微信
客服电话服务电话

服务热线:
4000-588-108