Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 クライアント使用の手引 TP1/Client/W,TP1/Client/P編


2.3.10 マルチスケジューラ機能を使用したRPC

CUPからスケジュールキューを使うSPP(キュー受信型サーバ)にサービスを要求した場合,要求先SPPがあるノードのスケジューラデーモンが,いったんサービス要求メッセージを受信し,該当するSPPのスケジュールキューに格納します。スケジューラデーモンとは,スケジュールサービスを提供するシステムデーモンのことです。

長大なサービス要求メッセージは,一定の長さに分割してスケジューラデーモンに送信します。スケジューラデーモンは,サービス要求メッセージを組み立ててキュー受信型サーバのスケジュールキューに格納します。スケジューラデーモンは,OpenTP1システムごとに1プロセスです。そのため,分割されたサービス要求メッセージの受信処理が完了するまで,スケジューラデーモンはほかのサービス要求メッセージを受信できません。通信速度が遅い回線を使用して,長大なサービス要求メッセージを送信した場合,ほかのサービス要求のスケジューリングが遅延することがあります。また,システムの大規模化,マシンやネットワークの高性能化などに伴って,効率良くスケジューリングできないことがあります。この場合,従来のスケジューラデーモンとは別に,サービス要求受信専用デーモンを複数プロセス起動し,サービス要求メッセージ受信処理を並行動作させることによって,スケジューリング遅延を回避できます。この機能をマルチスケジューラ機能といいます。以降,従来のスケジューラデーモンをマスタスケジューラデーモン,サービス要求専門デーモンをマルチスケジューラデーモンと呼びます。

マルチスケジューラ機能の検討が必要なシステム構成については,マニュアル「OpenTP1 プログラム作成の手引」を参照してください。

〈この項の構成〉

(1) マルチスケジューラデーモンをランダムに選択する

マルチスケジューラ機能を使用することで,複数起動されているマルチスケジューラデーモンの中から,利用できるマルチスケジューラデーモンをランダムに選択してサービス要求を送信できます。

マルチスケジューラデーモンをランダムに選択して,ネームサービスを使用しないRPC,または通常のRPCを実行できます。

(a) ネームサービスを使用しないRPC

クライアント環境定義DCSCDDIRECTにYを指定してネームサービスを使用しないRPCを行う場合,クライアント環境定義DCSCDPORTを指定しているかどうかで次のような違いがあります。

  • DCSCDPORTを指定する場合

    DCSCDPORTを指定した場合,窓口となるTP1/Serverのネームサービスに問い合わせることなく,サービス要求を送信するスケジューラデーモンをランダムに選択できるため,通信回数が削減され,また,ネームサービスの負荷軽減にもつながります。

    サービス要求を送信するスケジューラデーモンのポート番号は,次に示す範囲からランダムに選択します。

    • 下限値:DCSCDPORTに指定したポート番号

    • 上限値:下限値 + DCSCDMULTICOUNTに指定したプロセス数 - 1

    DCSCDPORTには,マルチスケジューラデーモンのポート番号を指定します。マスタスケジューラデーモンとマルチスケジューラデーモンのベースとなるポート番号が連続している場合は,マスタスケジューラデーモンのポート番号も指定できます。

    DCSCDMULTICOUNTには,TP1/Serverで起動しているスケジューラデーモンのプロセス数を指定します。DCSCDMULTICOUNTに指定するプロセス数は,DCSCDPORTに指定するポート番号の内容によって,次のとおり異なります。

    DCSCDPORT指定値

    DCSCDMULTICOUNT指定値

    マルチスケジューラデーモンのベースとなるポート番号

    マルチスケジューラデーモンのプロセス数と同値か,それ以下の値を指定する。

    マルチスケジューラデーモンの任意のポート番号

    「マルチスケジューラデーモンのポート番号の最大 - DCSCDPORTに指定したポート番号 + 1」の値か,それ以下の値を指定する。

    マスタスケジューラデーモンのポート番号

    マスタスケジューラデーモンとマルチスケジューラデーモンのベースとなるポート番号が連続している場合

    「マルチスケジューラデーモンのプロセス数 + 1」の値か,それ以下の値を指定する。

    上記以外

    1を指定するか,または指定を省略する(マルチスケジューラデーモンは使用できない)。

    なお,DCHOSTで指定した窓口となるTP1/Server間で,スケジュールサービス定義のscdmultiで指定した値を統一する必要があります。

  • DCSCDPORTを指定しない場合

    クライアントユーザの認証を要求したあと,最初のサービス要求時に窓口となるTP1/Serverのネームサービスへ問い合わせて,サービス情報を得ます。この情報を基に,マルチスケジューラデーモンをランダムに選択してサービス要求を送信します。サービス情報は次のどちらかの時点まで有効です。

    • クライアントユーザの認証を解除(dc_clt_cltout_s関数の実行)

    • 窓口となるTP1/Serverの切り替え

    サービス要求を送信するマルチスケジューラデーモンのポート番号の範囲は,スケジュールサービス定義のscdmultiの最初に定義した,-pオプションに指定したポート番号を基にして決めます。そのため,スケジュールサービス定義の指定順序を考慮する必要があります。

(b) 通常のRPC

マルチスケジューラ機能を使用して,通常のRPC(ネームサービスを使用する)を行う場合について説明します。サービス情報を一時的に格納する領域に該当するサービス情報がない場合にネームサービスにサービス情報を問い合わせます。サービス情報を基にマルチスケジューラデーモンをランダムに選択してサービス要求を送信します。

(2) クライアント環境定義とサービス要求を送信するスケジューラデーモンの関連

マルチスケジューラ機能を使用した場合,サービス要求を送信するスケジューラデーモンはクライアント環境定義の指定によって異なります。

クライアント環境定義のオペランドの指定とスケジューラデーモンの関連を次の表に示します。

表2‒2 クライアント環境定義のオペランドの指定とスケジューラデーモンの関連

クライアント環境定義のオペランドの指定

サービス要求を送信するスケジューラデーモン

DCSCDMULTI

DCSCDDIRECT

DCSCDPORT

DCSCDMULTICOUNT

Y

Y

2以上の値

ランダムに選択したスケジューラデーモン※1

1,または指定しない

DCSCDPORTに指定したポート番号で起動されているスケジューラデーモン

×

スケジュールサービス定義 scdmultiの最初に定義した,-pオプションに指定したポート番号を基にして決めた,マルチスケジューラデーモンからランダムに選択したマルチスケジューラデーモン※2

N

×

サービス情報を基にランダムに選択したマルチスケジューラデーモン※2

N

Y

×

DCSCDPORTに指定したポート番号で起動されているスケジューラデーモン

×

マスタスケジューラデーモン※2

N

×

ソケット受信型サーバ,またはマスタスケジューラデーモン※2

(凡例)

Y:オペランドの指定値がYである

N:オペランドの指定値がNである

○:オペランドに値を指定する

×:指定値は無効である

−:オペランドに値を指定しない

注※1

スケジューラデーモンのポート番号は,次に示す範囲の値から選択します。

下限値:DCSCDPORTに指定したポート番号

上限値:下限値 + DCSCDMULTICOUNTに指定したプロセス数 - 1

注※2

ネームサービスへの問い合わせが発生します。