Oracle® Developer Studio 12.5: パフォーマンスアナライザ

印刷ビューの終了

更新: 2016 年 6 月
 
 

パフォーマンスアナライザのビュー

    実験を開いたときにナビゲーションバーにデータビューが表示されるかどうかは、次の要因によって決定されます。

  • その実験内のデータの種類によって、どのようなデータビューが表示されるかが決定されます。たとえば、実験に OpenMP データが含まれている場合は、そのデータを表示するために OpenMP のビューが自動的に開かれます。

  • パフォーマンスアナライザの起動時に読み取られた構成ファイルによって、表示するデフォルトのデータビューが指定されます。

「ビュー」メニューまたはボタンを使用して「設定」ダイアログボックス (「ビュー」設定を参照) を開くことにより、現在のパフォーマンスアナライザセッションに表示するビューを選択できます。

ほとんどのビューには、そのビュー内の項目を右クリックすると開くコンテキストメニューがあります。コンテキストメニューを使用すると、フィルタを追加したり、そのデータビューに関連したその他のアクティビティーを実行したりできます。あるビューでフィルタを適用すると、フィルタできるすべてのビュー内のデータがフィルタされます。

「ようこそ」ページ

どの実験を開くかをコマンド行で指定せずにパフォーマンスアナライザを起動した場合、表示される最初のページは「ようこそ」ページです。「ようこそ」ページでは、アプリケーションのプロファイリングを開始したり、最近の実験を表示したり、実験を比較したり、ドキュメントを表示したりすることが容易になります。実験を開いたあとも引き続き、パフォーマンスアナライザセッション中にナビゲーションパネルからいつでも「ようこそ」ページを選択できます。

次の図は、「ようこそ」ページを示しています。

図 3  パフォーマンスアナライザの「ようこそ」ページ

image:パフォーマンスアナライザの「ようこそ」ページ

「概要」画面

実験を開くと、パフォーマンスアナライザには「概要」画面が表示されます。この画面には、ロードされた実験のパフォーマンスメトリックが表示されるため、メトリックのどの部分が高いかをすばやく把握できます。「概要」を使用して、ほかのビューで調べるメトリックを選択します。「概要」に関する詳細を表示するには、「概要」の表示中に F1 キーを押してください。

次の図は、「概要」が表示された「パフォーマンスアナライザ」ウィンドウを示しています。

図 4  パフォーマンスアナライザの「概要」画面

image:パフォーマンスアナライザの「概要」画面

メトリックを選択すると、このウィンドウの下部にある「メトリックのプレビュー」パネルに、このメトリックがデータビューにどのように表示されるかが示されます。選択ボタンを使用するか、関心のあるメトリックを具体的に選択することによって、データビューに表示するメトリックを指定できます。詳細は、ヘルプで「概要」画面のトピックを参照してください。

「関数」ビュー

「関数」ビューには、実験で収集されたデータから派生した、ターゲットプログラムの関数とそのメトリックのリストが表示されます。メトリックスは、排他的メトリックスまたは包括的メトリックスのいずれかになります。 排他的メトリックは、その関数自体のみによる使用率を表します。包括的メトリックスは、関数とその関数が呼び出したすべての関数による使用を表します。メトリックの詳細は、関数レベルのメトリックス: 排他的、包括的、属性を参照してください。

収集されたデータの種類ごとに使用可能なメトリックのリストは、collect(1) のマニュアルページとヘルプ、およびパフォーマンスデータに記載されています。

時間メトリックは秒で表示され、ミリ秒の精度で提供されます。 パーセンテージは、0.01% の精度で表示されます。メトリック値がちょうどゼロの場合、その時間およびパーセンテージは「0」として表示されます。値がちょうどゼロではないが精度より小さい場合、値は「0.000」として、パーセンテージは「0.00」として表示されます。丸めのため、百分率は合計が正確に 100 % にならない場合もあります。カウントメトリックは整数カウントとして示されます。

最初に表示されるメトリックは、収集されたデータに基づいています。複数の種類のデータが収集された場合、各種類のデフォルトのメトリックが表示されます。どのメトリックを表示するかを「概要」ページで選択できます。詳細は、「概要」画面を参照してください。

関数を検索するには、ツールバーの「検索」ツールを使用します。

関数のソースコードを表示するには、ソースコード内の適切な行でそれをダブルクリックして「ソース」ビューを開きます。

1 つの関数を選択するには、その関数をクリックして、その関数に関する詳細情報を右側にある「選択の詳細」ウィンドウに表示します。

ビュー内に連続して表示されている複数の関数を選択するには、グループの最初の関数を選択したあと、Shift キーを押しながらグループの最後の関数をクリックします。

ビュー内に連続して表示されていない複数の関数を選択するには、グループの最初の関数を選択したあと、Ctrl キーを押しながら各関数をクリックして追加の関数を選択します。

「関数」ビュー内で右クリックしてコンテキストメニューを開き、選択した関数の定義済みフィルタを選択することもできます。フィルタリングの詳細は、パフォーマンスアナライザのヘルプを参照してください。

「タイムライン」ビュー

「タイムライン」ビューには、時間の関数として記録されたイベントおよび標本ポイントのチャートが表示されます。データは、水平バーに表示されます。デフォルトでは、各実験について、CPU 使用率標本のバーが上部に 1 つと、各スレッドに対応する一連のプロファイリングデータのバーが表示されます。各スレッドに対して表示されるデータは、アプリケーションをプロファイルしたときに収集したデータによって決まります。

「タイムライン」ビューを使用すると、プログラムで次のことを実行できます。

  • プログラムのアクティビティーの段階を識別する

  • カスタム配色を使用して関数およびメソッドを強調表示する

  • 時間軸および垂直軸の方向にズームインして詳細を確認する

  • 「選択の詳細」パネルで詳細なイベント情報を確認する

  • 大域データを時間範囲、スレッド、および CPU によってフィルタリングする

