I'm actually trying to set up a high-speed samba share over a 40Gb direct connection between a Windows 10 system and a FreeBSD 13.2 server.
Regarding my network setup, I'm using two Chelsio 40Gb T580-LP-CR. Doing an iperf test between these two systems give me 35Gb/s with single thread and 40GB/s with 2 parallel threads or more.
About my server, it's a 36 SAS HDD system, with an Epyc 7282 and 64Gb of DDR4. Internal tests using iozone or fio for 1 sequential 150GB file give me 3200GB/s write and 4200GB/s read. With 5 sequential files of 150GB, I got 3000GB/s write and 3900GB/s read.
dd test results on a 100GB file gives 3,2GB/s write and 3,8GB/s read.
Compression is off on my pool, sync is disabled and I'm using 1M recordsize.
I'm using Samba version 4.16.11
When sharing my drive, I got a 2800MB/s write performance, even with a 500GB write.
The problem is with the read performances. If the data are in the ARC, I also got 2800MB/s. But as soon as my data are read from the disk, it drops to 1000MB/s.
I tried to disable ARC (primarycache set to none). Using fio or dd, I got the same performances (around 3000MB/s write and 4000MB/s read). On a samba share I still got 1000MB/s
I have no idea why when data is in ARC, read on smb share is fast, and when data isn't it's almost 3 times slower, while internally it doesn't change a thing whether data is in ARC or not.
Does anyone have an idea of what can cause this ? I'm quite stuck as I don't know where i should look.
here is the content of my smb4.conf file
Many thanks in advance for your insights.
Ronan
Regarding my network setup, I'm using two Chelsio 40Gb T580-LP-CR. Doing an iperf test between these two systems give me 35Gb/s with single thread and 40GB/s with 2 parallel threads or more.
About my server, it's a 36 SAS HDD system, with an Epyc 7282 and 64Gb of DDR4. Internal tests using iozone or fio for 1 sequential 150GB file give me 3200GB/s write and 4200GB/s read. With 5 sequential files of 150GB, I got 3000GB/s write and 3900GB/s read.
dd test results on a 100GB file gives 3,2GB/s write and 3,8GB/s read.
Compression is off on my pool, sync is disabled and I'm using 1M recordsize.
I'm using Samba version 4.16.11
When sharing my drive, I got a 2800MB/s write performance, even with a 500GB write.
The problem is with the read performances. If the data are in the ARC, I also got 2800MB/s. But as soon as my data are read from the disk, it drops to 1000MB/s.
I tried to disable ARC (primarycache set to none). Using fio or dd, I got the same performances (around 3000MB/s write and 4000MB/s read). On a samba share I still got 1000MB/s
I have no idea why when data is in ARC, read on smb share is fast, and when data isn't it's almost 3 times slower, while internally it doesn't change a thing whether data is in ARC or not.
Does anyone have an idea of what can cause this ? I'm quite stuck as I don't know where i should look.
here is the content of my smb4.conf file
Code:
[global]
server string = FreeBSD Server - Samba %v
workgroup = TEST
log file = /var/log/samba4/smb.log
max log size = 50
load printers = No
disable netbios = Yes
map to guest = Bad User
security = USER
server role = standalone server
create mask = 0775
directory mask = 0775
invalid users = nobody root
read raw=yes
write raw=yes
strict sync = no
sync always = no
server multi channel support = no
[TestShare]
comment = Files Samba Network Share
path = /pool1/TestShare
valid users = testuser
writable = yes
browsable = yes
inherit acls = Yes
read only = No
vfs objects = zfsacl, streams_xattr, acl_xattr
nfs4: acedup = merge
nfs4: mode = special
nfs4:chown = Yes
Ronan