プロファイリング・データの収集

プロファイリング・コードがモジュールに追加されたならば、 プロファイリング・コードは、プロファイリング・データが収集できるようにプログラム・オブジェクトまたはサービス・プログラム・オブジェクトに入れる必要があります。 プロファイリング・データは、CHGPGM CL コマンドを使用してプログラム・オブジェクトに、 また、CHGSRVPGM CL コマンドを使用してサービス・プログラムに適用することができます。 すべてのプロファイリング・データをプログラム・オブジェクトまたはサービス・プログラムに適用するためには、 全適用 (*APYALL) 値を用いて PRFDTA パラメーターを指定してください。 プロシージャー内のコードの再順序付けを行うプロファイル作成データだけを適用するためには、 値 *APYBLKORD を指定します。 プロシージャーの再順序付けを行うプロファイル作成データだけを適用するためには、*APYPRCORD を指定してください。

プロファイリング・データは、プログラム・プロファイリングの開始 (STRPGMPRF) CL コマンドを指定すると収集されます。 プロファイリング・データは、システム上で活動状態であり、 プロファイル・コードを含んでいるすべてのプログラム・オブジェクトおよびサービス・プログラムから生成されます。

十分な量のプロファイリング・データが収集されたならば、 プログラム・プロファイリングの終了 (ENDPGMPRF) CL コマンドを入力してください。

プログラム・プロファイリング・データは、CHGPGM および CHGSRVPGM CL コマンドに PRFDTA パラメーターの *CLR 値を指定すると、 プログラム・オブジェクトまたはサービス・プログラム内のモジュールから除去できます。

モジュールを使用可能状態にしてプロファイリング・データを収集できるようにすると、 モジュール・オブジェクト内で追加コードが生成されます。 このコードは、プロシージャー内の基本ブロックが実行された回数のほか、 プロシージャーが呼び出された回数を収集するのに使用されます。 プロファイリング・データの収集を使用可能にするには、 モジュールを 30 (*FULL) またはそれ以上の最適化レベルでコンパイルする必要があります。

プロシージャー内の基本ブロックについて収集されたデータを使用して、ILE 最適化変換プログラムは、 キャッシュ使用率がさらに高くなるようにこれらのブロックの配置を変更します。 ブロック情報は、モジュール内のプロシージャーに適用されますが、 複数のモジュール境界にまたがることはありません。

バインダーがプロシージャー呼び出しデータを使用するのは、 ページ使用率がさらに高くなるように相互に頻繁に呼び出すプロシージャーをパッケージするためです。 すなわち、プロファイルが作成されたプログラム内で、 モジュール A の中の PROCA をモジュール B の中の PROCB に並べてパッケージする (PROCA が PROCB に対して何回も呼び出しを行う場合) ことができます。 プロシージャー呼び出しデータはプログラム・レベルで適用されるため、複数のモジュール境界にまたがります。

プロファイリング・データは、現行のターゲット・リリースを指定した場合のみ収集することができます。 ILE プログラムまたはサービス・プログラムのプロファイルが作成されるためには、 プログラムが V4R2M0 またはそれ以上のターゲット・リリースである必要があります。 これは、プロファイリング・データまたはプロファイリングされたプログラムを収集できるようになっているプログラムは、 保管したり、V4R2M0 より前のリリースに復元したりすることができないということも意味しています。

PRFDTA パラメーターの詳細については PRFDTA パラメーターを参照してください。

注:
並列環境、たとえば、マルチスレッド・プロセスで実行しているプログラムについてプロファイリング・データが収集された場合には、 データが不正確である可能性があります。