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.  パフォーマンスデータの収集

プログラムのコンパイルとリンク

ソースコードの情報

静的リンク

共有オブジェクトの処理

コンパイル時の最適化

Java プログラムのコンパイル

データ収集と解析のためのプログラムの準備

動的割り当てメモリーの利用

システムライブラリの使用

シグナルハンドラの使用

setuidsetgid の使用

データ収集のプログラム制御

C/C++ インタフェース

Fortran インタフェース

Java インタフェース

C/C++、Fortran、および Java API 関数

動的な関数とモジュール

collector_func_load()

collector_func_unload()

データ収集に関する制限事項

時間ベースのプロファイルに関する制限事項

時間プロファイルによる実行時のひずみと実行時間の拡大

トレースデータの収集に関する制限事項

トレースによる実行時のひずみと実行時間の拡大

ハードウェアカウンタオーバーフローのプロファイルに関する制限事項

ハードウェアカウンタオーバーフローのプロファイルによる実行時のひずみと実行時間の拡大

派生プロセスのデータ収集における制限事項

OpenMP プロファイルに関する制限事項

Java プロファイルに関する制限事項

Java プログラミング言語で書かれたアプリケーションの実行時のひずみと実行時間の拡大

収集データの格納場所

実験名

実験グループ

派生プロセスの実験

MPI プログラムの実験

カーネルおよびユーザープロセス上の実験

実験の移動

必要なディスク容量の概算

データの収集

collect コマンドによるデータの収集

データ収集オプション

-p option

-h counter_definition_1...[, counter_definition_n]

-s option

-H option

-M option

-m option

-S option

-c option

-I directory

-N library_name

-r option

実験制御オプション

-F option

-j option

-J java_argument

-l signal

-t duration

-x

-y signal [ ,r]

出力オプション

-o experiment_name

-d directory-name

-g group-name

-A option

-L size

-O file

その他のオプション

-P process_id

-C コメント

-n

-R

-V

-v

collect ユーティリティーによる動作中のプロセスからのデータの収集

collect ユーティリティーを使用して動作中のプロセスからデータを収集する

dbx collector サブコマンドによるデータの収集

dbx からコレクタを実行する

データ収集のサブコマンド

profile option

hwprofile option

synctrace option

heaptrace option

tha option

sample option

dbxsample { on | off }

実験制御のサブコマンド

disable

enable

pause

resume

sample record name

出力サブコマンド

archive mode

limit value

store option

情報のサブコマンド

show

status

Oracle Solaris プラットフォーム上での dbx による動作中のプロセスからのデータの収集

dbx の制御下にない実行中のプロセスからデータを収集する方法

動作中のプロセスからのトレースデータの収集

MPI プログラムからのデータの収集

MPI 用の collect コマンドの実行

MPI 実験の格納

スクリプトからのデータの収集

collectppgsz を組み合わせた使用法

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

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

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

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

8.  実験の操作

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

索引

データ収集に関する制限事項

ここでは、ハードウェア、オペレーティングシステム、プログラムの実行方法、またはコレクタ自体によって課される、データ収集の制限事項について説明します。

異なる種類のデータを同時に収集することについて制限はありません。カウントデータを除いて、任意の種類のデータを同時に収集できます。

コレクタは、最大 16K ユーザースレッドをサポートできます。この数を超えるスレッドからのデータは破棄され、コレクタエラーが生成されます。サポートされるスレッド数を増やすには、SP_COLLECTOR_NUMTHREADS 環境変数に設定されている値を増やします。

デフォルトで、コレクタは、最大 256 フレームの深さまでスタックを収集します。これよりも深いスタックをサポートするには、SP_COLLECTOR_STACKBUFSZ 環境変数に設定されている値を増やします。

時間ベースのプロファイルに関する制限事項

プロファイル間隔の最小値と、プロファイルに使用する時間の分解能は、オペレーティング環境により異なります。最大値は 1 秒に設定されています。プロファイル間隔の値は、時間の分解能のもっとも近い倍数に切り捨てられます。最小値と最大値、および時間の分解能を確認するには、collect -h コマンドをほかの引数を指定せずに入力します。

Linux システムでは、マルチスレッドアプリケーションの時間プロファイリングによって、スレッドの不正確なデータが報告される可能性があります。プロファイルシグナルは、必ずしもカーネルから各スレッドに指定された間隔で配信されるとは限りません。シグナルが間違ったスレッドに配信される場合もあります。使用可能な場合は、サイクルカウンタを使用したハードウェアカウンタプロファイリングによって、スレッドのより正確なデータが提供されます。

時間プロファイルによる実行時のひずみと実行時間の拡大