次のデータバーが表示されることがあります。

CPU 使用率標本

実験に標本データが含まれている場合、上部に表示されるバーは「CPU 使用率標本」です。標本ポイントのデータは、そのポイントと前のポイントの間で費やされた CPU 時間を表します。標本データには、Oracle Solaris システムで使用可能なマイクロステート情報が含まれています。

Oracle Solaris オペレーティングシステムは、マイクロステートアカウンティングというテクノロジを使用して、イベントごとに実行状態に関する統計を収集します。パフォーマンスアナライザによって示されるイベントの時間メトリックは、各状態で費やされた相対的な時間に対応します。CPU 使用率標本には、実験内のすべてのスレッドの時間メトリックのサマリーが表示されます。標本をクリックすると、その標本の時間メトリックが、右側の「選択の詳細」パネルに表示されます。イベント状態を表示することによって、タイムライン内の個々のイベントの時間メトリックを表示できます。

プロファイリングおよびトレースデータバー

クロックプロファイリング、ハードウェアカウンタプロファイリング、およびトレースデータのデータバーには、記録された各イベントのイベントマーカーが表示されます。イベントマーカーは、イベントとともに記録された呼び出しスタックの色分けされた表示で構成されます。

イベントマーカーをクリックすると、そのイベントに関する情報が「選択の詳細」パネルに表示され、呼び出しスタックの関数が「呼び出しスタック」パネルに表示されます。「呼び出しスタック」パネルの関数をダブルクリックすると、「ソース」ビューに移動し、その関数のソースがメトリックとともに表示されます。

データの種類によっては、イベントが重なって見えない場合があります。まったく同じ位置に複数のイベントが表示される場合は、常に 1 つだけが描画されます。1 - 2 ピクセル以内に複数のイベントがある場合は、すべてが描画されますが、見た目には判別できない可能性があります。どちらの場合も、イベントの下にイベントの境界を示す灰色の小さいティックマークが表示されます。イベントはズームインして表示できます。左または右矢印キーを使用してイベントの選択をいずれかの方向に移動すると、表示されていないイベントが表示されます。イベント密度を表示することによって、イベントに関する詳細情報を表示できます。

ヒープサイズ

「ヒープサイズ」データは、heaptrace 収集オプションが有効になっている場合にのみ使用できます。「ヒープサイズ」は 2 つのグラフで構成されます。「正味の割り当てバイト数」は、割り当て済みバイト数から解放済みバイト数を引いた値を追跡します。「正味のリークバイト数」は、解放されることのない割り当て済みバイト数の累積を追跡します。

イベント状態

イベント状態は、さまざまな状態で費やされたアプリケーション時間の分布を時間の関数として表示する棒グラフで示されます。

Oracle Solaris に記録されたクロックプロファイリングデータの場合は、イベント状態チャートに Oracle Solaris のマイクロステートが表示されます。イベント状態のカラーコードは、CPU 使用率標本バーの場合と同じです。

イベント状態はデフォルトで表示されます。これらは、「タイムライン」ツールバーの「タイムライン設定」ボタンをクリックし、「設定」ダイアログボックスの「タイムライン」領域で「イベント状態」を選択解除することによって非表示にできます。

イベント密度

イベント密度は、イベントの頻度を時間の関数として表示する青い線で示されます。

イベント密度を表示するには、「タイムライン」ツールバーの「タイムライン設定」ボタン「タイムライン設定」アイコンをクリックし、「設定」ダイアログボックスの「タイムライン」領域で「イベント密度」を選択します。

イベント密度は、各データの種類のタイムラインデータバーの真下に表示されます。イベント密度には、横軸の各タイムスライスで発生したイベントのカウントが表示されます。折れ線チャートの縦軸のスケールは、0 からその特定のデータバーの表示可能な時間範囲内の最大イベントカウントまでです。

表示可能なタイムスライスのそれぞれに多くのイベントが含まれるようにタイムラインのズームを設定すると、イベント密度を使用してイベントの頻度が高い期間を特定できます。このような期間を調べるには、ズームインします。次に、右クリックしてコンテキストフィルタを選択し、表示可能な時間範囲のデータのみが含まれるように設定してから、パフォーマンスアナライザのほかのデータビューを使用してその期間のデータを分析します。

「ソース」ビュー

ソースコードが使用可能な場合、「ソース」ビューには、選択した関数のソースコードを含むファイルが、各ソース行の左側の列にパフォーマンスメトリックの注釈付きで表示されます。

高いメトリックスは黄色で表示され、リソース使用状況のホット領域であるソース行が示されます。また、オレンジ色のナビゲーションマーカーが、各ホットソース行の右側にあるスクロールバーの隣のマージン内に表示されます。ホットしきい値を下回るゼロ以外のメトリックは強調表示されませんが、灰色のナビゲーションマーカーが表示されます。

メトリックス付きのソース行にすばやく移動するには、右側マージン内の黄色のマーカーをクリックしてメトリックス付きの行にジャンプします。メトリックを含む次の行にジャンプするには、そのメトリック自体を右クリックし、「次のホットライン」や「次のゼロ以外のメトリック行」などのオプションを選択します。

「設定」ダイアログボックスの「ソース/逆アセンブリ」タブで、メトリックを強調表示するためのしきい値を設定できます。

「ソース」ビューには、ソースファイルとそれに対応するオブジェクトファイルへのフルパスが表示され、ソースコードの列見出しにはロードオブジェクトの名前が表示されます。複数のオブジェクトファイルをコンパイルするために同じソースファイルが使用されているまれなケースでは、「ソース」ビューには、選択された関数を含むオブジェクトファイルのパフォーマンスデータが表示されます。

