Perforce Public Knowledge Base - 2009.2 Server Performance on Windows
Reset Search
 

 

Article

2009.2 Server Performance on Windows

« Go Back

Information

 
Problem

In the 2009.2 release, there was a significant change to the networking layer of the Perforce API. This change is documented in the release notes:

#203942 (Bug #32494) **
    The client/server network connection handling has been
    adjusted to prevent it from hanging.  The server logic has
    been changed so that it complements TCP's send/receive buffers
    with buffers of its own and uses polling to buffer what TCP
    won't.  With this change, the server's "himark limit" can be set
    arbitrarily high.

In addition to preventing the write-write network deadlock scenario encountered by some Perforce customers when using certain TCP configurations, this change to the 2009.2 API will allow more flexible TCP tuning for better Perforce performance.

Certain Windows operating systems do not behave as expected when running the 2009.2 Perforce Server with the changed API. While not all Windows operating systems are affected, some encounter stalled non-blocking select() calls as described in this Microsoft Support document:

http://support.microsoft.com/kb/823764

 

Solution

To address this problem, a NonBlockingSendSpecialBuffering registry key needs to be added and set as suggested in "Method 4" of the Microsoft Support document linked above. This registry modification is made on the machine where the Perforce Server is running. Perforce Development has determined that adjusting the above registry entry is the preferred solution for this specific Perforce sync performance issue on affected Windows operating systems.

Stalled non-blocking select() calls have been observed on the following operating systems:

  • Windows XP Professional
  • Windows Server 2003

The registry modification on the machine where the Perforce Server is running should be:

HKEY_LOCAL_MACHINE
\SYSTEM
\CurrentControlSet
\Services
\AFD
\Parameters
NonBlockingSendSpecialBuffering

The registry entry should appear as:

NonBlockingSendSpecialBuffering REG_DWORD 0x00000001 (1) 

When this modification has been made, a restart of the system is required.

The registry key name and location above applies to most versions of Windows; however, there might be versions of Windows where this registry parameter is set differently. Please contact Perforce Support if the above registry key modification does not resolve your sync performance.

 

Related Links

Feedback

 

Was this article helpful?


   

Feedback

Please tell us how we can make this article more useful.

Characters Remaining: 255