JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris Studio 12.2: パフォーマンスアナライザ
search filter icon
search icon

ドキュメントの情報

はじめに

1.  パフォーマンスアナライザの概要

2.  パフォーマンスデータ

3.  パフォーマンスデータの収集

4.  パフォーマンスアナライザツール

パフォーマンスアナライザの起動

アナライザのコマンドオプション

Java オプション

-j | --jdkhome jvm-path

-J jvm-options

制御オプション

-f | --fontsize size

-v | --verbose

情報オプション

-V | --version

-? | --h | --help

アナライザのデフォルト設定

パフォーマンスアナライザ GUI

メニューバー

ツールバー

アナライザデータ表示

データ表示、左の区画

「MPI タイムライン」タブ

「MPI グラフ」タブ

「競合」タブ

「デッドロック」タブ

「関数」タブ

「呼び出し元 - 呼び出し先」タブ

「呼び出しツリー」タブ

「デュアルソース」タブ

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

「ソース」タブ

「行」タブ

「逆アセンブリ」タブ

「PC」タブ

「OpenMP 並列領域」タブ

「OpenMP タスク」タブ

「タイムライン」タブ

「リーク一覧」タブ

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

「データレイアウト」タブ

「命令頻度」タブ

「統計」タブ

「実験」タブ

インデックスタブ

メモリーオブジェクトのタブ

データ表示、右の区画

「MPI タイムラインコントロール」タブ

「MPI グラフコントロール」タブ

「概要」タブ

「イベント」タブ

「リーク」タブ

「競合の詳細」タブ

「デッドロックの詳細」タブ

データ表示オプションの設定

「メトリックス」タブ

「ソート」タブ

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

「書式」タブ

「タイムライン」タブ

「検索パス」タブ

「パスマップ」タブ

「タブ」タブ

テキストとデータの検索

関数の表示と非表示

データのフィルタリング

「基本」タブ

実験の選択

標本の選択

スレッドの選択

LWP の選択

CPU の選択

「詳細」タブ

アナライザからの実験の記録

アナライザのデフォルト設定

.er.rc ファイルの設定

実験の比較

比較モードの有効化

5.   er_print コマンド行パフォーマンス解析ツール

6.  パフォーマンスアナライザとそのデータについて

7.  注釈付きソースと逆アセンブリデータについて

8.  実験の操作

9.  カーネルプロファイリング

索引

パフォーマンスアナライザ GUI

「アナライザ」ウィンドウは、メニューバー、ツールバー、および各種データ表示のためのタブを含む分割区画で構成されます。

メニューバー

メニューバーには、「ファイル」メニュー、「表示」メニュー、「タイムライン」メニュー、および「ヘルプ」メニューがあります。

「ファイル」メニューは、実験や実験グループを開く、追加する、ドロップする際に使用します。「ファイル」メニューでは、パフォーマンスアナライザ GUI を使って実験のデータを収集できます。パフォーマンスアナライザを使ってデータを収集する方法についての詳細は、「アナライザからの実験の記録」を参照してください。「ファイル」メニューから、新しいアナライザウィンドウを作成したり、アナライザに現在表示されているデータをファイルやプリンタに出力したりすることもできます。

「表示」メニューでは、実験データの表示方法を設定できます。

「タイムライン」メニューは、その名前が示すとおり、タイムライン表示の操作を支援します。これについては、「アナライザデータ表示」で説明します。

「ヘルプ」メニューは、パフォーマンスアナライザのオンラインヘルプを提供します。これには、新機能の概要を示し、クイックリファレンスとショートカットの説明、およびトラブルシューティングの説明が含まれます。

ツールバー

ツールバーは、ショートカットとして一連のアイコンを提供します。ツールバーには各タブ内のテキストまたは強調表示された行を見つける際に役立つ検索機能が含まれています。検索機能の詳細については、「テキストとデータの検索」を参照してください。

アナライザデータ表示

