機械制御/振動騒音
IR情報 会社情報

PERFORCEテクニカルノート1175

image_toyo_ss_img_perforce_title_perforce.gif.gif
テクニカルノート1175
image_toyo_ss_img_all_line_yellow.gif.gif

Windows環境での2009.2サーバのパフォーマンス
Windowsでブロック不可のソケットの問題により同期が遅くなる現象への対応策

image_toyo_ss_img_all_line_dot_526.gif.gif問題

2009.2リリースでは、PERFORCE APIのネットワーク層が大幅に変更されました。この変更はリリースノートに以下のように記述されています。

#203942 (Bug #32494) **
クライアント/サーバのネットワーク接続処理は、ハングアップしないよう
に調整されました。サーバ・ロジックの変更により、TCPの送信/受信バッ
ファを独自のバッファで補完し、ポーリングを使用してTCPがバッファリン
グしない内容をバッファリングするようになりました。この変更によって、
サーバの"himark limit"を任意に高く設定できます。

この2009.2 APIの変更では、一部のPERFORCEユーザが特定のTCP構成を使用している場合に発生していた同時書き込みによるネットワーク・デッドロック状況を回避するのに加えて、PERFORCEのパフォーマンス改善のためにTCPのチューニングがより柔軟に行えるようになっています。

一部のWindowsオペレーティング・システムでは、変更されたAPIを2009.2のPERFORCEサーバで稼動させると、期待されるとおりに動作しません。すべてのWindowsオペレーティング・システムに影響するわけではありませんが、以下のMicrosoftサポート文書に記述されているように、ブロック不可のselect()呼び出しが低速になることがあります。

http://support.microsoft.com/kb/823764
(必ず、ご一読ください。)
image_toyo_ss_img_all_line_dot_526.gif.gif解決策

この問題に対処するには、上記リンクのMicrosoftサポート文書の「方法4」に記述されているとおり、レジストリ・エントリNonBlockingSendSpecialBufferingを設定してください。このレジストリ変更はPERFORCEサーバが稼動しているマシン上で行います。Perforce Software社では、影響を受けているWindowsオペレーティング・システムでのPERFORCE同期処理におけるパフォーマンスの問題を解決する方法として、上記のレジストリ・エントリの調整が望ましいと判断しました。

ブロック不可のselect()呼び出しが低速になる現象は、以下のオペレーティング・システムで確認されています。
 
Windows XP Professional
Windows Server 2003
Windows Server 2003では、PERFORCEサーバが稼動しているマシン上で以下のようにレジストリを変更してください。
 
HKEY_LOCAL_MACHINE
\SYSTEM
\CurrentControlSet
\Services
\AFD
\Parameters
NonBlockingSendSpecialBuffering
レジストリ・エントリは以下のように表示されるべきです。
 
NonBlockingSendSpecialBuffering REG_DWORD 000001 (1) 
この変更を行った後、システムの再起動が必要になります。

上記のレジストリ・キーの名前と場所はWindowsのほとんどのバージョンに適用されます。しかし、Windowsのバージョンによっては、このレジストリ・パラメータの設定が異なるか、存在しない可能性があります。
お使いのWindowsのバージョンに上記のレジストリ・キーが存在しない場合は、弊社テクニカルサポートに連絡してください。

 
image_toyo_ss_img_all_btn_yellow_bgwhite2.gif.gif戻る

PAGE TOP