バージョン 4.2.5
 —  オペレーション  —

Natural ロールサーバーの機能

このドキュメントでは、以下のトピックについて説明します。

Natural ロールサーバーの操作」も参照してください。


Natural ロールサーバーの概要

Natural は、Natural ロールサーバーを使用することにより、アドレススペースが複数の z/OS イメージ(並列 Sysplex)に配置されている CICS や IMS/TM などの複数のアドレススペースシステムで実行できます。 もちろん、単一の z/OS システムを実行している場合でも、ロールサーバーを使用できます。

Natural は、端末 I/O の実行時にアプリケーションのコンテキストデータ(スレッド)を保存する必要があります。端末 I/O が開始される前に、スレッドがロールサーバーに提供され、ローカルロールバッファ内かロールファイル内に保持されます。 端末 I/O が完了すると、Natural はロールサーバーにスレッドを要求し、アプリケーションを続行します。 並列 Sysplex では、ロールサーバーはスレッド(ロールファイルディレクトリ)に関する情報をカップリング機能のデータ構造に保持します。 このため、Natural アプリケーションは、異なる時間に異なる z/OS システムで実行することができます。スレッドを、1 つのシステム上のロールサーバーに提供し、他のシステムから戻すように要求できます。

ロールサーバーは独自のアドレススペースで実行されます。 サービスは PC ルーチンとして提供されます。 並列 Sysplex では、参加する各 z/OS イメージでロールサーバーの 1 つのインスタンスを開始する必要があります。

適用されるロールサーバー Zap のリストは、Natural コマンド DUMP ZAPS で表示できます。 また、適用される Zap のリストは、ロールサーバーの起動中に JESMSGLG に書き込まれます。

CICS 環境での Natural に関する注意事項:CICS システムリカバリテーブルには、z/OS システムアベンドコード 0D6 が含まれている必要があります。

Top of page

単一の z/OS システムにおけるロールサーバー

ロールサーバーは、書き込み要求でスレッドを受け取ると(端末出力の前)、ローカルロールバッファ(LRB)に十分なスペースがあるかどうかを確認します。 ある場合は、スレッドが LRB にコピーされます。 ない場合は、スレッドがロールファイルに書き込まれます。 また、スレッドは、LRB スロットサイズより大きい場合も、ロールファイルに書き込まれます。 スレッドがロールファイルのスロットサイズより大きい場合は、スレッドに対応するために、追加のオーバーフロースロットが割り当てられます。 オーバーフロースロットの割り当ては、Natural セッションが最初に割り当てられたロールファイルに制限されます。 必要なオーバーフロースロットを割り当てられるフリースペースがロールファイルにない場合は、エラーが生成され、Natural セッションの要求は異常終了します。 オーバーフロースロットは、小さなスレッドで後続の書き込み要求によって暗黙的に解放されます。

ロールサーバーは、スレッドの読み込み要求を受け取ると(端末入力の後)、LRB でスレッドを検索します。 見つかった場合は、スレッドが LRB から要求者のアドレススペースにコピーされます。 見つからない場合は、スレッドがロールファイルから読み込まれて要求者のアドレススペースにコピーされます。

システムパフォーマンスが良好で LRB に常に十分なスペースがあることを確実にするために、"最高/最低値" があります。 LRB の最高値に達すると、ステージングタスクが有効になり、最低値に達するまで LRB コンテンツがロールファイルにコピーされます。 そのため、最高値と最低値をどこに設置するかは、パフォーマンスチューニングにおいて重要です。 パフォーマンスチューニングの詳細については、「ロールサーバーのパフォーマンスチューニング」を参照してください。

単一の z/OS システムにおけるロールサーバーの図:

Top of page

並列 Sysplex におけるロールサーバー

並列 Sysplex では、参加する z/OS イメージ内のロールサーバーはカップリング機能(CF)の XCF シグナルサービス経由で通信し、ロールファイルディレクトリは XES データ構造に存在します。

