p4 monitor

Perforceのプロセス情報を表示して 長時間実行されるタスクを制御します。

構文規則

p4 [g-opts] monitor show [-a -l -e -L -s R | T | P | B | F | I ]
p4 [g-opts] monitor terminate id
p4 [g-opts] monitor clear [id | all]
p4 [g-opts] monitor pause id
p4 [g-opts] monitor resume id p4 monitor realtime [ -F -T ]

説明

p4 monitorによってシステム管理者は、 Helixサーバマシン上でどのような Helixサーバ関連プロセスが実行中かを 監視することができます。 絶えず更新される専用テーブルを使用してプロセスを追跡します。 サーバパフォーマンスに多少の影響を及ぼす可能性があります。

p4 monitorを使用するには、p4 configuremonitor構成可能変数を設定して、 Perforceサービス上で監視を有効にする必要があります。

monitor構成可能変数の有効な値は以下のとおりです。

  • 0: サーバプロセスの監視を無効にします。(デフォルト)
  • 1: アクティブなコマンドを監視します
  • 2: アクティブなコマンドと休止中の 接続を監視します
  • 3: 2と同じですが、初期化に失敗した(Init()でスタック状態になった)接続を含みます
  • 5: 2と同じですが、このコマンドにより1秒を超える間ロックされたファイルの 一覧を含みます
  • 10: 5と同じですが、ロック待機時間を含みます
  • 25: 10と同じですが、このコマンドによってロックされたファイルのリストには、どのくらいの間ロックされたかを問わずロックされたファイルが含まれます

構成可能変数monitorへの変更は、サーバに接続するすべての 新規p4プロセスに影響します。サーバの再起動は不要です。

Helix Coreサーバ管理者ガイド』の「プロセスの監視を有効にする」を参照してください。

コマンド構文バリアントには、次の選択肢があります。

  • (listレベルアクセス): 現在のプロセス情報を表示するには、 p4 monitor showを使用します。 デフォルトではすべてのプロセスが一覧表示されますが、引数なしでコマンド(例えば、 synceditsubmit)のみが表示されます。 指定された状態のプロセスのみを表示するには、-s statusを使用します。

  • (superレベルアクセス): それぞれのコマンドに関連付けられた引数のリストを表示するには、 -a (arguments)オプションまたは-l (long)オプションを使用します。 ユーザ環境からの追加情報が必要な場合は、 -e(environment)オプションを使用します。 ロックされているファイルを表示するには、-Lオプションを使用します。
  • operator ユーザまたはsuper ユーザの場合: プロセスを終了させるためにマークするには、p4 monitor terminate idを使用します。このコマンドを実行するユーザは、オペレータとして実行するか、superレベルの アクセス権限を使用して実行する必要があります。

    プロセスが少なくとも10秒間実行中でない限り、 p4 monitor terminateコマンドはプロセスに終了のためのマークを付けません。 p4 obliterateなど、一部のコマンドは終了させることができません。

    プロセスの一覧の更新頻度を制御するには、db.monitor.intervalを参照してください。 この構成可能変数は、サポートナレッジベースの記事「ハングしたHelixサーバの修復」でも 説明されています。

  • operator ユーザまたはsuper ユーザの場合: サーバ側において早いタイミングでコマンドが終了すると、 誤って実行中と表示される場合があります。 このようなプロセスは、p4 monitor clearを使用して消去できます。

    superレベルのアクセス権を持っているユーザの場合:

    • 監視テーブルからエントリを削除する場合は、p4 monitor clear idコマンドを使用します
    • テーブル全体のデータを消去する場合は、p4 monitor clear allコマンドを使用します

    実行中と示されたプロセスは、たとえp4 monitor clearで監視テーブルから消去されたとしても、 終了するまで実行し続けます。

  • operator ユーザまたはsuper ユーザの場合: 次のタスクの実行に時間がかる場合にこれらのタスクを制御するには、 p4 monitor pausep4 monitor resumeを使用します。

出力形式

p4 monitorの出力の各行には、次のフィールドが含まれます。

pid status owner hh:mm:ss command [args]

