プログラムのパフォーマンス解析

アプリケーションの再配置

テキストページフォルトが実行時間の大部分を占める場合は(その場合のみ)、アプリケーションの再配置をすることもできます。

動作データが収集された後、標本アナライザを使って、関数の並び順が改良されたマップファイルを生成できます。-M オプションはそのマップファイルをリンカーに渡し、リンカーはアプリケーションを再リンクし、より小さなテキストアドレス空間を持った新しい実行可能なアプリケーションを生成します。

アプリケーションの再配置を行った後は、新しい実験を実行し、オリジナルのバージョンと再配置後のバージョンとを比較できます。

アプリケーションの再配置を行うには、以下の手順に従ってください。

  1. アプリケーションを -xF オプションを使ってコンパイルします。

    -xF オプションは、再配置のために必要です。このオプションによって、コンパイラは、個別に再配置が可能な関数を生成します。

    C アプリケーションに対しては、以下のコマンドを入力してください。

    cc -xF -c a.c b.c

    cc -o application_name a.o b.o

    C++ アプリケーションに対しては、以下のコマンドを入力してください。

    CC -xF -c a.cc b.cc

    CC -o application_name a.o b.o

    Fortran アプリケーションに対しては、以下のコマンドを入力してください。

    f77 -xF -c a.f b.f

    f77 -o application_name a.o b.o

    以下の警告メッセージが表示される場合、非共有オブジェクトやライブラリファイルなど、静的にリンクされているファイルをチェックしてください。これらのファイルが -xF オプションによってコンパイルされていない可能性があります。

    ld: warning: mapfile: text: .text% function_name:

    object_file_name:

    Entrance criteria not met the named file, function_name, has not been compiled with the -xF option.

  2. デバッグのためにアプリケーションを Sun WorkShop へ読み込みます。

  3. 「デバッグ」ウィンドウの「ウィンドウ」メニューから「標本コレクタ」を選択して、標本コレクタをアクティブにし、パフォーマンスデータを収集します。 アドレス空間情報の収集も必ず可能にしておきます。

  4. アプリケーションをデバッガ内で実行します。

  5. 指定された実験データを標本アナライザへ読み込みます。

  6. 「実験ファイル」メニューから「マップファイル作成」を選択し、標本アナライザで再配置マップを作成します。使用する標本、マップファイルディレクトリ、生成するマップファイル名を指定し、「了解」をクリックします。

    マップファイルには、関連するユーザー CPU 時間を持った関数名が含まれます。プロファイリングデータとファンクションサイズを降順にソートすることで、テキストアドレス空間サイズを縮小するための関数の並び順を指定します。マップファイルにリストされないすべての関数は、リストされた関数の後ろに配置されます。

  7. 新しいマップファイルを使ってアプリケーションをリンクします。

    C アプリケーションに対しては、以下のコマンドを入力してください。

    cc -M mapfile_name a.o b.o

    C++ アプリケーションに対しては、以下のコマンドを入力してください。

    CC -M mapfile_name a.o b.o

    C アプリケーションに対しては、-M オプションの使用により、コンパイラが -M mapfile_name をリンカーに渡します。

    Fortran アプリケーションに対しては、以下のコマンドを入力してください。

    f77 -M mapfile_name a.o b.o