パフォーマンスアナライザがソースファイルを見つけることができない場合は、「ソース」ビューの「解決」ボタンをクリックしてソースファイルを参照できます。あるいは、ソースへのパスを入力または参照すると、ソースコードが新しい場所から表示されます。オプションで、「実験内部のソースファイルをアーカイブ」を選択できます。これにより、ソースファイルが実験内にコピーされます。このボタンの詳細については、「ヘルプ」メニューで「ソースファイルの解決」のトピックを参照してください。

実験のソースコードを検索するために使用されるプロセスについては、ツールがソースコードを見つけるしくみを参照してください。

「関数」ビューで関数をダブルクリックして「ソース」ビューを開いた場合、表示されるソースファイルはその関数のデフォルトソースコンテキストです。関数のデフォルトソースコンテキストは、その関数の最初の命令 (C コードの場合は、開く中括弧) を含むファイルです。注釈付きソースファイルでは、最初の命令の直後にその関数のインデックス行が追加されます。ソースウィンドウには、インデックス行が赤いイタリック体のテキストとして山括弧内に次の形式で表示されます。

<Function: f_name>

関数は、代替のソースコンテキストを持つ場合もあります。代替のソースコンテキストは、その関数に帰属する命令が入った別のファイルです。そのような命令は、インクルードファイルに入っているか、選択された関数内にインライン化された別の関数に入っている命令です。 いずれかの代替ソースコンテキストが存在する場合、デフォルトソースコンテキストの先頭には、代替ソースコンテキストが置かれている場所を示す拡張インデックス行のリストが含まれます。

<Function: f, instructions from source file src.h>

別のソースコンテキストを参照するインデックス行をダブルクリックすると、そのソースコンテキストを含むファイルが、インデックスで示す関数に関連付けられた位置から開かれます。

移動に役立つよう、代替ソースコンテキストも、そのデフォルトソースコンテキストおよびほかの代替ソースコンテキスト内で定義された関数を逆に参照するインデックス行のリストで始まります。

ソースコードは、表示のために選択されているすべてのコンパイラ解説とともにインタリーブされます。表示される解説のクラスは、「設定」ダイアログボックスで設定できます。デフォルトのクラスは、.er.rc デフォルト値ファイルで設定できます。

「ソース」ビューに表示されるメトリックは、変更または再構成できます。詳細は、「ヘルプ」メニューを参照してください。

「ソース」ビューの内容の詳細は、パフォーマンスアナライザの「ソース」ビューのレイアウトを参照してください。

「呼び出しツリー」ビュー

「呼び出しツリー」ビューには、プログラムの動的な呼び出しグラフがツリーとして表示されます。各関数呼び出しは、展開したり縮小したりできるノードとして表示されます。展開された関数ノードには、その関数によって行われる関数呼び出しがすべて表示され、加えて、それらの関数呼び出しのパフォーマンスメトリックスも表示されます。

ノードを選択すると、「選択の詳細」ウィンドウに、その関数呼び出しのメトリックとその呼び出し先が表示されます。属性付き測定基準に対して示されるパーセンテージは、プログラムの全測定基準のパーセンテージです。このツリーのデフォルトのルートは、<Total> で、これは関数ではありませんが、プログラムのすべての関数のパフォーマンスメトリックの 100% を表しています。

「呼び出しツリー」ビューは、特定の呼び出しトレースの詳細を表示し、どのトレースがパフォーマンスにいちばん大きく影響しているかを解析するために使用します。高いメトリック値を探しながら、プログラムの構造内を移動できます。


ヒント  -  もっとも多く時間を消費している分岐を簡単に見つけるには、任意のノードを右クリックし、「もっともホットな分岐を展開」を選択します。

選択された分岐または選択された関数の定義済みフィルタを設定するには、「呼び出しツリー」ビュー内で右クリックしてコンテキストメニューを開きます。この方法でフィルタリングすることによって、対象外の領域に対応する、すべてのアナライザビュー内のデータを画面から除外できます。

「呼び出し元-呼び出し先」ビュー

「呼び出し元-呼び出し先」ビューには、コード内の関数間の呼び出し関係がパフォーマンスメトリックとともに表示されます。「呼び出し元-呼び出し先」ビューを使用すると、呼び出しスタックフラグメントを 1 回に呼び出し 1 つずつ構築することによって、コード分岐がないかメトリックを詳細に検査できます。

このビューには、上部に「呼び出し元」パネル、中央に「スタックフラグメント」パネル、下部に「呼び出し先」パネルの 3 つの個別のパネルが表示されます。「呼び出し元-呼び出し先」ビューをはじめて開いたとき、「スタックフラグメント」パネル内の関数は、「関数」ビューや「ソース」ビューなどの、ほかのアナライザビューのいずれかで選択した関数になります。「呼び出し元」パネルには、「スタックフラグメント」パネル上の関数を呼び出す関数が一覧表示され、「呼び出し先」パネルには、「スタックフラグメント」パネル上の関数によって呼び出される関数が一覧表示されます。

呼び出しスタックに呼び出し元または呼び出し先を 1 回に呼び出し 1 つずつ追加することによって、1 つの関数を中心にして呼び出しスタックフラグメントを構築できます。

スタックフラグメントに呼び出しを追加するには、「呼び出し元」ペインまたは「呼び出し先」ペイン内の関数をダブルクリックするか、または関数を選択して「追加」ボタンをクリックします。

関数呼び出しを削除するには、呼び出しスタックフラグメントの上部または下部にある関数をダブルクリックするか、あるいは上部または下部の関数を選択して「削除」をクリックします。


ヒント  -  コンテキストメニューから「追加」や「削除」のタスクを実行するには、関数を右クリックし、適切なコマンドを選択します。

