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

ドキュメントの情報

はじめに

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

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

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

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

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

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

データ収集の動作

実験の形式

archives ディレクトリ

サブ実験

動的関数

Java 実験

実験の記録

collect 実験

dbx でプロセスを作成する実験

dbx による実行中のプロセスの実験

パフォーマンスメトリックの解釈

時間ベースのプロファイル

タイミングデータは統計データとして収集されます。

タイミングメトリックの比較

ハードウェアカウンタオーバーフローのプロファイリング

データ領域プロファイリングとメモリー領域プロファイリング

同期待ちトレース

ヒープトレース

MPI トレース

呼び出しスタックとプログラムの実行

シングルスレッド実行と関数呼び出し

共有オブジェクト間の関数の呼び出し

シグナル

トラップ

末尾呼び出しの最適化

明示的なマルチスレッド化

Java テクノロジーベースのソフトウェア実行の概要

Java 呼び出しスタックとマシン呼び出しスタック

時間ベースのプロファイリングとハードウェアカウンタオーバーフローのプロファイリング

Java プロファイリングの表示モード

Java プロファイリングデータのユーザー表示モード

Java プロファイリングデータの上級表示モード

Java プロファイリングデータのマシン表示モード

OpenMP実行の概要

OpenMP プロファイルデータのユーザー表示モード

擬似関数

ユーザーモード呼び出しスタック

OpenMP メトリック

OpenMP プロファイリングデータの上級表示モード

OpenMP プロファイリングデータのマシン表示モード

不完全なスタック展開

中間ファイル

プログラム構造へのアドレスのマッピング

プロセスイメージ

ロードオブジェクトと関数

別名を持つ関数

一意でない関数名

ストリップ済み共有ライブラリの静的関数

Fortran での代替エントリポイント

クローン生成関数

インライン関数

コンパイラ生成の本体関数

アウトライン関数

動的にコンパイルされる関数

<Unknown> 関数

OpenMP の特殊な関数

<JVM-System> 関数

<no Java callstack recorded> 関数

<Truncated-stack> 関数

<Total> 関数

ハードウェアカウンタオーバーフロープロファイルに関連する関数

インデックスオブジェクトへのパフォーマンスデータのマッピング

プログラムデータオブジェクトへのデータアドレスのマッピング

データオブジェクト記述子

<Total> データオブジェクト

<Scalars> データオブジェクト

<Unknown> データオブジェクトとその要素

メモリーオブジェクトへのパフォーマンスデータのマッピング

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

8.  実験の操作

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

索引

プログラムデータオブジェクトへのデータアドレスのマッピング

メモリー演算に対応するハードウェアカウンタイベントからの PC が、原因と思われるメモリー参照命令に正しくバックトラックするように処理されると、アナライザは、コンパイラからハードウェアプロファイルサポート情報内に提供された命令識別子と記述子を使用して、関連するプログラムデータオブジェクトを生成します。

データオブジェクトという用語は、ソースコードに記述されているプログラム定数、変数、配列、および構造体や共用体などの集合体のほか、別個の集合体要素を示すために使用します。データオブジェクトのタイプとそのサイズはソース言語によって異なります。多くのデータオブジェクトの名前は明示的にソースプログラム内で付けられますが、名前が付けられないものもあります。データオブジェクトの中には、ほかの単純なデータオブジェクトから生成または集計され、より複雑なデータオブジェクトの集合になるものもあります。

各データオブジェクトは、1 つのスコープに関連付けられています。スコープとは、そのオブジェクトが定義され、そのオブジェクトを参照できるソースプログラムの領域のことで、大域 (ロードオブジェクトなど)、特定のコンパイルユニット (オブジェクトファイル)、または関数のいずれかになります。同一のデータオブジェクトを異なるスコープで定義したり、特定のデータオブジェクトを異なるスコープで異なる方法で参照することができます。

バックトラッキングを有効にして収集された、メモリー操作に関するハードウェアカウンタイベントからのデータ派生メトリックは、関連するプログラムのデータオブジェクトタイプに属するものとされ、そのデータオブジェクトを含む集合体と、<Unknown><Scalars> などすべてのデータオブジェクトを含むと見なされる <Total> 擬似データオブジェクトに伝搬します。<Unknown> の各種サブタイプは、<Unknown> の集合体まで伝搬します。次の節では、<Total><Scalars>、および <Unknown> の各データオブジェクトについて説明します。

データオブジェクト記述子

データオブジェクトは、宣言された型と名前の組み合わせで記述します。単純なスカラーデータオブジェクト {int i} は、int 型の変数 i を記述しているのに対して、{const+pointer+int p} は、intp への定数ポインタを記述しています。型名のスペースは「_」(アンダースコア) に置き換えられ、名前の付いていないデータオブジェクトは「-」(ハイフン)、たとえば {double_precision_complex -} という名前で表されます。

集合体全体も同様に、foo_t 型の構造体の場合は {structure:foo_t} と表します。集合体の要素では、その要素のコンテナを追加指定する必要があります。たとえば、前述の foo_t 型の構造体のメンバーである int 型の i の場合は {structure:foo_t}.{int i} となります。集合体はそれ自体、(さらに大きい) 集合体の要素になることも可能で、対応する記述子は集合体記述子を連結したもの、最終的にはスカラー記述子になります。

完全修飾された記述子は、データオブジェクトを明確にするために必ずしも必要ではありませんが、データオブジェクトの識別を支援するために一般的な完全指定を示します。

<Total> データオブジェクト

<Total> データオブジェクトは、プログラムのデータオブジェクト全体を表すために使用される擬似的な構造です。あらゆるパフォーマンスメトリックは、異なるデータオブジェクト (およびそのオブジェクトが属する集合体) のメトリックとして加算されるほかに、<Total> という特別なデータオブジェクトに加算されます。このデータオブジェクトはデータオブジェクトリストの先頭に表示され、そのデータを使用してほかのデータオブジェクトのデータの概略を見ることができます。

<Scalars> データオブジェクト

集合体要素のパフォーマンスメトリックは、関連する集合体のメトリック値に加算されますが、すべてのスカラー定数および変数のパフォーマンスメトリックは擬似的な <Scalars> データオブジェクトのメトリック値にさらに加算されます。

<Unknown> データオブジェクトとその要素

さまざまな状況下で、特定のデータオブジェクトにイベントデータをマップできない場合があります。このような場合、データは <Unknown> という特別なデータオブジェクトと、次に説明するいずれかの要素にマップされます。