我正在通过网络使用 NFS 传输大文件(78GB),但传输最终被限制为 6 Gbps(在 2x10Gb NIC 上)。我暂时找不到瓶颈。这是我的设置:
1 个服务器
- MB:Supermicro X10DRH-C(pcie 3.0),只有一个 CPU
- 网卡:2 x 10Gb(英特尔 X710-T2L)
- 64GB DDR4(2400Mhz)
- HBA:LSI 9311-8i => 2 个 mini SAS hd 连接到 SAS 12Gb 背板
- 12 HDD:消费级,SATA。东芝 MG09 18TB(因此 SAS 每条线限制为 6 Gbps)
NFS /etc/exports:xxx(rw、async、fsid=0、no_subtree_check、crossmnt)。nfsd 有 24 个线程
我尝试将dd
大文件放入所有磁盘,速度没有减慢,它们的写入速度均为 200MB/s
2 个客户端
NFS 配置:异步。
MTU:9000。
- threadripper 3970X,192GB 内存,从 4 个 NVME gen 3 的 RAID0 复制
- 2 xeon E5,512GB RAM,从 4 个 SSD 的 RAID0 复制
客户端直接连接到服务器(无需交换机),在他们自己的网络上(10.1.0.0/24 和 10.1.2.0/24)。
我尝试使用环形缓冲区和流量控制ethtool
,但没有任何变化。没有高 CPU 负载。
我通常会同时复制 6-8 个文件,复制到 6-8 个不同的磁盘 => 所以我预计平均传输速率为 9-12Gbps。网络有时会在一个接口上达到超过 9 Gbps 的速度,持续几秒钟,但最终在两个接口上都稳定在 3Gbps 左右。我猜这是由于服务器内存中的缓存
我需要一些帮助来找到瓶颈。
答案1
您使用什么来复制数据?我发现诸如cp
、mv
之类的标准工具rsync
扩展性不是很好,将用于bbcp
此类传输。尽管该项目不幸被放弃,但它仍然更好。我能做的最好的是在我们的 nfs v4.0 安装之间通过共享的 10 Gb/s 以太网线路,但在晚上不使用时,我以前见过它以 1.2 GB/s 的速度饱和。
bbcp
位于https://www.slac.stanford.edu/~abh/bbcp/
我上次检查时发现 Github 上有分支,但它们也被废弃了。
有时斯坦福 git 不起作用,但如果您全天重试,您应该能够从那里获取 v17.12.00.00.0...
如果没有,我会保留一份干净的 repo 副本,以便将其放在新机器上。我刚刚为您存档,然后对其git archive -o bbcp-17.12.00.00.0.tar master
进行 gzip 压缩并将其放在此处:https://ava.genome.arizona.edu/pub/bbcp-17.12.00.00.0.tar.gz
最好的,
答案2
诊断此类网络问题可能比较棘手。请从以下步骤开始(最好一次完成一个步骤):
将 Linux 电源调节器设置为性能;
在客户端和服务器上启用巨型帧(从您的帖子中我看到客户端的 MTU 为 9000,但服务器没有指定);
尝试仅复制单个文件的前 8 GB,至少连续两次如果连续复制速度很快,这意味着您的限制是总磁盘延迟/IOPs(网络和 NFS 会增加一些开销,因此这可能会影响您总的交付 IOPs);
尝试在 NFS 3 和 4.1 之间切换,或者考虑使用 pNFS;
增加 NFS
rsize
和wsize
(参见这里)