Linux下的NFS和SMB(RDMA)文件拷贝性能的迷思和讨论
本帖最后由 oldnetdog 于 2024-9-13 17:32 编辑问题:Linux下NFS(RDMA启用)挂载,大文件拷贝速度上不去
环境描述:
1、服务端,物理机
基本硬件:EPYC 7282,内存128G,PCIe Gen4
操作系统:Debian 12.6,Kernel 6.8.12
网卡:Mellanox CX6-DX ,100G协商速度。iperf和ib_write_test测试确保带宽,MTU4200
NFS目录共享:采用内核自带或者vastnfs支持,启用了RDMA(NFSoRDMA)支持,将4*7.68T MemBlaze 6530 Linux MD Raid0卷组,格式化为XFS后export了一个共享目录
SMB目录共享:ksmbd,内核自带模块,ksmbd-tools 3.5.2,启用了RDMA(SMBDirect)支持,SMB共享目录和NFS export目录一致
NVMeOF块设备共享:通过内核nvmet模块,构建支持RDMA的NVMeOF target,底层测试逻辑卷同样是上面的Linux MD Raid0卷组划出来的,供客户机访问
2、客户端,虚拟机
客户机1:
硬件情况:虚拟机,处理器 XEON 6268CL 8核,内存32G,宿主机PCIe是Gen3
操作系统:Ubuntu 22.04 VM,Kernel 6.10.8
网卡:Mellanox CX6-Dx 直通或者VF,100G协商速度,iperf和ib_write_test测试确保带宽,MTU4200,Mellanonx OFED或者内核自带驱动都试过
本地测试目录:物理直通了一块傲腾900P 280G,格式化XFS挂载本地目录,作为测试
NFS挂载目录:采用内核自带nfs模块挂载,启用nconnect参数和异步缓存async,启用RDMA挂载了NAS端目录
SMB挂载目录:采用内核自带cifs模块挂载,启用异步缓存,启用RDMA挂载了NAS端同一个目录
NVMeOF挂载块设备:通过内核nvme-rdma模块,通过RDMA挂载服务端的NVMe LUN盘
客户机2:
硬件情况:虚拟机,处理器 XEON 6268CL 8核,内存16G,宿主机PCIe是Gen3
操作系统:Windows 10 企业版
网卡:Mellanox CX6-Dx VF,100G协商速度,iperf和ib_write_test测试确保带宽,MTU4200,安装了Mellanox WinOF2驱动
本地测试盘符:500G QEMU LVM虚拟盘(host主机是三星1735),格式化NTFS挂载本地盘符
SMB挂载目录:采用Windos网络共享方式,启用RDMA(SMBDirect)挂载了NAS端同一个共享目录
3、测试数据:
Linux客户机1上,从900P本地目录,通过Ubuntu文件管理器或者命令行rsync拷贝50G-100G单个大文件到NFS挂载目录,最高1.4GB/s,平均大概在1.2GB/s左右
Linux客户机1上,从900P本地目录,通过Ubuntu文件管理器或者命令行rsync拷贝50G-100G单个大文件到SMB挂载目录,最高2.0GB/s,平均大概在1.6GB/s左右
Linux客户机1上,通过iozone或者fio测试NFS挂载目录(bs=1M),最高吞吐流量到10GB/s左右
Linux客户机1上,通过NVMeOF协议(RDMA启用),挂载NAS的块设备,fio测试吞吐能打满100G网卡流量
Window客户机2上,从500G虚拟硬盘,通过Windows资源管理器,拷贝50G-100G单个大文件到SMB挂载目录,最高4.0BG/s,平均大概2.8-3.0GB/s左右
4、问题/讨论:
1)Windows客户机下,SMBDirect性能基本符合预期,可能限制在QEMU虚拟盘读取上,虽然底层是Gen4的NVME,但宿主机是Gen3的
2)Linux客户机下,SMBDirect性能超过预期,这个和内核版本关系巨大,6.10+内核,对比6.8/6.9内核,大文件拷贝测试性能提升50%+
3)Linux客户机下NFSoRDMA性能不符合预期,参数优化了很多(包括nconnect,async),内核也试过了6.8-6.10,均影响不大,性能最高大概也就1.2GB/s左右
4)Linux客户机下,没有启用SPDK情况下的NVMeOF(RDMA启用) IOPS和吞吐性能仍然爆棚,这个确实很厉害
目前主要是问题3,希望有一些深入探讨。
上面写的比较概要,大概应该能表达意思了,不清楚的可以继续补充。
NFS本身性能就不好,建议能用smb还是smb吧。 mmma 发表于 2024-9-12 17:59
NFS本身性能就不好,建议能用smb还是smb吧。
就是想知道Linux下NFS单文件拷贝还有多少提升空间。Linux下SMBDirect稳定性还是略差些。
NFS本身,看vastnfs的文档,通过多通道和RDMA,性能可以支持到160GiB/s以上。 你的测试结果跟我以前试过的一致。 如果你有时间,可以试试两边都是win server 2025,据说它nvme驱动以及smbdirect性能都提高很多。
linux这边,kernel 6.11 会在这周末发布,你可以再看看性能。并且ext4的性能也有提高。这里xfs可以换ext4,同时mount参数加上 noatime nodiratime试试 感觉通用环境对如此高的带宽优化有限,更多的是对高并发和低延迟的支持
用BSD测试不知道支持程度如何 本帖最后由 oldnetdog 于 2024-9-12 22:02 编辑
summerq 发表于 2024-9-12 20:54
你的测试结果跟我以前试过的一致。 如果你有时间,可以试试两边都是win server 2025,据说它nvme驱动以及sm ...
本地和远端都试了试EXT4和mount参数,差异不大,速度或高一些或低一些,目前看来,这个方向调整应该影响不大。
有空再试试看WinServer 2025,不过服务器端正常情况不会选择Windows作为服务端。
看到kernel 6.11下Ext4性能提升10%,等发布了看一下。 iooo 发表于 2024-9-12 21:52
感觉通用环境对如此高的带宽优化有限,更多的是对高并发和低延迟的支持
...
确实也是,不过NVMeOF可以打满网路带宽。
200G卡和模块也有,但服务器性能有点跟不上,PCIe Gen3带宽不足。 本帖最后由 Dolfin 于 2024-9-13 04:16 编辑
一些探讨:
1.对NFS不怎么熟悉,不好回答你的疑问,仅有的测试中,NFS使用NFSoRDMA,local_lock=none,async,rsize wsize 1M,内核参数sunrpc.rdma_slot_table_entries和nfs线程数128,其他默认没动。客户端FIO 1MB 顺序读取,接近10GB/s,服务器CPU占有率15%。
2.SMB服务器 Windows Server是很好的选择。2022下大文件顺序IO基本可以跑满带宽,200Gbps也不是问题。100GbE下,非测速负载,在实际传输中,Robocopy可超过10GB/s,接近吞吐极限,IOPS也是所向披靡。另外,也像SummerQ说的,Server 2025在存储上,如NVME,S2D这些都有新的提升和创造,貌似也会原生支持Nvmf。这要还不够,还有SMB集群,翻倍。
3.SPDK提供的Nvmf拥有更极限的爆发,单盘超过250万的 iops,分配核心1-2两个就行。
4.我的实验条件下,顺序大文件吞吐都不成问题,基本都是满的,不管是SMB NFS Nvmf;不过4K随机的IOPS,差别不小,建议也测试一下。 Dolfin 发表于 2024-9-13 04:03
一些探讨:
1.对NFS不怎么熟悉,不好回答你的疑问,仅有的测试中,NFS使用NFSoRDMA,local_lock=none,asyn ...
感谢,简单测试了下
1、Linux客户机1下,fio吞吐测试,bs=1M,基本可以打满100Gb网卡。NFS稳定测试通过,SMB报错失败,ksmbd还是不太稳定。
2、Windows下fastcopy,远程SMB目录,如果是XFS,速度最高4GB/s,Ext4反而比较慢,大概1GB/s。
我服务器处理器性能一般,和你EPYC Gen4差很多。
25G cx4-l 互联,
nfs server 是 一台epyc7002, client是 13700k
100G的太高级没用过, 但是25G 的nfs 单cp进程就能跑满呀
放个图, 你看一下?
chopin1998 发表于 2024-9-13 10:00
25G cx4-l 互联,
nfs server 是 一台epyc7002, client是 13700k
启用了NFSoRDMA了么? oldnetdog 发表于 2024-9-13 10:05
启用了NFSoRDMA了么?
有,
mount -t nfs -o rdma,port=20049,rsize=1048576,wsize=1048576,noatimexxxx xxxxx
但是估计影响不会太大, 最多是降低一点点cpu, 毕竟只有25G, cpu硬刚都能跑满。
100G可能对单核要求就比较高 chopin1998 发表于 2024-9-13 10:09
有,
mount -t nfs -o rdma,port=20049,rsize=1048576,wsize=1048576,noatimexxxx xxxxx
mount参数都差不多。
除了处理器,你本地和远程的硬盘是什么规格的,操作系统内核版本呢? LexarARES_4T/ DAPUSTOR R5100
都是 pcie4的, 不过对于2.xGB/s 只要是nvme的都没问题吧。。
你要是怕本地的盘速度影响, 可以先复制到 /run/shm/ 里 chopin1998 发表于 2024-9-13 10:27
LexarARES_4T/ DAPUSTOR R5100
都是 pcie4的, 不过对于2.xGB/s 只要是nvme的都没问题吧。。
在/run/shm试了下,测试了10GB文件,远程服务器采用XFS性能比Ext4好,SMBDirect比NFSoRDMA好。
仍然没有达到你的速度,我本地是Gen3,远程是Gen4
附上几个测试图,包括fio和iozone的。 oldnetdog 发表于 2024-9-13 10:50
在/run/shm试了下,测试了10GB文件,远程服务器采用XFS性能比Ext4好,SMBDirect比NFSoRDMA好。
仍然没有 ...
看着链路是ok的。。
你开了几个nfs server进程? 要么你cp的时候, top看一下 chopin1998 发表于 2024-9-13 11:11
看着链路是ok的。。
你开了几个nfs server进程? 要么你cp的时候, top看一下 ...
32个,因为服务器是16核32线程的。 oldnetdog 发表于 2024-9-13 11:50
32个,因为服务器是16核32线程的。
那应该是足够, 奇怪..... 主机debian kernel 6.10,ext4,ksmbd,单盘u2 H3200,网卡connectx6-dx 25g
客户端win server 2022, 网卡也是cx6,windows拷贝速度如下图
summerq 发表于 2024-9-13 13:03
主机debian kernel 6.10,ext4,ksmbd,单盘u2 H3200,网卡connectx6-dx 25g
客户端win server 2022, 网卡 ...
我这里XFS比Ext4性能好不少,4K都不太行,SMBDirect检查过了是启用的。 oldnetdog 发表于 2024-9-13 13:35
我这里XFS比Ext4性能好不少,4K都不太行,SMBDirect检查过了是启用的。
哈哈 没错 其实我就是想说 rdma导致4k拉垮 summerq 发表于 2024-9-13 13:03
主机debian kernel 6.10,ext4,ksmbd,单盘u2 H3200,网卡connectx6-dx 25g
客户端win server 2022, 网卡 ...
这盘4K Q1还挺漂亮的 summerq 发表于 2024-9-13 13:39
哈哈 没错 其实我就是想说 rdma导致4k拉垮
我这几块MemBlaze 6530 都没有做过稳态处理,全盘都还没写完过一次,进入稳态后,4K性能应该是有提升空间的。
页:
[1]