JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris Studio 12.2: パフォーマンスアナライザ
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 プログラミング言語で書かれたアプリケーションの実行時のひずみと実行時間の拡大

収集データの格納場所

実験名

実験の移動

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

データの収集

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

Solaris プラットフォームで dbx を使用して実行中のプロセスからデータを収集する方法

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

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

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

MPI 用の collect コマンドの実行

MPI 実験の格納

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

collectppgsz を組み合わせた使用法

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

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

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

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

8.  実験の操作

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

索引

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

コレクタは、Message Passing Interface (MPI) を使用するマルチプロセスプログラムからパフォーマンスデータを収集できます。

コレクタは、Oracle Message Passing Toolkit 8 (以前の Sun HPC ClusterTools 8) とその更新をサポートしています。コレクタは、その他のバージョンの MPI も認識できます。collect を引数なしで実行すると、有効な MPI バージョンが一覧表示されます。

Oracle Message Passing Toolkit MPI ソフトウェアは http://www.oracle.com/us/products/tools/message-passing-toolkit-070499.html から入手できます。

MPI と MPI 規格については、MPI の Web サイト http://www.mcs.anl.gov/mpi/ を参照してください。Open MPI については、Web サイト http://www.open-mpi.org/ を参照してください。

MPI ジョブからデータを収集するには、collect コマンドを使用する必要があります。dbx collector サブコマンドは、MPI データ収集を開始するために使用できません。詳細は、「MPI 用の collect コマンドの実行」を参照してください。

MPI 用の collect コマンドの実行

collect コマンドを使用して、MPI アプリケーションのトレースとプロファイルを実行できます。

データを収集するには、次の構文を使用します。

collect [collect-arguments] mpirun [mpirun-arguments] -- program-name [program-arguments]

たとえば、次のコマンドは 16 の MPI プロセスそれぞれについて MPI トレースおよびプロファイルを実行し、データを単一の MPI 実験に格納します。

collect -M OMPT mpirun -np 16 -- a.out 3 5

-M OMPT オプションは、MPI プロファイルが実行されること、および Oracle Message Passing Toolkit が MPI バージョンであることを示します。

最初の収集プロセスは mpirun コマンドの形式を変更し、各 MPI プロセスについて適切な引数で collect コマンドを実行することを指定します。

program_name の直前にある -- 引数は、MPI プロファイルに必要となります。-- 引数を含めないと、collect コマンドによりエラーメッセージが表示され、実験は収集されません。


注 - mpirun コマンドを使用して MPI プロセス上で明示的に collect コマンドを生成する方法は、MPI トレースデータの収集ではサポートされなくなりました。ほかの種類のデータを収集する場合は、この方法を使用できます。


MPI 実験の格納

マルチプロセス環境は複雑になることがあるので、MPI プログラムからパフォーマンスデータを収集するときは、MPI 実験の格納に関するいくつかの問題に留意する必要があります。これら問題はデータ収集とデータ保存の効率、実験の命名に関わります。MPI実験を含む命名実験については、「収集データの格納場所」を参照。

パフォーマンスデータを収集する各 MPI プロセスは、独自のサブ実験を作成します。MPI プロセスは、実験を作成している間、実験ディレクトリをロックします。このため、ほかのすべての MPI プロセスは、ロックが解放されるまで待ってからそのディレクトリを使用する必要があります。実験は、すべての MPI プロセスからアクセス可能なファイルシステム上に格納します。

実験名を指定しなかった場合、デフォルトの実験名が使用されます。コレクタは、各 MPI ランクについて 1 つのサブ実験を実験の中に作成します。コレクタは MPI ランクを使用して、M_rm .er の形式でサブ実験名を構築します (m は MPI ランク)。

実験の完了後に、実験を別の場所へ移動する予定がある場合、collect コマンドで -A copy オプションを指定します。実験のコピーや移動には、UNIX® の cp または mv コマンドを使用しないで、第 8 章実験の操作で説明されている er_cp または er_mv コマンドを使用してください。

