SLS その1 の1の続きです。
IBM i SLSの動作
SLS(シングル・レベル・ストレージ)アーキテクチャーは物理的なストレージに依存しないアドレッシングメカニズムです。メインメモリとストレージ装置を単一の記憶域として扱います。
すなわち、
1). SLSによるアドレッシングはデータ(オブジェクト)の物理的な位置、システムに実際に接続されているストレージ装置のタイプ(例:NVMe, SSD, HDDやストレージ製品型番)、台数と完全に独立しています。
→ゆえに、例えばIBM i のバックアップデータは保管元のH/W構成と全く異なるH/WやクラウドのIBM i SaaS(PowerVS)などにすべて復元することが可能です。(※厳密には復元先のH/Wや環境がバックアップしたIBM i OSバージョンをサポートするものである必要がありますが、POWERハードウェアのライフサイクルの長さとIBM i のサポートサイクルの長さを考慮するとかなり融通が利くと思います)
2). SLSの対象はデータベースレコードのみならず、OSやユーザーアプリケーションなどプログラム・コード全般、その他IBM i システム上の全てのデータ(オブジェクト)で、SLSによるページングの対象になります。
IBM i ではメインメモリを増やせば増やした分だけ100%使い切る、という事も言えます。無制限にではありませんが一定レベルまではパフォーマンス向上にも貢献します。この辺りは他のOSとは一線を画す部分だと思います。
IBM i(SLS)はメイン・メモリー上にロードされた,ただ1つのプログラムオブジェクトとデータベースレコードが複数のジョブで共有される
SLSがパフォーマンス向上に寄与する、データレコードの取り扱い方も説明します。
IBM i のメインメモリは上記のように論理的に分割されていて、多様なプログラムや実行形態が混在してもパフォーマンスが常に最適になるような調整が行われます。
上の例はデフォルトのメインメモリ論理分割法で4つに論理分割されています。プール2 *BASEにはOSやユーザーがバッチ投入したプログラムや、たとえばODBC/JDBCでIBM i 外からリクエストされたSQLを処理するプログラム等が実行されます。プール2のバッチJOB1が顧客マスターをREADすると対象のレコードはメインメモリのプール2にロードされます。このデータは更にバッチJOB1用のPAG内にコピーされてプログラム(JOB1)内で処理されます。
このとき、別な5250対話JOB2が同じ顧客マスターのレコードをREADした場合、プール2上にロードされているデータを自身のPAG内にコピーして使用できます。
このように一旦メインメモリにロードされたデータを複数のジョブから共有でき、しかるべきタイミングでストレージ書き出ししたり、複数ジョブ間でのデータ更新の競合制御(排他制御)などはOSが担ってくれます。たとえばバッチJOB1が顧客マスターをINPUTファイルとしてOPENしている場合、他のジョブ(5250 JOB2など)はUPDATE可能でREADできます。バッチJOB1がINPUT/OUTPUTとしてOPENしている場合はレコードロックがかけられ、他のジョブがUPDATEモードでレコードをREADしようとするとLOCK WAITで待機します。(INPUTモードでのREADは可能)
メインメモリ上で更新されたデータをストレージに書き出すタイミング
これは主に以下があります。
1). ファイルのFULL CLOSE時
2). RPGの強制書き出し命令 FEOD実行時
3). メインメモリの新たなページインの領域が無くなった場合にLSU(Least Recently Used)アルゴリズムでページアウト対象になった場合
4). データベーステーブル(PF,物理ファイル)に指定されたFRCRATIOパラメーターの指定に合致する場合
SLSのパフォーマンス上のメリット
・メインメモリ上にロードされたデータやプログラム・コードは複数のジョブ(ユーザーが実行するプログラム)から共用される。ゆえにメインメモリの必要量を低減できる
・一度メインメモリにロードされると他のジョブであっても二回目のストレージからのデータ読み出しが不要になるためストレージのビジー率(アームビジー率)を低減できる
・他のユーザー・ジョブがロード済のデータ・プログラムを使用できる場合、ストレージへのI/O時間を短縮できレスポンス向上が期待できる
SLSを効率的に動作させるための条件
※SLSを効果的に機能させるためには(パフォーマンスをよくするためには)メインメモリ全体がキャッシュ的に再利用できるように十分に大きなサイズを有している必要があります。システム負荷に相応なメインメモリが搭載されていない場合、パフォーマンス劣化を引き起こします。
メインメモリが足りているか?の確認はどうやって?
メインメモリのサイズはシステム負荷に見合った容量までであれば増やした分だけパフォーマンスは向上します。ですが過剰に搭載してもパフォーマンス向上はあまり期待できません。メインメモリの過不足は実際のシステムでパフォーマンスデータ(収集サービス)を取得すれば、Navigator for iで簡単に確認が可能です。
参考URL:
【できるIBM i 7.4解剖】第4回 「IBM i 7.4 サイジングTipsと最新のパフォーマンス分析ツールご紹介」 https://www.i-cafe.info/column/serials/dekiruibmi_no4
3. Navigator for i のメニューのパフォーマンスからパフォーマンス分析を実施
物理的なストレージ管理はどのようになっている?
ストレージ装置はASPと呼ばれる、いわゆるLUNですね、で管理されています。ASPの解説記事はこちらをどうぞ。
IBM i 駆け出し日記:IBM i のストレージ管理(ASPについての理解)
https://qiita.com/koga39chan/items/09a9dae7be30f05e8d15