⏱️Unraid 实现万兆网络的注意事项
00 分钟
2023-8-24
2023-12-31
type
status
date
slug
summary
tags
category
icon
password
前言:
最近有位朋友遇到了在 Unraid 上万兆网卡无法跑满速度的情况,但由于博主经验不足,未能解决问题。因此我搜索了相关的资料,整理了可能会影响万兆速度的因素供大家参考。

1、硬件设备端

(1)确保网卡插在 PCIE X8 插槽上
理论双向总线吞吐量:
PCI Express
编码数据速率
未编码数据速率
x1
5 Gb/秒
4 Gb/秒(0.5 GB/秒)
x4
20 Gb/秒
16 Gb/秒(2 GB/秒)
x8
40 Gb/秒
32 Gb/秒(4 GB/秒)
x16
80 Gb/秒
64 Gb/秒(8 GB/秒)
  • 万兆网卡一般在 X8 通道上才能实现万兆速度,这个请根据网卡实际来调整。
  • 但同时也要确认 X8 插槽不存在共享带宽的情况。
淘宝 X540 万兆卡说明参考
淘宝 X540 万兆卡说明参考
(2)主板 BIOS 关闭节能选项
为了以防万一,请确保主板的 BIOS 中关闭了所有节能相关的选项(例如 PCIE 设备节能、CPU C-State、ASPM 等)。博主整理了相关的 BIOS 节能选项给到大家去参考,大家根据以下参考,结合自己主板的 BIOS 手册去选择关闭。
服务器应用场景下建议不要开启主板的节能选项,因为博主见过太多因为主板节能设置导致 Unraid 系统出问题的情况。 参考:一位使用 Mellanox ConnectX-3 的网友在关闭了 PCIE 的 ASPM 节能选项后实现了正常的万兆速度。
BIOS 截图
notion image
notion image
notion image
notion image
notion image
notion image
notion image
  • PCI Express Native Power Manager(PCIE 原生控制)
  • DMI Link ASPM Control
  • ASPM
  • L1 Substate
  • DMI ASPM
  • PEG ASPM
  • PCH ASPM
  • CPU C-State(C 状态)
  • Intel SpeedStep
  • Intel Spped Shift Technology
  • 休眠/深度睡眠(Deep Sleep)
  • ACPI 睡眠状态
  • ASPI 自动配置
  • Suspend to RAM(挂起到内存)
  • S3 Save Mode
  • 待补充
(3)主板 BIOS 开启 Above 4G Decoding (大于 4G 地址空间解码)
可以通过开启和关闭该选项去验证和测试网卡的表现。
一方面是对需要大量内存的 PCle 设备比如显卡或计算卡的支持,另一方面是从架构上允许PCIe设备驱动程序访问高于4GB的内存地址。对于具备相应设计的网卡驱动程序可以避免接收数据时的两次缓冲。应保持启用。 ——《Windows 服务器网络性能调优系列硬件篇》
根据微软的文档指出,网卡的驱动程序必须支持64位系统环境下对大于4GB以上内存地址的DMA操作,否则会面临着需要先缓冲到4GB以下的低位地址的两次缓冲而导致的性能丢失。但这个难以核实,因为就没见过哪个驱动程序的说明会清楚描述出这一点。 ——《Windows 服务器网络性能调优系列网卡篇》
notion image
notion image
notion image

2、Windows 端

