Are there registry settings or other settings available to tune Windows networking (SMB/CIFS) performance?
I'm trying to get maximum throughput for large file copy operations but any settings would be interesting.
So far:
TCP Settings
- Adjust MTU
- Enable TCP Window Scaling (RFC 1323). Details here.
- Allow ports above 5000. Details here.
What is the OS of your client and server? One thing that can make a difference is to update your servers to windows 2008 and your clients to Vista. When you do this you get to take advantage of SMB2 which is less chatty, has larger buffers, and can do multiple things in a single request making it less sensitive to latency.
Start by enabling TCP Window Scaling (RFC 1323). Here is an excellent article explaining how to do it and what it does.
While you're at it, you will probably want to adjust your TCP Window size. The proper size is calculated based on your specific network conditions. I don't have much experience with this, but there are various calculators and/or tutorials you can google for.
From the "Performance Tuning Guidelines for Windows Server 2008":
Server Options
Client
Not Windows specific, but if you're running gigabit ethernet, you might want to consider increasing the Maximum Transmission Unit (MTU). From the default of 1492 to a maximum of 9000. This reduces the overhead required since less fragments would be required for transmitting the same file.
If you are using SMB3 protocol, you can improve the performance by a) adding multiple network cards on the server-side and enable SMB3 multi-channel feature b) If you add multiple network cards on the client side, receive-side scaling feature of SMB3 will improve the performance c) You can also use SMB Direct option if you have RDMA cards.
If your limit is at least 1MByte/s then the SMB Bandwidth Limits feature introduced with Windows Server 2012 R2 is a built-in option.
Enable SMB Bandwidth Limits via Powershell
From TechNet: