今回は、マクロ的観点から単一レベル記憶の利点を説明いたします。今1台のSystem i があります。このシステムには2つのCPU、512MBの主記憶域と40GBの磁気ディスク機構が搭載されています。磁気ディスクには7,000,000レコードからなるファイルがあり、そのサイズは945MBです。このファイルに対して情報検索をするとき、どういう方法が最も処理が速くなるかを考えます。ある情報検索の業務プログラムを2種類作りました。一つはCPUを1つ使用するプログラムで、もう一つはCPUを同時に2つ使用するプログラムです。これらのプログラムを実行する場所として2つの主記憶域を用意しました。一つは22MBでもう一つは443MBです。

iQueryの内容
・3つの項目による分類
・1つの項目による選択
・論理ファイル使用
| CL プログラム名 | プログラムの内容 |
|---|---|
| SMPT01 SMPT02 |
CHGQRYA DEGREE(*NONE) RUNQRY CHGQRYA DEGREE(*NBRTASKS 2) RUNQRY |
| 実行 順序 |
プログラム名 | 実行場所と実行方法 | スループット | CPU% |
|---|---|---|---|---|
| 1 2 3 4 5 |
SMPT01 SMPT02 SMPT02 SMPT02 SMPT02 |
QBATCH SBMJOBコマンド QBATCH SBMJOBコマンド QBATCH SBMJOBコマンド QINTER CALLコマンド QBATCH SBMJOBコマンド |
11分45秒 5分 4分40秒 8分50秒 2分 |
10% 30% 30% 40% 48% |
さて第一番目にCPUを1つ使用して22MBの主記憶域でプログラムを実行しました。11分45秒かかりました。第二番目と三番目はCPUを2つ使用して22MBの主記憶域でプログラムを実行しました。すると半分以下の5分や4分40秒で処理できました。
これはCPUを2つ同時に使用した結果です。四番目にCPUを2つ使用し、443MBの主記憶域でプログラムを実行すると8分50秒かかりました。その後五番目として、同様にCPUを2つ同時に使用し、今度はもとの22MBの主記憶域でプログラムを実行した結果、2分で処理が完了しました。
これを説明するには単一レベル記憶が必要となります。四番目の処理が完了した時点では、443MBの主記憶域の中に945MBの検索対象ファイルのおよそ半分が読み込まれて残っていたことになります。次の五番目の処理ではプログラムがデータを読む回数のうち、およそ半数はディスク装置からデータを読み込むのではなく、主記憶域を参照したに相違ありません。この結果五番目の処理速度が他に比べて圧倒的に速いのです。
一つの方法論ですが、もしこのファイルが日常頻繁にアクセスされ、その処理時間の向上が求められているのであれば、945MB以上の主記憶域を用意し、IPL後すぐにこのファイルを空読みします。すると多くのデータが主記憶域に読み込まれます。本来のエンド・ユーザーが検索をする時には多くのデータが主記憶域にあるために最高の速度で処理されることになるでしょう。
