我有 2 台戴尔服务器。一个是 R720,另一个是 R730。它们都有戴尔支持的四端口子卡。两种卡均仅支持 RJ45,并具有 (2) 个 10Gbe + (2) 个 1Gbe 端口。一张卡是 Intel X540,另一张是 Qualcomm 57800。两张卡都有最新的固件和最新的戴尔支持的驱动程序。 10Gbe 端口使用直接以太网和良好的 Cat 7 短电缆。两个系统均已完全更新。
在 Linux 计算机上创建 SMB 共享并运行受支持的 RHEL 8.5 订阅版本后,我在 Windows 服务器之间获得了 10Gbe 的完整速度(无论是上传还是下载,传输速度大约为 1.0-1.3GB/s)。在 RHEL 系统(更新、更快、占用更多资源的 R730)上,我无法获得超过 1Gbe 的任何数据(大部分都在 67-68MB/s 左右)。在 Linux 机器上,从 Windows R720 上传或下载没有什么区别。
这是最关键的。我已经在两台机器之间交换了子卡,并完全重建了以太网连接,更新了驱动程序,并花了几天时间调整 Linux 盒子中的备用卡。我获得的最佳持续速度约为 72MB/s。奇怪的是,当我将 MTU 从 9000 的巨型帧削减到 1500 的标准时,我会获得峰值性能,可能会飙升至 80-90MB/s,而且,如果我传输多个文件,我确实会看到一个持续传输速度为 140MB/s MTU 较小。对于巨型帧,它的行为就像单线程一样,偶尔会“停滞”一会儿。它的表现就好像 RSS 不工作一样,只会通过 1 个 CPU 进行单线程,而不是分配用于扩展的 16 个 CPU。
我很困惑。还有其他人遇到过让 10Gbe 卡在 Red Hat、Fedora 或 CentOS 中工作的问题吗?这绝对让我抓狂!同样,来自两个不同供应商的两个单独的卡并且使用两个不同的驱动程序的行为完全相同。这几乎就像红帽某处存在操作系统限制一样。帮助!
我已运行此 SAS 到 SAS、NVME 到 NVME、SAS-HD 到 SAS-SSD 等。连接似乎被限制为相同的传输速率...ARGGGhhhhhh!
eno1 的设置:
Supported ports: [ TP ]
Supported link modes: 100baseT/Half 100baseT/Full
1000baseT/Full
10000baseT/Full
Supported pause frame use: Symmetric Receive-only
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 100baseT/Half 100baseT/Full
1000baseT/Full
10000baseT/Full
Advertised pause frame use: Symmetric Receive-only
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Link partner advertised link modes: 100baseT/Full
1000baseT/Full
10000baseT/Full
Link partner advertised pause frame use: Symmetric Receive-only
Link partner advertised auto-negotiation: Yes
Link partner advertised FEC modes: Not reported
Speed: 10000Mb/s
Duplex: Full
Auto-negotiation: on
Port: Twisted Pair
PHYAD: 17
Transceiver: internal
MDI-X: Unknown
Supports Wake-on: g
Wake-on: d
Current message level: 0x00000000 (0)
Link detected: yes
driver: bnx2x (Previous Intel Card used IXGBE driver - IDENTICAL issues!)
version: 1.713.36-0 storm 7.13.15.0
firmware-version: FFV15.15.08 bc 7.14.16 phy 1.45
这两张卡是:
BRCM 10G/GbE 2+2P 57800-t rNDC ||英特尔(R) 2P X540/2P I350 rNDC
两个用于服务器的戴尔四端口 RJ45。
再次请记住,我已经在机器之间交换了卡,完全重建了 Linux 以太网连接,并且两台机器的行为完全相同。 Windows Server 的速度达到全线速度,Linux 的速度非常慢,只有 1Gbe(接近 500Mbe)。我确实有 500Mb 的互联网连接,但运行在 1Gbe 端口上。
答案1
第一个问题与 Windows SMB 限制(客户端或服务器版本)有关。为了节省资源微软添加了SMB限制和限制MTU,以下是微软修正公告信息:
- 对于 SMBv3 及更高版本,请确保 SMB 多通道已启用并正常工作。
- 在 SMB (Windows) 客户端上,启用 SMB 中的大 MTU,并禁用带宽限制。为此,请运行以下命令(在 Windows 上使用 PowerShell):
设置 SmbClientConfiguration -EnableBandwidthThrotdling 0 -EnableLargeMtu 1
https://docs.microsoft.com/en-us/windows-server/storage/file-server/troubleshoot/slow-file-transfer
我在 Linux RHEL 8 上将所有 Win 共享安装为 CIFS,但是,将它们设置为 SAMBA 共享可能是最佳途径(即使 CIFS 是 SAMBA 变体)。我使用这些说明只是因为它们很简单:
https://linuxize.com/post/how-to-mount-cifs-windows-share-on-linux/
===========
结果:
除了 NVME 到 NVME 之外,所有驱动器都实现了全线速。 NVME 设置的最高持续速度为 500MB/s。通常情况下,对于全 10Gbe 线速来说,它应该几乎是 2 倍,但是,我可以忍受一段时间。 SAS HD磁盘trxfr为175-200MB/s(有时通过RAID卡缓存高达500MB/s)。 SATA SSD 转 SAS SSD 运行速度约为 400-500MB/s。 NVME 是唯一剩下的瓶颈。我会在有时间的情况下解决这个问题。但目前我对 500MB/s 的持续速度感到满意。