見えないところで、Rational Developer for Power Systems Software パフォーマンス・アドバイザーは、いくつもの低レベル・ データ・プロファイリング・ツールを AIX / POWER Linux マシンで使用しています。 これらのツールには tprof、oprofile、procstack、ps、IBM デバッグ・エンジン、およびコンパイラー変換レポートがあります。
AIX オペレーティング・システムでは、tprof ユーティリティーが 低レベル・プロファイリング・データのメイン・ソースです。 tprof は、ご使用のアプリケーションにおいて、どの部分でプロセッサー実行時間が 費やされているかをプロファイリングするために使用されます。
tprof ユーティリティーは、次のように動作します。 10 ミリ秒ごとに、tprof はご使用のアプリケーション・バイナリーにおける現在の実行ポイントを記憶します。 記憶されるポイントは「ティック」と呼ばれます。 アプリケーション実行の存続時間にわたるこれらのティックの分布は、アプリケーション全体における さまざまな場所で費やされたプロセッサー時間の長さを大まかに表します。
tprof から得られた低レベル・プロファイリング・データは、いくつものビューで使用されます。 ホット・スポット・ブラウザーは、このデータを使用して、ご使用のアプリケーションにおいて ホットな (使用されている時間が長い) 関数のランキングを表示します。 パフォーマンス・ソース・ビューアーと「アウトライン」ビューは、この データを使用して、ソース・コード行またはセクションに表示されるティック値を提供します。 ホット・スポット・ブラウザー は、このデータを使用して、比較のためのティック値を取得します。
AIX tprof ユーティリティーに関する詳細は、IBM AIX インフォメーション・センター Web サイト (tprof コマンド) にあります。
AIX オペレーティング・システムで、procstack ユーティリティーは、関数の呼び出し元および 呼び出し先をプロファイリングするために使用されます。 1 秒ごとに、procstack はご使用のアプリケーションにおいて実行中である関数を見つけ、その呼び出しパスを 全探索して、実行中の関数に到達するまでの関数のチェーンを判別します。 呼び出しパスは、アプリケーションの main() 関数に戻るまでの過程すべてにおいて全探索されます。 メソッド呼び出し情報は、一緒に構成されていて、呼び出しブラウザーによって使用されます。
procstack ユーティリティーは、サンプル呼び出しチェーンを呼び出しブラウザーの構造として提供します。 情報は呼び出しグラフに集約されないため、Linux oprofile ユーティリティーと比較して、AIX procstack ベースの 呼び出しブラウザーは、誤っている可能性があるパスの影響を受けません。
AIX procstack ユーティリティーに関する詳細は、IBM AIX インフォメーション・センター Web サイト (procstack コマンド) に あります。
Linux オペレーティング・システムにおいて、oprofile ユーティリティーは AIX における tprof と同じ役割を果たし、低レベル・プロファイリング・データのメイン・ソースとして機能します。 この oprofile ユーティリティーは、AIX における tprof と同じように動作します。 ただし、サンプリング頻度は、150,000 プロセッサー・サイクルごとに 1 回です。 3.5 GHz プロセッサーでは、同等の頻度は 43 マイクロ秒ごとに 1 回です。
AIX における tprof と同様に、Linux における oprofile から得られたデータは ホット・スポット・ブラウザー、パフォーマンス・ソース・ビューアー、 「アウトライン」 ビュー、およびホット・スポット比較ブラウザーで使用されます。
Linux オペレーティング・システムでは、oprofile ユーティリティーは、関数と関数との間における 呼び出し関係のプロファイリングも行います。 この情報は、関数ごとの呼び出しパス情報を表示するため、呼び出しブラウザーによって使用されます。
oprofile は、AIX における procstack (43 マイクロ秒に 1 回) よりも 頻繁に呼び出しパス・トラバーサルを実行します。 ただし、より高いサンプリングの頻度、さらに oprofile における制限が 原因で、呼び出しパスは、最大 2 つの呼び出し元の深さまで戻って全探索されます。 また、oprofile はこの情報を、(呼び出しツリーの代わりに) 呼び出しグラフに集約します。 ツリーの代わりにグラフを使用するうえでの大きな影響として、グラフは、実際にはプログラムに存在していないパスまたは再帰を 表示できる可能性があることがあげられます。 この特性の原因は、グラフが情報を集約するために、情報が失われるということです。 この現象は、統計において、一連の数値から平均値のみ得られる場合、ある特定の量の情報がどのように失われるかに似ています。 このような一連の数値の分布といった情報は得られません。 複数回、ノード (関数/メソッド) が呼び出しツリーに現れる可能性がある、呼び出し情報のコンテキストにおいて、呼び出しグラフは、それらの複数のノードを 1 つのノードにマージします。結果として、ある特定の量の情報が失われることになります。
この特性の影響として、ユーザーは、Linux oprofile ベースの 呼び出しブラウザーにおいて、このように誤っている可能性がある パスが存在することを知っておかなければなりません。 AIX procstack ベースの呼び出しブラウザーは、情報を集約しないため、誤っている可能性がある パスの影響を受けないことに注意してください。
Linux oprofile ユーティリティーに関する詳細は、oprofile Web サイトにあります。
ps ユーティリティーは AIX と Linux 両方のオペレーティング・システムで 使用され、アプリケーションのプロファイリングの間に、マシン上で実行されているプロセスに関する情報を提供します。 この情報は、ご使用のアプリケーションが多重処理アプリケーションであるか、または UNIX シェル・スクリプトから 起動されている場合に、そのアプリケーションに属しているプロセスを検出するために使用されます。 また、プロセスそれぞれの基本情報 (名前、引数、親プロセスなど) も提供します。 この情報は、プロセス情報を表示するため、ホット・スポット・ブラウザーによって表示されます。
AIX ps ユーティリティーに関する詳細は、IBM AIX インフォメーション・センター Web サイト (ps コマンド) に あります。
IBM デバッグ・エンジンのコンポーネントは、デバッガー情報をアプリケーションのバイナリーから抽出するため、AIX と Linux 両方のオペレーティング・システムで使用されます。 例えば、実行可能コードにおける位置をソース・ファイルおよび行にマッピングするために使用されます。 このマッピング情報は、パーセンテージおよび「ティック」値をアプリケーション・コードのソース行または ソース・コード・ブロックの横に表示するため、パフォーマンス・ソース・ビューアーおよび 「アウトライン」ビューによって使用されます。
「推奨」ビューは、さまざまなソース (上で説明した項目など) から プロファイリング・データを取得し、それらを相互に関連させて、関係するパターンを検索します。 そのデータのメイン・ソースの 1 つは、IBM XL コンパイラーのコンパイラー変換レポートから得られます。 ご使用のアプリケーションが IBM XL C/C++ コンパイラー (XL C/C++ V11.1 以降) で コンパイルされたものであれば、そのコンパイラーは、アプリケーション・コードの分析に 関する情報 (ソース・コードで試みられた、成功および失敗した最適化など) を報告することができます。 例えば、関数 (メソッド) のインライン化の試みと、それらが成功したか失敗したかが、コンパイラーによって報告されます。 このコンパイラーは、ソース・コード・ファイルごとに有効であったコンパイル・フラグも報告します。 この情報は、推奨値を「推奨」ビューで提供するために使用されます。
コンパイラー変換レポートを提供しない、旧バージョンの (V11.1 よりも古い) IBM XL コンパイラーでは、この種類の情報は、そのコンパイラーの標準ビルド出力から抽出されます。 結果として、この種類の情報を取り込むためには、ユーザーはアプリケーションを「クリーン」にして「ビルド」しなければなりません。 この方法で取得できる情報の量は、XL コンパイラー変換レポートと比べると豊富ではありません。そのため、「推奨」 ビューで提供される推奨値の種類は少なくなります。
現時点で、コンパイラー変換レポートは GCC コンパイラーによって提供されません。 「推奨」ビューで使用するための情報をコンパイラーから取得するため、この種類の情報は、コンパイラーの 標準ビルド出力から抽出されます。 結果として、この種類の情報を取り込むためには、ユーザーはアプリケーションを「クリーン」にして「ビルド」しなければなりません。 「推奨」ビューにおける制限は、変換レポートを提供しない、古い XL コンパイラーの制限に似ています。