- Joined
- Mar 6, 2014
- Messages
- 9,553
This is a brief write-up of some testing I did. Feel free to make suggestions for further experimentation.
Experiment setup:
Server 1
Server 2
Folder to be copied
Network
Raw results
Observations:
Conclusions
Errata
Disabling case sensitivity on a samba share involves two steps:
For those interested, here are some stats I pulled during the middle of the transfer:
Experiment setup:
Server 1
- Supermicro X8DTH, Xeon E5645, 48GB ECC Memory, 12 * 7200 RPM Seagate Constellation drives configured in 6 mirrored vdevs.
Server 2
- Supermicro X9SCI, Xeon E3-1220, 32GB ECC Memory, 8 * 7200 RPM Seagate Constellation drives configured in single RAIDZ2 vdev.
- Windows 10. 8GB RAM. Crucial BX100 SSD. Pentium G3250 processor. No specialized security software. Realtek gigabit NIC.
Folder to be copied
- Size - 1.17GiB, Contains - 91,145 Files, 7,963 Folders. Average file size = 13.78KB. Unzipped copies of the samba source from various samba versions.
- Robocopy command - Code:
robocopy C:\Users\anodos\Downloads\SAMBAS\ \\FREENAS\CaseInsensitive\SAMBAS /MIR /COPY:DT /FFT /LOG:C:\Users\anodos\Desktop\Robocopy_FN_CI.txt"
Network
- Gigabit. All devices on same switch.
- AD functional level Server 2008R2.
- AD member servers
- Server max protocol - SMB3_00.
- Log level 1
- AIO was enable by setting "aio write size = 1"
- vfs_aio_pthread was tested using the default 100 threads and subsequently reduced to 10 threads.
Raw results
Code:
Server 1 - Unmodified setup
------------------------------------------------------------------------------
Total Copied Skipped Mismatch FAILED Extras
Dirs : 7964 7963 1 0 0 0
Files : 91145 91011 134 0 0 0
Bytes : 1.177 g 1.172 g 4.48 m 0 0 0
Times : 0:10:19 0:09:12 0:00:00 0:01:06
Speed : 2279616 Bytes/sec.
Speed : 130.440 MegaBytes/min.
Ended : Monday, May 2, 2016 6:33:40 PM
Server 1 - with AIO write size = 1
------------------------------------------------------------------------------
Total Copied Skipped Mismatch FAILED Extras
Dirs : 7964 7963 1 0 0 0
Files : 91145 91011 134 0 0 0
Bytes : 1.177 g 1.172 g 4.48 m 0 0 0
Times : 0:10:20 0:09:13 0:00:00 0:01:07
Speed : 2276990 Bytes/sec.
Speed : 130.290 MegaBytes/min.
Ended : Monday, May 2, 2016 6:53:06 PM
Server 1 - with all VFS objects turned off and AIO write size = 1
------------------------------------------------------------------------------
Total Copied Skipped Mismatch FAILED Extras
Dirs : 7964 7963 1 0 0 0
Files : 91145 91011 134 0 0 0
Bytes : 1.177 g 1.172 g 4.48 m 0 0 0
Times : 0:10:13 0:09:06 0:00:00 0:01:06
Speed : 2303966 Bytes/sec.
Speed : 131.834 MegaBytes/min.
Ended : Monday, May 2, 2016 7:28:43 PM
Server 1 - with Case Sensitivity modifications and AIO write size = 1
------------------------------------------------------------------------------
Total Copied Skipped Mismatch FAILED Extras
Dirs : 7964 7963 1 0 0 0
Files : 91145 91011 134 0 0 0
Bytes : 1.177 g 1.172 g 4.48 m 0 0 0
Times : 0:09:41 0:08:38 0:00:00 0:01:03
Speed : 2427587 Bytes/sec.
Speed : 138.907 MegaBytes/min.
Ended : Monday, May 2, 2016 7:48:17 PM
Server 2 - with Case Sensitivity modifcations and AIO write size = 1
------------------------------------------------------------------------------
Total Copied Skipped Mismatch FAILED Extras
Dirs : 7964 7963 1 0 0 0
Files : 91145 91011 134 0 0 0
Bytes : 1.177 g 1.172 g 4.48 m 0 0 0
Times : 0:09:24 0:08:27 0:00:00 0:00:57
Speed : 2481255 Bytes/sec.
Speed : 141.978 MegaBytes/min.
Ended : Monday, May 2, 2016 8:32:47 PM
Server 2- with Case Sensitivity modifications and aio_pthread vfs object enabled
------------------------------------------------------------------------------
Total Copied Skipped Mismatch FAILED Extras
Dirs : 7964 7963 1 0 0 0
Files : 91145 91145 0 0 0 0
Bytes : 1.177 g 1.177 g 0 0 0 0
Times : 0:13:00 0:12:03 0:00:00 0:00:57
Speed : 1747038 Bytes/sec.
Speed : 99.966 MegaBytes/min.
Ended : Tuesday, May 3, 2016 8:10:10 AM
Server 2 - with Case Senstivity modifications and receive buffer tuning bullsh*t
------------------------------------------------------------------------------
Total Copied Skipped Mismatch FAILED Extras
Dirs : 7964 7963 1 0 0 0
Files : 91145 91145 0 0 0 0
Bytes : 1.177 g 1.177 g 0 0 0 0
Times : 0:08:42 0:07:46 0:00:00 0:00:56
Speed : 2711848 Bytes/sec.
Speed : 155.173 MegaBytes/min.
Ended : Tuesday, May 3, 2016 9:38:54 AM
Server 2 - with Case Sensitivity and Windows Defender disabled - DOH!
------------------------------------------------------------------------------
Total Copied Skipped Mismatch FAILED Extras
Dirs : 7964 7963 1 0 0 0
Files : 91145 91145 0 0 0 0
Bytes : 1.177 g 1.177 g 0 0 0 0
Times : 0:07:53 0:06:59 0:00:00 0:00:54
Speed : 3015391 Bytes/sec.
Speed : 172.542 MegaBytes/min.
Ended : Tuesday, May 3, 2016 10:39:34 AM
Observations:
- Prior to disabling Windows Defender, it was using approx 25% CPU on the Windows 10 machine. Robocopy used approx 15%-20% CPU during copy.
- After disabling windows defender and enabling case sensitivity, htop showed CPU core consistently at 100%.
Conclusions
- I saw basically zero zil usage in all tests performed - you probably shouldn't waste money on one of these if you're using samba.
- No significant performance difference between a single 8-disk RAIDZ2 vdev and 6 mirrored vdevs.
- Enabling AIO did not appear to have a significant impact on write speed.
- Enabling vfs_aio_pthread had a deleterious effect on write speed for this workload.
- Disabling VFS modules did not appear to have a significant impact on write speed.
- Disabling oplocks did not appear to have a significant impact on write speed.
- Increasing the receive buffer in samba to 32KB may have had an impact (but it's arguably tuning for a benchmark). Note that samba devs consider modifying "socket options" to be "voodoo bullsh*t".
- Case sensitivity modifications appear to have increased write speed by approximately 10 Megabytes/minute.
- Disabling A/V heuristics increased write speed by approximately 20 Megabytes/minute.
- With tweaks I was only able to increase speed from 130 MegaBytes / minute to 172 MegaBytes /minute.
- Speed appears to be CPU-bound server-side (single core of E3-1220 pegged at 100%). Possible solution - need moar CPU.
Errata
Disabling case sensitivity on a samba share involves two steps:
(1) create a dataset with the property "case insenitive".
(2) add a share pointing to the dataset with the auxiliary parameter "case sensitive = true"
Note - I have not thoroughly tested these changes. Test on your own before putting into production.
(2) add a share pointing to the dataset with the auxiliary parameter "case sensitive = true"
Note - I have not thoroughly tested these changes. Test on your own before putting into production.
For those interested, here are some stats I pulled during the middle of the transfer:
Code:
Elapsed Times for PID 20321,
SYSCALL TIME (ns)
fstatfs 7906
madvise 8806
getdirentries 29591
fstatat 55799
close 184569
mkdir 206742
__getcwd 744294
pwrite 847921
getgroups 1006371
__sysctl 1425662
setgroups 1551697
ftruncate 1611680
setregid 1824582
getegid 2528751
geteuid 2531561
setreuid 2654942
utimensat 3582704
openat 4105631
writev 6103947
fstat 6241720
__acl_get_file 6363662
sendmsg 8157406
readv 8811186
fcntl 8972272
stat 9092675
lstat 19978389
poll 380015963
TOTAL: 478646429
CPU Times for PID 20321,
SYSCALL TIME (ns)
fstatfs 5990
madvise 7031
getdirentries 21938
fstatat 45195
close 145129
mkdir 200055
geteuid 304880
getgroups 339524
getegid 340312
__getcwd 513722
__sysctl 746940
pwrite 789925
setregid 867182
setgroups 914937
ftruncate 1519549
setreuid 1691843
utimensat 3377230
fstat 3622460
openat 3977775
poll 4262059
fcntl 5271314
writev 5340557
readv 5429879
__acl_get_file 5791786
sendmsg 7678999
stat 8030229
lstat 18113941
TOTAL: 79350381
Syscall Counts for PID 20321,
SYSCALL COUNT
madvise 11
fstatfs 12
mkdir 15
getdirentries 24
fstatat 103
pwrite 135
ftruncate 142
close 198
openat 232
utimensat 561
__getcwd 771
sendmsg 1101
__acl_get_file 1476
fstat 1640
writev 2054
__sysctl 2196
setgroups 2196
getgroups 2216
poll 2237
stat 2796
setregid 3302
setreuid 3302
readv 4332
lstat 5483
getegid 7718
geteuid 7726
fcntl 13099
TOTAL: 65078
Last edited: