付録C.2 スケジューラが原因となるおそれのあるシステム構成例
システムの大規模化,マシンやネットワークの高性能化などに伴って,従来のスケジューラデーモンだけでは効率良くスケジューリングできない場合があります。スケジューラが原因となるおそれのあるシステム構成例について次に示します。
- 〈この項の構成〉
(1) ソケットディスクリプタが不足するシステム
1スケジューラデーモンに接続するクライアントUAP数が増加すると,スケジューラデーモンが利用するソケットディスクリプタ数に,余裕を持った値を指定できないことがあります。スケジューラデーモンでソケットディスクリプタが不足すると,新たなソケットディスクリプタを確保するために接続済みのコネクションに対して,切断要求および切断処理が発生します。このコネクション切断処理を行うためにシステムにかかる負荷によって,スケジューラデーモンのスケジューリング性能が低下する場合があります。
ソケットディスクリプタが不足するシステム例を次の図に示します。
|
(2) connectシステムコールがエラーになるシステム
OpenTP1では通信プロトコルにTCP/IPを利用しているため,クライアントUAPからのコネクション確立要求(connectシステムコール)は,acceptシステムコールによって取り出されるまでlistenシステムコールの待ちキューとして保留されます。
コネクション確立要求を保留する待ちキューの数は,OSによって異なります。しかし,クライアントUAPからの要求が集中した場合,キューとして保留できる数を超えてコネクション確立要求が発生することがあります。
待ちキューとして保留できないコネクション確立要求が発生すると,CUP(TP1/Client)の場合はメッセージKFCA02449-Eを,SUPおよびSPP(TP1/Server Base)の場合はメッセージKFCA00327-Wを出力します。そしてこのサービス要求は通信障害またはOpenTP1未起動として扱われる場合があります。
connectシステムコールがエラーになるシステム例を次の図に示します。
|
(3) 回線速度が異なるネットワークを混在して利用しているシステム
スケジューラデーモンの受信スレッドは,特定のクライアントUAPのサービス要求メッセージを受信している間は,ほかのクライアントUAPのサービス要求メッセージを受信できません(ただし,サービス要求メッセージが32キロバイトを超える場合は分割して送受信されます)。
このため,回線速度が遅いネットワークに接続しているクライアントUAPのメッセージ受信処理によって,回線速度が速いネットワークに接続しているクライアントUAPからのメッセージ受信処理が遅延して,回線速度が速いネットワークの性能を有効に利用できない場合があります。
回線速度が異なるネットワークを混在して利用しているシステム例を次の図に示します。ここでは,回線速度が異なる二つの回線を比較した場合の例を挙げています。2倍の回線速度差がある回線を比較すると,受信処理にも回線速度と同じ2倍の時間差が出ることを示しています。
|
(4) サービス要求メッセージが途切れるシステム
クライアントUAPが強制終了するなどの理由によって,スケジューラデーモンへのサービス要求メッセージの送信処理が途切れると,受信スレッドのメッセージ受信処理がタイムアウトするまでスケジューリングが滞る場合があります。
サービス要求メッセージが途切れるシステム例を次の図に示します。
|
(5) 処理スレッドが一時的に不足するシステム
クライアントUAPからのサービス要求メッセージが極端に集中して,スケジューラデーモンの処理能力を超えてしまうと,一時的に処理スレッドが不足することがあります。
処理スレッド不足が発生すると,メッセージKFCA00356-Wを出力して,一時的にサービス要求が通信障害やタイムアウトとして扱われる場合があります。
メッセージKFCA00356-Wは,システム共通定義のrpc_server_busy_countによって出力するタイミングを指定します。詳細は,マニュアル「OpenTP1 システム定義」を参照してください。
また,scdlsコマンドの-pオプションによって,スケジューラデーモンごとの処理スレッドの利用状況を表示できます。
処理スレッドが一時的に不足するシステム例を次の図に示します。
|