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

PERFORCEテクニカルノート058

image_toyo_ss_img_perforce_title_perforce.gif.gif
テクニカルノート058  
image_toyo_ss_img_all_line_yellow.gif.gif
image_toyo_common_spacer.gif.gif
パフォーマンス改善技法
image_toyo_common_spacer.gif.gif
概要
image_toyo_common_spacer.gif.gif
この記事では、大規模サイトのための様々なパフォーマンス改善技法を記述しています。
image_toyo_common_spacer.gif.gif
詳細
image_toyo_common_spacer.gif.gif
PERFORCE システム管理者ガイド』の第7章「PERFORCEのパフォーマンス調整」にある「サーバの停滞を防止する」を必ずお読みください。以下の技法の大部分は、その章で詳しく説明しています。
 
古い PERFORCE のリリースを稼動させている場合は、アップグレードを検討してください。PERFORCEの各リリースでは、それ以前のバージョンよりもパフォーマンスの改善が図られています。現在のリリースバージョンについては、弊社ホームページの PERFORCE ソフトウェア・ダウンロード をご覧ください。
 
応答時間が遅い理由には、サーバマシンのリソースが不適切であること以外の理由もあります。例えば、以下に示す原因で起きる、不要なデータベースのロックです。
- 効率の悪いスクリプト
- 大規模なディポに対する無制限のクライアント・ビュー、およびプロテクションの未設定
- 膨大なデータセットに対して、未熟なユーザが無意識に実行したコマンド
 
データベースがロックされている状態を除き、すべてのPERFORCEサーバの動作は非同期かつ並列で行われています。しかし、大規模なサイトにおける開発のピーク時に、大きいデータセットに対して実行されるユーザ要求とスクリプトの組み合わせによっては、サーバマシンで過剰なページングをはっせいさせることがあります。 大規模な操作(膨大なラベルの再作成、巨大なワークスペースでの最初の同期など)は、業務時間外に計画することをお勧めします。それが不可能であれば、弊社テクニカルサポートに連絡し、PERFORCEサーバへの大きな要求を「サイド・トラッキングする」方法をお問い合わせください。
 
チェックポイント作成時、PERFORCEサーバのデータベースはロックされます。お使いのPERFORCEサーバのデータベースが非常に大きいことによって、チェックポイント作成に相当な時間がかかる場合は、チェックポイント作成を業務時間外に実行してユーザが影響を受けないようにします。それが不可能であれば、弊社テクニカルサポートに連絡して、オフライン・チェックポイントの実施方法をお問い合わせください。
 
PERFORCE サーバ動作させるだけならば、ハードウェア仕様は特に問いません。しかしながら、もしPERFORCEサーバが処理の限界に近づいている場合は、SMP(対照型マルチプロセッサ)マシンにアップグレードすることを検討してください。
 
非常に複雑なワークスペース・ビューまたはブランチ・ビューを用いた場合、ある程度、処理時間がかかることがあります(例えば、10万個のファイルについて300行のブランチ・ビューをスキャンする場合、1分から2分かかることがあります)。なるべく、複雑なビューを使用しないようにしてください。 (その方がユーザの操作も容易です。)
 
p4 obliterate は、業務時間外に最後の手段としてのみ使用してください。2004.2以前のリリースでは、非常に大きいディポがあると、obliterate の処理に何時間もかかることがあり、その間ユーザがロックアウトされます。2004.2以前のサーバでは、どれほど大きいデータベース・ファイルでも、その全体をコマンドラインの各引数に対して一度ずつスキャンします。(『PERFORCEシステム管理者ガイド』の第7章に記述されている「一時クライアントによる手法」を使用して、obliterate のコマンドライン引数を1個に減らすことができます。)
 
2005.1以降のリリースでは、obliterate は高速化されています。2005.1以降のサーバでは、ファイルをスキャンする代わりに、より効率的なアルゴリズムを使用してデータベース・ファイル内で削除すべきデータを探します。リリース2005.1では、アルゴリズムの1つにおいて各クライアントに設定されたMapStateを利用するため、すべてのクライアントにMapStateを設定することによって、非常に速く obliterate が処理されます。(なお、MapStateが実装されたのはリリース2005.1まででした。2005.2以降のリリースではMapStateを必要とせずに最適化されているため、MapStateは2005.2以降のリリースには存在しません。)リリース2005.1では、任意のクライアントから以下のシェルコマンドを使用して、すべてのクライアントのMapStateを設定することができます。
p4 clients \
    | sed 's/^Client \([^ ]*\).*$/p4 -c \1 fstat \/\/depot\/file/' \
    | /bin/sh > /dev/null 2>&1
   
   
image_toyo_common_spacer.gif.gif
image_toyo_ss_img_all_btn_yellow_bgwhite2.gif.gif戻る

PAGE TOP