監視データが存在しない

実験の監視データ (同期待ちの監視データ、ヒープ監視データ、MPI 監視データ) が存在しないと思われる場合には、以下のリストをチェックしてその原因を特定してください。

dbx が実行中プログラムに接続されているときの監視データが存在しない

実行中プログラムに dbx を接続する場合、プログラム実行前にコレクタライブラリを読み込まないかぎり監視データを収集することはできません。監視データは、監視対象関数上で割り込み処理することによって収集されます。監視対象の関数の後にコレクタライブラリを読み込むと、割り込み処理は成功しません。

コレクタライブラリをあらかじめ読み込むには、環境変数 LD_PRELOADlibcollector.so に設定し、環境変数 LD_LIBRARY_PATH/opt/SUNWspro/lib に設定するか、使用しているシステム上の等価パスに設定します。SPARC-V9 64 ビットアーキテクチャを使用している場合には、環境変数 LD_LIBRARY_PATH64/opt/ SUNWspro/lib/v9 に設定する必要もあります。これらの環境変数がすでに定義されている場合には、定義しなおすのではなく、定義を追加してください。データの収集が終了したら、これらの環境変数からコレクタライブラリ設定を削除します。

exec を呼び出すプログラムからの監視データが存在しない

exec(2) またはそのバリアントをプログラムが正常に呼び出すと、パフォーマンス実験は異常終了されデータ収集はこの時点で停止します。呼び出しが失敗した場合、データ収集は正常に行われます。このプログラムを dbx で実行した場合、exec の呼び出し成功後にデータを収集することはできませんが、データ収集に collect(1) コマンドを使用すれば、-F on オプションによって新規イメージに対する実験を記録できます。

異常終了した実験は、パフォーマンスアナライザで正常に読み込むことができます。実験が記録されたコンピュータ以外のコンピュータで実験を解析するには、実験を記録したコンピュータ上で er_archive(1) コマンドを使用します。

静的リンクライブラリを持つプログラムからの監視データが存在しない

監視データの記録は、実際のシステムライブラリ関数とライブラリ関数を呼び出したアプリケーションとの間にラッパー関数を挿入することによって行います。ラッパ関数の参照は実行時に解決されるので、ライブラリを動的に読み込む必要があります。システムライブラリを静的にリンクすると、ルーチンの参照が実行可能ファイル内ですでに解決済みとなり、実行時に解決することができなくなります。この結果、コレクタはそのラッパー関数を割り込み処理できないため、関数呼び出しに関するデータを収集できません。


お探しの物が見つかりませんか?ご意見は電子メールで docfeedback@sun.com までお寄せください。
著作権と商標について