パフォーマンスアナライザは、分割ウィンドウを使って、表示されるデータを 2 つの区画に分割します。各区画にはタブが付けられており、同じ実験や実験グループに対して異なるデータ表示を選択できます。

データ表示、左の区画

左の区画には、主要なアナライザ表示のタブが次の順序で表示されます。

ターゲットを指定せずにアナライザを起動すると、開く実験を入力するプロンプトが表示されます。

デフォルトでは、表示可能な最初のタブが選択されます。表示されるタブは、読み込まれた実験内のデータに適用できるタブだけです。

実験を開いたときに「アナライザ」ウィンドウの左の区画にタブが表示されるかどうかは、アナライザを起動したときに読み込まれた .er.rc ファイル内の tabs 指令と、そのタブを実験内のデータに適用できるかどうかによって決定されます。「データ表示方法の設定」ダイアログボックスの「タブ」タブを (「「タブ」タブ」を参照) 使用すると、実験について表示するタブを選択できます。

「MPI タイムライン」タブ

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

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

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

MPI タイムラインの画像をプリンタまたは .jpg ファイルに出力できます。「ファイル」->「印刷」を選択し、「印刷」または「ファイル」を選択して、プリンタかファイル名を指定します。

「MPI グラフ」タブ

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

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

MPI グラフ画像をプリンタまたは .jpg ファイルに出力できます。「ファイル」->「印刷」を選択し、「印刷」または「ファイル」を選択して、プリンタかファイル名を指定します。

「競合」タブ

「競合」タブには、データ競合実験で検出されたすべてのデータ競合のリストが表示されます。詳細は、『Oracle Solaris Studio 12.2: スレッドアナライザユーザーズガイド』を参照してください。

「デッドロック」タブ

「デッドロック」タブには、デッドロック実験で検出されたデッドロックのリストが表示されます。詳細は、『Oracle Solaris Studio 12.2: スレッドアナライザユーザーズガイド』を参照してください。

「関数」タブ

「関数」タブには、関数とそのメトリックスが一覧表示されます。メトリックスは、実験で収集されたデータから得られます。メトリックスは、排他的メトリックスまたは包括的メトリックスのいずれかになります。排他的メトリックスは、その関数自体のみによる使用を表します。包括的メトリックスは、関数とその関数が呼び出したすべての関数による使用を表します。

収集されたそれぞれの種類のデータで使用できるメトリックスのリストは、collect(1) のマニュアルページを参照してください。表示されるのは、メトリックスがゼロ以外の関数だけです。

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

初めに表示されるメトリックスは、収集されたデータおよび各種 .er.rc ファイルから読み取られたデフォルト設定に基づいています。パフォーマンスアナライザを最初にインストールしたときのデフォルトは、次のようになります。

複数の種類のデータが収集された場合、各種類のデフォルトのメトリックスが表示されます。

表示されるメトリックスは、変更または再構成できます。詳細はオンラインヘルプを参照してください。

関数を検索するには、Find ツールを使用します。「検索」ツールの詳細については、「テキストとデータの検索」を参照してください。

単一の関数を選択するには、その関数をクリックします。

タブ内に隣接して表示された複数の関数を選択するには、グループの最初の関数を選択したあと、Shift キーを押したままグループの最後の関数をクリックします。

タブ内に表示された隣接していない複数の関数を選択するには、グループの最初の関数を選択したあと、Ctrl キーを押したまま、追加する関数を個々にクリックして選択します。

ツールバーの「フィルタ句を構成」ボタンをクリックすると、「データをフィルタ」ダイアログボックスが開き、その中で「詳細」タブが選択され、「フィルタ句」テキストボックスに「関数」タブで選択された 1 つまたは複数の項目を反映したフィルタ句が読み込まれます。

「関数」タブを右クリックして、コンテキストメニューを開き、選択した関数に対して定義済みフィルタを設定できます。コンテキストメニューには次の項目があります。