関数を呼び出しスタックフラグメントの先頭 (上部)、中心、または末尾 (下部) として設定するには、関数を選択して「先頭を設定」、「中心を設定」、または「末尾を設定」をクリックします。この新しい順序により、現在呼び出しスタックフラグメント内にあるほかの関数が「呼び出し元」領域または「呼び出し先」領域内の、スタックフラグメント内の選択された関数の新しい場所を基準とした適切な場所に移動します。

呼び出しスタックフラグメントへの変更履歴をたどるには、「スタックフラグメント」パネルの上にある「戻る」ボタンと「進む」ボタンを使用します。

スタックフラグメント内の関数を追加したり削除したりすると、メトリックスがフラグメント全体に対して計算され、そのフラグメント内の最後の関数の隣に表示されます。

「呼び出し元-呼び出し先」ビューの任意のパネルで関数を選択してから右クリックしてコンテキストメニューを開くと、フィルタを選択できます。データは、このビューおよびアナライザのすべてのデータビューでの選択に従ってフィルタされます。コンテキストフィルタの使用方法の詳細は、オンラインヘルプを参照してください。

    「呼び出し元-呼び出し先」ビューには、属性メトリックが表示されます。

  • 「スタックフラグメント」パネル内の呼び出しスタックフラグメントの場合、属性メトリックは、その呼び出しスタックフラグメントの排他的メトリックを表します。

  • 呼び出し先の場合、属性メトリックは、呼び出し先のメトリックのうち、呼び出しスタックフラグメントからの呼び出しに起因する部分を表します。呼び出し先と呼び出しスタックフラグメントの属性メトリックスの合計は、呼び出しスタックフラグメントのメトリックスにもなるはずです。

  • 呼び出し元の場合、属性メトリックスは、呼び出しスタックフラグメントのメトリックスのうち、呼び出し元からの呼び出しに起因する部分を示します。すべての呼び出し元の属性メトリックスの合計が、呼び出しスタックフラグメントのメトリックにもなるはずです。

メトリックスについての詳細は、関数レベルのメトリックス: 排他的、包括的、属性を参照してください。

インデックスオブジェクトビュー

各インデックスオブジェクトビューには、「スレッド」、「CPU」、「秒」などの、さまざまなインデックスオブジェクトに帰属するデータのメトリック値が表示されます。インデックスオブジェクトは階層構造ではないため、包括的メトリックと排他的メトリックは表示されません。各種類の単一のメトリックだけが表示されます。

「スレッド」、「CPU」、「標本」、「秒」、「プロセス」、「実験 ID」などの、いくつかのインデックスオブジェクトビューが事前に定義されています。これらのビューについては、下で個別に説明します。

カスタムインデックスオブジェクトを定義することもできます。「設定」ダイアログボックスの「カスタムビューを追加」ボタンをクリックし、「インデックスオブジェクトを追加」ダイアログボックスでオブジェクトの値を設定します。

「スレッド」ビュー

「スレッド」ビューには、スレッドとそのメトリックのリストが表示されます。スレッドはプロセスとスレッドのペアで表され、デフォルトでは合計 CPU 時間を示します。読み込まれた実験内にほかのメトリックスが存在する場合は、そのメトリックスもデフォルトで表示される可能性があります。「スレッド」ビューはデフォルトでは表示されません。これは「ビュー」メニューから選択できます。

「フィルタ」ボタンを使用すると、このビューやパフォーマンスアナライザのビューに表示されるデータをフィルタできます。

「CPU」ビュー

「CPU」ビューには、ターゲットのアプリケーションの実行を処理した CPU とそのメトリックのリストが表示されます。CPU は CPU 番号で表され、デフォルトでは合計 CPU 時間を示します。読み込まれた実験内にほかのメトリックスが存在する場合は、そのメトリックスもデフォルトで表示される可能性があります。「CPU」ビューが表示されていない場合は、「ビュー」メニューからこのビューを選択できます。

「フィルタ」ボタンを使用すると、このビューやパフォーマンスアナライザのビューに表示されるデータをフィルタできます。

「標本」ビュー

「標本」ビューには、標本ポイントのリストがそれらのメトリックとともに表示されます。メトリックには、ロードされた実験の各標本ポイントで記録されたマイクロステートが反映されます。標本は標本番号で表され、デフォルトでは CPU 時間合計が表示されます。「概要」パネルまたは「設定」ダイアログボックスでその他のメトリックを選択した場合は、それらが表示されることもあります。「標本」ビューが表示されていない場合は、「ビュー」メニューからこのビューを選択できます。

「フィルタ」ボタンを使用すると、このビューやパフォーマンスアナライザのビューに表示されるデータをフィルタできます。

標本ポイントの詳細については、パフォーマンスアナライザヘルプの「標本ポイント」のトピックを参照してください。

「秒」ビュー

「秒」ビューには、実験で取り込まれたプログラム実行の各秒が、その秒内に収集されたメトリックとともに表示されます。「秒」ビューは、0 から始まって毎秒発生し、間隔を変更できない定期的な標本を表示する点で、「標本」ビューと異なります。「秒」ビューには、デフォルトでは、実行の秒数が合計 CPU 時間とともに一覧表示されます。読み込まれた実験内にほかのメトリックスが存在する場合は、そのメトリックスも表示される可能性があります。「概要」や「設定」ダイアログでほかのメトリックを選択した場合は、それらのメトリックも表示されます。

「フィルタ」ボタンを使用すると、このビューやパフォーマンスアナライザのビューに表示されるデータをフィルタできます。

「プロセス」ビュー

「プロセス」ビューには、アプリケーションによって作成されたプロセスのリストが、それらのメトリックとともに表示されます。プロセスはプロセス ID (PID) 番号で表され、デフォルトでは合計 CPU 時間メトリックを示します。読み込まれた実験内にほかのメトリックスが存在する場合は、そのメトリックスも表示される可能性があります。「概要」や「設定」ダイアログでほかのメトリックを選択した場合は、それらのメトリックも表示されます。

