診断モニター

[診断モニター] は、ArcGIS Pro 内の統合された診断ファシリティです。 ArcGIS Pro の実行中に、[診断モニター] 内でステータス情報、ログ、およびイベントが表示され、継続的に更新されます。[診断モニター] には、一連のタブとステータス インジケーターが含まれています。現在、[診断モニター] には、[カウンター] タブ、[タスク] タブ、および [ログ] タブがあります。

[診断モニター] ダイアログ ボックス上の情報を使用して、非応答状態、リソースの過剰消費、機能障害、パフォーマンスの低下など、アプリケーションのさまざまな問題を診断できます。

診断モニターの概要

注意:

[診断モニター] は、ArcGIS Pro ベースのすべての製品で使用できます。ArcGIS Monitor と混同しないようにしてください。

診断モニターの開始

[診断モニター] は、次のいずれかの方法で開始できます。

  • ArcGIS Pro が開いている状態で、Ctrl + Alt + M キーを押します。
  • コマンド ライン スイッチの /enablediagnostics を使用して、ArcGIS Pro を起動します。

コマンド ライン オプションを使用すると、/loglevel=debug パラメーターを指定して、[診断モニター] でデバッグ モードを有効にできます。 デバッグ モードは、[ログ] タブで無効にしない限り、後続の ArcGIS Pro セッションを通じて有効です。

注意:

[診断モニター] をコマンド ラインから有効にした場合、ダイアログ ボックスは、当初、Microsoft Windows のタスクバー上で最小化されています。

[診断モニター] で特定のワークフローのトラブルシューティングを行うには、問題が発生しているエリアで作業する前に、モニターを開きます。 ArcGIS Pro の他のすべてのウィンドウの上に常に表示されるよう [診断モニター] ダイアログ ボックスを構成するには、ダイアログ ボックスのキャプション エリアを右クリックして、[常に上部に表示] をクリックします。 さまざまなアプリケーション機能を使用しながら、[診断モニター] でアクティビティを厳密に監視したい場合は、これが便利です。

ArcGIS Pro のアーキテクチャの概要

ArcGIS Pro は、64 ビットのマルチスレッド モジュラー アプリケーションです。 機能的なサブシステムがオンデマンドで読み込まれ、ワーカー スレッド内または個別のワーカー プロセス内で作業 (バッファーの計算やマップのレンダリングなど) を実行します。 ほとんどの場合、作業 (操作) の論理チャンクは、実行中に 1 つ以上のタスクにまとめられます。 タスクは ArcGIS Pro で作業を完了する方法において中心的役割を果たし、[診断モニター] 内で目立つように特徴付けられています。

専用のスレッドは、アプリケーションのユーザー インターフェイス エレメントをレンダリングする役割、およびキーボード入力とマウス クリックの形式でのユーザー入力を処理する役割を担います。 いずれかのワーカー スレッドで操作が実行されている間、GUI (グラフィカル ユーザー インターフェイス) スレッドは、操作の進捗状況と、操作をキャンセルする方法 (該当する場合) に関連するフィードバックを提供します。 [診断モニター] 自体は、GUI とは関係のない特別なスレッドで動作します。 このため、GUI スレッドがハングしても、[診断モニター] ダイアログ ボックスは応答性を維持できます。

ArcGIS Pro 内のワーカー スレッドは、特定の機能領域専用のファミリーに分割されています。

  • [フォアグラウンド スレッド] - 現在読み込まれているプロジェクト内の構成状態のプライマリ リポジトリである CIM (Cartographic Information Model) を管理する 4 つのワーカー スレッドのセット。 これらのスレッドは、マップ レンダリングの高速化にも役立ちます。 [フォアグラウンド スレッド] で操作が実行されている間は、特定の種類のユーザー操作が禁止されます。
  • [バックグラウンド スレッド] - これらのスレッドは、CIM の状態に依存しない広範囲な操作を実行し、ユーザーが他の操作を実行している間、バックグラウンドで独立して実行できます。 [高優先度のバックグラウンド スレッド] に割り当てられているタスクは、[低優先度のバックグラウンド スレッド] に割り当てられているタスクよりも高速に実行され、優先度が高くなります。 [共有バックグラウンド] スレッドは、一連のタスクを長時間にわたって同じ一貫したスレッドで実行する必要がある特別な場合に使用されます。
  • [ジオプロセシング スレッド] - このスレッドは、バックグラウンドのジオプロセシング操作の実行に使用されます。 多くの場合、[ジオプロセシング スレッド] は内部で他のスレッドと連携して操作を完了します。
診断モニターで使用されるスレッドの概要

ステータス エリア