いずれかのオプションを選択すると、「データをフィルタ」ダイアログボックスが開き、その中で「詳細」タブが選択され、「フィルタ句」テキストボックスに選択したフィルタを実装するフィルタ式が表示されます。「設定」をクリックし、「適用」をクリックすると、データがフィルタされます。詳細は、「データのフィルタリング」を参照してください。

「呼び出し元 - 呼び出し先」タブ

「呼び出し元 - 呼び出し先」タブには、コード内の関数間の呼び出し関係がパフォーマンスメトリックスとともに表示されます。「呼び出し元 - 呼び出し先」タブでは、1 度に呼び出し 1 つずつ、呼び出しスタックフラグメントが構築されるので、コード分岐のメトリックスを詳細に確認できます。

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

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

「呼び出し元」パネルまたは「呼び出し先」パネル上の関数をダブルクリックするか、関数を 1 つ選択し、「追加」ボタンをクリックすることにより、スタックフラグメントに呼び出しを追加できます。同様に、呼び出しスタックフラグメントの一番上または一番下の関数をダブルクリックするか、一番上か一番下の関数を選択し、「削除」をクリックすることにより、関数呼び出しを削除できます。この追加または削除は、コンテキストメニューからでも実行できます。関数を右クリックし、該当するコマンドを選択します。

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

「スタックフラグメント」パネルの上にある「戻る」ボタンと「次へ」ボタンを使用すると、呼び出しスタックフラグメントへの変更履歴間を移動することができます。

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

「呼び出し元 - 呼び出し先」タブ内を右クリックして、コンテキストメニューを開き、選択された関数に対して定義済みのフィルタを設定できます。コンテキストメニューには次の項目があります。

いずれかのオプションを選択すると、「データをフィルタ」ダイアログボックスが開き、「詳細」タブが選択され、「フィルタ句」テキストボックスに、「フィルタの設定」で選択したフィルタを実装するフィルタ式が表示されます。「設定」をクリックし、「適用」をクリックすると、データがフィルタされます。詳細は、「データのフィルタリング」を参照してください。

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

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

「呼び出しツリー」タブ

「呼び出しツリー」タブでは、プログラムの動的な呼び出しグラフがツリー表示されます。各関数はノードとして表示され、展開したり折りたたんだりできます。展開された関数ノードには、その関数によって行われる関数呼び出しがすべて表示され、加えて、それらの関数呼び出しのパフォーマンスメトリックスも表示されます。ノードを選択すると、右側の「概要」タブに、関数呼び出しのメトリックスとその呼び出し先が表示されます。属性メトリックスに対して提供される割合は、プログラムメトリックス全体の割合になります。ツリーのデフォルトルートは <Total> で、関数ではありませんが、プログラムの全関数のパフォーマンスメトリックスの 100% を表します。

「呼び出しツリー」タブでは、特定の呼び出しトレースまで掘り下げて、どのトレースがパフォーマンスに一番大きく影響しているかを探ることができます。高いメトリック値を探しながら、プログラムの構造内を移動できます。


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


「呼び出しツリー」タブを右クリックして、コンテキストメニューを開き、選択した関数に対して定義済みフィルタを設定できます。コンテキストメニューには次の項目があります。

いずれかのオプションを選択すると、「データをフィルタ」ダイアログボックスが開き、「詳細」タブが選択され、「フィルタ句」テキストボックスに、「フィルタの設定」で選択したフィルタを実装するフィルタ式が表示されます。「設定」をクリックし、「適用」をクリックすると、データがフィルタされます。詳細は、「データのフィルタリング」を参照してください。

「デュアルソース」タブ

「デュアルソース」タブには、選択したデータ競合またはデッドロックに関わる 2 つのソースコンテキストが表示されます。このタブは、データ競合検出またはデッドロック実験が読み込まれている場合にのみ表示されます。

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

