Edited by silentcreek at Wed May 27, 2015 10:35 |
Well, there are several things you can do. If you go back to the first two pages of this thread, you will find several sugestionss to tweak things. However, I would always recommend to try and test for yourself. From my experience, it is useless to just copy and paste everything because not all changes work work every scenario and sometimes even have negative impacts. So, test each measure you take and see if it really helps your usage.
That certainly helps. But it's a decision you have to make. Be sure that your systems stays cool enough if you plan to overclok permanently. Personally, I did some experiments but I prefer not to overclock for the sake of heat management and long term-durability of the device.
2) Assigning interupts and affinity:
In the standard configuration request by the ethernet interface and the USB or SATA interface are handled by the first CPU core (CPU0). It helps if you manually change that so that, e.g. the ethernet requests are handled by the second core instead. Just add these lines to your rc.local file (the last line must stay "exit 0" so make sure to add stuff before that and not after):
3) smb.conf Copy the Code
- echo 2 > /proc/irq/$(cat /proc/interrupts | grep eth0 | cut -f 1 -d ":" | tr -d " ")/smp_affinity
- echo 2 > /sys/class/net/eth0/queues/rx-0/rps_cpus
- echo 2 > /sys/class/net/eth0/queues/tx-0/xps_cpus
You could test omitting the max protocol = SMB2. That is something I added for better compatibility with an OS X client. You might not need that.
You could test different aio read/write sizes. I did some experiments last year, but my clients were mostly Windows 7 back then. Maybe different values will give you better performance.
If is often suggested to change the socket buffer sizes as you did with your original configuration (e.g. SO_RCVBUF=131072). For my usage I found it actualy had a very negative effect, so I don't use them. But maybe in your case that's different.
4) Network parameters
You can tweak the network parameters (buffer sizes and queue lenghts) as tkaiser suggests in post #9. Personally, I don't use these tweaks anymore after I found that with a newer kernel (4.0) they actually had an negative effect on my system. But with the old kernel (3.4), you may give it a shot.
5) Filesystem choice
It's worth mentioning that filesystems can have a performance impact. Especially NTFS requires considerably more CPU power, so by using a filesystem native to Linux, like ext4, you can reduce the CPU utilization and achieve better perforamance.
Aside from that: I would also recommend you to test with large files. The transfer speed is always a bit lower when you try to copy many small files instead of one or few large files. This way you get a better picture of the maximum performance than with just copying folders with many smaller files. Moreover, if you use really large files like 3GB or so, you can reduce the influence of caching in RAM and get a more realistic reading of your throughput.