「プロセス」ビューを使用すると、もっとも多くのリソースを使用したプロセスを検索できます。切り離し、ほかのビューを使用して調査したい特定の一連のプロセスがある場合は、コンテキストメニューで使用可能なフィルタを使用して、ほかのプロセスをフィルタで除外できます。

「実験 ID」ビュー

「実験 ID」ビューには、アプリケーションで作成されたプロセスとそのメトリックのリストが表示されます。実験 ID はプロセス ID (PID) 番号で表され、デフォルトでは合計 CPU 時間のメトリックを示します。読み込まれた実験内にほかのメトリックスが存在する場合は、そのメトリックスも表示される可能性があります。「概要」や「設定」ダイアログでほかのメトリックを選択した場合は、それらのメトリックも表示されます。これらのメトリックス値には、読み込まれた実験内の各標本ポイントで記録されたマイクロステートが反映されます。これらの値には、ロードされたそれぞれの実験で記録されたメトリックスの値またはパーセンテージが反映されます。

「メモリーオブジェクト」ビュー

各「メモリーオブジェクト」ビューには、ページなどのさまざまなメモリーオブジェクトに帰属するデータ領域メトリックのメトリック値が表示されます。ロードされた 1 つ以上の実験にデータ領域プロファイルが含まれている場合は、「設定」ダイアログボックスの「ビュー」タブで、ビューを表示するメモリーオブジェクトを選択できます。任意の数の「メモリーオブジェクト」ビューを表示できます。

さまざまな「メモリーオブジェクト」ビューが事前に定義されています。メモリーオブジェクトは、仮想ページおよび物理ページに対して、Vpage_8K、Ppage_8K、Vpage_64K などの名前で事前に定義されています。カスタムメモリーオブジェクトを定義することもできます。「設定」ダイアログボックスの「カスタムオブジェクトを追加」ボタンをクリックし、「メモリーオブジェクトを追加」ダイアログボックスでオブジェクトの値を設定します。

「データレイアウト」ビュー

「データレイアウト」ビューには、すべてのプログラムデータオブジェクトの注釈付きデータオブジェクトレイアウトがデータ派生メトリックデータとともに表示されます。このビューは、ハードウェアカウンタオーバーフロープロファイリングの拡張であるデータ領域プロファイリングを含む実験にのみ適用できます。詳細は、データ領域プロファイリングとメモリー領域プロファイリングを参照してください。

各レイアウトは、構造全体のデータソートメトリック値によってソートされた状態で、ビュー内に表示されます。このビューには、集合体データオブジェクトごとに、そのオブジェクトに帰属する合計メトリックが表示され、そのあとに、そのデータオブジェクトのすべての要素がオフセット順に表示されます。各要素には、そのメトリックスと、32 バイトブロックでそのサイズと位置を示す指示子があります。

「データレイアウト」ビューを表示するには、「設定」ダイアログボックス (「ビュー」設定を参照) の「ビュー」タブでこのビューを選択します。「データオブジェクト」ビューと同様に、「データレイアウト」ビューを表示可能にできるのは、ロードされた実験の 1 つ以上にデータ領域プロファイルが含まれている場合だけです。

単一のデータオブジェクトを選択するには、そのオブジェクトをクリックします。

ビュー内に連続して表示されている複数のオブジェクトを選択するには、最初のオブジェクトを選択したあと、Shift キーを押しながら最後のオブジェクトをクリックします。

ビュー内に表示された隣接していない複数のオブジェクトを選択するには、最初のオブジェクトを選択したあと、Ctrl キーを押しながら追加するオブジェクトを個々にクリックして選択します。

「データオブジェクト」ビュー

「データオブジェクト」ビューには、データオブジェクトのリストとそのメトリックが表示されます。このビューは、ハードウェアカウンタオーバーフロープロファイリングの拡張であるデータ領域プロファイリングを含む実験にのみ適用されます。詳細は、データ領域プロファイリングとメモリー領域プロファイリングを参照してください。

このビューを表示するには、「設定」ダイアログボックス (「ビュー」設定を参照) の「ビュー」タブでこのビューを選択します。「データオブジェクト」ビューを表示可能にできるのは、ロードされた実験の 1 つ以上にデータ領域プロファイルが含まれている場合だけです。

このビューには、プログラム内のさまざまなデータ構造や変数に対するハードウェアカウンタメモリー操作のメトリックが表示されます。

単一のデータオブジェクトを選択するには、そのオブジェクトをクリックします。

ビュー内に隣接して表示された複数のオブジェクトを選択するには、最初のオブジェクトを選択したあと、Shift キーを押しながら最後のオブジェクトをクリックします。

ビュー内に表示された隣接していない複数のオブジェクトを選択するには、最初のオブジェクトを選択したあと、Ctrl キーを押しながら追加するオブジェクトを個々にクリックして選択します。

「I/O」ビュー

「I/O」ビューを使用して、アプリケーション内の I/O パターンを識別し、アプリケーションのパフォーマンスに影響する I/O のボトルネックを特定します。「I/O」ビューは、アプリケーションの I/O トレースデータをプロファイルした場合に使用できます。

I/O データは、次のいずれかのオプションに従って集約できます。

ファイル名

プログラムがアクセスするファイルの表を表示します。各行が、1 つのファイルを表します。1 つの行のメトリックは、ファイルのすべてのアクセスに関して集計された I/O 統計情報を表します。

ファイル記述子

プログラムがアクセスするファイルのファイル記述子の表を表示します。各行が、開かれているファイルの単一インスタンスを表します。同じファイルが複数回開かれている場合は、表に同じファイルの行が複数含まれています。1 つの行のメトリックは、開いているファイルの単一インスタンスに適用されます。

呼び出しスタック

任意のスタック番号とともに一覧表示された呼び出しスタックの表を表示します。スタックをクリックすると、「呼び出しスタック」パネルにそのスタック内の関数呼び出しが表示されます。メトリックは選択した呼び出しスタックに適用されます。