ロールサーバーは、書き込み要求でスレッドを受け取ると(端末出力の前)、ローカルロールバッファ(LRB)に十分なスペースがあるかどうかを確認します。 十分なスペースがある場合は、スレッドが LRB にコピーされて LRB からロールファイルに非同期的に書き込まれます。 LRB に十分なスペースがない場合は、スレッドがロールファイルに直接書き込まれます。 CF 構造内のロールファイルディレクトリは、それに従って更新されます。 スレッドオーバーフローは、「単一の z/OS システムにおけるロールサーバー」に記述されているように処理されます。

ロールサーバーは、スレッドの読み込み要求を受け取ると(端末入力の後)、最後の書き込み要求が同じ z/OS イメージで発行された場合は、スレッドを LRB から要求者のアドレススペースに直接コピーします。 最後の書き込み要求が同じ z/OS イメージから発行されていない場合は、スレッドがロールファイルから読み込まれて要求者のアドレススペースにコピーされます。

並列 Sysplex におけるロールサーバーの図:

Top of page

ロールファイルおよび LRB

ロールファイルは、ディレクトリと固定長スロットに論理的に細分化された BDAM ファイルです。 スロットサイズは、ロールファイルフォーマットルーチン NATRSRFI のパラメータで決まります。 スロットは、予想される最大の圧縮 Natural スレッドより大きい必要があります。

ロールファイルディレクトリには、アクティブな Natural セッションごとに 1 つのエントリと、最後の書き込み要求のタイムスタンプが含まれます。 単一の z/OS システムでは、ディレクトリはロールサーバーのアドレススペースに存在します。 並列 Sysplex では、ディレクトリはカップリング機能に存在します。 ディレクトリは、ロールサーバーが終了するときかリソースの割り当てを解除するときにのみロールファイルに書き戻されます。 「Natural ロールサーバーの操作」の DEAL および TERM コマンドを参照してください。

ローカルロールバッファは、データスペースまたは z/OS メモリオブジェクトに含まれ、固定長スロットに細分化されています。 LRB スロットはロールファイルスロットより小さくてもかまいません。 スレッドが LRB スロットサイズより大きい場合は、スレッドはロールファイルに直接書き込まれます。 LRB スロットの数とサイズは、ロールサーバーの起動パラメータで決まります。これらは、システムパフォーマンスにおいて重要な要素です。

ロールサーバーは、最大 5 つの異なるロールファイルで実行できます。 これらのロールファイルはそれぞれ 1 つのローカルロールバッファに論理的に接続されます。 ロールファイルが 5 つある場合は、対応する LRB が 5 つあります。 各ロールファイルは、専用の読み取り、書き込み、およびステージングタスクによってアクセスされます。 このため、複数チャネルの複数ディスクにロールファイルが作成された場合は、ロールファイルに同時にアクセスできます。

Natural ユーザーは、以下のアルゴリズムに応じてロールファイルに割り当てられます。

RN := (first four bytes of roll-server-user-id interpreted as positive integer) modulo number of roll files + 1
ALLOCNUM := 0
FOR I = RN TO  number of allocated roll files
   IF ROLLFILE(I) is not full THEN
      ALLOCNUM := I
      ESCAPE BOTTOM
   END-IF
END-FOR
IF ALLOCNUM = 0 THEN
   FOR I  = 1 TO RN-1
      IF ROLLFILE(I) is not full
         ALLOCNUM := I
         ESCAPE BOTTOM
      END-IF
   END-FOR
END-IF
IF ALLOCNUM = 0 THEN
   Return 'roll file full' error
ELSE
   Allocate userid to roll file number ALLOCNUM
END-IF

roll-server-user-id は、Natural インターフェイスによって提供される 16 バイトの一意な文字列です。詳細については、このドキュメント内の対応する TP モニタインターフェイスのセクションを参照してください。

例:

このアルゴリズムでユーザー ID がロールファイル間で均等に分散されない場合は、ロールサーバーのユーザー出口 NATRSU14 が役立ちます。 これは、ロールサーバーユーザー ID の最初の 8 バイトにはサーバー名が挿入されるため、サーバー環境に特に関連します(「z/OS 環境のサーバーとしての Natural」を参照)。 ユーザー出口の詳細については、「Natural ロールサーバーの操作」の「NATRSU14 ユーザー出口」を参照してください。

ユーザー ID が均等に分散されていることを確認するには、Natural コマンド SYSTP、選択 "R" を使用して、ロールサーバー統計を表示します。

Top of page