「ソース/逆アセンブリ」タブでは、上の区画に注釈付きソースが、下の区画には注釈付き逆アセンブリが表示されます。このタブはデフォルトでは表示されません。「ソース/逆アセンブリ」タブを追加するには、「表示」メニューの「データ表示方法の設定」オプションを使用します。

「ソース」タブ

「ソース」タブには、選択された関数のソースコードが利用可能である場合に、そのソースコードを含むファイルが、各ソース行の左側の列にパフォーマンスメトリックスの注釈付きで表示されます。高いメトリックスはオレンジで表示され、リソース利用率のホット領域であるソース行が示されます。また、オレンジのナビゲーションマーカーが、各ホットソース行の右側のスクロールバーの隣のマージン内に表示されます。ホットしきい値を下回るゼロ以外のメトリックスは強調表示されませんが、黄色のナビゲーションマーカーが表示されます。メトリックス付きのソース行にすばやく移動するには、右側マージン内のオレンジと黄色のマーカーをクリックすると、メトリックス付きの行にジャンプできます。また、メトリックス自体を右クリックし、「次のホットライン」や「次のゼロ以外のメトリックライン」などのオプションを選択して、メトリックス付きの次の行にジャンプすることができます。

強調表示メトリックスのしきい値は、「データ表示方法の設定」ダイアログボックスの「ソース/逆アセンブリ」タブで設定できます。デフォルトのしきい値は、.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」タブには、プログラムカウンタ (Program Counter、PC) とそのメトリックスのリストが表示されます。PC には、呼び出し元の関数、およびその関数内のオフセットがラベルとして表示されます。関数が表示されないロードオブジェクトにある関数の PC は、ロードオブジェクト別に「PC」表示に 1 つのエントリにまとめて表示されます。「PC」タブで行を選択すると、その PC の全メトリックスが「概要」タブに表示されます。「PC」タブで行を選択してから「ソース」タブか「逆アセンブリ」タブを選択すると、適切な行に表示が位置付けられます。

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

「OpenMP 並列領域」タブ

「OpenMP 並列領域」タブは、OpenMP 3.0 のコレクタで記録された実験に対してのみ適用できます。このタブには、プログラムの実行中に発生したすべての並列領域が、同じプロファイルデータから計算されたメトリック値とともに一覧表示されます。現在の並列領域に対しては、排他的メトリックスが計算されます。包括的メトリックスには、入れ子並列性が反映されます。これらは、現在の並列領域、およびこれが作成された親並列領域、そしてさらに再帰的に、プログラムの直列実行を表す (すべての並列領域の外側の) 最上位の暗黙 OpenMP 並列領域にまで属します。プログラムに入れ子の並列領域がない場合、排他的メトリックスと包括的メトリックスは同じ値を持ちます。

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

このタブはナビゲーションに便利です。OpenMP 待ち時間が最大値の並列領域など、興味のある項目を選択して、そのソースを解析したり、これに基づいてフィルタを作成および適用して、「関数リスト」、「タイムライン」、「スレッド」などのほかのタブを使用して、ほかのプログラムオブジェクトによってどのように表されるかを解析したりできます。

「OpenMP タスク」タブ

「OpenMP タスク」タブには、OpenMP タスクとそれぞれのメトリックスの一覧が表示されます。このタブは、OpenMP 3.0 のコレクタで記録された実験に対してのみ適用できます。

「OpenMP タスク」タブは、Oracle Solaris Studio でコンパイルした OpenMP タスクを使用するプログラムについて、OpenMP 3.0 コレクタで記録されている実験にのみ適用されます。

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

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

このタブはナビゲーションに便利です。OpenMP 待ち時間が最大値のタスクなど、興味のある項目を選択して、そのソースを解析したり、これに基づいてフィルタを作成および適用して、「関数リスト」、「タイムライン」、「スレッド」などのほかのタブを使用して、ほかのプログラムオブジェクトによってどのように表されるかを解析したりできます。

「タイムライン」タブ

