PERFORCE プロキシ リリースノート(2008.1) PERFORCE プロキシ(P4Proxy)は、頻繁に転送されるファイル・リビジョンの キャッシュ機構をクライアント/サーバ間に確立し、WAN における PERFORCE のパフォーマンスを改善します。キャッシュされたファイル・リビジョンに対 する要求を折り返すことによって、PERFORCE サーバに対する要求を減少させま す。 クライアントの近くに P4Proxy を設置し、中央の PERFORCE サーバへアクセス する P4Proxy を構成することによって、WAN を通じて中央の PERFORCE サーバ にアクセスする PERFORCE クライアントのパフォーマンスを改善することがで きます。この構成によって、ファイル・リビジョンは 1回だけ中央のサーバか ら P4Proxy に転送され、その後は P4Proxy によってキャッシュされます。継 続して同じリビジョンに対する要求があると、そのリビジョンは P4Proxy から クライアントへ送られますので、ネットワーク・トラフィックとサーバの CPU 負荷を軽減することができます。LAN においては、複数の P4Proxy を設置する ことによって、サーバの CPU およびディスクに関するパフォーマンスを改善す ることができます。 特に指示がない限り、任意のリリースの PERFORCE クライアントを任意のリリ ースの PERFORCE サーバに混在させることができます。ただし、2008.1 の新 機能を利用するには、クライアント、プロキシ、サーバのいずれかまたは すべてをアップグレードする必要があります。プロキシを利用するには、 サーバを2002.2にアップグレードする必要があります。サーバを 2006.2 に アップグレードするとプロキシのパフォーマンスが向上することがあります。 さらに詳しい情報につきましては、東陽テクニカの Web サイトから入手可能な 『PERFORCE システム管理者ガイド』をご覧ください。 システム要求 --------------- * Perforce サーバ: 2002.2以降 * Perforce クライアント: 種類およびバージョンを問いません。 * OS の要求: ファイル・リビジョンを保持するための十分なディスク容量 (サーバのメタデータは保持しません) P4Pの起動 ------------ p4p プログラムを実行して、P4Proxy を起動します。例えば、次のように実行 すると、PERFORCE サーバ名 'centralserver'、サーバのポート 1666 に対する 接続で、P4Proxy が起動します。PERFORCE クライアントは、P4Proxy が起動し ているマシンのポート 1666 に対して接続を行います。P4Proxy によってキャ ッシュされるファイルは、/local/proxyroot という名前のディレクトリに保持 されます。 p4p -p 1666 -t centralserver:1666 -r /local/proxyroot 次のコマンドライン・オプションをサポートします。 * P4Proxy固有のオプション -c PERFORCEサーバからP4Proxyに送信されるファイルを圧縮しない -d デーモンとして起動(forkした後に起動) -f シングルスレッド・サーバとして起動 -i inetdとして起動(標準入出力上のsocket) -q 起動メッセージを抑止する -s NTサービスとして起動(p4psを起動するのと同じ) -e サイズ・バイトより大きいファイルのみキャッシュする (デフォルトでは $P4PFSIZE または 0) * グローバル・オプション -h or -? このメッセージを表示 -L log メッセージをロギングするファイル (デフォルトは $P4LOG。$P4LOGが未設定の場合は標準エラー出力) -p port PERFORCEクライアントからの要求を受け付けるポート番号 (デフォルトは $P4PORT。$P4PORTが未設定の場合は1666) -r root プロキシ・キャッシュ・ディレクトリ(デフォルトは $P4PCACHE。 $P4PCACHEが未設定の場合は、P4Pが起動されたディレクトリ) -t port P4Pのユーザがサーバへ接続するためのポート番号(デフォルトは $P4TARGET。$P4TARGETが未設定の場合は、perforce:1666) -v level デバッグモードの指定(PERFORCEシステム管理者ガイド参照。デ フォルトは$P4DEBUG。$P4DEBUGが未設定の場合は、設定なし) -V PERFORCE プロキシのバージョンを表示 P4Proxyの管理項目 -------------------- * バックアップは不要 P4Proxy のキャッシュ・ディレクトリは、バックアップする必要がありませ ん。必要であれば、PERFORCE サーバのメタデータに基づき、再構築すること ができます。 * 最良のパフォーマンスを得るためにキャッシュ・ディレクトリをローディング P4Proxy は、クライアントからの要求があって初めて、サーバからのファイ ルを保持します。事前に読み込んでいるものではありません。パフォーマン スが向上するのは、P4Proxy によってファイル・リビジョンがキャッシュさ れた後のことです。P4Proxy を起動したら、クライアントを作成し、最新リ ビジョンを同期してください。その直後より、引き続いて他のクライアント から実行される同期操作において、パフォーマンスが向上します。 * ディスク使用量を管理 P4Proxy は、ファイル・リビジョンをキャッシュ・ディレクトリに保持しま す。P4Proxy によるディスク使用量は、増加する一方であることに注意して ください。P4Proxy はキャッシュしたファイルを削除しませんので、別の方 法でディスク使用量を管理しなければなりません。ディスクの空き容量を増 やすには、プロキシのルート・ディレクトリからファイルを削除してくださ い。削除するのは、P4Proxy が起動中でも構いません。 * プロテクション 正規のクライアント名の前に 'proxy-' を付け、それをプロテクション・テー ブルに用いることによって、'p4 protect' コマンドにプロキシ経由の接続で あることを認識させることができます。例えば、'proxy-*' という指定はす べてのプロキシからのすべての接続を表し、'proxy-10.0.0.5' という指定は IP アドレスが 10.0.0.5 でかつプロキシからの接続であることを表します。 * リモート・ディポ P4roxy は、PERFORCE クライアントと PERFORCE サーバ(p4d)との間で機能 するように設計されたものです。したがって、リモート・ディポの構成のよ うに 2 つのサーバ間で機能するものではありません。P4Proxy を経由してリ モート・ディポに接続しようとすると、この構成についてのエラー(例えば can not proxy for remote depots)が P4Proxy にロギングされ、リモート・ ディポにアクセスできないというエラーが PERFORCE サーバで発生し、クラ イアントにもエラーが返ります。 -------------------------------------------------------------------------- 下記の変更履歴では、クライアント/サーバ/プロキシの必要性を次のように 示しています。 * -- 新しいPERFORCEクライアント・プログラムが必要 ** -- 新しいPERFORCEサーバ・プログラムが必要 *** -- 新しいPERFORCEプロキシ・プログラムが必要 2008.1 の新機能 --------------- #149641 * ** *** クライアント、プロキシおよびサーバでのPERFORCEプロセス間のTCP接続に おいて、ネットワーク・バッファリングのレベルが検出され、当該バッファ の空間が有効に利用されるようになりました。特に、プロキシとサーバの距 離が長い接続でのパフォーマンスが改善されています。 #149297 * 'p4 set'ではP4POPTIONS変数が報告されるようになりました。 (Bug #22108) #148921 ** *** プロキシが使用中である場合、バイナリ・ファイルの解凍はサーバではなく クライアントで実行できます。新しいサーバと新しいプロキシの両方が必要 です。(Bug #16398, #28490) 初回リリース以降のバグ修正 -------------------------- #175236 ** バイナリ・ファイルに対し、'-o'オプションを付けずに'p4 print'を実行 すると、圧縮された形式で出力され、1行の中に2回出力されることがあり ました。本件は修正されました。(Bug #31596) 2008.1 のバグ修正 ----------------- #152854 ** プロキシは、複数の場所にある別々のローカル・ディポ間で怠惰なコピーが 作られたリビジョンを格納していました。本件は修正されました。 (Bug #28635) #148708 *** サーバからプロキシに対する圧縮処理の開始が遅れ、場合によってはコマンド の大部分が解凍された状態に留まることがありました。圧縮処理はより早期に 有効化されるようになりました。(Bug #28575) #140557 *** まれに、プロキシ経由で 'p4 -x 'を実行すると ハングアップすることがありました。この要因には、多数のファイル(数千 個)や、クライアントとの対話が大量に発生するコマンド('add' や 'diff -s?' など)などがあります。(Bug #27131) 2007.3 の新機能 --------------- #130638 *** プロキシのロード機能。"p4 -Zproxyload sync"コマンドを実行すると、ファ イルをクライアントに送信することなくプロキシのアーカイブ・キャッシュが 更新されます。この機能は、プロキシのリビジョンを更新する必要があるかど うかを示すリビジョンHaveリストを持つ、専用のクライアントを経由して使用 することが意図されています。(Bug #10600) #130380 ** *** プロキシ経由で実行される 'p4 info' のタグ付き出力に、プロキシのバー ジョンを示す文字列が表示されるようになりました。 (Bug #20634) #129045 ** *** ファイルがプロキシを通してサブミットされるとき、プロキシはファイルを キャッシュするようになりました。MD5署名に基づいた新しいキャッシュ検証 システムが使用されています。新しいプロキシが古いサーバで稼動している 場合、古いタイムスタンプ検証が使用されます。p4dサーバがMD5署名を保持 していないリビジョンに対しては、プロキシはキャッシュを検証しないため、 "p4 verify"を実行し、p4dサーバが計算済みのMD5署名を確実に保持するよう にしてください。 (Bug #10866) 2007.3 のバグ修正 ----------------- #135086 *** Windowsバージョンのプロキシにおいて、2つのセッションで同時にエラーログ への書き込みが行われると、スレッドがリークすることがありました。 これは修正されました。(Bug #26223) #129045 **  プロキシ経由で'p4 sync -p'を実行すると、プロキシがサーバからリビジョン を取得する必要がある場合にHaveリストが更新されていました。これは修正さ れました。(Bug #25274) #129045 ** *** プロキシは実質的に更新時間ゼロでファイルをキャッシュできます。 (Bug #23408) #129045 *** 'p4 -Zproxyverbose print'は、コマンドの要求を満たすためにプロキシ・ キャッシュが使用されたかを報告するようになりました。 (Bug #22802) 2007.2 の新機能 --------------- #119109 * ** *** 新しいファイルタイプである utf16 のサポートを改善するための変更 #113338 *** ネットワーク・バッファリングを変更し、多くの短いコマンドのパフォー マンスを改善 2006.2 のバグ修正 ----------------- #112395 *** 'p4 print' を '-o' オプションを付けずに実行すると、内部エラーにより 失敗する場合がありました。これは修正されました。(Bug #23236) #104828 ** ファイル間で 'p4 integ' を実行後に 'p4 resolve -at' を実行する場合、 一方のファイルにだけファイル・タイプの一部にキーワード拡張があると 問題が発生します。これは、キーワード拡張はソース・ファイルのタイプ に基づいて行われるのに対し、サブミット後には同期は反映先ファイルの タイプに基づいてキーワードを拡張するためであり、この場合 'p4 diff -se' により差異が報告されることになります。 この問題を修正し、この場合、'p4 resolve -at' では反映先ファイルの タイプに基づいてキーワードを拡張するようになりました。プロキシも 同様に、間違ったキーワード拡張をキャッシュしていたため、後続する 同期処理で他のクライアントにおいてキーワード拡張がみられることがありました。 (Bug #20584) 2006.1 の新機能 ---------------- #95339 ** *** p4 print を -o オプションを付けずに実行すると、プロキシのキャッ シュを有効に利用できるようになりました。この機能を利用するには、 サーバとプロキシの両方をアップグレードする必要があります。 (Bug #19759) 2006.1/102189 (初回リリース)以降のバグ修正 ------------------------------------------- #113894 *** 'p4 print' を '-o' オプションを付けずに実行すると、プロキシが NT システムにおいてハンドルリークを発生させていました。これは修正 されました。 (Bug #22915) #107500 *** リビジョンがソースから怠惰なコピーとして作成されていて、キーワード 拡張タイプ修飾子が変更されている場合、プロキシは不適切なキーワード 拡張を行っていました(またはキーワード拡張を行いませんでした)。 これは修正されました。(Bug #21905) #105760 *** 'p4 print' を '-o' オプションを付けずに実行すると、ファイルがテキス トタイプで最後に改行がない場合、ファイルの最後に文字化けした文字が 追加されていました。これは修正されました。(Bug #21935) 2005.2 の新機能 ---------------- #74564 ** *** プロキシは '-e' オプションまたは P4PFSIZE 環境変数により設定された サイズより大きいファイルのリビジョンのみをキャッシュするように構成 することが可能です。この新機能が動作するためには、PERFORCEサーバの バージョンが同一またはそれ以降でなければなりません。(Bug #16399) 2005.2 のバグ修正 ------------------ #84680 ** 待ち時間が長いリンクに対してサーバ・プロキシ・プロトコルが改善され、 必要な戻りデータが少なくなりました。 #75261 *** プロキシ・オプションを P4POPTIONS 環境変数と同時に設定できるようにな りました。この環境変数はコマンドライン・オプションの文字列に設定が 可能です。これにより、NT サービスで他の環境オプションを持たないプロ キシ・オプションを設定できます。(Bug #13809) -------------------------------------------------------------------------- 2005.1 のバグ修正 ----------------- #90416 *** The previous change 70964 to fix problems with the Date and DateTime keywords was not correct. Fixed. (Bug #13481) #70975 *** Starting p4p as a service on NT would fail if upper case was used for the executable name. Fixed. (Bug #11840) #70964 ** *** The proxy would expand the Date and DateTime keywords in text+k files using the proxy's timezone not the server's resulting in p4 diff -se reporting that the files did not match the depot. Fixed if you install both the new proxy and new server. (Bug #13481) #68597 ** *** 2003.2 のプロキシは、2004.2 のサーバと共存したときにクラッシュする場 合がありました(逆の場合もあります)。今 2004.2 サーバは、より古いプ ロトコルで接続し、それを解釈するようになりました。より古いプロトコル とは、キーワード拡張されたファイルが、2004.2 サーバと接続している 2003.2 プロキシにはキャッシュされないということを意味します。2004.2 プロキシは、もはや 2003.2 以前のサーバと接続してもクラッシュすること はありません。(Bug #15387) ------------------------------------------------------------------------ 2004.1 のバグ修正 ----------------- #50042 *** ドキュメントに記載されているにもかかわらず、inetd から起動するための -i オプションが実装されていませんでした。この機能は実装されました。 (Bug #12136) ------------------------------------------------------------------------ 2003.2 の新機能 ---------------- #46146 ** *** プロキシを使用する場合、クライアント仕様の中の Compress オプションは、 プロキシとクライアントの間でのみ有効になります。以前は、Compress オプ ションが有効になっているクライアントはすべての通信において、データが 圧縮されていました。すなわち、サーバとプロキシの間、プロキシとクライ アントの間の両方において圧縮されていました。現在は、サーバとプロキシ の間のデータ圧縮はプロキシの -c フラグによって個別にコントロールされ ます。(Bug #11194) 2003.2 のバグ修正 ----------------- #46044 ** *** プロキシを使用した場合において、キーワード拡張 (ktext,text+k) の属性 を持つテキスト・ファイルは、必ずしも正しく扱われませんでした。この問 題は修正されました。(新しい p4p もしくは p4d を使用することが必要です。 しかし、p4p および p4d の両方とも新しいバージョンを使用することで、パ フォーマンスは最良になります。)(Bug #11212) #44303 ***  プロキシがキャッシュを更新できなかったときの警告メッセージ・テキストが  変更され、プロキシのキャッシュ・ファイル名が表示されるようになりました。  (Bug #11033) ------------------------------------------------------------------------ 2003.1 のバグ修正 ------------------ #43921 *** プロキシが保持する RCS ベースのキャッシュ・ファイルについて、複数のク ライアントからのリビジョン要求によってそのファイルが並行して更新され ると、不整合を起こす場合がありました。この問題は修正されました。関連 して、実行権のビットは RCS ファイルに対して設定されないようになります。 (Bug #10512) #43265 *** プロキシがキャッシュを更新時に問題を検出すると、処理を早く終了させて しまう場合がありました。今後このようなケースでは、エラーは記録および 報告されますが、処理は続行します。なお、クライアントは更新されますが、 プロキシのキャッシュは更新されません。また、プロキシのキャッシュにつ いて、不整合やファイルシステム・オーバフローが検査されます。 (Bug #10918) #43075 *** 小さいファイルを大量に送信する際のプロキシのパフォーマンスは、ネット ワーク接続をフルの状態に保っていなかったため、低いものでした。この変 更により転送するデータの保持をよりよくし、パフォーマンスを改善しまし た。(Bug #10892) ------------------------------------------------------------------------ 2002.2(英語版)のバグ修正 --------------------------- #37999 *** P4PORT と P4TARGET(または-p オプションと -t オプション)を同一のポー トにして P4Proxy を構成したとき、PERFORCE サーバは、マシンの資源が枯 渇するまで fork(または新しいスレッドの起動)を繰り返していました。 (Bug #9709)