「ヒープ」ビュー

「ヒープ」ビューには、メモリーリークの可能性を示すメモリー割り当てメトリックを含む呼び出しスタックのリストが表示されます。呼び出しスタックは、任意のスタック番号で識別されます。ピークメモリー使用量を示すために 1 つの呼び出しスタックにラベルが付けられます。

呼び出しスタックをクリックして、メトリックの詳細を「選択の詳細」パネルに表示し、呼び出しスタックの関数呼び出しを「呼び出しスタック」パネルに表示します。「呼び出しスタック」パネルで関数をダブルクリックして、ソースを表示できます。選択した呼び出しスタックをフィルタで除外するか、選択していない呼び出しスタックをフィルタで除外するように、フィルタを設定することもできます。ロードされた実験の 1 つ以上にヒープトレースデータが含まれる場合にのみ、「設定」ダイアログボックスの「ビュー」タブで「ヒープ」ビューを選択できます。「ヒープ」ビューの下部のパネルには、完全なターゲットアプリケーションを表す <Total> 擬似関数の詳細データが表示されます。

「データサイズ」ビュー

「データサイズ」ビューは、バイト数などのサイズ要素を持つデータが含まれている実験について使用できます。ヒープトレース、I/O トレース、または MPI トレースを含む実験には「データサイズ」ビューがあります。

「データサイズ」ビューでは、データをいくつかのデータサイズ範囲に整理し、ある範囲に分類されるデータを持つイベントのメトリックを計算します。サイズ要素を持たないデータは、データサイズ 0 に帰属します。

「データサイズ」ビューを使用して、データをフィルタ処理できます。たとえば、ヒープトレースデータを含む実験で、「リークバイト数」について高いメトリックを持つサイズ範囲の行を選択し、「選択した項目を含むイベントのみを含める」というフィルタを追加することができます。別のデータビューに移動すると、選択したサイズ範囲のメモリーリークが発生したイベントのみが表示されるようにデータがフィルタ処理されます。

「経過時間」ビュー

「経過時間」ビューは、期間を持つデータが含まれている実験について使用できます。I/O トレースデータ、MPI トレース、ヒープトレース、および同期トレースデータを含む実験には「経過時間」ビューがあります。

「経過時間」ビューでは、データをいくつかの経過時間範囲に整理し、それぞれの経過時間範囲に分類されるデータを持つイベントのメトリックを計算します。I/O トレース、MPI トレース、および同期トレースについては関数呼び出しの経過時間が記録されます。ヒープトレースの場合、経過時間はメモリーの割り当てから解放までの時間です。経過時間要素を持たないデータは、経過時間 0 に帰属します。

「経過時間」ビューを使用して、データをフィルタ処理できます。たとえば、ヒープトレースデータを含む実験で、「割り当てバイト数」について高いメトリックを持つ経過時間範囲の行を選択し、「選択した項目を含むイベントのみを含める」というフィルタを追加することができます。別のデータビューに移動すると、選択した範囲に一致する経過時間を持つイベントのみが表示されるようにデータがフィルタ処理されるため、経過時間が予想よりも長いメモリー割り当てが見つかることがあります。

「OpenMP 並列領域」ビュー

「OpenMP 並列領域」ビューは、Oracle Developer Studio コンパイラでコンパイルされた OpenMP タスクを使用するプログラムに関して、OpenMP 3.0 コレクタで記録された実験にのみ適用されます。詳細は、OpenMP プロファイルに関する制限事項を参照してください。

このビューには、プログラムの実行中に発生したすべての並列領域が、同じプロファイリングデータから計算されたメトリック値とともに一覧表示されます。現在の並列領域に対しては、排他的メトリックスが計算されます。包括的メトリックスには、入れ子並列性が反映されます。これらは現在の並列領域と、その作成元である親の並列領域に起因します。この起因関係は、(すべての並列領域の外部での) プログラムの直列実行を表す最上位の暗黙的な OpenMP 並列領域まで再帰的に続きます。プログラムに入れ子の並列領域がない場合、排他的メトリックスと包括的メトリックスは同じ値を持ちます。

並列領域を含む関数が何回も呼び出された場合は、並列領域のすべてのインスタンスが集計され、対応するビュー内に 1 項目として表示されます。

このビューは、ナビゲーションに役立ちます。たとえば、OpenMP 待ち時間がもっとも大きい並列領域といった関心のある項目を選択し、そのソースを分析したり、選択項目に関連するデータのみを含むようにコンテキストフィルタを選択したりできます。そのあと、「関数」、「タイムライン」、「スレッド」などのほかのビューを使用して、これらのデータがほかのプログラムオブジェクトによってどのように表されるかを解析できます。

「OpenMP タスク」ビュー

「OpenMP タスク」ビューには、OpenMP タスクとそれぞれのメトリックの一覧が表示されます。このビュー内のオプションは、Oracle Developer Studio コンパイラでコンパイルされた OpenMP タスクを使用するプログラムについて、OpenMP 3.0 コレクタで記録された実験にのみ適用されます。詳細は、OpenMP プロファイルに関する制限事項を参照してください。

このビューには、プログラムの実行中に発生したタスクが、プロファイリングデータから計算されたメトリック値とともに一覧表示されます。排他的メトリックスは、現在のタスクのみに適用されます。包括的メトリックスは、OpenMP タスクのメトリックス、および、タスク生成時に構築された親子関係を持つ、子タスクのメトリックスを含みます。暗黙並列領域の OpenMP タスクは、プログラムの直列実行を表します。

タスクを含む関数が何回も呼び出された場合は、並列領域のすべてのインスタンスが集計され、対応するビュー内に 1 項目として表示されます。

