同時実行ビジュアライザーのスレッド ビューのレポート
この記事では、同時実行ビジュアライザーのスレッド ビューでのレポートについて説明します。
ブロック時間のプロファイル レポート
プロファイル レポートは、ブロック カテゴリ別 ("I/O" や "Synchronization" など) の呼び出し履歴を対象に、ブロック時間の集計データを提供します。 優先レポートには、現在のプロセスに取って代わったプロセスと優先インスタンスの数が一覧表示されます。 ブロック プロファイル レポートを作成するために、このツールはブロック API 呼び出しを収集し、呼び出し履歴のツリーを作成します。 これらのレポートに表示されるデータは、現在の時間の範囲、非表示のスレッド、適用される場合がある次の 2 つのフィルターによって変わります。
[マイ コードのみ] が選択されている場合、ユーザー コードのあるスタック フレームとそのユーザー コードの 1 つ下のレベルのみが表示されます。
[不要項目の非表示] 値が設定されている場合、指定した頻度を下回る照合済みスタックは省略されます。
コール ツリー エントリを展開し、ブロック時間が使われたコード行を見つけます。 エントリのソース行を見つけるには、そのシュートカット メニューで、[ソースの表示] を選択します。 それを呼び出したコード行を見つけるには、ショートカット メニューで、[呼び出しサイトの表示] を選択します。 呼び出しサイトが 1 つだけ利用できる場合、このコマンドで、呼び出しサイトの強調表示されているコード行につながります。 複数の呼び出しサイトが利用できる場合、コマンドでダイアログ ボックスが開きます。そのダイアログ ボックスで、エントリを選択し、[ソースに移動] ボタンを選択すると、強調表示されている呼び出しサイトが見つかります。 多くの場合、インスタンスが最も多い、または最も多くの時間を費やしている、あるいはそれら両方に当てはまる呼び出しサイトのソース コードを表示すると最も便利です。
ブロック時間レポートの列
次の表は、各ブロック時間レポートの列をまとめたものです。
列名 | 説明 |
---|---|
Name | 呼び出し履歴の各レベルの関数の名前。 |
インスタンス | 表示された期間のブロック呼び出しのインスタンスの数。 |
包括的ブロック時間 | 呼び出し履歴ツリーのこのレベルまでのすべてのスタックに使われたブロック時間合計。 包括的な数字は、この関数の排他的ブロック時間とそのすべての子ノードの排他的ブロック時間の合計です。 |
排他的ブロック時間 | この関数が呼び出し履歴の最下位レベルにあるときに使われたブロック時間合計。 排他的ブロック時間の値が高い一意の呼び出し履歴エントリが関心のある関数となる可能性があります。 |
API/待機カテゴリ | 呼び出し履歴の最下位レベルの関数にのみ表示されます。 ブロック呼び出しのシグネチャが認識される箇所では、ブロック API が与えられます。 シグネチャが認識されない場合、カーネルにより報告された情報が与えられます。 |
詳細 | 関数の完全修飾名。 これには、利用できる場合、行数が含まれます。 |
同期
同期化レポートには、同期でブロックしているセグメントの原因となっている呼び出しと各呼び出し履歴のブロック時間の集計が表示されます。 詳細については、「同期時間」を参照してください。
Sleep
スリープ レポートには、スリープ時間の原因となったブロック時間の原因となっている呼び出しと各呼び出し履歴のブロック時間の集計が表示されます。 詳細については、「スリープ時間」を参照してください。
I/O
I/O レポートには、I/O でブロックしているセグメントの原因となっている呼び出しと各呼び出し履歴のブロック時間の集計が表示されます。 詳細については、「I/O 時間 (スレッド ビュー)」を参照してください。
メモリ管理
メモリ管理レポートには、メモリ管理操作でブロックしているセグメントの原因となっている呼び出しと各呼び出し履歴のブロック時間の集計が表示されます。 詳細については、「メモリ管理時間」を参照してください。
優先
優先レポートには、現在のプロセスに取って代わったプロセスとインスタンスの数が一覧表示されます。 各プロセスを展開し、現在のプロセスのスレッドに取って代わったスレッドを表示したり、スレッドごとの優先インスタンスの内訳を表示したりできます。 このブロック レポートは他のブロック レポートほど実用的ではありません。優先は通常、コード内の問題ではなく、オペレーティング システムによってプロセスに与えられるためです。 詳細については、「優先時間」を参照してください。
UI 処理
UI 処理レポートには、UI 処理ブロックでブロックしているセグメントの原因となっている呼び出しと各呼び出し履歴のブロック時間の集計が表示されます。 詳細については、「UI 処理時間」を参照してください。
ディスク操作レポート (スレッド ビュー)
ディスク操作レポートには、ディスク チャネルにおけるディスク I/O 操作が表示されます。
現在表示されている時間帯でプロファイリングされているプロセスの代わりに発生する各ディスク アクセスについて、この情報が報告されます。
ディスク アクセスを実行したプロセスの名前と PID
ディスクにアクセスしたスレッドの ID
アクセスされたファイルの名前
各ファイルの読み取りの数
読み取られたバイト数
読み取り待機時間 (ミリ秒)
書き込み数
書き込まれたバイト数
書き込み待機時間 (ミリ秒)
実行プロファイル レポート
実行プロファイル レポートは、従来のサンプリング プロファイルです。 サンプルは、論理コア上でスレッドが実行されている期間中におよそミリ秒ごとに取得されます。コンカレンシー ビジュアライザーが、累積された一連のサンプル セットを照合して、標準的なコール ツリーをビルドします。 このテーブルのデータは、現在の時間範囲と非表示のスレッドの影響、および適用されるフィルターの影響を受ける場合があります。
[マイ コードのみ] が選択されている場合、ユーザー コードのあるスタック フレームと、そのユーザー コードの 1 つ下のレベルのみが表示されます。
[不要項目の非表示] 値が設定されている場合、指定した頻度を下回る照合済みスタックはレポートから除外されます。
次の表は、テーブル内の列を示しています。
列 | 内容 |
---|---|
名前 | 呼び出し履歴の各レベルの関数の名前。 |
包括サンプル | このレベルの呼び出し履歴のツリーにまとめられたすべてのスタックについて集められたサンプルの合計数。 包括数は、この関数の排他サンプルと、すべての子ノードの包括カウンターの合計です。 |
排他サンプル | この関数が呼び出し履歴の最も低いレベルにある、収集されたサンプルの合計数。 |
% 包括 | 包括サンプル列に表示されているサンプルの合計の割合。 割合は小数点以下 2 桁に丸めて表示されます。 |
% 排他 | 排他サンプル列に表示されているサンプルの合計の割合。 割合は小数点以下 2 桁に丸めて表示されます。 |
詳細 | 関数の完全修飾名。 これには、利用できる場合、行数が含まれます。 |
このレポートの表については、実行時間 (スレッド ビュー) ビューで確認できます。
マーカー レポート
マーカー レポートには、表示されているタイム フレーム内のマーカーが一覧表示されます。 レーンをパン、ズーム、または非表示にすると、マーカーの表示/非表示が切り替わる場合があります。 レポートには、各マーカーに関する次の情報が含まれています。
それを開始したときの、トレースの開始からの相対時間。
実行継続時間。 フラグとメッセージの場合には、瞬間を表すために実行継続時間はゼロです。
それを生成したスレッドの ID。
それを生成した Event Tracking for Windows (ETW) プロバイダー。
それが書き始められたマーカーの系列。
それが属しているイベントのカテゴリ。
その重要度レベル。
その種類 (スパン、フラグ、またはメッセージ)。
それが表すものについての概要
マーカー レポートを CSV ファイルとして保存するには、[エクスポート] ボタンを選択します。 CSV ファイル内のデータは、他のアプリやツールで使用することができます。
Note
マーカー レポートでは 1,000 個のマーカーを表示できます。 すべてのマーカーを表示するには、レポート全体を CSV ファイルにエクスポートします。
スレッド別の概要レポート
この棒グラフは、現在の表示時間範囲におけるアクティビティ カテゴリごとに、非表示にされていない各スレッドで費やされた時間の割合を示します。 "実行" はそのスレッドが実行中であることを示し、他のすべてのカテゴリはそのスレッドが何らかの処理の待機中であることを示します。