XTCには,送信用ポート,受信用ポート,および通信回線に対する負荷を分散するための負荷分散機能があります。ここでは,XTCの負荷分散機能について説明します。
送信用ポート数が少ない場合,送信用ポートをスレッド間で共有します。送信用ポートを共有した場合に,スレッド間で送信処理が競合したときは,送信用ポートの空き待ちを行います。そのため,競合するスレッド数が増えるほど,空き待ち時間が長くなります。
一方,送信用ポート数が多い場合は,送信用ポートをスレッドが占有します。この場合,スレッド間での待ち時間は発生しません。
送信用ポートの共有または占有は,次の表に示す規則で決定します。なお,送信UDPグループごとに,このルールが適用されます。そのため,例えば,送信UDPグループAは共有,送信UDPグループBは占有という構成も考えられます。
表2-13 送信用ポートの共有または占有を決定するためのルール
項番 | 条件 | 結果 |
---|---|---|
1 | 送信用ポート数 ≧ メインスレッドを除いたスレッド数 | すべてのスレッドは占有 |
2 | 送信用ポート数 > 処理スレッド数+送信スレッド数 | 処理スレッド,および送信スレッドは占有,それ以外のスレッドは共有 |
3 | 項番1および項番2以外の場合 | すべてのスレッドは共有 |
受信UDPグループに複数のポート番号を指定した場合,複数のUDP受信スレッドが同時に受信処理を行うことで,負荷分散を行います。
あて先UDPグループにポート番号が複数指定されている場合,送信元プロセスは,あて先ポート番号をランダムに選択します。