[詳細設定] ダイアログ ボックス (コンカレンシー ビジュアライザー)

コンカレンシー ビジュアライザーの [詳細設定] ダイアログ ボックスを使うと、トレースを収集する方法を制御できます。 このダイアログ ボックスには、シンボル、マイ コードのみ、バッファリング、フィルター処理、CLR イベント、マーカー、プロバイダー、およびファイルに関するタブがあります。

Symbols

コンカレンシー ビジュアライザーは、Visual Studio デバッガーと同じシンボルの設定を使います。 コンカレンシー ビジュアライザーは、パフォーマンス データに関連付けられている呼び出し履歴を解決するために、この設定を使います。 トレースを処理するとき、コンカレンシー ビジュアライザーは設定ページで指定されているシンボル サーバーにアクセスします。 このデータにネットワーク経由でアクセスすると、トレースの処理が遅くなります。 シンボルの解決に必要な時間を減らすには、ローカルにシンボルをキャッシュできます。 シンボルがダウンロードされている場合、Visual Studio はローカル キャッシュからシンボルを読み込みます。

マイ コードのみ

既定では、マイ コードのみは、Visual Studio の現在のソリューションに関連付けられている .exe ファイルと .dll ファイルのセットです。 コンカレンシー ビジュアライザーは、マイ コードのみ機能を使って呼び出し履歴をフィルター処理するときに、この一連のファイルを評価します。 [マイ コードのみ] タブでは、コンカレンシー ビジュアライザーがマイ コードのみ用に使う場所に、.exe ファイルや .dll ファイルが格納されているディレクトリを追加できます。

.exe ファイルや .dll ファイルのパスは、トレースが収集されるときにトレース ファイルに保存されます。 この設定を変更しても、以前に収集されたトレースには影響しません。

Buffering

コンカレンシー ビジュアライザーは、トレースを収集するときに Windows イベント トレーシング (ETW) を使います。 ETW は、イベントを格納するときにさまざまなバッファーを使います。 ETW バッファーの既定の設定は、すべての場合に最適であるとは限らず、状況によっては、イベントが失われるといった問題が発生する可能性があります。 [バッファリング] タブを使って、ETW バッファーの設定を構成できます。 詳しくは、「イベント トレーシング」および「EVENT_TRACE_PROPERTIES 構造体」をご覧ください。

フィルター

[フィルター] タブでは、コンカレンシー ビジュアライザーが収集するイベントのセットを選ぶことができます。 イベントのサブセットを選ぶと、レポートに表示されるデータの種類が制限され、各トレースのサイズが小さくなり、トレースの処理に必要な時間が短くなります。

CLR イベント

共通言語ランタイム (CLR) によって生成されるイベントを使うことで、コンカレンシー ビジュアライザーはマネージド呼び出し履歴を解決できます。 CLR イベントの収集を無効にした場合、トレースのサイズは減りますが、一部の呼び出し履歴が解決されません。 その結果、一部の CPU スレッド アクティビティが誤って分類される可能性があります。

ネイティブ プロセスを収集

CLR イベントは、通常はネイティブ プロセスに必要ないため、既定では、マネージド プロセスがプロファイリングされるときにのみ収集されます。 場合によっては (たとえば、ネイティブ プロセスが CLR をホストしている場合)、ネイティブ プロセス用に CLR イベントを収集する必要があります。 その場合は、[ネイティブ プロセスを収集] チェック ボックスをオンにします。

ランダウン イベントを無効化

CLR は、ランタイムとランダウンの 2 つのプロバイダーからイベントを生成します。 CLR ランタイム イベントのみを収集し、ランダウン イベントを収集しないようにする場合は、[ランダウン イベントを無効化] チェック ボックスをオンにします。 これにより、収集によって生成されるトレース ファイルのサイズが小さくなりますが、一部のスタックが解決されない場合があります。 詳しくは、「CLR ETW プロバイダー」をご覧ください。

サンプル イベント