pid

UNIX環境におけるプロセスID(またはWindows環境におけるスレッドID)です。

status

以下に示すプロセスに応じて、RTPBF、またはIを示します。

  • 実行の場合はR
  • 中断の場合はT
  • 一時停止の場合はP
  • バックグラウンドの場合はB
  • 終了の場合はF
  • アイドルの場合はIが示されます。
注意

終了のFとバックグラウンドで実行のBは、 レプリカサーバでのみ発生します。

owner

そのコマンドを実行した Helixサーバユーザ名です。

hh:mm:ss

コマンドを実行してから経過した時間を示します。

command [args]

Perforceサービスが 受信したコマンドと引数です。

例えば、p4 monitor show -Lコマンドの次のような出力では、 ロックされたファイルについての情報が次のように表示されます。

8764 R user 00:00:00 edit
      [server.locks/clients/88,d/ws4(W),db.locks(R),db.rev(R)]
8766 R user 00:00:00 edit
      [server.locks/clients/89,d/ws5(W),db.locks(R),db.rev(R)]
8768 R user 00:00:00 monitor

pid、ステータス、所有者、経過時間の次に、ws4ws5のワークスペース専用モードによる クライアントワークスペースのロックと、読み取り専用モードのdb.locksdb.revテーブルを含む さまざまなファイルをロックする2つの編集コマンドを出力しています。

休止プロセスの監視を有効にしている場合 (構成可能変数monitorを2に設定)、休止プロセスは statusRcommandIDLEで表示されます。

複数のプロセスを実行するコマンド(例えば、p4 submitなど)があります。 例えば、dm_CommitSubmitまたはdm_SubmitChangeが、 p4 submitコマンドの2つの独立したフェーズとして p4 monitorの出力に表示されることがあります。

レプリカ用にプルスレッド情報を取得する

監視機能を有効にした状態でレプリカを実行しており、 監視テーブルをディスク固有として設定していない場合は、 次のコマンドを実行することにより、プルスレッドが実行している内容の 詳細を取得することができます。(monitor.lsofを設定することに気をつけてください。)

$ p4 monitor show -sB -la -L

コマンドの出力は次のようになります。

31701 B uservice-edge3 00:07:24 pull sleeping 1000 ms
    [server.locks/replica/49,d/pull(W)]

p4 monitor realtime

リアルタイムのパフォーマンスカウンタが表示されます(カウンタがrt.monitorfile構成可能変数を使用して設定されている場合)。例えば、マスターサーバから大規模なトランザクションを複製する際に、複製処理が進行しているかどうかを判断することができます(この場合、rpl.track.behind構成可能変数の値を「1」または「2」に設定する必要があります)。

p4 monitor realtime options

次のオプションは、オペレータとして実行するか、superアクセス権限を使用して 実行する必要があります。

-F

フィルタ式に一致するパフォーマンスカウンタだけが一覧表示されます。このフィルタ式の構文は、ジョブビューで使用される構文に似ています。この構文を使用して、上記リストに示したフィールドの内容が評価されます。フィルタリングでは、大文字と小文字が区別されます。

例: -F "rtv.svr.sessions*"

-T

指定したフィールドだけが返されます。複数のフィード名を指定する場合は、コンマまたはスペースを区切り文字として使用します。

例: -T "name,value"

注意

コマンドラインで以下のように指定すると、パフォーマンスカウンタも読み取ることができます。

リアルタイムのパフォーマンスカウンタは次のとおりです。

カウンタ

説明

