What's LLA + VLF
LLAを利用した、又は利用しない場合の比較テスト

て、LLAとVLFはどれほど効果があるのでしょうか?
まず、LLAを利用した場合と利用しない場合の処理時間の違いをテストプログラムを利用して比較してみます。
  テスト環境
System
  CPU 9021-952をRM/SMで分割した1区画
  CP# 5 (3SystemでShare)
  Weight 2%(No Capped)
  CS 136mb
  ES 136mb
  テストケース1
Basic Module Fetch ストは、モジュールのLOAD・DELETEを10,000回繰り返すプログラムを作成しました。 LOADするモジュールは結果がはっきり現れるように、なるべくLLAとVLFに効果があると思われるものを用意します。どのようなモジュールが効果的なのかが分からないのですが、簡単に考えて、“大量のメンバーが存在するライブラリー”は、LLAを利用するとモジュール検索時間の大幅な短縮に繋がると思われ、Fetchに時間がかかる“サイズの大きいモジュール”はVLFに効果があると考えました。そこで、以下のライブラリーを作成します。
テスト用ライブラリー
  DISK Hitachi A6588-3 (3390-3型互換) 他システムから若干のアクセス有り
  CHP ESCON x 6
  BLKSIZE 23200
  Space 65 Cyl
  Extent 1
  Directory Block 5000 Block
  Member数 10001(小さいサイズのダミーが10,000メンバーあり、実際にLOADするメンバーは1メンバーのみ)
  Module Size x'4E20A0' ( 5,120,160 Byte )


して、このテスト用ライブラリーを“NON-LLA”・“STEPLIB+NOFREEZE”・“STEPLIB+FREEZE”・“LNKLST+STEPLIB”・“LNKLST”という条件下に設定し、処理時間の比較を実施しました。(テスト開始前には、必ずLLAとVLFの再立ち上げを実施しています)
それぞれのパターンでのFetch先は右表のようになっています。
テストパターンのアクセス先
Directory SearchModule Fetch
NON-LLADASDDASD
STEPLIB+NOFREEZEDASDVLF(DASD Version)
STEPLIB+FREEZELLAVLF(LLA Version)
LNKLST+STEPLIB(+FREEZE)LLAVLF(LLA Version)
LNKLST(+FREEZE)LLAVLF(LLA Version)
テスト中はLLAのEXIT(CSVLLIX1)を組み込み、LOADしたモジュールがDASD(PGMF)から、もしくはVLF(LLAF)からFetchされたかを調べる事が出来るようにしました。
テスト結果
STARTENDELAPSEEXCPCONNSERVPAGESWAPPGMFLLAF
NON-LLA18:23:3418:37:0413:3020249678K119K00N/AN/A
18:39:1918:52:4613:2720249678K117K00N/AN/A
STEPLIB+NOFREEZE18:04:4918:20:4415:5518581708K317K0080011999
18:55:2219:10:5415:3218582694K299K0080021998
STEPLIB+FREEZE17:47:1217:51:003:48858558346324K0080051995
19:14:3319:18:023:29859258384301K0080121988
LNKLST+STEPLIB17:00:1917:04:584:39859045895327K0080101990
19:21:2219:25:003:38858558326309K0080051995
LNKLST17:16:5617:21:074:11858358365327K0080081992
19:26:5219:30:343:42858558361321K0080101990
凡例
STARTJOB開始時間 ENDJOB終了時間 ELAPSE処理時間
EXCPEXCP回数 CONNCONNECT TIME SERV
PAGEPAGE-IN回数 SWAPSWAP回数 PGMFDASDからFetchした回数
LLAFLLAからFetchした回数

ストの結果で処理時間が短いパターンは、LLAからディレクトリー検索しているもので、DASDからディレクトリー検索しているものに比べ1/4程度の処理時間で終了しています。この結果からLLAは素晴らしい効果がある事が分かると思います。
して、予想と大きく異なっていた事はVLFによるModule Fetchです。PGMFとLLAFの項目を見ていただくと判るように、VLFからFetchする様に指定していたケースであっても3/4はDASDからFetchを行っていました。このFetchは最初の数十〜数百回はDASDからFetchし、その後VLFからFetch、そして後半は結局DASDからFetchするというパターンとなっていました。LLAFのFetch回数は、ほぼ2000回であり、これは、モジュールステージング分析機能のサイクルだと思われます。おそらくLLAは“VLFからFetchするよりも、DASDからFetchする方が良い”と判断した結果だと思われます。これは、プログラム内で測定した1回当りのFetch時間(LOAD/DELETEのLoopの前後にTIMEマクロでタイムスタンプを取得していました)も、DASDの方が高速である事を表していましたし、“NON-LLA”と“STEPLIB+NOFREEZE”の処理時間もVLFを使用しない方が高速である事を表しています。
のテストではVLFの効果は全く無く、LLAはDirectory Searchが非常に高速になり、Module Fetchの処理時間の短縮にはつながらないという結果となってしまいました。
  テストケース2
て、VLFは本当に効果が無いのでしょうか?
私がテストした環境はCS、ES共、136MBという、少ないストレージの割り当てしかありません。COFVLFxxのMAXVIRTは4096となっており、VLFはCSVLLAの為に16MB(4096×4Kブロック)の記憶域を用意しているはずです。この値はシステムに割り当てたストレージの12%に相当し、恐らく大半はページアウトされていると思われます。LOADを行ったモジュールサイズは約5MBでしたから、VLFのCSVLLAクラスの1/3程度を占める事となり、ページングの為にDASD FetchよりもVLF Fetchの方が遅くなったのではないかと考えられます。そこで、LOADするモジュールのサイズを小さくして、再テストを実施しました。
LOADするModule Sizeはx'4E20A0'バイトからx'0a'バイトという、小さなモジュールに変更しました。
テスト結果
STARTENDELAPSEEXCPCONNSERVPAGESWAPPGMFLLAF
NON-LLA15:10:3015:23:4813:1820249685K4396100N/AN/A
15:51:3616:04:5113:1520249685K4411100N/AN/A
STEPLIB+NOFREEZE15:31:4215:44:2412:4210603651K5483800239977
16:08:1816:20:5112:3310591651K5476600119989
STEPLIB+FREEZE15:27:5715:28:210:245956633786000159985
16:31:2816:31:580:306017843711700219979
LNKLST+STEPLIB15:27:5715:28:210:245956633686000010000
16:39:0716:39:460:396087763674900289972
LNKLST14:57:5614:58:350:395927393672000159983
16:45:5816:46:340:366097593629500349966

ストケース1とは異なり、“NON-LLA”よりも“STEPLIB+NOFREEZE”の方が、若干ですが処理時間が短くなっています。PGMFは20回程度となり、ほとんどがLLAFとなっています。LLAはVLFを利用した方が高速であると判断し、2000回Fetchを繰り返した後であっても、再びDASD Fetchを行う事はありませんでした。










Whats LLA + VLF Tips home

- Kimu : 1998.06.30 - 1998.11.07 -