次の方法で共有


スレッド ビュー (並行処理のパフォーマンス)

スレッド ビューは、同時実行制御ビジュアライザーで最も詳細かつ機能豊富なビューです。このビューでは、スレッドの実行または同期、I/O、またはいくつか他の理由のためにブロックするかどうかを識別できます。

プロファイルの解析時に、同時実行制御ビジュアライザー アプリケーション スレッドごとのすべてのオペレーティング システム コンテキスト スイッチ イベントを調べます。コンテキストの切り替えなど、これらの多くの理由の発生します。

  • 同期プリミティブでスレッドがブロックされた

  • スレッドのクォンタムの期限が切れた

  • スレッドがブロックの原因となる I/O 要求を実行した

スレッドが実行を停止するとスレッド ビューは各コンテキストの切り替えには、カテゴリを割り当てます。カテゴリ ビューの左下部分で、凡例に表示されます。同時実行制御ビジュアライザーでは、既知のブロッキング Api のスレッドのコール スタックを検索してコンテキスト スイッチ イベントを分類しています。ない場合、呼び出しスタックの一致、待機理由によって提供されるWindowsを使用します。ただし、 Windowsカテゴリ、実装の詳細に基づいている可能性があり、ユーザーの意図が反映されないことがします。たとえば、 Windowsネイティブのスリムなリーダー ライター ロックで I/O として同期の代わりにブロックして待機する理由を報告します。ほとんどの場合、コンテキスト スイッチ イベントに対応して、コール スタックを調べることにより、ブロッキングのイベントの根本原因を識別できます。

スレッド ビューは、スレッド間の依存関係も表示されます。たとえば、同期オブジェクト上でブロックされているスレッドを特定する場合は、ブロックを解除するスレッドを表示して、もう 1 つの禁止を解除すると、アクティビティには、その時点のスレッドのコール スタックを調べることができます。

スレッドを実行する場合は、同時実行制御ビジュアライザー サンプルを収集します。スレッド ビューでは、コードが、実行セグメントで 1 つまたは複数のスレッドによって実行されますを分析できます。ブロックのレポート、および呼び出しスタック ツリーの実行プロファイル レポートを確認することもできます。

使用方法

スレッド ビューを使用することができますいくつかの方法は次のとおりです。

  • 理由は、アプリケーションのユーザー インターフェイス (UI) 特定実行フェーズ中に応答していない理由を特定します。

  • ブロック同期、I/O、ページ フォールト、およびその他のイベントに費やした時間を特定します。

  • システムで実行している他のプロセスからの干渉の程度を特定します。

  • 負荷分散の並列実行の問題を特定します。

  • (複数の論理コアを利用すると、並列アプリケーションのパフォーマンス向上しません理由) が最適でないまたは存在しない拡張性の理由を特定します。

  • 並列処理のために、アプリケーションで同時実行の程度を把握します。

  • 実行のワーカー スレッドとクリティカル パスの間の依存関係を把握する。

特定の時間間隔と、スレッドの調査

スレッドは、タイムラインが表示されます。ズームおよび特定の間隔と、アプリケーションのスレッドをチェックするには、タイムライン内を移動することができます。X 軸に時間ありは y 軸に複数のチャネルがあります。

  • 2 つの I/O チャネルの各ディスク ドライブが、1 つのチャネルの読み取りと書き込みのいずれかにします。

  • プロセス内の各スレッド用のチャネル。

  • マーカー イベントのトレースがある場合のマーカーのチャネル。マーカーのチャンネルは、これらのイベントを生成したスレッド チャネルで最初表示されます。

  • GPU のチャネル。

スレッド ビューの例を次に示します。

スレッド ビュー

スレッド ビュー

最初に、メインのアプリケーション スレッドが最初になるように、スレッドが作成された順序で並べ替えられます。スレッド (たとえば、ほとんどの実行作業で) 別の条件でを表示するのには、ビューの左上隅に、並べ替えのオプションを使用できます。