時間ベースのプロファイルでは、SIGPROF シグナルがターゲットに送られたときにデータが記録されます。それによってシグナルを処理するための実行時間の拡大が発生し、呼び出しスタックが展開されます。呼び出しスタックが深く、シグナルが頻繁なほど、実行時間の拡大は大きくなります。一定の範囲までは、時間ベースのプロファイルにより、ある程度の実行時間の拡大が生じますが、これはもっとも深いスタックで実行するプログラムの各部分の実行時間の拡大が大きくなることから生まれます。

可能な場合、デフォルト値は正確なミリ秒数でなく、システムクロックとの相関を回避するために、正確な数値と多少異なる値 (たとえば、10.007ms または 0.997ms など) に設定されます。システムクロックとの相関はデータのひずみをもたらす場合もあります。SPARC プラットフォームでは、同じ方法でカスタム値を設定してください (Linux プラットフォーム上では不可能)。

トレースデータの収集に関する制限事項

コレクタライブラリ libcollector.so が事前読み込みされていないかぎり、すでに稼働中のプログラムからはトレースデータを収集できません。詳細は、「動作中のプロセスからのトレースデータの収集」を参照してください。

トレースによる実行時のひずみと実行時間の拡大

データのトレースは、トレースされるイベント数に比例して実行時間を拡大させます。時間ベースのプロファイルを同時に行うと、イベントのトレースに起因する実行時間の拡大により、時間データにひずみが生じます。

ハードウェアカウンタオーバーフローのプロファイルに関する制限事項

ハードウェアカウンタオーバーフローのプロファイルには、次のような制限があります。

ハードウェアカウンタオーバーフローのプロファイルによる実行時のひずみと実行時間の拡大

ハードウェアカウンタオーバーフローのプロファイルは、SIGEMT シグナル (Solaris プラットフォームの場合) または SIGIO シグナル (Linux プラットフォームの場合) がターゲットへ配信された時点のデータを記録します。それによってシグナルを処理するための実行時間の拡大が発生し、呼び出しスタックが展開されます。時間ベースのプロファイルと違い、ハードウェアカウンタによっては、プログラムのさまざまな部分がその他の部分より高速にイベントを生成する場合があり、そのコード部分に実行時間の拡大が生じます。そのようなイベントを非常に高速に生成するプログラムの一部で大きなひずみが生じる場合があります。同様に、あるスレッドでは、ほかのスレッドと不均等にイベントが生成されるものがあります。

派生プロセスのデータ収集における制限事項

派生プロセスのデータ収集には、いくつかの制限事項があります。

コレクタでの派生プロセスすべてについてデータを収集するには、次のいずれかのオプションとともに collect コマンドを使用する必要があります。

-F オプションについては、「実験制御オプション」を参照してください。

OpenMP プロファイルに関する制限事項

プログラム実行中に OpenMP データを収集すると非常にコストが高くなる可能性があります。このコストを抑制するには、SP_COLLECTOR_NO_OMP 環境変数を設定します。この設定を行うと、プログラムの遅延は大幅に減少しますが、スレーブトレッドから呼び出し元へ、最終的には main() へ伝搬されるデータは、この変数がない場合には参照可能ですが、この変数を設定すると参照できなくなります。

このリリースでは、デフォルトで OpenMP 3.0 の新しいコレクタが有効になっています。このコレクタは、明示的なタスクを使用するプログラムのプロファイルを実行できます。以前のバージョンのコンパイラで構築されたプログラムは、libmtsk.so のパッチ適用済みバージョンが利用可能な場合にのみ、新しいコレクタでプロファイル可能です。このパッチ適用済みバージョンがインストールされていない場合、SP_COLLECTOR_OLDOMP 環境変数を設定し、データ収集が古いコレクタを使用するように切り替え可能です。

OpenMP プロファイル機能は Oracle Solaris Studio コンパイラ実行時のランタイムに依存しているため、Oracle Solaris Studio コンパイラでコンパイルされたアプリケーションに対してのみ使用できます。GNU コンパイラでコンパイルされたアプリケーションの場合、マシンレベルの呼び出しスタックのみが表示されます。

Java プロファイルに関する制限事項

Java プログラムのデータ収集には、次の制限事項があります。

Java プログラミング言語で書かれたアプリケーションの実行時のひずみと実行時間の拡大

Java のプロファイリングでは、Java Virtual Machine Tools Interface (JVMTI) が使用され、実行のひずみと実行時間の拡大が発生する場合があります。

時間ベースのプロファイリングとハードウェアカウンタオーバーフローのプロファイルリングの場合、データ収集プロセスは JVM ソフトウェアへのさまざまな呼び出しを行い、プロファイリングイベントをシグナルハンドラ内で処理します。これらのルーチンのオーバーヘッドとディスクへの実験の書き込みコストにより、Java プログラムの実行時間の拡大が生じます。そのような実行時間の拡大は通常 10% より少なくなります。