[ステータス] エリアには、[ステータス] インジケーターと [スレッド アクティビティ] インジケーターが含まれています。 [ステータス] インジケーターは、現在のアプリケーション ステータスに応じてさまざまな色を表示します。 これらのインジケーターは、アプリケーション内で発生している問題を絞り込むために役立ちます。 [スレッド アクティビティ] インジケーターは、対応するスレッドのステータスに基づいて色を表示します。

ステータス インジケーター

診断モニター 内のステータス インジケーター

要素説明
1

赤色は、GUI スレッドがメッセージを送信しなくなり、マウスまたはキーボード入力に反応できないことを示します。GUI スレッドが応答していないと、UI グラフィックスが正しくレンダリングされない可能性があります。 非応答の発生は、非応答ログに記録されます。

2

黄色は、アクティブなタスクに関連付けられたプロセッサーがないため、タスクの実行中に不適切なフィードバックがユーザーに提示されている場合を示します。 この状態が検出されると、関連するタスクにもタスク ログで黄色のフラグが付けられます。

3

黄色は、タスクの発行率が 1 秒あたり 10 を超えていることを示します。

4

アプリケーション内で 1 つ以上の HTTP リクエストが現在アクティブである場合、緑色。

5

フォアグラウンド スレッドで現在タスクが実行されている場合、緑色。 フォアグラウンド タスクが実行されている間、さまざまなボタンおよびツールが使用できないことがあります。

6

ビュー (通常は、マップ、グローブ、シーン、またはレイアウトを含む) が現在ビジー状態である場合、黄色。 ビューがビジー状態である間、さまざまなボタンおよびツールが使用できないことがあります。

7

ウィンドウが現在ビジー状態である場合、黄色。 ウィンドウがビジー状態である間、さまざまなボタンおよびツールが使用できないことがあります。

8

いずれかのフォアグラウンド スレッドで描画関連の操作が現在実行されているためにタスクが停止されている場合、黄色。 アプリケーションが待機状態である間、さまざまなボタンおよびツールが使用できないことがあります。

9

以前に一時停止された描画操作が再開されている間、タスクは停止されます。 アプリケーションが再開している間、さまざまなボタンおよびツールが使用できないことがあります。

10

緑色は、ジオプロセシング操作が現在実行されていることを示します。 このインジケーターは、そのジオプロセシング操作がバックグラウンドであるかフォアグラウンドであるかに関係なく点灯します。

スレッド アクティビティ インジケーター

上記の各スレッドは、[診断モニター] のステータス エリア内に、対応するアクティビティ インジケーターを持っています。 関連付けられているスレッドが現在実行されている場合、スレッド ステータス インジケーターは緑色で、スレッドが非アクティブ (スリープ状態) である場合はグレーです。 ホスト コンピューターの CPU に、追加のスレッドをサポートするための十分なコアがない場合、スレッド ステータス インジケーターはダーク グレーで表示されることがあります。

診断モニターのタブ

[診断モニター] は、[カウンター] タブ、[タスク] タブ、[ログ] タブで構成されています。 [カウンター] タブには、内部カウンターが一覧表示されます。 [タスク] タブには、最近のタスクが表示されます。 [ログ] タブには、イベント ログ ビューアーが表示されます。

[カウンター] タブ

[カウンター] タブは、名前付きの内部カウンターのリストで構成されています。 各カウンターは、リストの上にあるグラフにリンクされています。 リスト内の特定のカウンターが選択されると、グラフが更新され、直近 20 秒間のそのカウンターの履歴値が表示されます。

[診断モニター] の [カウンター] タブ

カウンター リストの中には、メモリ消費量、スレッド数、HTTP リクエスト数、読み込まれた DLL 数など、役に立つメトリクスがあります。 いくつかのカウンターについて、さらに説明する必要があります。

  • 現在のタスク レート - タスクがフォアグラウンド スレッドのキューに配置されている現在のレート。 この数値が高い場合は、操作を実行するために必要以上に多数のタスクが発行されていることを示すことがあります。 多数のタスクでの操作は、効率が低くなる可能性があります。
  • CIM カウンター - これらのカウンターは、CIM 上の読み取り/書き込み操作の総数の記録に使用されます。 描画関連の読み取り/書き込みは、個別にカウントされます。 各操作には関連するオーバーヘッドがあるため、特定の時間内で大きな移動よりも小さな移動のほうが望ましくなります。
  • IRequest カウンター - これらのカウンターは、内部使用に向けて予約されています。

タスク タブ

[タスク] タブには、ユーザー操作から最近発行されたタスクのログと、GUI スレッドで発生した非応答状態のもう 1 つのログが含まれます。