サンプル イベントを使って、スレッドの実行に関連付けられている呼び出し履歴を収集できます。 これらのイベントは、現在のプロセスで実行しているスレッドに対して、1 ミリ秒あたり約 1 回収集されます。 サンプル イベントの収集を無効にすると、収集されるトレースのサイズは小さくなりますが、スレッドの実行に関連付けられている呼び出し履歴を表示できなくなります。

GPU イベント

GPU イベントは、DirectX によって生成されるイベントです。 GPU イベントの収集を無効にすると、収集されるトレースのサイズは小さくなりますが、使用状況ビューの GPU アクティビティまたはスレッド ビューの DirectX エンジン アクティビティが、表示されなくなります。

ファイル I/O イベント

ファイル I/O イベントは、現在のプロセスの代わりのディスクへのアクセスを表します。 ファイル I/O イベントを無効にすると、トレースのサイズは小さくなりますが、スレッド ビューでディスク チャネルまたはディスク操作についての情報が報告されなくなります。

マーカー

[マーカー] タブでは、コンカレンシー ビジュアライザーでマーカーとして示される ETW プロバイダーのセットを構成できます。 また、重要度レベルと ETW のカテゴリに基づいてマーカーのコレクションをフィルター処理することもできます。 コンカレンシー ビジュアライザー SDK を使っている場合、独自のマーカー プロバイダーをここで登録してスレッド ビューに表示できます。

新しいプロバイダーを追加する

コードでコンカレンシー ビジュアライザー SDK を使っている場合、またはコードで EventSource 規約に従う ETW イベントを生成している場合は、それらのイベントをこのダイアログ ボックスで登録することにより、コンカレンシー ビジュアライザーに表示できます。

[名前] フィールドには、プロバイダーによって生成されるイベントの種類を説明する名前を入力します。 [GUID] フィールドには、このプロバイダーに関連付けられている GUID を入力します (GUID は、すべての ETW プロバイダーに関連付けられます)。

必要に応じて、カテゴリまたは重要度レベルに基づき、このプロバイダーからイベントをフィルターで除外するかどうかを指定できます。 カテゴリ フィールを使って、コンカレンシー ビジュアライザー SDK のカテゴリに基づいてフィルター処理できます。 そのためには、カテゴリのコンマ区切り文字列またはカテゴリの範囲を入力します。 これにより、現在のプロバイダーで表示するイベントのカテゴリを指定します。 EventSource プロバイダーを追加している場合は、カテゴリ フィールドを使って、ETW キーワードでフィルター処理できます。 キーワードはビットマスクなので、整数のコンマ区切り文字列を使って、マスクで設定するビットを指定できます。 たとえば、"1,2" と指定すると 1 番目と 2 番目のビットが設定され、これは 10 進数では 6 になります。

重要度レベルの一覧を使って、重要度または ETW レベルが指定した値より小さいイベントを除外できます。

既存のプロバイダーの構成

既存のプロバイダーに関連付けられている設定を編集するには、一覧でプロバイダーを選び、[プロバイダーを編集します] ボタンを選びます。 名前、GUID、およびフィルター処理の設定を変更できます。

コンカレンシー ビジュアライザー レポートからのマーカー データの除外

特定のプロバイダーのデータが以降のトレースに含まれないようにする場合は、削除するプロバイダーの横にあるチェック ボックスをオフにします。

Files

[ファイル] タブでは、トレースが収集されるたびにトレース ファイルが格納されるディレクトリを指定できます。 コンカレンシー ビジュアライザーは、収集するトレースごとに 4 つのファイルを生成します。

  • カーネル モード イベント トレース ログ (ETL) ファイル (.kernel.etl*)

  • ユーザー モード イベント トレース ログ ファイル (.user.etl*)

  • コンカレンシー ビジュアライザー データ ファイル (.CVData*)

  • コンカレンシー ビジュアライザー トレース ファイル (.CVTrace*)

    2 つの ETL ファイルには生のトレース データが保存され、2 つのコンカレンシー ビジュアライザー ファイルには処理されたデータが保存されます。 生の ETL ファイルは通常、トレースが処理された後は使われません。 [分析後にイベント トレース ログ (ETL) ファイルを削除] チェック ボックスをオンにすると、ディスクに保存されるトレース データの量が減ります。