分散トランザクション処理機能 OpenTP1 解説

[目次][用語][索引][前へ][次へ]

3.4.4 バッファ領域の共用による共用メモリの節約

共用メモリ上にサービス要求を格納する領域(メッセージ格納バッファプール)は,ユーザサーバごとに確保されます。この領域を複数のユーザサーバ間で共用すると,ユーザサーバのスケジュールに使う共用メモリを節約できます。

メッセージ格納バッファプールを共用する場合は,該当するノードに次に示す定義を指定します。

ユーザサービス定義に指定したスケジュールバッファグループ名に該当する名称がスケジュールサービス定義にない場合は,該当するユーザサーバの開始時にエラーになります。

バッファ領域の共用を次の図に示します。

図3-56 バッファ領域の共用

[図データ]

<この項の構成>
(1) バッファ領域の共用を指定できるユーザサーバ
(2) バッファ領域を共用化する場合の注意
(3) 共有化したバッファの使用サイズの制限
(4) バッファ領域を共有化する場合の注意

(1) バッファ領域の共用を指定できるユーザサーバ

バッファ領域の共用化の指定は,キュー受信型サーバの場合にだけ有効です。ソケット受信型サーバにバッファ領域を共用する指定をしても無視されて,共用しない状態で実行されます。

(2) バッファ領域を共用化する場合の注意

共用化を指定した複数のユーザサーバのプロセスが同時に起動されると,バッファ領域の競合が起こってスケジュール性能が落ちる場合があります。

(3) 共有化したバッファの使用サイズの制限

バッファ領域を共用化する場合,共用している一部のユーザサーバの処理が遅延したり,大きなデータのサービス要求が格納されたりすると,バッファ領域が圧迫され,ほかのユーザサーバに対するサービス要求がバッファ不足となることがあります。これを防止するために,ユーザサーバごとにバッファの使用サイズを制限することができます。

バッファの使用サイズを制限するには,ユーザサービス定義のscdbufgrp定義コマンドに-sオプション,または-pオプションを指定します。-sオプションは共用するバッファに対し,そのユーザサーバに対するサービス要求を何バイトまで格納できるかを指定します。また,-pオプションは共用するバッファに対し,そのユーザサーバに対するサービス要求を何%まで格納できるかを指定します。

バッファの使用サイズの制限は,キュー受信型SPPの場合にだけ使用できます。MHPでは使用できません。指定した場合は無視されます。

バッファの使用サイズの制限について,scdbufgrp定義コマンドに指定するオプション別に以降の図に示します。

図3-57 バッファの使用サイズの制限(scdbufgrp定義コマンドに-sオプションを指定)

[図データ]

この図では,スケジュールサービス定義を指定して,バッファグループBG1に3072バイトを確保しています。また,ユーザサービス定義を指定して,SPP1,およびSPP2が,それぞれ最大2048バイトまでバッファを使用できるようにしています。これによって,SPP1向けのサービス要求がバッファに滞留しても最大2048バイトまでしか使用できないため,SPP2は残り1024バイトのバッファで動作できます。

図3-58 バッファの使用サイズ制限(scdbufgrp定義コマンドに-pオプションを指定)

[図データ]

この図では,スケジュールサービス定義を指定して,バッファグループBG1に3072バイトを確保しています。また,ユーザサービス定義を指定して,SPP1は最大70%まで,SPP2は最大60%までバッファを使用できるようにしています。これによって,SPP1向けのサービス要求がバッファに滞留しても約70%(2048バイト)までしか使用できないため,SPP2は残り30%(1024バイト)のバッファで動作できます。

注※
指定した割合によって,使用できるサイズはセルサイズの倍数に切り下げられます。

バッファグループに属するサーバUAPで一律に使用サイズを制限する場合,スケジュールサービス定義のscdbufgrp定義コマンドに-sオプション,または-pオプションを指定することもできます。この場合は,ユーザサービス定義のscdbufgrp定義コマンドには-sオプション,または-pオプションを指定する必要はありません。

スケジュールサービス定義で一律に使用サイズを制限する場合の例を次に示します。図中の番号と以降の説明の番号は対応しています。

図3-59 スケジュールサービス定義で一律に使用サイズを制限する場合の例

[図データ]

  1. スケジュールサービス定義を指定して,バッファグループBG1に3072バイト確保し,一律で制限する使用サイズとして1024バイトを指定します。
  2. スケジュールサービス定義を指定して,バッファグループBG2に4096バイト確保し,一律で制限する使用サイズとして25%(1024バイト)を指定します。
  3. SPP1およびSPP3はバッファグループBG1を使用し,使用サイズはスケジュールサービス定義で一律に指定された1024バイトに制限されます。
  4. SPP2およびSPP4はバッファグループBG2を使用し,使用サイズはスケジュールサービス定義で一律に指定された25%(1024バイト)に制限されます。
  5. SPP5はバッファグループBG1を使用しますが,使用サイズはスケジュールサービス定義で一律に指定された1024バイトではなく,ユーザサービス定義で指定された2048バイトになります。
  6. SPP6はバッファグループBG2を使用しますが,使用サイズはスケジュールサービス定義で一律に指定された25%(1024バイト)ではなく,ユーザサービス定義で指定された50%(2048バイト)になります。
  7. SPP7はバッファグループBG2を使用しますが,使用サイズはスケジュールサービス定義で一律に指定された25%(1024バイト)ではなく,ユーザサービス定義で指定された2048バイトになります。

(4) バッファ領域を共有化する場合の注意

共用化したバッファの使用サイズを制限する,スケジュールサービス定義のscdbufgrp定義コマンドの-sオプション,または-pオプションは,ユーザサービスデフォルト定義にも指定できます。しかし,ユーザサービスデフォルト定義に指定した場合,共用バッファではない通常のバッファプール(ユーザサービス定義のmessage_store_buflenオペランドを指定)を使用するユーザサーバが使用できなくなります。