Looking to improve 70MB/s read speed over SMB/CIFS

Status
Not open for further replies.

palmboy5

Explorer
Joined
May 28, 2012
Messages
60
I have a gigabit network but have only been able to get up to 70MB/s sequential read from the server using CrystalDiskMark on my desktop. Copying a large file to the desktop SSD is worse, at less than 60MB/s. However, write speed with the CrystalDiskMark program gets up to 110MB/s, so I think the CPU, NIC, and other hardware are adequate.

Server specs:
AMD Phenom II X2 560 3.3GHz
Gigabyte GA-78LMT-S2P Motherboard
2x4GB DDR3
IBM M1015 IT-mode
Intel EXPI9301CTBLK NIC
RAIDZ2 8x 2TB Green
FreeNAS 8.2.0 RELEASE x64


dd benchmark on server:
Code:
dd if=/dev/zero of=tmp.dat bs=2048k count=50k
261117219 bytes/sec
dd of=/dev/zero if=tmp.dat bs=2048k count=50k
494663520 bytes/sec


Desktop specs:
Intel Core i7 2600K @ 4.5GHz OC
ASUS P8Z68-V Pro Motherboard
4x4GB DDR3
Intel EXPI9301CTBLK NIC
Crucial M4 128GB, WD 2TB Green
Windows 7 Professional x64

I have tried enabling autotune, but the only noticeable change is that it somehow decides that over 6GB of RAM should remain unused at all times... (versus about 1GB) and with this setting I can't even write multiple GB's of data (at no more than 20MB/s from a SD card) and stream a video from the server at the same time. Eventually it just becomes a lag-fest.

I have also noticed that (from the desktop) opening a folder with a few thousand pictures will take 10 seconds or more for it to list all the files. This didn't happen when I ran with FreeBSD itself instead of FreeNAS and has always happened since I started using FreeNAS.

Anyway, I'd like to improve the performance and any help will be appreciated!
 

William Grzybowski

Wizard
iXsystems
Joined
May 27, 2011
Messages
1,754
Samba is CPU bound, the implementation is single-threaded.

I doubt you're getting much better than this. You could try to tweak AIO (on/off) and AIO read/write size in CIFS settings though.
 

Stephens

Patron
Joined
Jun 19, 2012
Messages
496
Adding

Code:
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_KEEPALIVE SO_RCVBUF=131072 SO_SNDBUF=131072


to CIFS service auxillary parms really seemed to help me a lot and I'm hardly running a powerhouse CPU. There's a thread where a guy overclocked his AMD E-350 and was able to basically hit line speeds.
 

palmboy5

Explorer
Joined
May 28, 2012
Messages
60
I did consider that maybe the CPU was too slow, so I recently got a Core i3 2125. It is faster than the server's Phenom II X2 560 by 41% singlethread in Cinebench R10 and 30% singlethread in R11.5. I then tested its performance with 3x3TB Greens in RAIDZ.

Test Server specs:
Intel Core i3 2125 3.3GHz
MSI P61M-P31 Motherboard
2x4GB DDR3
RAIDZ 3x 3TB Green
FreeNAS 8.2.0 RELEASE x64

dd benchmark:
Code:
dd if=/dev/zero of=tmp.dat bs=2048k count=50k
124336268 bytes/sec
dd of=/dev/zero if=tmp.dat bs=2048k count=50k
122613320 bytes/sec


No where near the server's 8x2TB array speed, but this is on the motherboard's SATA ports, fewer drives, etc. It's still faster than gigabit ethernet but yet with CrystalDiskMark it maxes out just the same at 70MB/s read and 110MB/s write, so I really doubt that the CPU is still the bottleneck.

Stephens, thanks I'll try that out soon!
 

palmboy5

Explorer
Joined
May 28, 2012
Messages
60
Nope, no change in performance. :\

EDIT: Also rebooted just to be sure...
 

palmboy5

Explorer
Joined
May 28, 2012
Messages
60
Oh, turns out if I'm doing multiple sequential reads, I CAN max out gigabit ethernet... Now if only the connection could be maxed out with a single file read... any ideas?
 
Status
Not open for further replies.
Top