MPI トレースでは、各ノード上に一時ファイル /tmp/a.*.z が作成されます。これらのファイルは、MPI_finalize() 関数呼び出しによって削除されます。ファイルシステムに、実験のため十分な空き容量があることを確認します。実行時間の長い MPI アプリケーションのデータを収集する前に、短時間のテストを実行してファイルサイズを確認します。必要な空き容量を推定する方法について、「必要なディスク容量の概算」も参照してください。

MPI プロファイルは、オープンソースの VampirTrace 5.5.3 リリースがベースになっています。サポートされているいくつかの VampirTrace 環境変数に加えて、VT_STACKS を新たに認識します。この環境変数は、呼び出しスタックをデータに記録するかどうかを制御します。これらの変数の意味については、VampirTrace 5.5.3 のドキュメントを参照してください。

環境変数 VT_BUFFER_SIZE のデフォルト値は、MPI API トレースコレクタの内部バッファーを 64 M バイトに制限します。特定の MPI プロセスについてこの制限に到達した後、VT_MAX_FLUSHES 制限にまだ到達していなければ、バッファーはディスクにフラッシュされます。デフォルトでは、VT_MAX_FLUSHES は 0 です。この設定を行うと、MPI API トレースコレクタは、バッファーがいっぱいになるたびにバッファーをディスクにフラッシュします。VT_MAX_FLUSHES を正数に設定すると、フラッシュ回数が制限されます。バッファーがいっぱいになり、フラッシュできない場合、そのプロセスについては、それ以降イベントがトレースファイルに書き込まれなくなります。結果として実験が不完全なものとなり、場合によっては実験が読み取り不能になることがあります。

バッファーのサイズを変更するには、VT_BUFFER_SIZE 環境変数を使用します。この変数の最適値は、トレース対象のアプリケーションによって異なります。小さい値を設定すると、アプリケーションで利用できるメモリーが増えますが、MPI API トレースコレクタによってバッファーのフラッシュが頻繁に引き起こされます。このようなバッファーのフラッシュによって、アプリケーションの動作が大幅に変化する可能性があります。一方、2G バイトなどの大きい値を設定すると、MPI API トレースコレクタによるバッファーフラッシュは最小限に抑えられますが、アプリケーションで利用できるメモリーが減少します。バッファーとアプリケーションデータを保持するための十分なメモリーが利用できない場合、この設定によりアプリケーションの一部がディスクにスワップされ、アプリケーションの動作が大きく変化する可能性があります。

もう 1 つの重要な変数は VT_VERBOSE で、各種のエラーメッセージおよび状態メッセージを有効にします。問題が発生した場合、この変数を 2 以上に設定してください。

通常、MPI トレース出力データは mpirun ターゲットの終了時に後処理されます。処理されたデータファイルは実験に書き込まれ、後処理時刻情報が実験ヘッダーに書き込まれます。MPI トレースが -m off により明示的に無効になっている場合、MPI 後処理は行われません。後処理に失敗した場合、エラーが報告され、MPI タブと MPI トレースメトリックスは使用できなくなります。

mpirun ターゲットが実際に MPI を起動しない場合、実験は記録されますが、MPI トレースデータは生成されません。実験により、MPI 後処理エラーが報告され、MPI タブと MPI トレースメトリックスは使用できなくなります。

環境変数 VT_UNIFY0 に設定された場合、collect により後処理ルーチンは実行されません。後処理ルーチンは、実験で er_print または analyzer が初めて起動したときに実行されます。


注 - コンピュータまたはノード間で実験のコピーあるいは移動を行うと、ソースファイル、または同じタイムスタンプを持つコピーにアクセスできないかぎり、注釈付きソースコードまたは注釈付き逆アセンブリコードのソース行を表示できません。注釈付きソースを表示するため、元のソースファイルへのシンボリックリンクを現在のディレクトリに置くことができます。また、「データ表示方法の設定」ダイアログボックスの設定を使用することもできます。「検索パス」タブ (「「検索パス」タブ」を参照) では、ソースファイルの検索に使用するディレクトリのリストを管理できます。「パスマップ」タブ (「「パスマップ」タブ」を参照) では、ファイルパスの先頭部分を、ある場所から別の場所へマッピングできます。