左側の列でその名前を選択し、[選択して作業を実行していないスレッドを非表示にすることができます、 選択したスレッドには、ツールバーのボタン。統計関係ないし、レポートがいっぱいのため、完全にブロックされているスレッドを非表示にすることをお勧めします。

選択して、作業中の凡例には、非表示にするのには、追加のスレッドを識別するために、 あたりのスレッドの概要 レポート、 プロファイル レポートタブ。これは、現在選択されている時間間隔にスレッドの状態が表示されます実行ブレーク ダウン グラフが表示されます。いくつかのズーム レベルでは、いくつかのスレッドが表示されないことがあります。この現象が発生すると、楕円が右側に表示されます。

間隔の時間といくつかのスレッドを選択した場合は、パフォーマンスの分析を開始できます。

分析ツール

このセクションでは、レポートおよびその他の分析ツールについて説明します。

Dd627193.collapse_all(ja-jp,VS.110).gifスレッドのブロックの詳細

スレッドに特定の地域でのブロッキングのイベントに関する情報を取得するには、ツールヒントを表示するにはその領域にポインターを置きます。ある場合は、カテゴリ、領域の開始時刻、ブロックの期間、ブロッキングの API などの情報が含まれています。ブロッキングの領域を選択すると、ツールヒントに表示される同じ情報と共に、下部のペインにその時点でのスタックが表示されます。呼び出し履歴を調べることで、スレッドをブロックしたイベントの根本的な原因を特定できます。セグメントを選択し、[現在のタブを調べることによっては、追加のプロセスおよびスレッドの情報を検索できます。

複数のブロック イベントの実行パスがあります。問題の領域をすばやく検索できるようにするには、これらのブロックのカテゴリを調べることができます。だけでブロックのカテゴリのいずれかの左側に凡例を選択します。

Dd627193.collapse_all(ja-jp,VS.110).gifスレッド間の依存関係

何ブロックされたスレッドを行うし、説明しようとしたかを判断できるようにするには、同時実行制御ビジュアライザーは、プロセス内のスレッド間の依存関係を表示できますを実行するのには、どのような他のスレッドを有効にします。別のスレッドのスレッドのブロックを確認するには、関連するブロッキングのセグメントを選択します。同時実行制御ビジュアライザーは、スレッドのブロック解除を確認できる場合は、スレッドのブロック解除、ブロックのセグメントに続く実行セグメント間直線描画します。さらに、 Unblocking スタックタブ関連のコール スタックが表示されます。

Dd627193.collapse_all(ja-jp,VS.110).gifスレッド実行の詳細

スレッドのタイムラインのグラフでは、コードを実行したとき、緑のセグメントを表示します。実行セグメントに関する詳細情報を取得できます。

実行セグメント内のポイントを選択すると、同時実行制御ビジュアライザー関連のコール スタックの時点の検索、実行セグメント内の選択した点の上の黒いキャレットを表示し、呼び出しスタック自体を表示する、 現在のスタックタブ。実行セグメント上の複数のポイントを選択することができます。

[!メモ]

同時実行制御ビジュアライザーは、実行のセグメント上の選択を解決できる場合があります。通常、セグメントの時間未満の 1 ミリ秒である場合に発生します。

すべての有効な (れ) のスレッドで現在選択されている期間の実行プロファイルを取得するには、選択、 実行 、作業中の凡例内のボタン。

Dd627193.collapse_all(ja-jp,VS.110).gifタイムライン グラフ

タイムライン グラフには、プロセス内のすべてのスレッド、およびホスト コンピューター上のすべての物理ディスク デバイスのアクティビティが表示されます。また、GPU の活動とマーカーのイベントが表示されます。または時間の間隔を長く表示する詳細情報を表示するズームことができます。カテゴリ、開始時刻、期間、およびコール スタックの状態に関する詳細情報を取得するのには、グラフ上の点を選択することもできます。

タイムライン グラフでは、色は、スレッドの状態を特定の時点でことを示します。たとえば、緑セグメントで実行された赤いセグメントの同期はブロックされました黄色セグメントが横取りされました、紫色のセグメント内のデバイス I/O を推進しました。並列ループ内で、または同時実行タスクに関連するスレッド間で作業の残高を確認するのにには、このビューを使用できます。スレッドは、他の人よりも完了までに長時間かかっている場合は、作業はバランスのとれたできない場合があります。この情報を使用すると、スレッドの間でより均等に作業を分散することにより、プログラムのパフォーマンスを向上できます。

1 つのスレッド (ポイントで時間を実行) 緑である場合は、アプリケーション、同時実行性を最大限に活用システムのことがあるされません。タイムライン グラフを使用して、スレッドとブロックの間の時間関係の間の依存関係を確認することができ、スレッドをブロックします。スレッドの配置を変更して、スレッドを選択をツールバーの [を選択または下のボタンをするには。スレッドを非表示にするを選択して、選択、 非スレッドボタン。

Dd627193.collapse_all(ja-jp,VS.110).gifプロファイル レポート

タイムライン] の下のグラフは、タイムラインのプロファイル、レポートのさまざまなタブを持つウィンドウです。スレッド ビューを変更すると、レポートは自動的に更新します。更新プログラムが大量のトレース、レポート ウィンドウ利用できません。各レポートには 2 つのフィルターの調整が: ノイズが減少し、[マイ コードのみ]。少し時間がかかったが、アウトのコール ツリー エントリをフィルター処理するには、ノイズリダクションを使用します。フィルターの既定値は 2% ですが、0% から 99% に調整します。コール ツリーは、コードのみを表示するには、選択、 [マイ コードのみ] チェック ボックスします。すべてのコール ツリーを表示するには、それをオフにします。

Dd627193.collapse_all(ja-jp,VS.110).gifプロファイル レポート

このタブは、作業中の凡例内のエントリに対応するレポートを示します。レポートを表示するには、エントリのいずれかを選択します。

Dd627193.collapse_all(ja-jp,VS.110).gif現在のスタック

このタブはスレッド タイムライン グラフのセグメントをコール スタックの選択した点を示します。呼び出し履歴は、プログラムに関連付けられている活動のみを表示するにはトリムされます。

Dd627193.collapse_all(ja-jp,VS.110).gifブロック解除スタック

どのようなコードの行には、選択したスレッドは、スレッドをブロックされないを参照してくださいして、 Unblocking スタックタブ。

Dd627193.collapse_all(ja-jp,VS.110).gif実行

実行レポートで実行、アプリケーション時間の内訳を示しています。

行の実行時間のかかるコードを検索するには、コール ツリーを展開し、コール ツリー エントリの [ショートカット] メニューを選択し、 ソースの表示 または の呼び出しサイトを表示するソースを表示実行されたコード行を検索します。呼び出しサイトの表示 、実行されたコード行と呼ばれるコードの行を検索します。のみ 1 つの呼び出しサイトが存在する場合は、コードの行が強調表示されます。複数の呼び出しサイトがある場合が表示され、[選択されたダイアログ ボックスで目的を選択することができます、 ソースに移動呼び出しのサイト コードを強調表示するボタン。多くの場合はインスタンスでは、最も、最も多くの時間、またはその両方を持つ呼び出しサイトを検索するときに便利。詳細については、「実行プロファイル レポート」を参照してください。

Dd627193.collapse_all(ja-jp,VS.110).gif同期

同期レポートには、同期ブロックの原因となった呼び出しが表示されると共に、各呼び出し履歴のブロック時間の総計が表示されます。詳細については、「同期時間」を参照してください。

Dd627193.collapse_all(ja-jp,VS.110).gif入出力

I/O レポートには、I/O ブロックの原因となった呼び出しが表示されると共に、各呼び出し履歴のブロック時間の総計が表示されます。詳細については、「I/O 時間 (スレッド ビュー)」を参照してください。

Dd627193.collapse_all(ja-jp,VS.110).gifSleep

スリープ レポートには、スリープ ブロックの原因となった呼び出しが表示されると共に、各呼び出し履歴のブロック時間の総計が表示されます。詳細については、「スリープ時間」を参照してください。

Dd627193.collapse_all(ja-jp,VS.110).gifメモリ管理

メモリ管理のレポートは、メモリ管理のブロック、ブロックの各呼び出しスタックの集計と共に発生場所、呼び出しを示します。過度なページングまたはガベージ コレクションに関する問題がある領域を特定するのにには、この情報を使用できます。詳細については、「メモリ管理時間」を参照してください。

Dd627193.collapse_all(ja-jp,VS.110).gif優先

プリエンプト ・ レポート ・ システム上のプロセスが現在のプロセスと、現在のプロセス内のスレッドを交換してください。 個別のスレッドを横取りインスタンスを示しています。プリエンプト操作のほとんどを担当するスレッド、プロセスを識別するためには、この情報を使用できます。詳細については、「優先時間」を参照してください。

Dd627193.collapse_all(ja-jp,VS.110).gifUI 処理

UI 処理レポートには、UI 処理ブロックの原因となった呼び出しが表示されると共に、各呼び出し履歴のブロック時間の総計が表示されます。詳細については、「UI 処理時間」を参照してください。

Dd627193.collapse_all(ja-jp,VS.110).gifスレッド別の概要

このタブの各スレッドは、実行にかかった、ブロック、I/O やその他の状態を色分け列表示合計時間を示します。棒の最下部にはラベルが表示されます。タイムライン グラフのズーム レベルを調整すると、このタブが自動的に更新されます。いくつかのズーム レベルでは、いくつかのスレッドが表示されないことがあります。この現象が発生すると、楕円が右側に表示されます。目的のスレッドが表示されない場合は、他のスレッドを非表示にすることができます。詳細については、「スレッド別の概要レポート」を参照してください。

Dd627193.collapse_all(ja-jp,VS.110).gifディスク操作

このタブがどのプロセスを示しています、(ロードされた Dll など) をそのまま、ファイル バイト数が読み取られた、現在のプロセス、およびその他の情報の代わりにディスク I/O スレッドが含まれています。このレポートを使用すると I/O バインドに特にプロセスとみなされる場合、ファイルの実行中に、アクセスにかかる時間を評価するのにことができます。詳細については、「ディスク操作レポート (スレッド ビュー)」を参照してください。

参照

概念

同時実行ビジュアライザー