Windows networking performance (SMB/CIFS)

52,870

Solution 1

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.

Solution 2

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.

Solution 3

From the "Performance Tuning Guidelines for Windows Server 2008":

Server Options

TreatHostAsStableStorage

HKLM\System\CurrentControlSet\Services\LanmanServer\Parameters\(REG_DWORD)

The default is 0. This parameter disables the processing of write flush commands from clients. If the value of this entry is 1, the server performance and client latency for power-protected servers can improve. Workloads that resemble the NetBench file server benchmark benefit from this behavior.


AsynchronousCredits

HKLM\System\CurrentControlSet\Services\LanmanServer\Parameters\(REG_DWORD)

The default is 512. This parameter limits the number of concurrent “asynchronous” SMB commands that are allowed on a single connection. Some file clients such as IIS servers require a large amount of concurrency, with file change notification requests in particular. The value of this entry can be increased to support these clients.


Smb2CreditsMin and Smb2CreditsMax

HKLM\System\CurrentControlSet\Services\LanmanServer\Parameters\(REG_DWORD)

The defaults are 64 and 1024, respectively. These parameters allow the server to throttle client operation concurrency dynamically within the specified boundaries. Some clients might achieve increased throughput with higher concurrency limits. One example is file copy over high-bandwidth, high-latency links.


AdditionalCriticalWorkerThreads

HKLM\System\CurrentControlSet\Control\Session Manager\Executive\(REG_DWORD)

The default is 0, which means that no additional critical kernel worker threads are added to the default number. This value affects the number of threads that the file system cache uses for read-ahead and write-behind requests. Raising this value can allow for more queued I/O in the storage subsystem and can improve I/O performance, particularly on systems with many processors and powerful storage hardware.

Client

DisableBandwidthThrottling

HKLM\system\CurrentControlSet\Services\lanmanworkstation\parameters\(REG_DWORD)

The default is 0. This setting is available starting with Windows Server 2008 SP2. By default, the SMB redirector throttles throughput across high-latency network connections in some cases to avoid network-related timeouts. Setting this registry value to 1 disables this throttling, enabling higher file transfer throughput over high-latency network connections.

Solution 4

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.

Solution 5

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.

Share:
52,870

Related videos on Youtube

Naveen
Author by

Naveen

Updated on September 17, 2022

Comments

  • Naveen
    Naveen almost 2 years

    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.


    Other Factors

    • SMB2 has performance advantages over SMB. Details here and here.


    General Resources

    • Admin
      Admin over 13 years
      NetApp Data Ontap Operating System uses its own oplocks or Opportunistic so handle Windows smb 1.0/2.0 timeouts. Great Post.
    • djangofan
      djangofan about 12 years
      In my experience, for maximum throughput on a SMB share, you need to copy multi-threaded, using a tool like RoboCopy. For example: with a shared USB drive, a single thread might get 5MB/s but multithread might get as high as 20MB/s.
  • Naveen
    Naveen about 15 years
    Do you know what the default for that setting is under Server 2003 or Server 2008?
  • Ryan Bolger
    Ryan Bolger about 15 years
    In Server 2003/XP, the Tcp1323Opts value doesn't exist by default which means it's effectively 0 I think. In Server 2008/Vista, I could've sworn the default was at least 1, but I'm looking at one of my fresh machines right now and it's not there.
  • HopelessN00b
    HopelessN00b over 8 years
    This seems like it should be included in your existing answer... as an edit.