このビューは、ナビゲーションに役立ちます。OpenMP 待ち時間が最大のタスクなどの関心のある項目を選択し、「ソース」ビューをクリックすることによってそのソースを解析できます。また、右クリックしてコンテキストフィルタを選択し、選択された項目に関連したデータのみを含めることもできます。そのあと、「関数」、「タイムライン」、「スレッド」などのほかのビューを使用して、これらのデータがほかのプログラムオブジェクトによってどのように表されるかを解析できます。

「行」ビュー

「行」ビューには、ソース行とそのメトリックのリストが表示されます。

ソース行は、そのラベルとして、呼び出し元の関数、行番号、およびソースファイル名で示されます。関数の行番号情報が得られない場合、または関数のソースファイルが不明の場合は、その関数のすべてのプログラムカウンタ (PC) が、行の表示でその関数の 1 つのエントリに集計されて表示されます。関数が表示されないロードオブジェクトにある関数の PC は、ロードオブジェクト別に「行」表示で 1 つのエントリにまとめて表示されます。「行」ビューで行を選択すると、特定の行のすべてのメトリックが「選択の詳細」ウィンドウに表示されます。「行」ビューから行を選択したあとに「ソース」または「逆アセンブリ」ビューを選択すると、表示が適切な行に移動します。

「PC」ビュー

「PC」ビューには、プログラムカウンタ (PC) とそのメトリックが一覧表示されます。PC には、呼び出し元の関数、およびその関数内のオフセットがラベルとして表示されます。関数が表示されないロードオブジェクトにある関数の PC は、ロードオブジェクト別に「PC」表示に 1 つのエントリにまとめて表示されます。「PC」ビューで行を選択すると、その PC のすべてのメトリックが「サマリー」タブに表示されます。 「PC」ビューから行を選択したあとに「ソース」ビューまたは「逆アセンブリ」ビューを選択すると、表示が適切な行に移動します。

PC の詳細については、呼び出しスタックとプログラムの実行のセクションを参照してください。

「逆アセンブリ」ビュー

「逆アセンブリ」ビューには、選択した関数を含むオブジェクトファイルの逆アセンブリリストが、各命令のパフォーマンスメトリックの注釈付きで表示されます。逆アセンブリリストを表示するには、ツールバーの「表示モード」リストから「マシン」を選択することが必要になる場合があります。

ソースコード情報が得られる場合、逆アセンブリリスト内にそのソースコードがインタリーブされて、任意のコンパイラのコメントが表示用に選択されます。「逆アセンブリ」ビューでソースファイルを見つけるためのアルゴリズムは、「ソース」ビューで使用されるアルゴリズムと同じです。

「ソース」ビューと同様に、「逆アセンブリ」ビューにはインデックス行が表示されます。ただし、「ソース」ビューとは異なり、代替ソースコンテキストのインデックス行をナビゲーションの目的に直接使用することはできません。また、代替ソースコンテキストのインデックス行は、「逆アセンブリ」表示の先頭に単に一覧表示されるのではなく、#include またはインライン化されたコードの挿入位置の先頭に表示されます。

#include されるか、またはほかのファイルからインライン化されたコードは、ソースコードをインタリーブせずに raw の逆アセンブリ命令として表示されます。ただし、これらの命令の 1 つにカーソルを置いて「ソース」ビューを選択すると、#include またはインライン化されたコードを含むファイルが開きます。このファイルを表示した状態で「逆アセンブリ」ビューを選択すると、新しいコンテキストで「逆アセンブリ」ビューが開き、インターリーブされたソースコードとともに逆アセンブリコードが表示されます。

表示される解説のクラスは、「設定」ダイアログボックスで設定できます。デフォルトのクラスは、ダイアログボックスの「保存」ボタンをクリックすることによって .er.rc デフォルト値ファイルで設定できます。

パフォーマンスアナライザは、重要な行の検索を容易にするために、メトリック固有のしきい値と等しいか、またはそれを超えるメトリックを含む行であるホットラインを強調表示します。このしきい値は、「設定」ダイアログボックスで設定できます。

「ソース」ビューと同様に、黄色のナビゲーションマーカーが、メトリックス付きの各ソース行の右側のスクロールバーの隣のマージン内に表示されます。ホットしきい値を下回るゼロ以外のメトリックは強調表示されませんが、黄色のナビゲーションマーカーが表示されます。メトリックス付きのソース行にすばやく移動するには、右側マージン内の黄色のマーカーをクリックすると、メトリックス付きの行にジャンプできます。また、メトリックス自体を右クリックし、「次のホットライン」や「次のゼロ以外のメトリックライン」などのオプションを選択して、メトリックス付きの次の行にジャンプすることができます。

「逆アセンブリ」ビューの内容の詳細は、注釈付き逆アセンブリコードを参照してください。

「ソース/逆アセンブリ」ビュー

「ソース/逆アセンブリ」ビューでは、上のペインに注釈付きソースが、下のペインに注釈付き逆アセンブリが表示されます。これらのペインは、あるペインにある行を選択すると、ほかのペインにある関連する行も選択されるように調整されます。このビューは、デフォルトでは表示されません。

「競合」ビュー

「競合」ビューには、データ競合実験で検出されたすべてのデータ競合のリストが表示されます。データ競合をクリックすると、そのデータ競合に関する詳細を右側のパネルにある「競合の詳細」ウィンドウに表示できます。詳細は、Oracle Developer Studio 12.5: スレッドアナライザユーザーズガイドを参照してください。

「デッドロック」ビュー

「デッドロック」ビューには、デッドロック実験で検出されたすべてのデッドロックのリストが表示されます。デッドロックをクリックすると、そのデッドロックに関する詳細が右側のパネルにある「デッドロックの詳細」ウィンドウに表示されます。詳細は、F1 キーを押してヘルプを表示するか、またはOracle Developer Studio 12.5: スレッドアナライザユーザーズガイドを参照してください。

