Oracle® Solaris Studio 12.4: パフォーマンスアナライザ

印刷ビューの終了

更新: 2015 年 1 月
 
 

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

さまざまな コレクタは、さまざまなシステムライブラリからの関数に割り込んでトレースデータを収集し、データ収集の整合性を保証します。コレクタがライブラリ関数の呼び出しに割り込む状況を次に示します。

  • 同期待ちトレースデータの収集。Oracle Solaris では、コレクタは Oracle Solaris C ライブラリ libc.so からの関数に割り込みます。

  • ヒープトレースデータの収集。コレクタは、mallocreallocmemalignfree の関数に割り込みます。これらの関数は、C 標準ライブラリ libc.so のほか、libmalloc.solibmtmalloc.so などのライブラリにあります。

  • MPI トレースデータの収集。コレクタは、指定された MPI ライブラリからの関数に割り込みます。

  • 時間データの完全性の確保。コレクタは setitimer に割り込み、プログラムがプロファイルタイマーを使用しないようにします。

  • ハードウェアカウンタデータの完全性の確保。 コレクタは、ハードウェアカウンタライブラリ libcpc.so からの関数に割り込み、プログラムがカウンタを使用しないようにします。プログラムからこのライブラリの関数への呼び出しは、値 -1 を返します。

  • 派生プロセスに対するデータ収集の有効化。コレクタは、fork(2)、fork1(2)、vfork(2)、fork(3F)、posix_spawn(3p)、posix_spawnp(3p)、system(3C)、system(3F)、sh(3F)、popen(3C)、exec(2) の関数とそのバリアントに割り込みます。vfork の呼び出しは、内部で fork1 の呼び出しに置き換えられます。これらの割り込み処理が行われるのは、collect コマンドの場合です。

  • コレクタによる SIGPROF シグナルおよび SIGEMT シグナルの処理の保証。コレクタは sigaction に割り込み、シグナルハンドラがこれらのシグナル用のプライマリシグナルハンドラであるかどうかを確認します。

    次の状況では割り込み処理は成功しません。

  • 割り込み対象関数が入っているライブラリとプログラムを静的にリンクした場合。

  • コレクタライブラリが事前読み込みされていない実行中アプリケーションに dbx を接続した場合。

  • これらのライブラリのいずれか 1 つを動的に読み込み、このライブラリの中でだけ検索することによってシンボルを解決する場合。

コレクタが割り込み処理を行えなかった場合には、パフォーマンスデータが消去されたり無効になったりする可能性があります。

er_sync.soer_heap.so、および er_mpviewn.so (n は MPI バージョンを示す) ライブラリは、それぞれ同期待ちトレースデータ、ヒープトレースデータ、または MPI トレースデータが要求された場合にのみロードされます。