CPU 時間が同じジョブまたはジョブ・ステップの異なる実行間
で変化する理由は複数あります。 この変化の主な原因は次のとおりです。
- 統合チャネルのあるシステム上でのサイクル・スチーリング - CPU 命令の処理は、
チャネルが CPU と共用するハードウェア・リソースの使用を要求すると、
一時的に延期されます。
- 高速バッファーを使用する CPU - CPU 時間は、以下のいずれかによって
変化する場合があります。
- 並行タスクによって生じるバッファーの干渉
- ストレージ・エラーが原因の、バッファーの部分的または全体的な使用禁止状態
- 命令処理速度に影響する変換索引緩衝機構 (TLB)
- ストレージ・アクセス - チャネルが中央ストレージを使用していると、CPU は中央ストレージをアクセスできません。ストレージ・アクセス時間は、インターリービング、データ幅、および
パスのような CPU アーキテクチャーによって異なります。
- DASD スペース割り振り - エクステントの数が以前とまったく同じでない場合、
追加のエクステントの終わりの処理が必要です。
- 一時的入出力エラー - 一時的入出力エラーには、追加の処理が必要な
場合があります。
- 拡張ストレージ・フレーム・アクセス — ある実行におけるアクセス回数が他の実行とは異なる場合、CPU 時間も異なる可能性があります。
拡張ストレージへのアクセスは、中央ストレージへのアクセスより多くの時間を必要とします。
- BLDL/FIND 要求 - BPAM を多く使用している場合、BLDL/FIND 要求の処理
の CPU 時間は、PDS ディレクトリー内に変更があったかどうかによって変化します。 すなわち、要求されたメンバーの項目の位置の変更は、その項目が入っている
ブロックを検出するのにかかる時間の変更に反映されます。
- STOW 処理 - 必要な追加の再配列または衝突のため、PDS ディレクトリー内の
差で STOW 処理時間が変化する場合があります。
- マクロ処理 - LINK、LOAD、XCTL、ATTACH、および BLDL のようなマクロの処理
時間は、要求されたモジュールが置かれる場所によって影響されます。 例えば、LPA 内にモジュールが存在していて、ジョブ・ライブラリー、
ステップ・ライブラリーが使用されない場合には、CPU 時間はより小さく
なる可能性があります。
- 逐次再使用可能リソースの可用性 (ロック) - 例えば、
システム ENQ ルーチン時間は、そのリソースが使用可能であるかどうかによって
変化します。
DEQ 時間は、現行のタスクが開放しているリソースを、他のタスクが続いて要求した
場合には増加します。
- 待機処理 - CPU 時間は、WAIT マクロ命令を出す前に ECB が通知されて
いるかどうかによって変化します。
- ロック・スピン - ジョブを MP 上で実行している場合、CPU 時間は、
監視プログラム・サービス内で検出されたロック・スピンによって
変化する可能性があります。
- キューの探索 - システム・サービス時間は、キュー環境の状況によって
変化します。
- 汎用トレース機能 (GTF) - GTF がアクティブな場合、CPU 時間は、
現行の GTF 記録用に選択されたシステム機能 (SVC、SSCH、IO、PCI、DSP) に
応じて増加します。 USR 機能の記録を必要とし、アプリケーションに GTRACE マクロが入っている場合には、
CPU 時間の変化はさらに明白です。
- システム・リソース・マネージャー (SRM) - ENQ、WAIT (LONG=YES オプション)、
TPUT および TGET のような SYSEVENT を出す監視プログラム・サービス
から SRM 処理が呼び出されるときには、CPU 時間が変化する場合があります。
- ページ・スチール - ページ・スチールは、特定のジョブが引き起こす
ページ不在の数に影響を及ぼします。CPU 時間は、入出力によって解決されたページ不在の数と再利用
によって解決されたページ不在の数の両方によって変化します。
- 順次アクセス方式およびチェーン・スケジューリング - CPU 時間は、
成功したチェーン・スケジューリングの量に応じて、実行ごとに変化します。 入出力の開始の数は、システム負荷ごとに変化します。
- MP 逐次化 - プロセッサー内の CP 間でのリソースに対する競合が変わります。
- ブランチ・トレースおよびモード・トレース - これらの操作では、追加の処理が必要になります。
- SLIP PER トラップ - PER 割り込みの処理では、追加の処理が必要になります。