本文へジャンプ

System i 再確認

単一レベル記憶域(SLS)その1

単一レベル記憶(SLS:Single Level Storage)というのは、System i の設計思想の一つです。これはi5/OSの機能ではありませんから、何らかの指定をすることにより、単一レベル記憶機能が活動し始めると いうものではありません。しかし、この設計思想の意図する所を理解していただきますと、System i でどのようにジョブを効率良く稼動させるべきかが明確になります。この観点から概説をいたします。始めにミクロ的視点から動きを見てみましょう。

主記憶域とディスクのアドレッシング方法の一元化

System i では、主記憶域とディスク装置内の記憶域のアドレス方法が同じです。8バイト64ビットのアドレス長で記憶域内のページを参照します。System i では1ページは4KBです。i5/OSがオブジェクトを参照する時、すなわち具体的にはプログラムやデータの一部を参照する時、i5/OSは対象となるオブジェクトが全て主記憶域の中に存在していると想定しています。そのオブジェクトを含んでいるページが現在主記憶域の中に存在しているかどうかについては、ページ・ディレクトリーを見て判断します。参照したいページ番号がページ・ディレクトリー内にあれば、該当ページは主記憶域に存在していることを意味し、ページ・ディレクトリー内に無ければ該当ページは主記憶域には存在していないことを意味します。そして該当ページをディスク装置から読み込む必要があると判断します。ページ・ディレクトリーは主記憶域の一部に位置しております。

このやりとりは、i5/OSのWRKSYSSTS(work with system status)コマンドで表示されるページ・フォールトの値を観察することにより、間接的に認識することができます。例えば、ある適用業務プログラムがデータを処理する場合、そのデータを含むページが主記憶域に存在していなければ、ページ不在となり、DB-フォールトの値が増加します。またある適用業務プログラムが別のプログラムを呼び出すような場合、すなわちデータ以外のオブジェクトを参照する場合、そのページが主記憶域に存在していなければ、同様にページ不在となりますが、データ以外なので、non-DB-フォールトの値が増加します。DB-フォールトやnon-DB-フォールトの事象が発生すると、記憶域管理プログラムが該当するページをディスク装置から読み込み、主記憶域に格納します。その後、該当ページがどこに格納 されたかを示す情報がページ・ディレクトリーに記録されます。

次に、現在主記憶域に存在しているページが参照される場合には、どうなるのかを説明いたします。ある適用業務プログラムがデータを処理しようとした時、たまたまそのデータが主記憶域に存在していた場合です。i5/OSはまずページ・ディレクトリーを見ます。そして該当ページが主記憶域のある特定の場所に格納されていることを認識します。するとi5/OSは、このプログラムにそのデータを処理させるために、主記憶域のその特定の場所を参照させます。従ってディスク装置を読む作業が発生しません。結果としてディスク装置からデータを読み込む時間に比べて、非常に高速にデータを処理することになります。これが単一レベル記憶による利点です。この現象を非常に大きな主記憶域を持つSystem i で展開することを考えれば、一定時間が経過するとディスク装置内のほとんどのデータが主記憶域に存在してしまうことになり、処理速度は非常に速くなります。ディスク装置を読む回数が極度に減少するからです。System i では概して主記憶域を大きくすれば処理速度は向上します。

しかし32ビットのアドレス長では、主記憶域やディスク装置内の記憶域は連続して4GBまでしかアクセスできません。ところが、System i が持っている8バイト64ビットのアドレス長ならば4GBの約40憶倍までアクセス可能です。一方2006年11月現在に存在するSystem i の最大主記憶域の大きさは1TBで、ディスク装置の最大容量は381TBです。64ビットアドレス長がいかに膨大なスペースをアクセスできるかがお分かりいただけると思います。