rtv.db.ckp.active チェックポイントの処理が進行中であるかどうかを示します。
rtv.db.ckp.records 進行中のチェックポイントに読み込まれたレコードの数。チェックポイント処理が完了すると、この数が「0」になります。
rtv.db.io.records データベースの入出力(読み取り、書き込み、削除)の実行カウンタ。 このカウンタは、パフォーマンスに影響する場合があります。 このカウンタを有効にするには、db.rt.io構成可能変数の値を「1」に設定します。
rtv.db.lockwait ロックを待機しているコマンド。 特定の時点でロックを待機しているほとんどのコマンドの 最高点が含まれます。
rtv.rpl.behind.bytes アップストリームサーバからまだ送信されていないジャーナルの バイトとして表示される複製の遅延。 rpl.track.behind構成可能変数の値を「 1」以上に設定すると、 このカウンタが有効になります。 rpl.track.behind.interval構成可能変数を使用して、 p4 pullコマンド実行中の更新頻度を調整することができます。
rtv.rpl.behind.journals アップストリームサーバからまだ送信されていない ローテーション済みジャーナルとして表示される複製の遅延。 関連する構成可能変数については、rtv.rpl.behind.bytesを参照してください。
rtv.svr.sessions.active クライアントからの現在の接続。 特定の時点におけるほとんどの接続の最高点が含まれます。
rtv.svr.sessions.total クライアント接続の実行カウント。

オプション

次のオプションは、オペレータとして実行するか、superアクセス権限を使用して 実行する必要があります。

-a

プロセスに関連付けられたすべての引数(例えば、 edit file.csync -f //depot/src/...など)を表示します。

Helixサーバユーザ名は10文字に切り捨てられ、 出力行の文字数は80文字に制限されます。

-e

起動しているHelixサーバアプリケーション(既知の場合)、ホストIPアドレス、 およびワークスペース名を含む環境情報を表示します。

-l

長い形式で、すべての引数が表示されます。ユーザ名やコマンドライン引数のリストは、 切り捨てられません。

-L

ロックされたファイルの情報を表示します。情報が収集されるのは、p4 monitorコマンドが実行されている期間のみで、 その後は継続しません。

このオプションを使用するのに事前に必要な条件は、サーバを実行する プラットフォームにより異なります。

  • Unixプラットフォームでは、次の値に続けてmonitor.lsof構成可能変数を 設定する必要があります。

    $ path/lsof -F pln

    pathの値は、使用しているUnixバージョンによって異なります。 例えば、/usr/bin/lsofなどのように指定します。

    環境によっては、monitor.lsofが機能しない場合があります。 お使いのLinuxマシンがlsofに対応していない場合や、 lsofのバージョンがHelixサーバでは機能しない場合、 あるいはセキュリティ上の理由で管理者が lsofコマンドの実行を許可しない場合などです。 これらに該当する場合であっても、 次に示す構成可能変数monitorを設定することで、 ロックされたファイルについての情報を取得することができます。

    注意

    Microsoft Windowsには作業状態のファイルを一覧表示するlsofユーティリティが搭載されていないため、Windowsシステムでは51025以外の値を使用することをお勧めします。

このオプションと共に-z tagオプションを使用することができます。 その場合、p4 monitor showコマンドは、プロセスがロックされた各ファイルに対して 1つずつlockinfoタグを返します。

-s status

ステータスがR(実行)、T(終了)、P(一時停止)、B(バックグラウンドで実行)、 F(完了)、またはI(休止中)のプロセスのみを表示します。

g-opts

グローバルオプション」を参照してください。

使用上の注意点

ファイル引数でリビジョン指定子を使用できるか? ファイル引数でリビジョン範囲を使用できるか? 最低限必要なアクセスレベル

いいえ

いいえ

  • p4 monitor showの場合はlist以上の権限
  • super
  • このコマンドは、オペレータに対して実行することができます(「p4 user」の「ユーザのタイプ」を参照)。

p4 monitor show

Helixサーバのプロセス情報 (コマンドのみ)を表示します。 list権限のみが必要です。

p4 monitor show -l

出力行の長さを制限せずに、コマンドと引数を表示します。 super権限が必要です。

p4 monitor show -a

出力行ごとに80文字に制限し、コマンドと引数を表示します。 super権限が必要です。

p4 monitor terminate 123

プロセス123を終了のためにマークするよう、 Perforceサービスに通知します。 super権限が必要です。

p4 monitor clear all

監視テーブルのすべてのエントリを消去します。super権限が必要です。

関連コマンド

監視を行うよう設定する

p4 configure set monitor=1

監視を行わないよう設定する

p4 configure set monitor=0