「デュアルソース」ビュー

「デュアルソース」ビューには、選択したデータ競合またはデッドロックに関連する 2 つのソースコンテキストが表示されます。このビューは、データ競合検出またはデッドロック実験がロードされている場合にのみ表示されます。詳細は、Oracle Developer Studio 12.5: スレッドアナライザユーザーズガイドを参照してください。

「統計」ビュー

「統計」ビューには、選択した実験と標本について集計されたさまざまなシステム統計の合計値が表示されます。合計値のあとには、それぞれの実験について選択した標本の統計値が表示されます。表示される統計値については、getrusage(3C) および proc (4) のマニュアルページを参照してください。

「実験」ビュー

「実験」ビューは 2 つのパネルに分かれています。上のパネルには、読み込まれたすべての実験に含まれるロードオブジェクトのノードと、読み込まれた実験ごとのノードを含むツリーが含まれています。「ロードオブジェクト」ノードを展開すると、すべてのロードオブジェクトのリストが、それらの処理に関するさまざまなメッセージと一緒に表示されます。実験のノードを展開すると、「注記」と「情報」という 2 つの領域が表示されます。

「注記」領域には、実験内の notes ファイルの内容が表示されます。「注記」領域に直接入力することにより、注記を編集できます。「注記」領域には独自のツールバーが組み込まれており、注記の保存や破棄のほか、前回の保存以降の編集内容の取り消しや再実行を行うためのボタンがあります。

「情報」領域には、収集した実験と収集ターゲットがアクセスしたロードオブジェクトに関する情報が入っており、それには、実験またはロードオブジェクトの処理中に出力されたエラーメッセージや警告メッセージも含まれます。

下のパネルには、パフォーマンスアナライザセッションからのエラーおよび警告メッセージが一覧表示されます。

「命令頻度」ビュー

「命令頻度」ビューには、カウントデータ実験で各種命令が実行された (collect –c で収集された) 頻度のサマリーが表示されます。また、ロード、ストア、浮動小数点の各命令の実行頻度に関するデータも示します。無効になった命令や、分岐遅延スロット内の命令に関する情報も表示されます。

「MPI タイムライン」ビュー

「MPI タイムライン」ビューには、一連の水平バーが MPI 実験内のプロセスごとに 1 つずつ表示され、それらをつなぐ対角線がメッセージを示します。各バーには、MPI 機能によって色分けされた領域や、プロセスが MPI に含まれていない (アプリケーションコード内の別の場所にある) ことを示す領域があります。

バーのいずれかの領域またはメッセージ行を選択すると、「MPI タイムラインコントロール」ウィンドウでの選択に関する詳細情報が表示されます。

マウスをドラッグすると、ドラッグの主な移動方向に応じて、「MPI タイムライン」ビューが水平 (時間) 軸方向または垂直 (プロセス) 軸方向にズームインします。

MPI タイムラインの画像を .jpg ファイルに出力できます。「ファイル」→「エクスポート」を選択し、「エクスポート形式: JPEG」を選択します。

MPI タイムラインコントロール

「MPI タイムラインコントロール」ウィンドウは、「MPI タイムライン」ビューのズーム、パン、イベントステップ、およびフィルタリングをサポートします。このウィンドウには、「MPI タイムライン」に表示される MPI メッセージのパーセンテージを調整するコントロールがあります。

フィルタリングを行うと、ビューの現在のフィールドの外部にあるデータが、「MPI タイムライン」ビューおよび「MPI チャート」ビューに表示されるデータセットから削除されます。フィルタを適用するには、「フィルタ」ボタンをクリックします。最後に適用したフィルタを取り消すにはフィルタの戻るボタンを使用し、フィルタを再適用するにはフィルタの進むボタンを使用します。フィルタは、「MPI タイムライン」ビューと「MPI チャート」ビューの間で共有されますが、その他のデータビューには適用されません。

メッセージスライダを調整して、表示されるメッセージの割合を制御できます。100% 未満に指定すると、最もコストの高いメッセージが優先されます。コストは、メッセージの送受信に費やされる時間で定義されます。

「MPI タイムラインコントロール」ウィンドウには、「MPI タイムライン」ビューでの機能やメッセージの選択に関する詳細を表示することもできます。

「MPI チャート」ビュー

「MPI チャート」ビューには、「MPI タイムライン」ビューに表示される MPI トレースデータのチャートが表示されます。このタブには、MPI の実行に関するデータのプロットが表示されます。「MPI チャート」ビューのコントロールを変更して「変更を表示更新する」をクリックすると、新しいチャートが表示されます。チャートからいずれかの要素を選択すると、その要素に関する詳細情報が「MPI チャートコントロール」ビューに表示されます。

マウスをドラッグすると、ドラッグによって定義された矩形領域上で、「MPI チャート」ビューがズームインします。

MPI チャートの画像は .jpg ファイルに出力できます。「ファイル」→「エクスポート」を選択し、「エクスポート形式: JPEG」を選択します。

MPI チャートコントロール

「MPI チャートコントロール」ウィンドウには、チャートの種類、X 軸と Y 軸のパラメータ、およびデータの集計に使用されるメトリックや演算子を制御するための一連のドロップダウンリストが含まれています。「変更を表示更新する」をクリックすると、新しいグラフが描画されます。

フィルタリングを行うと、ビューの現在のフィールドの外部にあるデータが、「MPI タイムライン」ビューおよび「MPI チャート」ビューに表示されるデータセットから削除されます。フィルタを適用するには、「フィルタ」ボタンをクリックします。最後に適用したフィルタを取り消すにはフィルタの戻るボタンをクリックし、フィルタを再適用するにはフィルタの進むボタンをクリックします。

また、「MPI チャートコントロール」ウィンドウを使用して、「MPI チャート」ビューからの選択に関する詳細を表示することもできます。