「タイムライン」タブには、コレクタによって記録されたイベントおよび標本ポイントのグラフが、時間の関数として表示されます。データは、水平バーに表示されます。それぞれの実験について、標本データに対応するバーと、各 LWP に対応する一連のバーが表示されます。LWP のセットは、記録される各データ型ごとに 1 つのバーで構成されます。時間ベースのプロファイリング、ハードウェアカウンタオーバーフローのプロファイリング、同期トレース、ヒープトレース、および MPI トレースなどがあります。

標本データを含むバーは、各標本の各マイクロステートで費やされた時間の色分け表現です。標本ポイントのデータは、そのポイントと前のポイントの間で費やされた時間を表すため、標本は時間として表示されます。標本をクリックすると、その標本のデータが「イベント」タブに表示されます。

プロファイルデータまたはトレースデータのバーには、記録される各イベントのイベントマーカーが表示されます。イベントマーカーは、イベントとともに記録された呼び出しスタックの色分けされた表現 (色付きの長方形が積み重ねられたもの) からなります。イベントマーカー内の色付き長方形をクリックすると、対応する関数と PC が選択され、そのイベントと関数のデータが「イベント」タブに表示されます。選択された項目は「イベント」タブと「凡例」タブの両方で強調表示され、「ソース」タブまたは「逆アセンブリ」タブを選択すると、呼び出しスタック内のそのフレームに対応する行にタブ表示が位置付けられます。

ある種のデータでは、イベントが重なって見えない場合があります。まったく同じ位置に複数のイベントが表示される場合は、常に 1 つだけが描画されます。1 - 2 ピクセル以内に複数のイベントがある場合、すべてが描画されますが、見た目には判別できない可能性があります。いずれの場合も、描画されたイベントの下に小さな灰色のティックマークが表示され、重なっていることが示されます。

「データ表示方法の設定」ダイアログボックスの「タイムライン」タブでは、表示するイベント固有データの種類を変更したり、スレッド、LWP、または CPU に関するイベント固有データの表示を選択したり、ルートまたはリーフでの呼び出しスタックの表示の配置を選択したり、表示する呼び出しスタックのレベル数を選択したりできます。

「タイムライン」タブに表示するイベント固有データの種類や、選択された関数にマップする色も変更できます。「タイムライン」タブの使い方の詳細は、オンラインヘルプを参照してください。

「リーク一覧」タブ

「リーク一覧」タブには 2 つの行が表示され、上の行はリークを表し、下の行は割り当てを示します。それぞれには、「タイムライン」タブで表示されているものと同じような呼び出しスタックが中央に表示され、その上にはリークまたは割り当てられたバイト数に比例するバーが、その下にはリークまたは割り当ての数に比例するバーが表示されます。

リークまたは割り当てを選択すると、選択されたリークや割り当てのデータが「リーク」タブに表示され、「タイムライン」タブの場合と同様に呼び出しスタックのフレームが選択されます。

「リーク一覧」タブを表示するには、「データ表示方法の設定」ダイアログボックスの「タブ」タブ (「「タブ」タブ」を参照) で、そのタブを選択します。「リーク一覧」タブを表示可能にできるのは、1 つ以上の読み込まれた実験の中に、ヒープトレースデータが含まれている場合だけです。

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

「データオブジェクト」タブには、データオブジェクトおよびそのメトリックスが一覧表示されます。このタブは、ハードウェアカウンタオーバーフロープロファイリングの拡張版であるデータ空間プロファイリングを含む実験にのみ使用されます。詳細は、「データ空間プロファイリング」を参照してください。

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

このタブには、プログラムのさまざまなデータ構造体と変数に対するハードウェアカウンタのメモリー演算のメトリックスが示されます。

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

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

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

ツールバーの「フィルタ句を構成」ボタンをクリックすると、「フィルタ」ダイアログボックスが開き、その中で「詳細」タブが選択され、「フィルタ句」テキストボックスに「データオブジェクト」タブで選択された項目を反映したフィルタ句が読み込まれます。

