3.4.4 バッファ領域の共用による共用メモリの節約
共用メモリ上にサービス要求を格納する領域(メッセージ格納バッファプール)は,ユーザサーバごとに確保されます。この領域を複数のユーザサーバ間で共用すると,ユーザサーバのスケジュールに使う共用メモリを節約できます。
メッセージ格納バッファプールを共用する場合は,該当するノードに次に示す定義を指定します。
-
スケジュールサービス定義のscdbufgrpオペランドに,バッファ領域を共用化するユーザサーバのグループの名称(スケジュールバッファグループ名)を指定します。
-
共用化するそれぞれのユーザサーバのユーザサービス定義に,スケジュールバッファグループ名をscdbufgrpオペランドで指定します。
ユーザサービス定義に指定したスケジュールバッファグループ名に該当する名称がスケジュールサービス定義にない場合は,該当するユーザサーバの開始時にエラーになります。
バッファ領域の共用を次の図に示します。
- 〈この項の構成〉
(1) バッファ領域の共用を指定できるユーザサーバ
バッファ領域の共用化の指定は,キュー受信型サーバの場合にだけ有効です。ソケット受信型サーバにバッファ領域を共用する指定をしても無視されて,共用しない状態で実行されます。
(2) バッファ領域を共用化する場合の注意
共用化を指定した複数のユーザサーバのプロセスが同時に起動されると,バッファ領域の競合が起こってスケジュール性能が落ちる場合があります。
(3) 共有化したバッファの使用サイズの制限
バッファ領域を共用化する場合,共用している一部のユーザサーバの処理が遅延したり,大きなデータのサービス要求が格納されたりすると,バッファ領域が圧迫され,ほかのユーザサーバに対するサービス要求がバッファ不足となることがあります。これを防止するために,ユーザサーバごとにバッファの使用サイズを制限することができます。
バッファの使用サイズを制限するには,ユーザサービス定義のscdbufgrp定義コマンドに-sオプション,または-pオプションを指定します。-sオプションは共用するバッファに対し,そのユーザサーバに対するサービス要求を何バイトまで格納できるかを指定します。また,-pオプションは共用するバッファに対し,そのユーザサーバに対するサービス要求を何%まで格納できるかを指定します。
バッファの使用サイズの制限は,キュー受信型SPPの場合にだけ使用できます。MHPでは使用できません。指定した場合は無視されます。
バッファの使用サイズの制限について,scdbufgrp定義コマンドに指定するオプション別に以降の図に示します。
この図では,スケジュールサービス定義を指定して,バッファグループBG1に3,072バイトを確保しています。また,ユーザサービス定義を指定して,SPP1,およびSPP2が,それぞれ最大2,048バイトまでバッファを使用できるようにしています。これによって,SPP1向けのサービス要求がバッファに滞留しても最大2,048バイトまでしか使用できないため,SPP2は残り1,024バイトのバッファで動作できます。
この図では,スケジュールサービス定義を指定して,バッファグループBG1に3,072バイトを確保しています。また,ユーザサービス定義を指定して,SPP1は最大70%まで,SPP2は最大60%までバッファを使用できるようにしています。これによって,SPP1向けのサービス要求がバッファに滞留しても約70%(2,048バイト※)までしか使用できないため,SPP2は残り30%(1,024バイト)のバッファで動作できます。
- 注※
-
指定した割合によって,使用できるサイズはセルサイズの倍数に切り下げられます。
バッファグループに属するサーバUAPで一律に使用サイズを制限する場合,スケジュールサービス定義のscdbufgrp定義コマンドに-sオプション,または-pオプションを指定することもできます。この場合は,ユーザサービス定義のscdbufgrp定義コマンドには-sオプション,または-pオプションを指定する必要はありません。
スケジュールサービス定義で一律に使用サイズを制限する場合の例を次に示します。図中の番号と以降の説明の番号は対応しています。
-
スケジュールサービス定義を指定して,バッファグループBG1に3,072バイト確保し,一律で制限する使用サイズとして1,024バイトを指定します。
-
スケジュールサービス定義を指定して,バッファグループBG2に4,096バイト確保し,一律で制限する使用サイズとして25%(1,024バイト)を指定します。
-
SPP1およびSPP3はバッファグループBG1を使用し,使用サイズはスケジュールサービス定義で一律に指定された1,024バイトに制限されます。
-
SPP2およびSPP4はバッファグループBG2を使用し,使用サイズはスケジュールサービス定義で一律に指定された25%(1,024バイト)に制限されます。
-
SPP5はバッファグループBG1を使用しますが,使用サイズはスケジュールサービス定義で一律に指定された1,024バイトではなく,ユーザサービス定義で指定された2,048バイトになります。
-
SPP6はバッファグループBG2を使用しますが,使用サイズはスケジュールサービス定義で一律に指定された25%(1,024バイト)ではなく,ユーザサービス定義で指定された50%(2,048バイト)になります。
-
SPP7はバッファグループBG2を使用しますが,使用サイズはスケジュールサービス定義で一律に指定された25%(1,024バイト)ではなく,ユーザサービス定義で指定された2,048バイトになります。
(4) バッファ領域を共有化する場合の注意
共用化したバッファの使用サイズを制限する,スケジュールサービス定義のscdbufgrp定義コマンドの-sオプション,または-pオプションは,ユーザサービスデフォルト定義にも指定できます。しかし,ユーザサービスデフォルト定義に指定した場合,共用バッファではない通常のバッファプール(ユーザサービス定義のmessage_store_buflenオペランドを指定)を使用するユーザサーバが使用できなくなります。