ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris Studio 12.3: パフォーマンスアナライザ Oracle Solaris Studio 12.3 Information Library (日本語) |
「アナライザ」ウィンドウは、メニューバー、ツールバー、および各種データ表示のためのタブを含む分割区画で構成されます。
メニューバーには、「ファイル」メニュー、「表示」メニュー、および「ヘルプ」メニューがあります。
「ファイル」メニューは、実験や実験グループを開く、追加する、ドロップする際に使用します。「ファイル」メニューでは、パフォーマンスアナライザ GUI を使って実験のデータを収集できます。パフォーマンスアナライザを使ってデータを収集する方法についての詳細は、「アナライザからの実験の記録」を参照してください。「ファイル」メニューから、新しいアナライザウィンドウを作成したり、アナライザに現在表示されているデータをファイルやプリンタに出力したりすることもできます。
「ヘルプ」メニューは、パフォーマンスアナライザのオンラインヘルプを提供します。これには、新機能の概要を示し、クイックリファレンスとショートカットの説明、およびトラブルシューティングの説明が含まれます。
ツールバーは、ショートカットとしての一連のアイコン、何種類かの実験用にデータを表示させる方法の変更に使用できる「表示モード」リスト、およびいくつかのタブ内でテキストまたは強調表示行を検出するのに役立つ検索機能を備えています。検索機能の詳細は、「テキストとデータの検索」を参照してください。
パフォーマンスアナライザは、分割ウィンドウを使って、表示されるデータを 2 つの区画に分割します。各区画にはタブが付けられており、同じ実験や実験グループに対して異なるデータ表示を選択できます。
左側の区画にあるタブは連携動作するため、あるタブで関数などの項目を選択すると、他のタブでもその項目が選択されます。左側の区画にあるほとんどのタブには、タブ内の項目を右クリックすることで開くコンテキストメニューがあります。コンテキストメニューを使用すると、フィルタを追加したり、そのタブに関連した他のアクティビティーを実行したりできます。あるタブにフィルタを適用すると、フィルタの適用が可能なすべてのタブ内でデータがフィルタにかけられます。
右側の区画にあるタブには、左側の区画で選択した項目に関する詳細な情報が表示され、場合によっては、左側の区画にあるタブ内の情報を操作するためのツールが提供されます。
2 つの要因によって、実験を開いたときに「アナライザ」ウィンドウの左側の区画にタブが表示されるかどうかが決まります。
.er.rc ファイル。アナライザを起動したときに読み取られ、表示するデフォルトタブを指定する tabs 指令が含まれています。
実験に含まれるデータの種類によって他にどのタブが表示されるかが決まります。たとえば、実験に OpenMP データが含まれている場合は、そのデータを表示するために OpenMP 用のタブが自動的に開きます。
「データ表示方法を設定」ダイアログボックスの「タブ」タブ (「「タブ」タブ」を参照) を使用すると、現在のアナライザセッションで表示するタブを選択できます。デフォルトタブを変更する場合は、「アナライザのデフォルト設定」を参照してください。
左の区画には、主要なアナライザ表示のタブが次の順序で表示されます。
「MPI タイムライン」タブには、MPI 実験の各プロセスに 1 つずつ水平のバーが表示され、それらをつなぐ対角線がメッセージを示します。各バーには、MPI 機能によって色分けされた領域や、プロセスが MPI に含まれていない (アプリケーションコード内の別の場所にある) ことを示す領域があります。
バーのいずれかの領域またはメッセージ行を選択すると、「MPI タイムラインコントロール」タブでの選択に関する詳細情報が表示されます。
マウスをドラッグすると、ドラッグの主な移動方向に応じて、「MPI タイムライン」タブが水平 (時間) 軸方向または垂直 (プロセス) 軸方向にズームインします。
MPI タイムラインの画像をプリンタまたは .jpg ファイルに出力できます。「ファイル」 -> 「印刷」を選択し、「印刷」または「ファイル」を選択して、プリンタまたはファイル名を指定します。
「MPI グラフ」タブには、「MPI タイムライン」タブに表示される MPI トレースデータのグラフが表示されます。このタブには、MPI の実行に関するデータのプロットが表示されます。「MPI グラフ」タブ内のコントロールを変更して、「変更を表示更新する」をクリックすると、新しいグラフが表示されます。グラフからいずれかの要素を選択すると、その要素の詳細情報が「MPI グラフコントロール」タブに表示されます。
マウスをドラッグすると、ドラッグによって定義された矩形領域上で、「MPI グラフ」タブがズームインします。
MPI グラフ画像をプリンタまたは .jpg ファイルに出力できます。「ファイル」 -> 「印刷」を選択し、「印刷」または「ファイル」を選択して、プリンタまたはファイル名を指定します。
「競合」タブには、データ競合実験で検出されたすべてのデータ競合のリストが表示されます。詳細は、『Oracle Solaris Studio 12.3: スレッドアナライザユーザーズガイド』を参照してください。
「デッドロック」タブには、デッドロック実験で検出されたデッドロックのリストが表示されます。詳細は、『Oracle Solaris Studio 12.3: スレッドアナライザユーザーズガイド』を参照してください。
「関数」タブには、関数とそのメトリックスの一覧が表示されます。メトリックは、実験で収集されたデータから得られます。メトリックスは、排他的メトリックスまたは包括的メトリックスのいずれかになります。排他的メトリックスは、その関数自体のみによる使用を表します。包括的メトリックスは、関数とその関数が呼び出したすべての関数による使用を表します。
収集された各種データに使用できるメトリックスの一覧は、collect(1) のマニュアルページと第 2 章パフォーマンスデータに記載されています。
時間メトリックスは秒で表示され、ミリ秒の精度で提供されます。百分率は 0.01% の精度で表示されます。メトリック値が正確にゼロである場合、その時間と百分率は「0」として表示されます。メトリック値が正確にゼロではなく、精度よりも小さい場合、その値は「0.000」として表示され、その百分率は「0.00」として表示されます。丸めのため、百分率は合計が正確に 100 % にならない場合もあります。カウントメトリックは整数カウントとして示されます。
初めに表示されるメトリックスは、収集されたデータおよび各種 .er.rc ファイルから読み取られたデフォルト設定に基づいています。パフォーマンスアナライザを最初にインストールしたときのデフォルトメトリックスは、次のとおりです。
ハードウェアカウンタオーバーフローのプロファイリングでは、デフォルトセットは、包括的および排他的時間 (循環カウントのカウンタの場合) またはイベントカウント (ほかのカウンタの場合) から構成されます。
複数の種類のデータが収集された場合、各種類のデフォルトのメトリックが表示されます。
表示されるメトリックは、変更または再構成できます。詳細はオンラインヘルプを参照してください。
関数を検索するには、 Find ツールを使用します。「検索」ツールの詳細については、「テキストとデータの検索」を参照してください。
関数のソースコードを表示するには、ソースコード内の適切な行でそれをダブルクリックして「ソース」タブを開きます。
単一の関数を選択するには、その関数をクリックします。
タブ内に隣接して表示された複数の関数を選択するには、グループの最初の関数を選択したあと、Shift キーを押したままグループの最後の関数をクリックします。
タブ内に表示された隣接していない複数の関数を選択するには、グループの最初の関数を選択したあと、Ctrl キーを押したまま、追加する関数を個々にクリックして選択します。
「関数」タブ内で右クリックしてコンテキストメニューを開き、選択した関数用に定義済みフィルタを選択することもできます。フィルタリングの詳細は、アナライザのヘルプを参照してください。
「呼び出し元 - 呼び出し先」タブには、コード内の関数間の呼び出し関係がパフォーマンスメトリックスとともに表示されます。「呼び出し元 - 呼び出し先」タブでは、1 度に呼び出し 1 つずつ、呼び出しスタックフラグメントが構築されるので、コード分岐のメトリックスを詳細に確認できます。
このタブには、一番上に「呼び出し元」パネル、中央に「スタックフラグメント」パネル、一番下に「呼び出し先」パネルの 3 つのパネルがあります。「呼び出し元 - 呼び出し先」タブを初めて開くと、「スタックフラグメント」パネル上の関数は、「関数」タブや「ソース」タブなど、ほかのアナライザタブで選択された関数になります。「呼び出し元」パネルには、「スタックフラグメント」パネル上の関数を呼び出す関数が一覧表示され、「呼び出し先」パネルには、「スタックフラグメント」パネル上の関数によって呼び出される関数が一覧表示されます。
1 度に呼び出し 1 つずつについて、呼び出し元と呼び出し先を呼び出しスタックに追加することにより、1 つの関数を中心にして呼び出しスタックフラグメントを構築できます。
スタック断片に呼び出しを追加するには、「呼び出し元」区画または「呼び出し先」区画内の関数をダブルクリックするか、または関数を選択して「追加」ボタンをクリックします。同様に、呼び出しスタックフラグメントの一番上または一番下の関数をダブルクリックするか、一番上か一番下の関数を選択し、「削除」をクリックすることにより、関数呼び出しを削除できます。この追加または削除は、コンテキストメニューからでも実行できます。関数を右クリックし、該当するコマンドを選択します。
関数を選択し、「先頭を設定」、「中心を設定」、または「末尾を設定」を選択することにより、関数を呼び出しスタックフラグメントの先頭 (一番上)、中央、または末尾 (一番下) として設定できます。この新しい順序により、呼び出しスタック断片内に現在ある他の関数が「呼び出し元」領域または「呼び出し先」領域の、スタック断片内の選択された関数の新しい場所を基準とした適切な場所に移動します。
「スタックフラグメント」パネルの上にある「戻る」ボタンと「次へ」ボタンを使用すると、呼び出しスタックフラグメントへの変更履歴間を移動することができます。
スタックフラグメント内の関数を追加したり削除したりすると、メトリックスがフラグメント全体に対して計算され、そのフラグメント内の最後の関数の隣に表示されます。
「呼び出し元-呼び出し先」タブの任意のパネル内で関数を選択したあと、右クリックしてコンテキストメニューを開き、フィルタを選択できます。データは、このタブとアナライザのすべてのデータタブでの選択に従ってフィルタにかけられます。コンテキストフィルタの使用方法の詳細は、オンラインヘルプを参照してください。
「呼び出し元 - 呼び出し先」タブには、属性メトリックスが表示されます。
「スタックフラグメント」パネル内の呼び出しスタックフラグメントについて、属性メトリックスは、その呼び出しスタックフラグメントの排他的メトリックスを表します。
呼び出し先の場合、属性メトリックは、呼び出し先のメトリックのうち、呼び出しスタックフラグメントからの呼び出しに起因する部分を表します。呼び出し先と呼び出しスタックフラグメントの属性メトリックスの合計は、呼び出しスタックフラグメントのメトリックスにもなるはずです。
呼び出し元の場合、属性メトリックスは、呼び出しスタックフラグメントのメトリックスのうち、呼び出し元からの呼び出しに起因する部分を示します。すべての呼び出し元の属性メトリックスの合計が、呼び出しスタックフラグメントのメトリックにもなるはずです。
メトリックスについての詳細は、「関数レベルのメトリックス: 排他的、包括的、属性」を参照してください。
「呼び出しツリー」タブでは、プログラムの動的な呼び出しグラフがツリー表示されます。各関数はノードとして表示され、展開したり折りたたんだりできます。展開された関数ノードには、その関数によって行われる関数呼び出しがすべて表示され、加えて、それらの関数呼び出しのパフォーマンスメトリックスも表示されます。ノードを選択すると、右側の「概要」タブに、関数呼び出しのメトリックスとその呼び出し先が表示されます。属性付き測定基準に対して示されるパーセンテージは、プログラムの全測定基準のパーセンテージです。ツリーのデフォルトルートは <Total> で、関数ではありませんが、プログラムの全関数のパフォーマンスメトリックスの 100% を表します。
「呼び出しツリー」タブでは、特定の呼び出しトレースまで掘り下げて、どのトレースがパフォーマンスに一番大きく影響しているかを探ることができます。高いメトリック値を探しながら、プログラムの構造内を移動できます。
ヒント - 多くの時間を消費している分岐を簡単に見つけるには、任意のノードを右クリックし、「一番ホットな分岐を展開」を選択します。
「呼び出しツリー」タブを右クリックしてコンテキストメニューを開き、選択された分岐または選択された関数の定義済みフィルタを追加できます。この方法でフィルタリングすることによって、対象外の領域に含まれている、すべてのアナライザタブ内のデータを除外できます。
「デュアルソース」タブには、選択したデータ競合またはデッドロックに関わる 2 つのソースコンテキストが表示されます。このタブは、データ競合検出またはデッドロック実験が読み込まれている場合にのみ表示されます。詳細は、『Oracle Solaris Studio 12.3: スレッドアナライザユーザーズガイド』を参照してください。
「ソース/逆アセンブリ」タブでは、上の区画に注釈付きソースが、下の区画には注釈付き逆アセンブリが表示されます。これらの区画は、ある区画にある行を選択すると、ほかの区画にある関連する行も選択されるように調整されます。このタブはデフォルトでは表示されません。「ソース/逆アセンブリ」タブを追加するには、「表示」メニューの「データ表示方法を設定」オプションを使用します。このタブを常に表示するには、「保存」をクリックします。
「ソース」タブには、選択された関数のソースコードが利用可能である場合に、そのソースコードを含むファイルが、各ソース行の左側の列にパフォーマンスメトリックスの注釈付きで表示されます。高いメトリックスは黄色で表示され、リソース使用状況のホット領域であるソース行が示されます。また、黄色のナビゲーションマーカーが、各ホットソース行の右側のスクロールバーの隣のマージン内に表示されます。ホットしきい値を下回るゼロ以外のメトリックスは強調表示されませんが、黄色のナビゲーションマーカーが表示されます。メトリックス付きのソース行にすばやく移動するには、右側マージン内の黄色のマーカーをクリックすると、メトリックス付きの行にジャンプできます。また、メトリックス自体を右クリックし、「次のホットライン」や「次のゼロ以外のメトリックライン」などのオプションを選択して、メトリックス付きの次の行にジャンプすることができます。
強調表示メトリックスのしきい値は、「データ表示方法の設定」ダイアログボックスの「ソース/逆アセンブリ」タブで設定できます。デフォルトのしきい値は、.er.rc デフォルト値ファイルで設定できます。.er.rc ファイルについての詳細は、「アナライザのデフォルト設定」を参照してください。
「ソース」タブには、ソースファイルおよび対応するオブジェクトファイルへの完全パスが表示され、ソースコードの列見出しにはロードオブジェクトの名前が表示されます。ま れ に、1 つのソースファイルを使って複数のオブジェクトファイルがコンパイルされている場合は、選択された関数を含むオブジェクトファイルのパフォーマンスデータが「ソース」タブに表示されます。
実験のソースコードを検索するために使用されるプロセスについては、「ツールがソースコードを見つけるしくみ」を参照してください。
「関数」タブで関数をダブルクリックして「ソース」タブが開かれたとき、表示されるソースファイルは、その関数のデフォルトソースコンテキストです。関数のデフォルトソースコンテキストは、その関数の最初の命令 (C コードの場合は、開く中括弧) を含むファイルです。注釈付きソースファイルでは、最初の命令の直後にその関数のインデックス行が追加されます。ソースウィンドウには、インデックス行が赤いイタリック体のテキストとして山括弧内に次の形式で表示されます。
<Function: f_name>
関数は、代替のソースコンテキストを持つ場合もあります。代替のソースコンテキストは、その関数に帰属する命令が入った別のファイルです。そのような命令は、インクルードファイルに入っているか、選択された関数内にインライン化された別の関数に入っている命令です。代替のソースコンテキストが存在する場合、デフォルトのソースコンテキストの先頭に、代替ソースコンテキストが置かれている場所を示す拡張インデックス行のリストが組み込まれます。
<Function: f, instructions from source file src.h>
別のソースコンテキストを参照するインデックス行をダブルクリックすると、そのソースコンテキストが入っているファイルが、インデックスで示された関数に関連した位置から開かれます。
移動に役立つよう、代替ソースコンテキストも、そのデフォルトソースコンテキストおよびほかの代替ソースコンテキスト内で定義された関数を逆に参照するインデックス行のリストで始まります。
ソースコードは、表示用に選択されているコンパイラのコメントとともにインターリーブされます。表示するコメントのクラスは、「データ表示方法の設定」ダイアログボックスで設定できます。デフォルトのクラスは、.er.rc デフォルト値ファイルで設定できます。
「ソース」タブに表示されるメトリックは、変更または再構成できます。詳細はオンラインヘルプを参照してください。
「ソース」タブの内容の詳細は、「パフォーマンスアナライザの「ソース」タブのレイアウト」を参照してください。
「行」タブには、ソース行とそのメトリックスのリストが表示されます。ソース行は、そのラベルとして、呼び出し元の関数、行番号、およびソースファイル名で示されます。関数の行番号情報が得られない場合、または関数のソースファイルが不明の場合は、その関数の全プログラムカウンタ (Program Counter、PC) が、行表示でその関数の 1 つのエントリにまとめて表されます。関数が表示されないロードオブジェクトにある関数の PC は、ロードオブジェクト別に「行」表示で 1 つのエントリにまとめて表示されます。「行」タブで行を選択すると、その行の全メトリックが「概要」タブに表示されます。「行」タブで行を選択してから「ソース」タブか「逆アセンブリ」タブを選択すると、適切な行に表示が位置付けられます。
「逆アセンブリ」タブには、選択した関数が含まれているオブジェクトファイルの逆アセンブリリストが表示され、各命令のパフォーマンスメトリックスが注釈として付きます。逆アセンブリリストを表示するには、ツールバーの「表示モード」リストから「マシン」を選択することが必要になる場合があります。
ソースコード情報が得られる場合、逆アセンブリリスト内にそのソースコードがインタリーブされて、任意のコンパイラのコメントが表示用に選択されます。「逆アセンブリ」タブでソースファイルを見つけるためのアルゴリズムは、「ソース」タブで使用されるアルゴリズムと同じです。
「ソース」タブと同様に、「逆アセンブリ」タブにはインデックス行が表示されます。しかし、「ソース」タブとは異なり、代替ソースコンテキストのインデックス行を移動の目的で直接使用することはできません。また、代替ソースコンテキストのインデックス行は、「逆アセンブリ」表示の先頭に単に一覧表示されるのではなく、#include またはインライン化されたコードの挿入位置の先頭に表示されます。#include またはほかのファイルからインライン化されたコードは、raw の逆アセンブリ命令として、ソースコードをインタリーブせずに示されます。ただし、これらの命令の 1 つにカーソルを置いて「ソース」タブを選択すると、#include またはインライン化されたコードを含むファイルが開きます。このファイルを表示した状態で「逆アセンブリ」タブを選択すると、新しいコンテキストで「逆アセンブリ」表示が開き、インタリーブされたソースコードと一緒に逆アセンブリコードが表示されます。
表示するコメントのクラスは、「データ表示方法の設定」ダイアログボックスで設定できます。デフォルトのクラスは、ダイアログボックスの「保存」ボタンをクリックすることによって .er.rc デフォルト値ファイルで設定できます。
アナライザは、重要な行の検索を容易にするために、メトリックス固有のしきい値と等しいか、またはそれを超えるメトリックス付きの行であるホットラインを強調表示します。しきい値は、「データ表示方法の設定」ダイアログボックスで設定できます。デフォルトのしきい値は、ダイアログボックスの「保存」ボタンをクリックすることによって .er.rc デフォルト値ファイルで設定できます。
「ソース」タブと同様に、黄色のナビゲーションマーカーが、メトリックス付きの各ソース行の右側のスクロールバーの隣のマージン内に表示されます。ホットしきい値を下回るゼロ以外のメトリックスは強調表示されませんが、黄色のナビゲーションマーカーが表示されます。メトリックス付きのソース行にすばやく移動するには、右側マージン内の黄色のマーカーをクリックすると、メトリックス付きの行にジャンプできます。また、メトリックス自体を右クリックし、「次のホットライン」や「次のゼロ以外のメトリックライン」などのオプションを選択して、メトリックス付きの次の行にジャンプすることができます。
「逆アセンブリ」タブの内容の詳細は、「注釈付き逆アセンブリコード」を参照してください。
「PC」タブには、プログラムカウンタ (PC) とそのメトリックスが一覧表示されます。PC には、呼び出し元の関数、およびその関数内のオフセットがラベルとして表示されます。関数が表示されないロードオブジェクトにある関数の PC は、ロードオブジェクト別に「PC」表示に 1 つのエントリにまとめて表示されます。「PC」タブで行を選択すると、その PC のすべてのメトリックスが「概要」タブに表示されます。「PC」タブで行を選択してから「ソース」タブか「逆アセンブリ」タブを選択すると、適切な行に表示が位置付けられます。
PC の詳細については、「呼び出しスタックとプログラムの実行」の節を参照してください。
「OpenMP 並列領域」タブは、Oracle Solaris Studio コンパイラでコンパイルされた OpenMP タスクを使用するプログラムについて、OpenMP 3.0 コレクタで記録された実験にのみ適用されます。詳細は、「OpenMP プロファイルに関する制限事項」を参照してください。
このタブには、プログラムの実行中に発生したすべての並列領域が、同じプロファイルデータから計算されたメトリック値とともに一覧表示されます。現在の並列領域に対しては、排他的メトリックスが計算されます。包括的メトリックスには、入れ子並列性が反映されます。これらは、現在の並列領域、およびこれが作成された親並列領域、そしてさらに再帰的に、プログラムの直列実行を表す (すべての並列領域の外側の) 最上位の暗黙 OpenMP 並列領域にまで属します。プログラムに入れ子の並列領域がない場合、排他的メトリックスと包括的メトリックスは同じ値を持ちます。
並列領域を含む関数が複数回呼び出された場合、並列領域のすべてのインスタンスが集計され、対応するタブに 1 項目として表示されます。
このタブはナビゲーションに便利です。OpenMP 待ち時間が最大の並列領域などの興味のある項目を選択し、そのソースを解析したり、選択項目に関連したデータのみを含むようにコンテキストフィルタを選択したあと、「関数」、「タイムライン」、「スレッド」などのほかのタブを使用して、そのデータがほかのプログラムオブジェクトによってどのように表されるかを解析したりすることができます。
「OpenMP タスク」タブには、OpenMP タスクとそれぞれのメトリックスの一覧が表示されます。このタブは、Oracle Solaris Studio コンパイラでコンパイルされた OpenMP タスクを使用するプログラムについて、OpenMP 3.0 コレクタで記録された実験にのみ適用されます。詳細は、「OpenMP プロファイルに関する制限事項」を参照してください。
このタブには、プログラムの実行中に発生したタスクが、プロファイルデータから計算されたメトリック値とともに一覧表示されます。排他的メトリックスは、現在のタスクのみに適用されます。包括的メトリックスは、OpenMP タスクのメトリックス、および、タスク生成時に構築された親子関係を持つ、子タスクのメトリックスを含みます。暗黙並列領域の OpenMP タスクは、プログラムの直列実行を表します。
タスクを含む関数が複数回呼び出される場合、並列領域のすべてのインスタンスが集計され、対応するタブに 1 項目として表示されます。
このタブはナビゲーションに便利です。OpenMP 待ち時間が最大のタスクなどの興味のある項目を選択し、「ソース」タブをクリックすることによってそのソースを解析できます。また、項目を選択し、右クリックして選択項目に関連したデータのみを含むようにコンテキストフィルタを選択したあと、「関数」、「タイムライン」、「スレッド」などのほかのタブを使用して、それがほかのプログラムオブジェクトによってどのように表されるかを解析することもできます。
「タイムライン」タブには、コレクタによって記録されたイベントおよび標本ポイントのグラフが、時間の関数として表示されます。データは、水平バーに表示されます。実験ごとに、いちばん上に標本データのバーが存在し、スレッドごとの一連のバーが続きます。スレッドの一連のバーには、時間ベースのプロファイリング、ハードウェアカウンタオーバーフローのプロファイリング、同期トレース、ヒープトレース、MPI トレースなどの、記録されたデータ型ごとのバーが含まれます。ハードウェアカウンタオーバーフローのプロファイリングの場合は、ハードウェアカウンタごとにバーが存在します。データ型ごとのバーは、読み込まれた実験に、その型のデータが含まれている場合にのみ表示されます。
パフォーマンスアナライザによって示されるイベントの時間メトリックは、各状態で費やされた相対的な時間に対応します。標本バーには、実験内のすべてのスレッドの時間メトリックの概要が表示されます。標本をクリックすると、その標本の時間メトリックが、右側の「タイムラインの詳細」タブに表示されます。また、イベント状態チャートを表示することによって、スレッド内の個々のイベントの時間メトリックを表示することもできます。
プロファイルデータまたはトレースデータのバーには、記録される各イベントのイベントマーカーが表示されます。イベントマーカーは、イベントとともに記録された呼び出しスタックの色分けされた表現で構成されています。
プロファイルデータまたはトレースデータのバーには、記録される各イベントのイベントマーカーが表示されます。イベントマーカーは、イベントとともに記録された呼び出しスタックの色分けされた表現で構成されています。イベントマーカーをクリックすると、そのイベントに対応する呼び出しスタックが選択され、そのイベントのデータおよび呼び出しスタック関数が「タイムラインの詳細」タブに表示されます。「タイムラインの詳細」タブの「選択されたイベントの呼び出しスタック」領域では、個々の関数呼び出しを選択して、それらの呼び出しに関する詳細情報をこのタブの「選択したイベントの詳細」領域に表示できます。次に、「ソース」タブまたは「逆アセンブリ」タブをクリックすると、呼び出しスタック内のそのフレームに対応する行が強調表示されます。
ある種のデータでは、イベントが重なって見えない場合があります。まったく同じ位置に複数のイベントが表示される場合は、常に 1 つだけが描画されます。1 - 2 ピクセル以内に複数のイベントがある場合、すべてが描画されますが、見た目には判別できない可能性があります。いずれの場合も、描画されたイベントの下に小さな灰色のティックマークが表示され、重なっていることが示されます。イベント頻度チャートを表示することによって、イベントに関する詳細情報を表示できます。
「データ表示方法の設定」ダイアログボックスの「タイムライン」タブでは、表示されるイベント固有のデータの種類を変更したり、スレッド、LWP、CPU、または実験に関するイベント固有のデータの表示を選択したり、ルートまたはリーフでの呼び出しスタックの表示を配置することを選択したり、表示される呼び出しスタックのレベルの数を選択したりすることができます。また、一部のタイムラインバーにイベント頻度チャートやイベント状態チャートを表示することも選択できます。
イベント頻度チャートとは、イベントの頻度を時間の関数として表示する折れ線チャートのことです。イベント頻度チャートを有効にするには、「データ表示方法の設定」ダイアログボックスの「タイムライン」タブで「イベント頻度チャート」を選択します。それにより、有効になっているデータ型ごとに、イベント頻度チャートが、関連付けられたタイムラインデータバーの真下に表示されます。
イベント状態チャートとは、さまざまな状態で費やされたアプリケーション時間の分布を時間の関数として表示する棒チャートのことです。Oracle Solaris に記録されたクロックプロファイリングデータの場合は、イベント状態チャートに Oracle Solaris のマイクロステートが表示されます。イベント状態チャートのカラーコードは、タイムライン標本バーの場合と同じです。イベント状態チャートを有効にするには、「データ表示方法の設定」ダイアログボックスの「タイムライン」タブで「イベント状態チャート」を選択します。それにより、イベント状態チャートが、関連付けられたデータバーの下に表示されます。イベント頻度チャートも有効になっている場合は、頻度チャートの下に状態チャートが表示されます。
「タイムライン」タブの使い方の詳細は、オンラインヘルプを参照してください。
「リーク一覧」タブには 2 つの行が表示され、上の行はリークを表し、下の行は割り当てを示します。それぞれには、「タイムライン」タブで表示されているものと同じような呼び出しスタックが中央に表示され、その上にはリークまたは割り当てられたバイト数に比例するバーが、その下にはリークまたは割り当ての数に比例するバーが表示されます。
リークまたは割り当てを選択すると、選択されたリークや割り当てのデータが「リーク」タブに表示され、「タイムライン」タブの場合と同様に呼び出しスタックのフレームが選択されます。
「リーク一覧」タブを表示するには、「データ表示方法の設定」ダイアログボックスの「タブ」タブ (「「タブ」タブ」を参照) で、そのタブを選択します。「リーク一覧」タブを表示可能にできるのは、1 つ以上の読み込まれた実験の中に、ヒープトレースデータが含まれている場合だけです。
「データオブジェクト」タブには、データオブジェクトおよびそのメトリックスが一覧表示されます。このタブは、ハードウェアカウンタオーバーフロープロファイリングの拡張版であるデータ領域プロファイリングを含む実験にのみ使用されます。詳細は、「データ領域プロファイリングとメモリー領域プロファイリング」を参照してください。
タブを表示するには、「データ表示方法の設定」ダイアログボックスの「タブ」タブ (「「タブ」タブ」を参照) で、そのタブを選択します。「データオブジェクト」タブを表示可能にできるのは、1 つ以上の読み込まれた実験に、データ領域プロファイルが含まれている場合だけです。
このタブには、プログラムのさまざまなデータ構造体と変数に対するハードウェアカウンタのメモリー演算のメトリックスが示されます。
単一のデータオブジェクトを選択するには、そのオブジェクトをクリックします。
タブ内に隣接して表示された複数のオブジェクトを選択するには、最初のオブジェクトを選択したあと、Shift キーを押したまま最後のオブジェクトを選択します。
タブ内に表示された隣接していない複数のオブジェクトを選択するには、最初のオブジェクトを選択したあと、Ctrl キーを押したまま、追加するオブジェクトを個々にクリックして選択します。
「データレイアウト」タブには、すべてのプログラムデータオブジェクトの注釈付きデータオブジェクトレイアウトが、データ派生メトリックデータと一緒に表示されます。このタブは、ハードウェアカウンタオーバーフロープロファイリングの拡張版であるデータ領域プロファイリングを含む実験にのみ使用されます。詳細は、「データ領域プロファイリングとメモリー領域プロファイリング」を参照してください。
各レイアウトは、構造全体のデータソートメトリック値によってソートされた状態で、タブ内に表示されます。このタブには、集合体データオブジェクトごとに、そのオブジェクトに帰属する合計メトリックが表示され、そのあとに、そのデータオブジェクトのすべての要素がオフセット順に表示されます。各要素には、そのメトリックスと、32 バイトブロックでそのサイズと位置を示す指示子があります。
「データレイアウト」タブを表示するには、「データ表示方法の設定」ダイアログボックスの「タブ」タブでそのタブを選択します (「「タブ」タブ」を参照)。「データオブジェクト」タブの場合と同様に、「データレイアウト」タブを表示可能にできるのは、1 つ以上の読み込まれた実験に、データ領域プロファイルが含まれている場合だけです。
単一のデータオブジェクトを選択するには、そのオブジェクトをクリックします。
タブ内に隣接して表示された複数のオブジェクトを選択するには、最初のオブジェクトを選択したあと、Shift キーを押したまま最後のオブジェクトを選択します。
タブ内に表示された隣接していない複数のオブジェクトを選択するには、最初のオブジェクトを選択したあと、Ctrl キーを押したまま、追加するオブジェクトを個々にクリックして選択します。
「命令頻度」タブには、カウントデータ実験で各種類の命令が実行された (collect -c で収集された) 頻度の概要が表示されます。また、ロード、ストア、浮動小数点の各命令の実行頻度に関するデータも示します。無効になった命令や、分岐遅延スロット内の命令に関する情報も表示されます。
「統計」タブには、選択した実験と標本について集計されたさまざまなシステム統計の合計値が表示されます。合計値のあとには、それぞれの実験について選択した標本の統計値が表示されます。表示される統計値については、getrusage(3C) と proc (4) のマニュアルページを参照してください。
「実験」タブは 2 つのパネルに分割されます。上のパネルには、読み込まれたすべての実験に含まれるロードオブジェクトのノードと、読み込まれた実験ごとのノードを含むツリーが含まれています。「ロードオブジェクト」ノードを展開すると、すべてのロードオブジェクトのリストが、それらの処理に関するさまざまなメッセージと一緒に表示されます。実験のノードを展開すると、「注記」と「情報」という 2 つの領域が表示されます。
「注記」領域には、実験内の notes ファイルの内容が表示されます。「注記」領域に直接入力することにより、注記を編集できます。「注記」領域には独自のツールバーが組み込まれており、注記の保存や破棄のほか、前回の保存以降の編集内容の取り消しや再実行を行うためのボタンがあります。
「情報」領域には、収集した実験と収集ターゲットがアクセスしたロードオブジェクトに関する情報が入っており、それには、実験またはロードオブジェクトの処理中に出力されたエラーメッセージや警告メッセージも含まれます。
下のパネルには、アナライザセッションから出力されたエラーメッセージと警告メッセージが表示されます。
各インデックスオブジェクトタブには、スレッド、CPU、秒などの、さまざまなインデックスオブジェクトに帰属するデータのメトリック値が表示されます。インデックスオブジェクトは階層構造ではないので、包括的メトリックと排他的メトリックは表示されません。各種類の単一のメトリックだけが表示されます。
「スレッド」、「CPU」、「標本」、「秒」、「プロセス」、「実験 ID」などの、いくつかのインデックスオブジェクトタブが事前に定義されています。これらのタブについては、下で個別に説明します。
カスタムインデックスオブジェクトを定義するには、「データ表示方法の設定」ダイアログボックスで「「カスタムインデックス」タブを追加」ボタンをクリックし、「インデックスオブジェクトを追加」ダイアログボックスを開きます。インデックスオブジェクトは、.er.rc ファイルで indxobj_define 指令を使用して定義することもできます (「indxobj_define indxobj_type index_exp」 を参照)。
「スレッド」タブは、デフォルトでは表示されないインデックスオブジェクトタブです。このタブは、「データ表示方法の設定」ダイアログボックスの「タブ」タブで選択できます。このダイアログボックスの「保存」ボタンをクリックすると、選択項目が .er.rc ファイルにデフォルトとして保存されます。
「スレッド」タブには、スレッドとそのメトリックスの一覧が表示されます。スレッドはスレッド番号で表され、デフォルトでは、クロックプロファイリング実験のユーザー CPU 時間が表示されます。読み込まれた実験内にほかのメトリックスが存在する場合は、そのメトリックスもデフォルトで表示される可能性があります。
「テキスト」(デフォルト)、「グラフィカル」、または「チャート」のラジオボタンを使用して、表示の種類を選択できます。テキスト表示は「関数」タブに似ていますが、各スレッドに帰属する排他的メトリックスのみが表示されます。グラフィカル表示では、各スレッドの相対値の棒グラフが、メトリックスごとの個別のヒストグラムを使用して表示されます。このヒストグラムは、テキスト表示モードで有効なデータソートメトリックでソートされます。テキスト表示とグラフィカル表示では、マウスでクリックするか、または矢印キーを使用してこのタブに移動し、現在選択されている項目に関する詳細情報を右側の「概要」タブに表示できます。
チャート表示では、スレッドと、ユーザー CPU 時間や同期時間などのほかのメトリックスを比較したチャートが表示されます。デフォルトでは、きわめて高い CPU 時間を使用したスレッドの検出に役立つ「ロードインバランス」チャートが表示されます。
「ロードインバランス」チャートでは、不均一なスレッド読み込みのために失われた実際の時間の量 (秒とパーセントで表されます) が、右側の「スレッドチャートコントロール」タブに表示されます。スレッドが完全に均一化されていたとしたら、これらの値に近いパフォーマンス向上が見込まれます。負荷の高いスレッドによって実行されているタスクをより短期間のタスクに分け、使用可能なスレッドに分散させることによって、より優れた負荷分散が達成される可能性があります。
「ロック競合」チャートでは、スレッド間の同期のためにどれだけの時間が失われたかや、どのスレッドでほかのスレッドより多くの時間が失われたかを確認するために役立つ、スレッド間の同期待ち時間の分布が表示されます。
チャートの種類を変更するには、右側の「スレッドチャートコントロール」タブで「チャート名」を選択し、「変更を表示更新する」をクリックします。
特定のスレッドを選択し、メトリック情報を「スレッドチャートコントロール」タブに表示するには、チャート内のバーをクリックするか、または「スレッドチャートコントロール」タブのナビゲーションバーにある「上へ」および「下へ」ボタンをクリックします。
また、右クリックし、コンテキストメニューからナビゲーションオプションを選択することもできます。
「標本」タブは、デフォルトでは表示されないインデックスオブジェクトタブです。このタブは、「データ表示方法の設定」ダイアログボックスの「タブ」タブで選択できます。このダイアログボックスの「保存」ボタンをクリックすると、選択項目が .er.rc ファイルにデフォルトとして保存されます。
「標本」タブには、標本ポイントとそのメトリックスの一覧が表示されます。標本は標本番号で表され、デフォルトでは、クロックプロファイリング実験のユーザー CPU 時間が表示されます。読み込まれた実験内にほかのメトリックスが存在する場合は、そのメトリックスも表示される可能性があります。
「テキスト」または「グラフィカル」のラジオボタンを使用して、表示の種類を選択できます。テキストモードはデフォルトで表示され、「関数」タブと同様の内容が表示されます。これらのメトリックス値には、読み込まれた実験内の各標本ポイントで記録されたマイクロステートが反映されます。
グラフィカル表示では、各標本の相対値の棒グラフが、メトリックスごとの個別のヒストグラムを使用して表示されます。このヒストグラムは、テキスト表示モードで有効なデータソートメトリックでソートされます。
また、右クリックして、このタブやほかのアナライザタブに表示されたデータをフィルタリングするためのコンテキストフィルタを追加することもできます。
「CPU」タブは、デフォルトでは表示されないインデックスオブジェクトタブです。このタブは、「データ表示方法の設定」ダイアログボックスの「タブ」タブで選択できます。このダイアログボックスの「保存」ボタンをクリックすると、選択項目が .er.rc ファイルにデフォルトとして保存されます。
「CPU」タブには、実験が実行された CPU の一覧が、それらに関連付けられたメトリックスとともに表示されます。CPU は CPU 番号で表され、デフォルトでは、クロックプロファイリング実験のユーザー CPU 時間が表示されます。読み込まれた実験内にほかのメトリックスが存在する場合は、そのメトリックスもデフォルトで表示される可能性があります。「データ表示方法の設定」ダイアログボックスでほかのメトリックスを選択した場合は、それらのメトリックスも表示されます。
「テキスト」または「グラフィカル」のラジオボタンを使用して、表示の種類を選択できます。テキストモードはデフォルトで表示され、「関数」タブと同様の内容が表示されます。これらの値には、読み込まれた実験において各 CPU 上で記録されたメトリックスの値またはパーセンテージが反映されます。
グラフィカル表示では、各 CPU の相対値の棒グラフが、メトリックスごとの個別のヒストグラムを使用して表示されます。このヒストグラムは、テキスト表示モードで有効なデータソートメトリックでソートされます。
右クリックして、このタブやほかのアナライザタブに表示されたデータをフィルタリングするためのコンテキストフィルタを追加できます。
「秒」タブは、デフォルトでは表示されないインデックスオブジェクトタブです。このタブは、「データ表示方法の設定」ダイアログボックスの「タブ」タブで選択できます。このダイアログボックスの「保存」ボタンをクリックすると、選択項目が .er.rc ファイルにデフォルトとして保存されます。
「秒」タブには、実験で取り込まれたプログラム実行の各秒が、その秒内に収集されたメトリックスとともに表示されます。「秒」は、0 から始まって毎秒発生し、間隔を変更できない定期的な標本であるという点で、「標本」とは異なります。「秒」タブには、デフォルトでは、クロックプロファイリング実験のユーザー CPU 時間での実行の各秒が一覧表示されます。読み込まれた実験内にほかのメトリックスが存在する場合は、そのメトリックスも表示される可能性があります。
「テキスト」または「グラフィカル」のラジオボタンを使用して、表示の種類を選択できます。テキストモードはデフォルトで表示され、「関数」タブと同様の内容が表示されます。これらのメトリック値には、読み込まれた実験において各秒に記録されたマイクロステートが反映されます。
グラフィカル表示では、各秒の相対値の棒グラフが、メトリックスごとの個別のヒストグラムを使用して表示されます。このヒストグラムは、テキスト表示モードで有効なデータソートメトリックでソートされます。
右クリックして、このタブやほかのアナライザタブに表示されたデータをフィルタリングするためのコンテキストフィルタを追加できます。
「プロセス」タブは、デフォルトでは表示されないインデックスオブジェクトタブです。このタブは、「データ表示方法の設定」ダイアログボックスの「タブ」タブで選択できます。このダイアログボックスの「保存」ボタンをクリックすると、選択項目が .er.rc ファイルにデフォルトとして保存されます。
「プロセス」タブには、ターゲットプログラムが実行したプロセスの一覧が、それらに関連付けられたメトリックスとともに表示されます。これらのプロセスはそれぞれの PID で一覧表示され、デフォルトでは、クロックプロファイリング実験のユーザー CPU 時間が表示されます。読み込まれた実験内にほかのメトリックスが存在する場合は、そのメトリックスもデフォルトで表示される可能性があります。「データ表示方法の設定」ダイアログボックスでほかのメトリックスを選択した場合は、それらのメトリックスも表示されます。
「プロセス」タブを使用すると、もっとも多くのリソースを使用したプロセスを検索できます。切り離したあと、ほかのタブを使用して調査したい特定の一連のプロセスがある場合は、コンテキストメニューで使用可能なフィルタを使用して、ほかのプロセスをフィルタで除外できます。
「テキスト」または「グラフィカル」のラジオボタンを使用して、表示の種類を選択できます。テキストモードはデフォルトで表示され、「関数」タブと同様の内容が表示されます。これらの値には、読み込まれた実験において各プロセス上で記録されたメトリックスの値またはパーセンテージが反映されます。
グラフィカル表示では、各 PID の相対値の棒グラフが、メトリックスごとの個別のヒストグラムを使用して表示されます。このヒストグラムは、テキスト表示モードで有効なデータソートメトリックでソートされます。
「実験 ID」タブは、デフォルトでは表示されないインデックスオブジェクトタブです。このタブは、「データ表示方法の設定」ダイアログボックスの「タブ」タブで選択できます。このダイアログボックスの「保存」ボタンをクリックすると、選択項目が .er.rc ファイルにデフォルトとして保存されます。
「実験 ID」タブには、読み込まれた実験の一覧が、それらに関連付けられたメトリックスとともに表示されます。コンテキストメニューで使用可能なフィルタを使用して、ほかの実験をフィルタで除外できます。
「テキスト」または「グラフィカル」のラジオボタンを使用して、表示の種類を選択できます。テキストモードはデフォルトで表示され、「関数」タブと同様の内容が表示されます。これらの値には、読み込まれた実験において各プロセス上で記録されたメトリックスの値またはパーセンテージが反映されます。
グラフィカル表示では、各 PID の相対値の棒グラフが、メトリックスごとの個別のヒストグラムを使用して表示されます。このヒストグラムは、テキスト表示モードで有効なデータソートメトリックでソートされます。
各メモリーオブジェクトのタブには、ページなど、さまざまなメモリーオブジェクトに帰属するデータ領域メトリックスのメトリック値が表示されます。1 つ以上の読み込まれた実験にデータ領域プロファイルが含まれている場合は、「データ表示方法の設定」ダイアログボックスの「タブ」タブで、タブを表示するメモリーオブジェクトを選択できます。メモリーオブジェクトタブは、いくつでも表示できます。
さまざまなメモリーオブジェクトのタブが事前に定義されています。メモリーオブジェクトは、仮想ページおよび物理ページに対して、Vpage_8K、Ppage_8K、Vpage_64K などの名前で事前に定義されています。カスタムメモリーオブジェクトを定義するには、「データ表示方法の設定」ダイアログボックスで「カスタムオブジェクトを追加」ボタンをクリックし、「メモリーオブジェクトを追加」ダイアログボックスを開きます。また、.er.rc ファイルで mobj_define 指令を使用してメモリーオブジェクトを定義することもできます (「mobj_define mobj_type index_exp」を参照)。
各メモリーオブジェクトタブのラジオボタンを使用して、テキスト表示とグラフィカル表示を切り替えることができます。テキスト表示は「データオブジェクト」タブ内の表示に似ており、同じメトリックの設定を使用します。グラフィカル表示では、各メモリーオブジェクトの相対値が、データソートメトリックによってソートされた各メトリックごとの個別のヒストグラムを使用してグラフィカル表示されます。
右の区画には、「概要」タブ、「タイムラインの詳細」タブ、「スレッドチャートコントロール」タブ、「MPI タイムラインコントロール」タブ、「MPI チャートコントロール」タブ、「競合の詳細」タブ、「デッドロックの詳細」タブ、および「リーク」タブが含まれています。デフォルトでは、「概要」タブが表示されます。
「MPI タイムラインコントロール」タブは、「MPI タイムライン」タブのズーム、パン、イベントステップ、およびフィルタリングをサポートします。このタブには、「MPI タイムライン」タブに表示される MPI メッセージの割合を調整するコントロールがあります。
フィルタリングでは、ビューの現在のフィールドの外部にあるデータが、「MPI タイムライン」タブおよび「MPI グラフ」タブに表示されるデータセットから削除されます。フィルタを適用するには、「フィルタ」ボタンをクリックします。フィルタの戻るボタンは最後に適用したフィルタを取り消す場合に使用し、フィルタの進むボタンはフィルタを再適用する場合に使用します。フィルタは「MPI タイムライン」タブと「MPI グラフ」タブの間で共有されますが、現在のところそのほかのタブには適用されません。
メッセージスライダを調整して、表示されるメッセージの割合を制御できます。100% 未満に指定すると、最もコストの高いメッセージが優先されます。コストは、メッセージの送受信に費やされる時間で定義されます。
また、「MPI タイムラインコントロール」タブを使用して、「MPI タイムライン」タブでの機能やメッセージの選択に関する詳細を表示することもできます。
「MPI グラフコントロール」タブには、グラフの種類、X 軸と Y 軸のパラメータ、およびデータの集計に使用されるメトリックや演算子を制御するための、一連のドロップダウンリストがあります。「変更を表示更新する」をクリックすると、新しいグラフが描画されます。
フィルタリングでは、ビューの現在のフィールドの外部にあるデータが、「MPI タイムライン」タブおよび「MPI グラフ」タブに表示されるデータセットから削除されます。フィルタを適用するには、「フィルタ」ボタンをクリックします。フィルタの戻るボタンは最後に適用したフィルタを取り消す場合に使用し、フィルタの進むボタンはフィルタを再適用する場合に使用します。
また、「MPI グラフコントロール」タブを使用して、「MPI グラフ」タブでの選択に関する詳細を表示することもできます。
「概要」タブには、選択した関数やロードオブジェクトについて記録されたすべてのメトリックス (値と百分率)、および選択した関数やロードオブジェクトについての情報が表示されます。「概要」タブは、任意のタブで新しく関数やロードオブジェクトを選択するたびに更新されます。
「タイムラインの詳細」タブには、イベントタイプ、リーフ関数、LWP ID、スレッド ID、CPU ID などの、「タイムライン」タブで選択されているイベントの詳細データが表示されます。データパネルの下には、呼び出しスタックが表示されます。呼び出しスタック内の各フレームのプログラムカウンタ (PC) は、関数およびオフセットとして表示されます。イベントマーカーの関数に使用されるカラーコードは、PC の左に表示されます。呼び出しスタック内の関数をクリックすると、その関数は選択された関数になるため、「関数」タブなどのメインのアナライザタブでも選択されます。呼び出しスタック内の関数をダブルクリックすると、タイムラインの関数に使用される色を変更できる、関数のカラーチューザが起動されます。
「タイムライン」タブの標本バーで標本が選択されると、「タイムラインの詳細」タブに、その標本番号、標本の開始時刻と終了時刻、および各マイクロステートで費やされた時間とカラーコードを含むマイクロステートが表示されます。
「スレッド」タブでチャート表示を選択すると、「スレッドチャートコントロール」タブが表示されます。
デフォルトでは、きわめて高い CPU 時間を使用したスレッドの検出に役立つ「ロードインバランス」チャートが表示されます。異なる種類のチャートを表示するには、右側の「スレッドチャートコントロール」タブで「チャート名」を選択し、「変更を表示更新する」をクリックします。
「ロードインバランス」チャートでは、不均一なスレッド読み込みのために失われた実際の時間の量 (秒とパーセントで表されます) が「詳細」領域に表示されます。スレッドが完全に均一化されていたとしたら、これらの値に近いパフォーマンス向上が見込まれます。負荷の高いスレッドによって実行されているタスクをより短期間のタスクに分け、使用可能なスレッドに分散させることによって、より優れた負荷分散が達成される可能性があります。
「スレッドチャートコントロール」タブを使用すると、ナビゲーションバーにある「上へ」および「下へ」ボタンをクリックすることによって、チャート内の各スレッドに移動できます。スレッドを選択すると、そのメトリック情報が「スレッドチャートコントロール」タブの「詳細」領域に表示されます。
ナビゲーションバーにある「中央」ボタンをクリックすると、ロードインバランスのメトリックスを「詳細」領域に再表示できます。
「ロック競合」チャートでは、スレッド間の同期のためにどれだけの時間が失われたかや、どのスレッドでほかのスレッドより多くの時間が失われたかを確認するために役立つ、スレッド間の同期待ち時間の分布が表示されます。
「リーク」タブには、「リーク一覧」タブ内で選択したリークまたは割り当ての詳細データが表示されます。「リーク」タブのデータパネルの下には、選択したリークまたは割り当てが検出されたときの呼び出しスタックが表示されます。呼び出しスタック内の関数をクリックすると、その関数が選択されます。
「競合の詳細」タブには、「競合」タブ内で選択したデータ競合の詳細データが表示されます。詳細は、『Oracle Solaris Studio 12.3: スレッドアナライザユーザーズガイド』を参照してください。
「デッドロックの詳細」タブには、「デッドロック」タブ内で選択したデッドロックの詳細データが表示されます。詳細は、『Oracle Solaris Studio 12.3: スレッドアナライザユーザーズガイド』を参照してください。
データの表示は、「データ表示方法の設定」ダイアログボックスで制御できます。このダイアログボックスは、ツールバーの「データ表示方法の設定」ボタンをクリックするか、「表示」->「データ表示方法の設定」を選択することで、開くことができます。
「データ表示方法の設定」ダイアログボックスには、次のタブを持つタブ区画が含まれています。
メトリック
ソート
ソース/逆アセンブリ
書式
タイムライン
検索パス
パスマップ
タブ
このダイアログボックスの「OK」ボタンをクリックすると、現在のセッションに対して行った変更が適用され、ダイアログボックスが閉じます。「適用」ボタンをクリックすると、現在のセッションに対して、変更が適用されますが、ダイアログボックスは開いたままなので、変更を続行できます。
「保存」ボタンにより、表示されているタブや、独自に定義されたすべてのメモリーオブジェクトを含む現在の設定が、ホームディレクトリまたは現在の作業ディレクトリ内の .er.rc ファイルに格納されます。設定を保存することにより、変更は、現在のセッションに加えて、将来のアナライザのセッションにも適用されます。
注 - .er.rc ファイルは、アナライザ、er_print ユーティリティー、および er_src ユーティリティーのデフォルト設定を指定します。「データの設定」ダイアログボックスで変更を保存すると、.er.rc ファイルが更新され、3 つすべてのユーティリティーの出力に影響します。.er.rc ファイルについての詳細は、「アナライザのデフォルト設定」を参照してください。
「メトリック」タブでは、「関数」、「呼び出し元-呼び出し先」、「ソース」、「逆アセンブリ」などのほとんどのアナライザタブに表示されているメトリックスを選択できます。一部のメトリックスは選択した時間またはパーセンテージで表示できるのに対して、その他のメトリックスは値として表示されます。メトリックスの一覧には、読み込まれたいずれかの実験で使用可能なすべてのメトリックスが含まれます。
メトリックスごとに、時間とパーセンテージ、または値のチェックボックスが表示されます。アナライザで表示するメトリックスの種類のチェックボックスを選択します。特定の列のすべてのメトリックスを選択または選択解除する場合は、ダイアログボックスのいちばん下の行にあるチェックボックスを選択してから、「すべてのメトリックに適用」ボタンをクリックします。
注 - 表示することを選択できるのは、排他的メトリックスと包括的メトリックスだけです。属性メトリックスは、排他的メトリックまたは包括的メトリックのどちらかが表示されている場合は、常に「呼び出しツリー」タブに表示されます。
「ソート」タブには、メトリックスが表示される順序と、ソート基準のメトリックスが表示されます。ソートに使用するメトリックをダブルクリックし、「上へ移動」および「下へ移動」ボタンを使用してメトリックスの順序を変更します。ここで行う選択によって、アナライザのデータタブでのメトリックスのデフォルトの表示方法が決定されます。データタブを表示している間は、ソートに使用するメトリックの列見出しをクリックすることによってソート順序を変更できます。列見出しをドラッグすることによって、メトリックスの列の順序を変更できます。
「ソース/逆アセンブリ」タブには、次に示すような、表示情報を選択するために使用できるチェックボックスのリストが表示されます。
「ソース」および「逆アセンブリ」タブに表示されるコンパイラのコメント。
「ソース」および「逆アセンブリ」タブで重要な行を強調表示するためのしきい値。
強調表示のしきい値は、ソースまたは逆アセンブリが表示されているファイル内のいずれかの行に帰属する最大のメトリック値のパーセンテージです。このしきい値は、各メトリックに独立して適用されます。
「逆アセンブリ」タブでのソースコードの表示。
「逆アセンブリ」タブでソースコードを表示した場合は、コンパイラのコメントも表示されます。
「逆アセンブリ」タブでのソース行のメトリックス。
逆アセンブリリストでソース行のメトリックスを表示した場合、「検索」ツールはソース行だけでなく、逆アセンブリの行でも高メトリックス項目を検索します。逆アセンブリの行での高メトリック項目の検索を制限する場合は、「ソース行のメトリック」チェックボックスをオフにします。
「逆アセンブリ」タブでの命令の 16 進数表示。
「書式」タブでは、C++ 関数名と Java メソッド名に、長い形式、短い形式、または符号化された形式のいずれかを使用することを選択できます。符号化された関数名は、コンパイラの最適化を使用しているときに作成された、コンパイラで生成された名前です。この名前は、長い形式または短い形式の関数名を使用すると、アナライザによって「復号化」されます。
「 関数名に SO 名を付加 」チェックボックスをオンにすると、その関数またはメソッドを含んでいる共有オブジェクトの名前が関数名またはメソッド名に付加されます。
「実験を比較」オプションを選択した場合は、複数の実験を読み込んだときに、実験のデータが個別の列に表示されます。デフォルトでは、複数の実験が読み込まれると、データは集計されます。詳細は、「実験の比較」を参照してください。
「書式」タブではまた、実験を表示するためのデフォルトモードを設定する「ユーザー」、「上級」、または「マシン」の表示モードも選択できます。ツールバーの「表示モード」リストを使用して、現在のビューを切り替えることができます。「表示モード」の設定は、Java 実験と OpenMP 実験のみのビューを制御します。
Java 実験の場合:
「ユーザー」表示モードでは、各メソッドが名前で示され、インタプリタされたメソッドと HotSpot でコンパイルされたメソッドのデータがともに集計されます。また、非ユーザー Java スレッドのデータも抑制されます。
「上級」表示モードでは、HotSpot でコンパイルされたメソッドがインタプリタされたメソッドから分離され、非ユーザー Java スレッドが表示されます。
「マシン」表示モードでは、インタプリタされた Java メソッドのデータが、解釈を実行している JVM マシンと対比して表示されるのに対して、Java HotSpot 仮想マシンでコンパイルされたメソッドのデータは指定されたメソッドに対して報告されます。すべてのスレッドが表示されます。
Java 実験の表示モードの詳細は、「Java プロファイリングの表示モード」を参照してください。
OpenMP 実験の場合:
「ユーザー」表示モードでは、スレーブスレッドがマスタースレッドから複製され、呼び出しスタックがマスタースレッドからのスレーブスレッドに対応しているかのように表示されます。呼び出しスタック内にある、OpenMP 実行時コード (libmtsk.so) からのフレームは抑制されます。OpenMP ランタイムが特定の操作を実行しているときは、<OMP-*> という形式の名前を持つ特殊関数が表示されます。
「上級」表示モードでは、マスタースレッドとスレーブスレッドが異なる方法で表示され、コンパイラで生成された関数が表示されます。呼び出しスタック内にある、libmtsk.so からのフレームは抑制されます。
「マシン」表示モードでは、すべてのスレッドのネイティブな呼び出しスタックと、コンパイラで生成されたアウトライン関数関数が表示されます。
OpenMP 実験の表示モードの詳細は、「OpenMP実行の概要 」を参照してください。
それ以外のすべての実験では、3 つのモードのすべてで同じデータが表示されます。
「データ表示方法の設定」ダイアログボックスの「タイムライン」タブでは、メインのアナライザパネルの「タイムライン」タブに表示される情報を選択できます。表示されるイベント固有のデータの種類、スレッド、LWP、CPU、または実験に関するイベント固有のデータの表示、ルートまたはリーフでの呼び出しスタックの表示の配置、および表示される呼び出しスタックのレベルの数を選択できます。また、イベント頻度チャートやイベント状態チャートを選択することもできます。これについては、「「タイムライン」タブ」で説明されています。
「タイムライン」タブの詳細は、「データ表示方法の設定」ダイアログボックスの「ヘルプ」ボタンをクリックしてください。
「検索パス」タブでは、「ソース」および「逆アセンブリ」タブで注釈付きソースデータを表示するために、読み込まれた実験に関連付けられたソースおよびオブジェクトファイルの検索に使用されるパスを設定します。この検索パスはまた、システム上の Java Runtime Environment の .jar ファイルを検索するためにも使用されます。特殊なディレクトリ名 $expts は、読み込まれた順序での、現在の一連の実験を指します。$expts を検索すると、親実験のみが検索され、派生実験は検査されません。
デフォルトでは、検索パスは $expts および . (現在のディレクトリ) に設定されます。パスを入力または参照し、「追加」をクリックすることによって、検索するほかのパスを追加できます。リスト内のパスを編集するには、パスを選択し、それを「パス」フィールド内で編集して「更新」をクリックします。検索順序を変更するには、リスト内のパスを選択し、「上へ移動」/「下へ移動」ボタンをクリックします。
検索パスの使用方法の詳細は、「ツールがソースコードを見つけるしくみ」を参照してください。
「パスマップ」タブを使用すると、アナライザでソースファイルを検索しやすくするために、ファイルパスの先頭の部分をある場所から別の場所にマッピングできます。パスマップは、記録された元の場所から移動されている実験、またはネットワーク上のファイルへの別のパスを持つ別のマシンから表示されている実験に対して有効です。ソースを見つけることができた場合、アナライザは、注釈付きデータを「ソース」および「逆アセンブリ」タブに表示できます。
たとえば、実験に /a/b/c/d/sourcefile として指定されたパスが含まれており、soucefile が現在 /x 内に配置されている場合は、「パスマップ」タブを使用して /a/b/c/d/ を /x/ にマッピングできます。複数のパスマップを指定でき、各パスマップがファイルを検索するために試行されます。
パスマップの使用方法の詳細は、「ツールがソースコードを見つけるしくみ」を参照してください。
「データ表示方法の設定」ダイアログボックスの「タブ」タブを使用すると、「アナライザ」ウィンドウに表示するタブを選択できます。このダイアログボックスの「保存」ボタンをクリックすると、選択項目が .er.rc ファイルにデフォルトとして保存されます。
「タブ」タブには、現在の実験に適用できるタブが一覧表示されます。標準のタブは左の列に表示されます。インデックスオブジェクトタブが中央の列に一覧表示され、定義されたメモリーオブジェクトタブが右の列に一覧表示されます。
左の列で各チェックボックスをクリックし、標準のタブを表示用に選択または選択解除します。
中央の列でチェックボックスをクリックして、インデックスオブジェクトタブを表示のために選択または選択解除します。事前に定義されているインデックスオブジェクトタブは、「スレッド」、「CPU」、「標本」、および「秒」です。別のインデックスオブジェクト用のタブを追加するには、「「カスタムインデックス」タブを追加」ボタンをクリックして「インデックスオブジェクトを追加」ダイアログボックスを開きます。「オブジェクト名」テキストボックスに、新しいオブジェクトの名前を入力します。「式」テキストボックスに、記録された物理アドレスまたは仮想アドレスをオブジェクトインデックスへマップするために使用するインデックス式を入力します。インデックス式の規則については、「indxobj_define indxobj_type index_exp」を参照してください。
右の列で各チェックボックスをクリックし、メモリーオブジェクトタブを表示用に選択または選択解除します。実験にハードウェアカウンタオーバーフローのプロファイリングデータが含まれている場合、これらのタブにはデータが含まれます。メモリーオブジェクトは、キャッシュ行、ページ、メモリーバンクなどの、メモリーサブシステム内のコンポーネントを表します。メモリーオブジェクトは、仮想ページおよび物理ページについて 8K バイト、64K バイト、512K バイト、および 4M バイトのサイズで事前定義されています。カスタムオブジェクトを追加するには、「カスタムオブジェクトを追加」ボタンをクリックして「メモリーオブジェクトを追加」ダイアログボックスを開きます。「オブジェクト名」テキストボックスに、新しいカスタムメモリーオブジェクトの名前を入力します。「式」テキストボックスに、記録された物理アドレスまたは仮想アドレスをオブジェクトインデックスへマップするために使用するインデックス式を入力します。インデックス式の規則については、「mobj_define mobj_type index_exp」を参照してください。
カスタムインデックスオブジェクトまたはメモリーオブジェクトを追加したときに、そのオブジェクトのチェックボックスが「タブ」タブに追加され、デフォルトで選択されます。