「データレイアウト」タブ

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

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

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

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

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

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

ツールバーの「フィルタ句を構成」ボタンをクリックすると、「フィルタ」ダイアログボックスが開き、その中で「詳細」タブが選択され、「フィルタ句」テキストボックスに「データレイアウト」タブで選択された項目を反映したフィルタ句が読み込まれます。

「命令頻度」タブ

「命令頻度」タブには、カウントデータ実験で各種類の命令が実行された頻度の概要が表示されます。また、ロード、ストア、浮動小数点の各命令の実行頻度に関するデータも示します。無効になった命令や、分岐遅延スロット内の命令に関する情報も表示されます。

「統計」タブ

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

「実験」タブ

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

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

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

下のパネルには、アナライザセッションから出力されたエラーメッセージと警告メッセージが表示されます。

インデックスタブ

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

事前定義されているいくつかのインデックスタブは、スレッド、CPU、標本、および秒です。カスタムインデックスオブジェクトを定義するには、「データ表示方法の設定」ダイアログボックスで「「カスタムインデックス」タブを追加」ボタンをクリックし、「インデックスオブジェクトを追加」ダイアログボックスを開きます。インデックスオブジェクトは、.er.rc ファイルで indxobj_define 指令を使用して定義することもできます (indxobj_define indxobj_type index_exp を参照)。

各インデックスタブの上部のラジオボタンを使用して、テキスト表示とグラフィカル表示を切り替えることができます。テキスト表示は「データオブジェクト」タブ内の表示に似ており、同じメトリックの設定を使用します。グラフィカル表示では、各インデックスオブジェクトの相対値が、データソートメトリックによってソートされた各メトリックごとの個別のヒストグラムを使用してグラフィカル表示されます。

ツールバーの「データをフィルタ」ボタンをクリックすると、「データをフィルタ」ダイアログボックスが開きます。「詳細」タブをクリックすると、「インデックスオブジェクト」タブで選択された項目を反映したフィルタ句が「フィルタ句」に読み込まれます。

メモリーオブジェクトのタブ

各メモリーオブジェクトのタブには、ページなど、さまざまなメモリーオブジェクトに帰属するデータ空間メトリックスのメトリック値が表示されます。1 つ以上の読み込まれた実験にデータ空間プロファイルが含まれている場合は、「データ表示方法の設定」ダイアログボックスの「タブ」タブで、タブを表示するメモリーオブジェクトを選択できます。メモリーオブジェクトタブは、いくつでも表示できます。

さまざまなメモリーオブジェクトタブが事前定義されています。カスタムメモリーオブジェクトを定義するには、「データ表示方法の設定」ダイアログボックスで「カスタムオブジェクトを追加」ボタンをクリックし、「メモリーオブジェクトを追加」ダイアログボックスを開きます。メモリーオブジェクトは、.er.rc ファイルで mobj_define 指令を使用して定義することもできます (mobj_define mobj_type index_exp を参照)。

各メモリーオブジェクトタブのラジオボタンを使用して、テキスト表示とグラフィカル表示を切り替えることができます。テキスト表示は「データオブジェクト」タブ内の表示に似ており、同じメトリックの設定を使用します。グラフィカル表示では、各メモリーオブジェクトの相対値が、データソートメトリックによってソートされた各メトリックごとの個別のヒストグラムを使用してグラフィカル表示されます。

ツールバーの「フィルタ句を構成」ボタンをクリックすると、「フィルタ」ダイアログボックスが開き、その中で「詳細」タブが選択され、「フィルタ句」テキストボックスにメモリーオブジェクトタブで選択された項目を反映したフィルタ句が読み込まれます。

データ表示、右の区画

右の区画には、「MPI タイムラインコントロール」タブ、「MPI グラフコントロール」タブ、「概要」タブ、「イベント」タブ、「競合の詳細」タブ、「デッドロックの詳細」タブ、および「リーク」タブがあります。デフォルトでは、「概要」タブが表示されます。