(1)iPerf 版本可能会影响实际测速结果(Windows 端)
iPerf 版本可能会影响测速的结果,因此建议大家可以尝试用不同的版本测试速度。
国外的网友中就有使用最新版本 3.1.3 测出来的速度不达标的情况(例如只有 4.2Gbit/s),使用 3.0.11 版本则测速正常。
(2)网卡需要安装最新的官方驱动
不要使用 Windows 系统更新的驱动,最好是到官网上下载驱动进行使用。
Unraid 官方论坛上有网友在不安装网卡官方驱动的情况下,只使用 Windows 自动更新的驱动,只能跑到 6Gbits/s 的速度。
(3)关闭杀毒软件/防火墙
测速的时候建议关闭杀毒软件或则防火墙,因为杀毒软件或则防火墙有可能会在系统上安装网络嗅探工具,从而导致万兆速度异常。
这里有个案例,V2EX 上一个 2022 年的帖子《Windows 10 的 10G 网络性能非常糟糕,有什么办法优化吗?》,一位网友的万兆网卡无法实现万兆速度,最后发现是由于杀毒软件(火绒)的原因,卸载并重启系统之后就正常了。
notion image
(4)关闭网卡节能选项
Windows 设备管理器中,在网卡的”高级“设置中关闭一切相关的节能选项,例如以博主的 2.5G 网卡为例:
notion image
notion image
(5)修改 MTU
💡
需要说明的是,如果你在设备上设置了 MTU,那么与之相连的设备也必须设置相应的 MTU 值,否则设备之间无法互联。于此同时,巨型帧不能向下兼容。比如一个设置了 9000 MTU 的设备无法向下兼容 1500 MTU 的设备,因此如果你设置了巨型帧,就必须保证其他与之相连的设备也能够支持巨型帧版设置相同的 MTU 。
参考资料:JUST SAY NO TO JUMBO FRAMES(对巨型帧说不)
  • 如果你是通过交换机连接 NAS 和 PC,那你需要确保交换机、NAS 和 PC 这三者都支持巨型帧,并且也都修改了设备上的 MTU 值,三者之间的 MTU 值要一致;
    • notion image
  • 如果你是将电脑与 NAS 的万兆网卡相连,那么 NAS 端和万兆卡都得修改 MTU 值,并且 MTU 值要一致。
  • MTU 值需要设置为多少得根据情况来测试,有的情况下不需要设置 MTU 值也可以实现万兆(即保持默认的 1500),有的则需要设置为 9000 或者 9014,请大家根据实际情况来调整
    • 有些情况下在 Unraid 下设置了 9000 或者 9014 的 MTU 就会导致 Unraid 连接不上,这时候就得重新设置为其他的值(恢复默认的 1500 可以恢复连接)。
  • Windows 端在设备的高级选项中设置巨型帧:
    • notion image
  • Unraid 在网络设置中修改 MTU:
    • notion image
(6)Intel 网卡:开启接收端扩展( Receive Side Scaling,简写为 RSS )
需要在设备管理的”高级“设置中开启:
notion image
启用接收端扩展(RSS)后,针对特定 TCP 连接的所有接收数据处理都在多个处理器或处理器内核之间共享。如果不使用 RSS,所有处理都是由一个处理器执行,从而导致系统缓存效率低下。
(7)Intel 网卡:将中断节流率降低到低、最小或关闭
降低中断节流率会提高 CPU 利用率。
notion image
(8)Intel 网卡:禁用流量控制
禁用流量控制可能导致帧掉落。
notion image
(9)Intel 网卡:增加”传输描述符缓冲区大小“和”接收描述符缓冲区大小
默认值为 256 或者 512,最大值为 2048,可调整区间为 128 – 2048(以64为增量)。
如果您发现接收到的流量的性能明显下降,则可以选择增加接收缓冲区的数量。如果接收性能不是一个问题,请使用默认设置。增加”传输描述符缓冲区大小“和”接收描述符缓冲区大小“会增加系统内存的使用。
notion image
(9)将接收窗口自动调节级别(TCP Window auto-tuning)设置为 normal。
使用管理员身份运行 CMD 命令行窗口:
notion image
notion image

3、Unraid 端

(1)关闭 NIC flow control ,开启 NIC Offload
在 Unraid 上安装 tips and tweak 插件,使用插件关闭 NIC flow control 并开启 NIC Offload ,修改好之后保险起见最好重启一下 Unraid 。
如果你无法在 CA 应用市场安装
复制以下命令到 Unraid 命令行窗口运行:
然后到插件页面手动安装:
notion image
notion image
notion image
notion image
  • Disable NIC Flow Control :是否关闭网卡 flow control 功能(设置为 Yes 表示关闭)
  • Disable NIC Offload :是否关闭网卡 Offload 功能(设置为 No 表示不关闭)
(2)修改 MTU
关于 MTU 设置的具体说明请看上面 Windows 端的 MTU 说明。
notion image
(3)开启 SMB 多通道
设置 - SMB - 启用 SMB 多通道:
但如果因此出现网络问题,请关闭。
notion image
(4)检查是否内存不够
我在帮别人测试万兆速度的时候,发现在没有关闭 Docker 和虚拟机服务时速度一直上不去,但是 iPerf3 测出来的速度是没问题的。在关闭其他服务释放出相应的内存之后传输速度才正常,通过 free -m 命令查看传输时的内存使用情况,如下图,可以看到 32G 的内存总容量一共缓存了差不多 30G :
notion image
因此,正如我另一篇博客《为什么unRAID下载/拷贝文件时CPU占用高:详解FUSE-SHFS、I/O问题和解决办法》所说,足够的内存是可以加速系统读写速度的:
其实也不是内存不够,只是多一点内存的话,unRAID 系统可以拿来给到读写加速
其实也不是内存不够,只是多一点内存的话,unRAID 系统可以拿来给到读写加速

4、其他

(1)为万兆网络设置单独的网段
建议单独为万兆卡添加另一个网段的 IP :
notion image
(2)iPerf3 测试对 CPU 单核性能有要求

5、参考资料


评论