|
さて、LLAとVLFはどれほど効果があるのでしょうか? まず、LLAを利用した場合と利用しない場合の処理時間の違いをテストプログラムを利用して比較してみます。 |
| テスト環境 |
|
||||||||||||||||||
| テストケース1 |
テストは、モジュールのLOAD・DELETEを10,000回繰り返すプログラムを作成しました。
LOADするモジュールは結果がはっきり現れるように、なるべくLLAとVLFに効果があると思われるものを用意します。どのようなモジュールが効果的なのかが分からないのですが、簡単に考えて、“大量のメンバーが存在するライブラリー”は、LLAを利用するとモジュール検索時間の大幅な短縮に繋がると思われ、Fetchに時間がかかる“サイズの大きいモジュール”はVLFに効果があると考えました。そこで、以下のライブラリーを作成します。 |
| |||||||||||||||||||||||||||
|
そして、このテスト用ライブラリーを“NON-LLA”・“STEPLIB+NOFREEZE”・“STEPLIB+FREEZE”・“LNKLST+STEPLIB”・“LNKLST”という条件下に設定し、処理時間の比較を実施しました。(テスト開始前には、必ずLLAとVLFの再立ち上げを実施しています) それぞれのパターンでのFetch先は右表のようになっています。 |
| |||||||||||||||||||||
| テスト中はLLAのEXIT(CSVLLIX1)を組み込み、LOADしたモジュールがDASD(PGMF)から、もしくはVLF(LLAF)から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'バイトという、小さなモジュールに変更しました。 |
テストケース1とは異なり、“NON-LLA”よりも“STEPLIB+NOFREEZE”の方が、若干ですが処理時間が短くなっています。PGMFは20回程度となり、ほとんどがLLAFとなっています。LLAはVLFを利用した方が高速であると判断し、2000回Fetchを繰り返した後であっても、再びDASD Fetchを行う事はありませんでした。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
- Kimu : 1998.06.30 - 1998.11.07 -
|