「MPI タイムラインコントロール」タブ

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

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

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

また、「MPI タイムラインコントロール」タブを使用して、「MPI タイムライン」タブでの機能やメッセージの選択に関する詳細を表示することもできます。

「MPI グラフコントロール」タブ

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

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

また、「MPI グラフコントロール」タブを使用して、「MPI グラフ」タブでの選択に関する詳細を表示することもできます。

「概要」タブ

「概要」タブには、選択した関数やロードオブジェクトについて記録されたすべてのメトリックス (値と百分率)、および選択した関数やロードオブジェクトについての情報が表示されます。「概要」タブは、任意のタブで新しく関数やロードオブジェクトを選択するたびに更新されます。

「イベント」タブ

「イベント」タブには、イベントタイプ、リーフ関数、LWP ID、スレッド ID、および CPU ID など、「タイムライン」タブで選択されたイベントの詳細なデータが表示されます。データパネルの下に、スタック内の関数ごとに色分けされた呼び出しスタックが表示されます。呼び出しスタック内の関数をクリックすると、その関数が選択されます。

「タイムライン」タブで標本を選択すると、その標本番号、標本の開始時間と終了時間、および各マイクロステートで費やされた時間を示す色別のマイクロステートが「イベント」タブに表示されます。

「リーク」タブ

「リーク」タブには、「リーク一覧」タブ内で選択したリークまたは割り当ての詳細データが表示されます。「リーク」タブのデータパネルの下には、選択したリークまたは割り当てが検出されたときの呼び出しスタックが表示されます。呼び出しスタック内の関数をクリックすると、その関数が選択されます。

「競合の詳細」タブ

「競合の詳細」タブには、「競合」タブ内で選択したデータ競合の詳細データが表示されます。詳細は、『Oracle Solaris Studio 12.2: スレッドアナライザユーザーズガイド』を参照してください。

「デッドロックの詳細」タブ

「デッドロックの詳細」タブには、「デッドロック」タブ内で選択したデッドロックの詳細データが表示されます。詳細は、『Oracle Solaris Studio 12.2: スレッドアナライザユーザーズガイド』を参照してください。

データ表示オプションの設定

データの表示は、「データ表示方法の設定」ダイアログボックスで制御できます。このダイアログボックスは、ツールバーの「データ表示方法の設定」ボタンをクリックするか、「表示」->「データ表示方法の設定」を選択することで、開くことができます。

「データ表示方法の設定」ダイアログボックスには、次のタブを持つタブ区画が含まれています。

このダイアログボックスの「OK」ボタンをクリックすると、現在のセッションに対して行った変更が適用され、ダイアログボックスが閉じます。「適用」ボタンをクリックすると、現在のセッションに対して、変更が適用されますが、ダイアログボックスは開いたままなので、変更を続行できます。

「保存」ボタンをクリックすると、カスタム定義されたメモリーオブジェクトを含む現在の設定が、ホームディレクトリまたは現在の作業ディレクトリ内の .er.rc ファイルに保存されます。設定を保存することにより、変更は、現在のセッションに加えて、将来のアナライザのセッションにも適用されます。


注 - .er.rc ファイルは、アナライザ、er_print ユーティリティー、および er_src ユーティリティーのデフォルト設定を指定します。「データの設定」ダイアログボックスで変更を保存すると、.er.rc ファイルが更新され、3 つすべてのユーティリティーの出力に影響します。.er.rc ファイルについての詳細は、「アナライザのデフォルト設定」を参照してください。


「メトリックス」タブ

「メトリックス」タブには、使用できるすべてのメトリックスが表示されます。各メトリックの 1 つ以上の列には、メトリックの種類に応じて「時間」、「」、および「%」というラベルの付いたチェックボックスが表示されます。別の方法として、個々のメトリックスを設定する代わりに、ダイアログボックスの下部の行にある複数のチェックボックスをオンまたはオフにしてから「すべてのメトリックスに適用」ボタンをクリックすることにより、すべてのメトリックスを一度に設定できます。

