What! LLA VLF

LLAとは

L LAはMVS/XA第2版の新機能。連携リスト及びライブラリー索引(ライブラリー索引は3.1で追加)
MVSは実行するモジュールを検索する場合、指定されたロードモジュールライブラリーのディレクトリー部を先頭から順番に検索します。ロードモジュールライブラリーは複数指定する事が可能で、そのライブラリー数が多く、目的のモジュールが後方にあると、モジュール検索にかかるオーバーヘッドが大きくなると共に、DASD I/Oの負荷も増大します。LLAはSTCアドレス空間で実行され、DASDよりも高速な記憶装置であるメモリー(仮想記憶域)に、ロードモジュールライブラリーのディレクトリー部を展開する事により検索速度を速めるMVSの機能です。
以下にLLAを使用した場合と、しない場合の違いを図解します。
  • 標準モジュール読み込み手順(LLAを使用しない場合)
    1. ステップが開始される時、JCLのEXECステートメントに記述されているロードモジュールライブラリーを検索します。通常はSTEPLIB(又はJOBLIB)に指定されたロードモジュールライブラリーのディレクトリー部をDASDから読み込み、先頭から順番に指定されたモジュール名とライブラリーのメンバー名が一致するメンバーを検索します。
    2. 一致するメンバーが見つかった場合、ディレクトリーが指しているデータをDASDから読み込みます。
    3. ディレクトリーに指定されたEntryPointに制御を渡します。
    Basic Module Fetch

  • LLAを使用したモジュール読み込み手順
    1. LLA開始時、又はREFRESH・UPDATE等のコマンドが実行された時、LLAはCSVLLAxxでFREEZE指定されたロードモジュールライブラリー、及びLNKLSTxxに指定されたロードモジュールライブラリーのディレクトリー部を仮想記憶域に読み込みます。
    2. Stepが開始される時、LLAの仮想記憶域内のディレクトリーから、指定されたモジュール名とライブラリーのメンバー名が一致するメンバーを検索します。
    3. 一致するメンバーが見つかった場合、LLAの仮想記憶域内のディレクトリーが指しているデータをDASDから読み込みます。
    4. LLAの仮想記憶域内のディレクトリーに指定されたEntryPointに制御を渡します。
    LLA Module Fetch

VLFとは

V LFはMVS/ESA SP 3.1の新機能。仮想索引機能。
VLFは多数のユーザーが繰り返し使用するデータをメモリー(データ空間)に貯え、高速にデータの受け渡しを行うMVSの機能です。VLFはユーザープログラムからも使用できますが、一般的にはLLA・CATALOG・TSOがVLFを使用して、データの入出力時間を高速化しています。

LLAとVLFの連携

L LAとVLFを稼動させると、LLAはVLFの機能を利用してモジュール本体をデータ空間にステージングします。データ空間にモジュール本体をステージングする事で、(LLAだけでは検索時間の効率化しか出来ませんでしたが)モジュールのFetch時間も効率化する事が出来ます。LLA+VLFの時の処理の流れは以下の様になります。
  1. ステップが開始される時、JCLに指定されているプログラムをLLAに登録されたディレクトリー情報からプログラム名とメンバー名が一致するメンバーを検索します。
  2. 一致するメンバーが見つかった場合、LLAはVLF上にデータが存在するかを確認し、存在すればVLFを通してデータ空間からモジュール本体を読み込み、無ければDASDから読み込みます。 ディレクトリーが指しているデータをDASDから読み込みます。
  3. ディレクトリーに指定されたEntryPointに制御を渡します。

モジュールの探索順序

L LAとはちょっと話が外れますが、MVSシステムは以下の順序で目的のモジュールを検索します。
  1. JPA
    JPA(Job Pack Area)とは、LOADしたプログラムを保存している領域で、MVSはプログラムが起動してからLINK・ATTACHなどのモジュール呼び出し操作が行われるまでにプログラムがLOADされていないかを第一に確認し、もし存在していればそれを使用します。
  2. Private-Library
    LOAD、LINK、ATTACH、XCTLマクロは特定のDCBを指定してモジュールを呼び出す事ができます。この場合STEPLIB、JOBLIBは探索する代わりに、指定したDD文に記述されたライブラリーを探索します。
  3. STEPLIB
    LOAD、LINK、ATTACH、XCTLマクロで特定のDCBを指定しなかった場合、MVSは(もし存在していれば)STEPLIBを探索します。
  4. JOBLIB
    LOAD、LINK、ATTACH、XCTLマクロで特定のDCBを指定せず、さらにSTEPLIBが存在していない場合、MVSは(もし存在していれば)JOBLIBを探索します。
  5. FLPA
    MVSはここまで探索した私用ライブラリーからモジュールが見つけられなかった場合、次に公用ライブラリーを探索します。公用ライブラリーとしてまず最初は、FLPA(IEAFIXxxに登録しているメンバー)を検索します。このモジュールはページ固定され高速なFetchが約束されますが、多量に登録するとシステムに大きな負担を与えてしまいます。
  6. MLPA
    MLPAはPLPAライブラリーの拡張域として用意されていますが、「MVSを導入したらSMF Exitのデフォルト?がSYS1.LPALIBに存在していたが、ユーザーExitを導入したい。しかし、SYS1.LPALIBを直接書き換える様な事は(なんとなく)あまり行いたくない。仕方無いので検索順序の早いMLPAにSMF Exitのモジュールを登録しよう」という様に使用しています。
  7. PLPA
    PLPA(LPALSTxxに登録しているライブラリー)はCLPAを指定してIPLした場合に共通域に読み込まれます。
  8. LNKLST
    ここまでのどこにも目的のモジュールを見つける事が出来なかった場合、MVSは最後にLNKLSTからモジュールを探索します。LNKLSTはOS/390 R3から“T PROG=xx”で更新できるようです。

この探索の中でLLA+VLFの機能を利用できるのはLNKLST、Private-Library、STEPLIB、JOBLIBとなり、全ての“DASDのI/Oが発生するModule Fetch”を対象としています。

つづく...










Knowledge home

- Kimu : 1998.06.30 - 1998.07.05 -