In-Real Swap

z/OS V1R8からは物理スワップに於けるページ・データセットへ書き出しは廃止され(*1)、中央記憶の空きフレームと交換する「In-Real Swap(イン・リアル・スワップ)」に変わりました。In-Real Swapでは、16MB未満のページング可能記憶域が不足している場合、中央記憶域フレームは2GB域を超えるフレームまたは16MB域を超えるフレームと交換され、16MB以上2GB未満のページング可能記憶域が不足している場合は2GB域を超える中央記憶域フレームと交換されます。スワップ・アウトされるアドレス空間のLSQA固定フレームと最近参照されたページ・フレームは、物理DASDではなく中央記憶の空きフレームにコピーされることになります。

今日のz/OSでは、仮想記憶域は64ビットに拡張され実装される実記憶サイズも最大で4TB(*2)と広大なメモリーが使えるようになっていますが、1970年代、80年代のメインフレーム全盛期から使われ続けている多くのアプリケーション・プログラムは24ビット仮想記憶時代に作られていて、今日に於いても16MB未満あるいは2GB未満の中央記憶域にフレーム割当てが集中する傾向があり(*3)、2GB以上の64ビット中央記憶域フレームは比較的空いています。そこをスワップ・アウトの書き出し先として利用するのがIn-Real Swapです。


*1 ページングではこれまで通りページ・データセットが使われる。
*2 z/OS V2R5で16TBに拡張されたが、4TBを超える領域は2GBラージ・フレーム専用域となる。
*3 一般のアプリケーションを含む多くのプログラムは、仮想記憶域が16MB未満や2GB未満であっても実記憶域は16MBや2GB以上のどこでも構わないのが殆どである。ただし、16MB未満や2GB未満の仮想記憶域を要求するプログラムは互換の為に暗黙の了解では実記憶域も同じ位置に割り当てられることになっていて、プログラム側で明示しない限り仮想記憶域が下位領域の場合でも裏付けとなる実記憶域を高位領域に勝手に割り当てることができない。その為、16MBや2GB未満の実記憶フレームが不足し易くなる。

In-Real Swapとは別に、フレームを中央記憶に保持したままスワップ・アウトされる論理スワップもあります。アドレス空間が待機状態(例えば、TSO端末からのデータ受信待ち)になると、中央記憶の混み具合に応じてフレームを保持したままにするか高位ストレージに書き出すかの限界値に応じて選択されます。論理スワップされていた時間がこの限界値内であればIn-Real Swap(従来の物理スワップ)はなされません。限界値を超える長い時間論理スワップされているアドレス空間が、In-Real Swapの対象になります。
SRMは、中央記憶に対する需要を測定していて必要に応じて限界値を調整します。需要測定に使われるのがUIC(無参照時間間隔カウント)です。UICは、中央記憶域全体から空きフレームを見つけるためのチェックに掛かるであろう時間カウントを示し、0~65535の値を取ります。中央記憶が大きくなればなるほど時間は増えます。UICが大きいということは実記憶も大きいことを示すので空きフレームも豊富にあることを意味します。逆にUICが小さければ実記憶が小さいのでフレームの取り合いになる確率が高まります。小さなUICは実記憶不足の状態を示すことになります。
空きフレームが十分にあってページ・スチールが行われていない状態がUIC値65535です。逆に大きな実記憶が使われたり多くの実記憶が要求されるとUICは0に向かって近づいていきます。空きフレームが不足してページ・スチールが再開されると前回の続きのフレームからページ・スチール可能なフレームを探します。この繰り返しで中央記憶全体を一周する時間がUICとして計測されます。空きフレームが十分にあれば休み休み一周することになるのでUICは大きくなり65535に近づきます。逆に空きフレームが無ければすぐに一周してしまうのでUICは小さくなり0に近づきます。