「ソート」タブ

「ソート」タブには、メトリックスが表示される順序と、ソート基準のメトリックスが表示されます。

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

「ソース/逆アセンブリ」タブには、次のような表示情報を選択するためのチェックボックスのリストが表示されます。

「書式」タブ

「書式」タブでは、C++ 関数名と Java メソッド名に、長い形式、短い形式、または符号化された形式のいずれかを使用することを選択できます。「関数名に SO 名を付加」チェックボックスをオンにすると、その関数またはメソッドを含んでいる共有オブジェクトの名前が関数名またはメソッド名に付加されます。

また、「書式」タブでは、ユーザー上級マシンのいずれかの表示モードも選択できます。「表示モード」の設定は、Java 実験と OpenMP 実験の処理を制御します。

Java 実験の場合:

OpenMP 実験の場合:

それ以外のすべての実験では、3 つのモードのすべてで同じデータが表示されます。

「タイムライン」タブ

「タイムライン」タブでは、表示するイベント固有のデータの種類を選択したり、スレッド、LWP、または CPU に関するイベント固有のデータを表示したり、ルートまたはリーフでの呼び出しスタックの表示の配置を選択したり、表示する呼び出しスタックのレベル数を選択することができます。

「検索パス」タブ

「パスを検索」タブでは、ソースおよびオブジェクトファイルを検索するためのディレクトリリストを管理できます。特別な名前「$expts」は読み込まれている実験を参照しており、ほかのすべての名前はファイルシステム内のパスを示しているはずです。

「パスマップ」タブ

「パスマップ」タブでは、ファイルパスの先頭部分を別の位置にマップできます。接頭辞の組のセット、つまり元の接頭辞と新しい接頭辞を設定できます。そのあと、パスは元の接頭辞から新しい接頭辞にマップされます。パスマップは複数指定でき、ファイルの検索時にはそれぞれが順番に試されます。

「タブ」タブ

「データ表示方法の設定」ダイアログボックスの「タブ」タブを使用すると、「アナライザ」ウィンドウに表示するタブを選択できます。

「タブ」タブには、現在の実験に適用できるタブが一覧表示されます。標準のタブは左の列に表示されます。インデックスタブが中央の列に表示され、定義されたメモリータブが右の列に表示されます。

左の列で各チェックボックスをクリックし、標準のタブを表示用に選択または選択解除します。

中央の列で各チェックボックスをクリックし、インデックスタブを表示用に選択または選択解除します。事前定義されているインデックスタブは、スレッド、CPU、標本、および秒です。別のインデックスオブジェクト用のタブを追加するには、「「カスタムインデックス」タブを追加」ボタンをクリックして「インデックスオブジェクトを追加」ダイアログボックスを開きます。「オブジェクト名」テキストボックスに、新しいオブジェクトの名前を入力します。「式」テキストボックスに、記録された物理アドレスまたは仮想アドレスをオブジェクトインデックスへマップするために使用するインデックス式を入力します。インデックス式の規則については、indxobj_define indxobj_type index_exp を参照してください。

右の列で各チェックボックスをクリックし、メモリーオブジェクトタブを表示用に選択または選択解除します。カスタムオブジェクトを追加するには、「カスタムオブジェクトを追加」ボタンをクリックして「メモリーオブジェクトを追加」ダイアログボックスを開きます。「オブジェクト名」テキストボックスに、新しいカスタムメモリーオブジェクトの名前を入力します。「式」テキストボックスに、記録された物理アドレスまたは仮想アドレスをオブジェクトインデックスへマップするために使用するインデックス式を入力します。インデックス式の規則については、mobj_define mobj_type index_exp を参照してください。

カスタムインデックスオブジェクトまたはメモリーオブジェクトを追加したときに、そのオブジェクトのチェックボックスが「タブ」タブに追加され、デフォルトで選択されます。