インテル® VTune™ プロファイラー・ユーザーガイド
ユーザーとシステム関数向けのコールスタックを表示するためインテル® VTune™ プロファイラーのビューを管理し、パフォーマンス・メトリックでそれぞれのスタックの影響を予測します。
インテル® VTune™ プロファイラーは、[コールスタック] ペイン、[ボトムアップ] ペイン、[トップダウン・ツリー] および [呼び出し元/呼び出し先] ペインでコールスタック情報を表示します。次のオプションを使用して、さまざまなビューでスタックを管理または解析できます。
/
[スタックレイアウト] ツールバーボタンを使用して、グリッド内のスタック表示 ([ボトムアップ] または [トップダウン・ツリー] ペイン) を管理します。
ボタンは、選択されたレイアウトに応じて動的に変化します。例えば、ビューでチェーンレイアウトが選択されると、ボタンはツリーレイアウトを選択するオプションを表示するように変化します。
通常、ボトムアップ・ビューにはチェーンレイアウト が適しています。
トップダウン・ビューには、ツリーレイアウト が自然です。
[トップダウン・ツリー] ペインのチェーンレイアウトは、分岐がなく、データカラムのすべての値が親と子で同じ場合にのみ利用できます。
選択したプログラム単位のスタックを表示し、スタックの関連を予測し、最もパフォーマンスが重要なスタックを特定するには、[コールスタック] ペインで 矢印をクリックします。
複数のスタックやプログラム単位の情報を表示するには、[ボトムアップ] または [トップダウン・ツリー] ペインで、Ctrl キーを押しながらスタックまたはプログラム単位を選択します。[コールスタック] ペインには、選択したスタックのうち最も関連性の高いスタックが表示されます。関連性は、選択したすべてのスタックの合計から計算されます。選択に関連するすべてのスタックがタブに追加され、 矢印を使用して移動できます。
[ボトムアップ] ペインの各スタックは、[コールスタック] ペインで提供されるコールスタックに対応しますが、[ボトムアップ] グリッドのツリー分岐の数は必ずしも [コールスタック] ペインのスタック数と同じにはなりません。[ボトムアップ] ペインのスタックは関数ベースで、[コールスタック] ペインのスタックは行番号ベースであるため、これらのビューのスタック数は異なることがあります。
例えば、次のスクリーンショットでは、[ボトムアップ] ペインには grid_intersect 関数の 2 つのスタックが示されていますが、[コールスタック] ペインには 17 個のスタックが表示されています。
ナビゲーション・ボタンを使用して、[コールスタック] ペインのスタックを移動すると、grid_intersect 関数が intersect_objects 関数から呼び出されていることが分ります (つまり、この関数には複数の呼び出しサイトがあります)。[コールスタック] ペインによると、最初のスタックの intersect_objects 関数は、shader 関数 (行 139) から呼び出されました。2 番目のスタックでは、trace 関数 (行 76) から呼び出されています。完全なスタック情報を示す [コールスタック] ペインでは、これら 2 つのスタックは異なります。[ボトムアップ] ビューでは、これらのスタックは同じ intersect_objects 関数に関連します。[ボトムアップ] ビューは、呼び出しシーケンスが同一であるスタック情報をマージして、それらを 1 つのスタックとして示します。[ボトムアップ] ビューでは、異なる呼び出しサイトからのスタックも 1 つに集約され、それらの CPU 時間は合計されます。これは、上位の呼び出し関数によるスタックの違いに注目する場合に役立ちます。 |
[コールスタック] ペインのドロップダウン・メニューを使用して、選択したプログラム単位のスタックタイプを選択します。
例えば、スレッド解析結果で同期オブジェクトが選択されたら、そのオブジェクトが作成、シグナル通知、または待機されたスタックを表示するように [コールスタック] ペインを設定できます。
グリッドと [コールスタック] ペインのスタックにシステム関数を表示するかどうかを制御するには、フィルター・ツールバーにある [コールスタック・モード] メニューを使用します。
[コールスタック] ペインの行をダブルクリックするか、ハイパーリンクの関数名をクリックすると、[ソース/アセンブリー] ウィンドウが開き、選択した行の項目を生成するコードが表示されます。
例えば、スレッド化解析の結果で、待機時間 (同期オブジェクト生成) スタックの一番上の項目をダブルクリックすると、関連するソースファイルが開き、対応する同期オブジェクトを生成したソース行が表示されます。
ソースが見つからない場合手動で探します。ソースを検出できない場合、プログラム単位の [アセンブリー] ペインが開きます。
システム関数を選択した場合、ソースファイルがあれば [ソース/アセンブリー] ウィンドウにシステム関数のソースが開きます。ソースがない場合は、システム関数を含むバイナリーのアセンブリーが表示されます。