[診断モニター] 内の [タスク]

最近の UI タスク ログ

最近の UI タスク ログは、ユーザーの操作に応じて発行された最新のタスクのレコードを提供します。 タスク機能の識別に関連するオーバーヘッドのため、このログは、[診断モニター] ダイアログ ボックスが閉じているときには常に使用できません。 デフォルトでは、最後に実行されたタスクがリストの一番上になるようにタスクが時系列でソートされています。 内部タスク (実行されている外部タスク内からキューに配置される) は、このリストには表示されません。 キューに配置されている、または現在実行されているタスクは、緑色で表示されます。 各タスクには、一連のプロパティが関連付けられています。

  • [タスク #] - タスクの実行順序を示す数値。たとえば、タスク # 42 は、実行中のプロセス内の 42 番目の実行タスクを示します。
  • [キューに配置された時間] - タスクが最初にキューに入れられたときの実測時間。 別のタスクがまだ実行中であるときに起動されたタスクは、キューに配置され、現在のタスクが完了するまで実行が開始されません。 フォアグラウンド タスクが実行されている間は、通常、ボタンとコントロールが無効になっています。これにより、アプリケーションの状態が遷移している間に、追加のタスクがキューに配置されないようになります。
  • [タスク時間] - タスクの実際の実行に関連付けられている時間 (ミリ秒単位)。
  • [再開時間] - 描画の再開が完了するまでの待機に費やされた時間 (ミリ秒単位)。
  • [待ち時間] - 描画関連の操作が完了するまでの待機に費やされた時間 (ミリ秒単位)。
  • [合計時間] - タスクがキューに配置された時点から、タスクが完了する時点まで、タスクの実行に必要となった合計時間 (ミリ秒単位) (描画の再開に関連する時間を含む)。
  • [関数] - タスクに最適に関連付けられている最も外側の関数の名前。

キューに配置されている、またはまだ実行中のタスクでは、その時間値に -1 が表示されます。 タスクが完了するか、キャンセルされると、実際の時間がミリ秒単位で表示されます。

ヒューリスティックを使用して、キューに配置されているタスクに最も関連する関数が表示されます。 ヒューリスティックは、コール スタックを調べて、非 OS 関数を含むフレームを探します。

最近の UI タスク ログは、任意の列によって昇順または降順でソートできます。 この機能は、たとえば、実行時間が最も長いタスクをすばやく識別するために使用できます。 ログの内容は、リスト上の任意の場所を右クリックして [コピー] または [消去] をそれぞれクリックすることで、クリップボードにコピーまたは消去できます。

非応答ログ

GUI スレッドが応答しなくなると必ず、開始時間と合計期間を含む非応答状況イベントがログに記録されます。 このログの内容は、リスト上の任意の場所を右クリックして [コピー] をクリックすることで、クリップボードにコピーできます。

ログ タブ

[ログ] タブは、ソート機能とフィルター機能を持つライブ イベント ログ ビューアーです。 ArcGIS Pro 内の多くのサブシステムは、診断モードで実行すると、イベント ログに診断情報を書き込みます。 診断モードはコマンド ライン引数で有効にできますが、[診断モニター] が表示されているときにも、自動的に有効になります。

診断モニター内のログ タブ

4 つのイベント タイプがあります。

  • エラー - 操作実行中の重大な障害を示すために使用されます。
  • 警告 - 重大性が低く、場合によっては無視できます。
  • 情報 - 実行中の操作に関する追加のコンテキスト情報を提供するために発行されます。
  • デバッグ - 主に Esri のスタッフに向けた、詳細な実装情報。

イベント タイプは、リストの上部にある対応するチェックボックスを使用して、リスト内でフィルター処理できます。 エラー イベントは、その重要性から常にリストに含まれており、除外できません。 フィルター エントリは、より選択的に使用できます。 ここにテキストが入力されると、少なくとも 1 つの列にそのテキスト (大文字と小文字を区別) が含まれるイベントだけが表示されます。

一致するイベントの総数が、[ログ] タブの右上に表示されます。

ログ ファイル

ログ ファイルは、ArcGIS\Diagnostics サブフォルダー内のユーザーのドキュメント フォルダーの下に生成されます。 ArcGIS Pro の場合、ログ ファイルは ArcGISProLog-16360~89343E4F-74E8-4F26-A705-B805E8C92BB0 のように表示され、次のプロパティがあります。

  • ArcGISProLog は、ホスト実行可能ファイルの名前です。
  • 16360 は、プロセス ID です。
  • 89343E4F-74E8-4F26-A705-B805E8C92BB0 は、そのインスタンスに作成された一意の ID です。