(57)【要約】【課題】状況の変化に応じて適切な通信方法を決定すること。【解決手段】情報処理装置１は、記憶部１ａおよび演算部１ｂを有する。記憶部１ａは、通信データのサイズに対して通信方法の選択確率を記憶する。演算部１ｂは、通信データのサイズに対する選択確率に応じて複数の通信方法から今回の通信に用いる通信方法を選択する。演算部１ｂは、選択した通信方法による通信結果を記録する。演算部１ｂは、通信結果に基づいて記憶部１ａに記憶された選択確率を更新する。【選択図】図１
2018011148.tif 000002
【特許請求の範囲】
【請求項１】
通信データのサイズに対して通信方法の選択確率を記憶する記憶部と、
前記通信データのサイズに対する前記選択確率に応じて複数の通信方法から今回の通信に用いる前記通信方法を選択し、選択した前記通信方法による通信結果を記録し、前記通信結果に基づいて前記記憶部に記憶された前記選択確率を更新する演算部と、
を有する情報処理装置。
【請求項２】
前記演算部は、第１の通信方法による第１の平均応答時間と第２の通信方法による第２の平均応答時間との比較に応じて、前記第１の通信方法の第１の選択確率、および、前記第２の通信方法の第２の選択確率を更新する、請求項１記載の情報処理装置。
【請求項３】
前記演算部は、前記第１の平均応答時間が前記第２の平均応答時間よりも大きくなると、前記第１の選択確率を減らし、前記第２の選択確率を増やす、請求項２記載の情報処理装置。
【請求項４】
前記演算部は、前記第１の選択確率、および、前記第２の選択確率を、所定の変化量ずつ段階的に更新する、請求項２または３記載の情報処理装置。
【請求項５】
前記演算部は、前記第１の選択確率と前記第２の選択確率との差に応じて、前記変化量を決定する、請求項４記載の情報処理装置。
【請求項６】
前記通信データのサイズは、通信パケットサイズである、請求項１乃至５の何れか１項に記載の情報処理装置。
【請求項７】
コンピュータに、
通信データのサイズに対して通信方法の選択確率を記憶する記憶部を参照して、前記通信データのサイズに対する前記選択確率に応じて複数の通信方法から今回の通信に用いる前記通信方法を選択し、
選択した前記通信方法による通信結果を記録し、
前記通信結果に基づいて前記記憶部に記憶された前記選択確率を更新する、
処理を実行させる通信方法決定プログラム。
【請求項８】
コンピュータが、
通信データのサイズに対して通信方法の選択確率を記憶する記憶部を参照して、前記通信データのサイズに対する前記選択確率に応じて複数の通信方法から今回の通信に用いる前記通信方法を選択し、
選択した前記通信方法による通信結果を記録し、
前記通信結果に基づいて前記記憶部に記憶された前記選択確率を更新する、
通信方法決定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置、通信方法決定プログラムおよび通信方法決定方法に関する。
【背景技術】
【０００２】
現在、複数の装置がネットワークを介して相互に通信するシステムが利用されている。システムでは、複数の通信方法を利用可能なことがある。
例えば、複数の伝送方式の中から１つを選択して、端末局にデータ信号を送信する基地局の提案がある。この提案では、基地局は、制御信号の送受信を含むオーバヘッドと、データ信号のデータ長と、変調方式と、符号化率と、伝送用のサブキャリア数とに基づいて、伝送方式毎に伝送速度を算出し、最大の伝送速度に対応する伝送方式を選択する。
【０００３】
また、端末によるパケット送信に直交多重方式または非直交多重方式のどちらを用いるかを決定するためのトラフィック条件を決定する基地局の提案もある。この提案では、基地局は、直交多重方式において使用する無線リソースを通知するための無線リソース割り当て信号の量と非直交多重方式における基地局のセル内の端末への干渉量とに基づいて、トラフィック条件を決定する。
【０００４】
ただし、上記の無線通信システムにおける変調方式、符号化率、無線リソース割り当て信号の量および干渉量という指標は、如何なるシステムでも通信方法の選択に利用できるわけではない。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１５−１４９５５６号公報
【特許文献２】国際公開第２０１５／０１５５４３号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
複数の通信方法において、通信データのサイズに応じて通信性能（例えば、応答時間など）に差異があることがある。この場合、情報処理装置により、送信対象の通信データに対して通信性能が他の通信方法に比べて高くなる通信方法を選択させることが考えられる。このような選択を行えるようにするために、例えば、通信データのサイズに応じた通信性能を、通信方法毎に予め測定し、通信データのサイズ（あるいは、サイズ範囲）毎に選択すべき通信方法を定めた情報を、情報処理装置に予め格納しておくことが考えられる。
【０００７】
ところが、このように静的な条件で通信方法を決定すると、通信方法の決定が当該条件により固定化してしまう。このため、状況の変化（例えば、情報処理装置の負荷の変動による通信性能の変化など）に対応できないことがあるという問題がある。
【０００８】
１つの側面では、本発明は、状況の変化に応じて適切な通信方法を決定可能にすることを目的とする。
【課題を解決するための手段】
【０００９】
１つの態様では、情報処理装置が提供される。この情報処理装置は、記憶部と演算部とを有する。記憶部は、通信データのサイズに対して通信方法の選択確率を記憶する。演算部は、通信データのサイズに対する選択確率に応じて複数の通信方法から今回の通信に用いる通信方法を選択し、選択した通信方法による通信結果を記録し、通信結果に基づいて記憶部に記憶された選択確率を更新する。
【発明の効果】
【００１０】
１つの側面では、状況の変化に応じて適切な通信方法を決定できる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態の情報処理装置を示す図である。
【図２】第２の実施の形態の情報処理システムを示す図である。
【図３】ノードのハードウェア例を示す図である。
【図４】ノードのソフトウェア例を示す図である。
【図５】ｉＳＥＲモジュールの機能例を示す図である。
【図６】閾値制御による通信方法決定の例を示す図である。
【図７】ｉＳＥＲイニシエータ／ターゲットの機能例を示す図である。
【図８】選択確率テーブルの例を示す図である。
【図９】平均応答時間テーブルの例を示す図である。
【図１０】処理の呼出関係の例を示す図である。
【図１１】ｉＳＥＲイニシエータ処理の例を示すフローチャートである。
【図１２】ｉＳＥＲターゲット処理の例を示すフローチャートである。
【図１３】選択確率更新の具体例（その１）を示す図である。
【図１４】選択確率更新の具体例（その２）を示す図である。
【図１５】通信パケットサイズに対するテーブル例を示す図である。
【発明を実施するための形態】
【００１２】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態の情報処理装置を示す図である。情報処理装置１は、情報処理装置２と通信する。情報処理装置１，２は、ネットワーク３に接続されており、ネットワーク３を介して通信する。情報処理装置１は、情報処理装置２との通信に用いる通信方法として、複数の通信方法のうちの何れかを選択することができる。
【００１３】
複数の通信方法は、通信方法Ｘ，Ｙを含む。通信方法Ｘは、比較的小さなサイズのデータを送信する場合に、通信方法Ｙよりも通信を高速化できる。通信方法Ｙは、比較的大きなサイズのデータを送信する場合に、通信方法Ｘよりも通信を高速化できる。
【００１４】
情報処理装置１は、記憶部１ａおよび演算部１ｂを有する。記憶部１ａは、ＲＡＭ（Random Access Memory）などの揮発性記憶装置でもよいし、ＨＤＤ（Hard Disk Drive）やフラッシュメモリなどの不揮発性記憶装置でもよい。演算部１ｂは、ＣＰＵ（Central Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、ＦＰＧＡ（Field Programmable Gate Array）などを含み得る。演算部１ｂはプログラムを実行するプロセッサでもよい。ここでいう「プロセッサ」には、複数のプロセッサの集合（マルチプロセッサ）も含まれる。
【００１５】
記憶部１ａは、選択確率情報Ｔ１および通信結果情報Ｔ２を記憶する。選択確率情報Ｔ１は、通信データのサイズ（通信データサイズ）に対する通信方法の選択確率を示す情報である。
【００１６】
「通信データサイズ」は、例えば、情報処理装置１が今回送信するデータ（より具体的には、記憶部１ａに確保された送信バッファに格納されたデータ）のサイズである。「通信データサイズ」は、情報処理装置１が今回のデータ送信に用いる通信パケットのサイズ（通信パケットサイズ）でもよい。
【００１７】
「選択確率」は、演算部１ｂにより該当の通信方法を選択させる確率を表している。例えば、ある通信データサイズにおいて、通信データ単位のデータ送信回数をＮ（Ｎは２以上の整数）とし、そのうち通信方法Ｘを選択する回数をｎ１（ｎ１は１以上の整数）、通信方法Ｙを選択する回数をｎ２（ｎ２は１以上の整数）とする。このとき、該当の通信データサイズの通信方法Ｘの選択確率ｐ１（ｐ１は０＜ｐ１＜１の実数）は、比較的大きなＮに対して、ｎ１／Ｎ〜ｐ１となるように通信方法Ｘを演算部１ｂに選択させることを意味する。同様に、該当の通信データサイズの通信方法Ｙの選択確率ｐ２（ｐ２は０＜ｐ２＜１）は、比較的大きなＮに対して、ｎ２／Ｎ〜ｐ２となるように通信方法Ｙを演算部１ｂに選択させることを意味する。
【００１８】
選択確率情報Ｔ１の例では、通信データサイズａ，ｂ，ｃのように、通信データサイズを３つに区分している。通信データサイズの１つの区分（例えば、通信データサイズａ）は、通信データサイズの１つの範囲を示していると考えてもよい。通信データサイズｂは、通信データサイズａよりも大きな通信データサイズの区分である。通信データサイズｃは、通信データサイズｂよりも大きな通信データサイズの区分である。
【００１９】
ここで、通信方法Ｘは、通信データサイズが比較的小さい場合は、通信方法Ｙよりも通信性能が高い。このため、選択確率情報Ｔ１では、通信データサイズが小さいほど、通信方法Ｘの選択確率が大きく設定される。また、選択確率情報Ｔ１の例では、通信データサイズａ，ｂにおいて、通信方法Ｘの選択確率は、通信方法Ｙの選択確率よりも大きい。
【００２０】
一方、通信方法Ｙは、通信データサイズが比較的大きい場合は、通信方法Ｘよりも通信性能が高い。このため、選択確率情報Ｔ１では、通信データサイズが大きいほど、通信方法Ｙの選択確率が大きく設定される。また、選択確率情報Ｔ１の例では、通信データサイズｃにおいて、通信方法Ｙの選択確率は通信方法Ｘの選択確率よりも大きい。
【００２１】
より具体的には、選択確率情報Ｔ１の例によれば、通信データサイズａに対して、通信方法Ｘの選択確率は０．９であり、通信方法Ｙの選択確率は０．１である。通信データサイズｂに対して、通信方法Ｘの選択確率は０．７であり、通信方法Ｙの選択確率は０．３である。通信データサイズｃに対して、通信方法Ｘの選択確率は０．３であり、通信方法Ｙの選択確率は０．７である。選択確率は、何れの通信方法も０よりも大きい値となるように決定される。
【００２２】
通信結果情報Ｔ２は、通信データサイズに対して通信方法毎の通信結果を記録した情報である。通信結果は、通信性能を表す指標を含む。通信性能を表す指標は、例えば、通信の平均応答時間である。平均応答時間は、該当の通信データサイズ／通信方法を用いた通信に関する、過去のある時点から現在までの複数の応答時間の相加平均である。例えば、演算部１ｂは、通信パケット毎に、あるいは、所定数の通信パケット毎に、情報処理装置２から受信確認応答（ＡＣＫ：ACKnowledgement）を受信する。演算部１ｂは、通信パケットの送信時刻とＡＣＫの受信時刻との差を求めることで、通信の応答時間を計測できる。ここで、以下の説明において、応答時間および平均応答時間の単位はマイクロ秒である（以下、同様）。
【００２３】
ある時点において、通信結果情報Ｔ２の例によれば、通信データサイズａに対して、通信方法Ｘの平均応答時間は１０であり、通信方法Ｙの平均応答時間は２０である。通信データサイズｂに対して、通信方法Ｘの平均応答時間は１５であり、通信方法Ｙの平均応答時間は２０である。通信データサイズｃに対して、通信方法Ｘの平均応答時間は３０であり、通信方法Ｙの平均応答時間は２５である。
【００２４】
演算部１ｂは、ある通信データの送信を開始する際に、記憶部１ａに確保された送信バッファに当該通信データを格納し、選択確率情報Ｔ１を参照して、当該通信データの通信データサイズに対する各通信方法の選択確率を取得する。例えば、演算部１ｂは、該当の通信データサイズが通信データサイズｂの区分に属すると判断すると、通信方法Ｘの選択確率０．７、および、通信方法Ｙの選択確率０．３を選択確率情報Ｔ１から取得する。
【００２５】
演算部１ｂは、通信データサイズに対する当該選択確率に応じて複数の通信方法（通信方法Ｘ，Ｙ）から今回の通信に用いる通信方法を選択する。例えば、演算部１ｂは、通信方法Ｘの選択確率０．７、および、通信方法Ｙの選択確率０．３に従って、何れかの通信方法を選択する。ここでは、演算部１ｂは、通信方法Ｘを選択するものとする。
【００２６】
演算部１ｂは、選択した通信方法による通信結果を記録する。例えば、演算部１ｂは、選択した通信方法Ｘによる通信結果を、通信結果情報Ｔ２に記録する。一例として、今回の通信データの送信が完了した後の時点で、通信データサイズｂの区分における通信方法Ｘの平均応答時間は、２５に更新されているものとする。レコードＴ２ａは、通信結果情報Ｔ２における通信データサイズｂの当該更新後のレコードを例示している。
【００２７】
演算部１ｂは、通信結果に基づいて、記憶部１ａに記憶された選択確率を更新する。上記の例では、通信結果情報Ｔ２の更新前では、通信データサイズｂについて、通信方法Ｘの平均応答時間が１５であり、通信方法Ｙの平均応答時間が２０である。一方、通信結果情報Ｔ２の更新後では、通信データサイズｂについて、通信方法Ｘの平均応答時間が２５であり、通信方法Ｙの平均応答時間が２０である。すなわち、通信データサイズｂについて、通信方法Ｘ，Ｙによる平均応答時間の大小関係が逆転しており、通信の性能特性が変化していることになる。
【００２８】
演算部１ｂは、通信方法Ｘ，Ｙによる平均応答時間の大小関係が逆転したことを検出すると、選択確率情報Ｔ１に登録された通信データサイズｂに対応する通信方法Ｘの選択確率、および、通信方法Ｙの選択確率を更新する。具体的には、演算部１ｂは、通信データサイズｂに対して、通信方法Ｘの選択確率を下げ、通信方法Ｙの選択確率を上げる。なぜなら、上記の通信方法Ｘ，Ｙによる平均応答時間の大小関係の逆転は、通信データサイズｂでの通信では、通信方法Ｘよりも通信方法Ｙを選択した方が平均応答時間の短縮を図れる可能性があることの示唆と捉えることができるからである。
【００２９】
ここで、演算部１ｂは、種々の方法により、選択確率の増減を行える。ただし、前述のように演算部１ｂは、各通信方法の選択確率を０よりも大きくなるようにする。選択確率の更新後も、各通信方法による応答時間の比較を行えるようにするためである。
【００３０】
１つの例では、演算部１ｂは、平均応答時間の大小関係の逆転に応じて、選択確率の大小関係を逆転させる。上記の例では、演算部１ｂは、通信データサイズｂについて、通信方法Ｘの選択確率を０．３に更新し、通信方法Ｙの選択確率を０．７に更新する。レコードＴ１ａは、選択確率情報Ｔ１における通信データサイズｂの当該更新後のレコードを例示している。
【００３１】
あるいは、演算部１ｂは、選択確率の更新を所定の周期で定められるタイミング毎に、所定の変化量ずつ段階的に行ってもよい。例えば、演算部１ｂは、通信方法Ｘの選択確率を０．７から０．３まで、０．１ずつ段階的に減らす。一方、演算部１ｂは、通信方法Ｙの選択確率を０．３から０．７まで、０．１ずつ段階的に増やす。段階的に増減している間に、演算部１ｂは、通信データサイズｂにおける通信方法Ｘ，Ｙの平均応答時間の大小関係が再度逆転したことを検出すると、通信方法Ｘの選択確率を０．７に、通信方法Ｙの選択確率を０．３に戻す。なぜなら、通信方法Ｘ，Ｙの平均応答時間の大小関係の最初の逆転は、何らかの一時的な要因によって生じていた可能性が高いからである。
【００３２】
ここで、例えば、通信データサイズに応じた通信性能を、通信方法毎に、装置開発時などに予め測定し、通信データサイズ毎に選択すべき通信方法を定めた条件を、情報処理装置に予め格納しておくことが考えられる。
【００３３】
ところが、このように静的な条件で通信方法を決定すると、通信方法の決定が当該条件により固定化してしまう。このため、状況の変化（例えば、情報処理装置の負荷の変動による通信性能の変化など）に対応できないことがあるという問題がある。
【００３４】
一方、情報処理装置１によれば、選択確率に応じて通信方法を選択し、通信結果に基づいて選択確率を更新する。このとき、ある通信データサイズにおいて、相対的に高い通信性能を実現できる通信方法の選択確率を相対的に高くし、相対的に低い通信性能となる通信方法の選択確率を相対的に低くする。そうすると、比較的高い通信性能を実現しながら、かつ、各通信方法の通信性能の比較により、性能特性の変化を把握することが可能となる。こうして、情報処理装置１は、状況の変化に応じて適切な通信方法を決定することができる。
【００３５】
［第２の実施の形態］
図２は、第２の実施の形態の情報処理システムを示す図である。第２の実施の形態の情報処理システムは、ノード１００，２００を含む。ノード１００，２００は、ＩｎｆｉｎｉＢａｎｄ（ＩｎｆｉｎｉＢａｎｄは米国登録商標）スイッチ１０に、ＩＢ（InfiniBand）ケーブルを介して接続されている。ＩｎｆｉｎｉＢａｎｄスイッチ１０を用いて形成されるネットワークは、第１の実施の形態のネットワーク３の一例である。
【００３６】
ノード１００，２００は、ＩｎｆｉｎｉＢａｎｄスイッチ１０を介して相互に通信する。例えば、ノード１００，２００は、ｉＳＥＲ（iSCSI Extensions for RDMA）によるＲＤＭＡ（Remote Direct Memory Access）を行える。ここで、ｉＳＣＳＩはInternet Small Computer System Interfaceの略である。ノード１００，２００は、コンピュータやサーバなどと呼ばれてもよい。ノード１００は、第１の実施の形態の情報処理装置１の一例である。
【００３７】
図３は、ノードのハードウェア例を示す図である。ノード１００は、プロセッサ１０１、ＲＡＭ１０２、ＨＤＤ１０３、ＨＣＡ（Host Channel Adapter）１０４、画像信号処理部１０５、入力信号処理部１０６、媒体リーダ１０７および通信インタフェース１０８を有する。各ユニットはノード１００のバスに接続されている。ノード２００もノード１００と同様のユニットを用いて実現できる。
【００３８】
プロセッサ１０１は、ノード１００の情報処理を制御する。プロセッサ１０１は、マルチプロセッサでもよい。プロセッサ１０１は、例えばＣＰＵ、ＤＳＰ、ＡＳＩＣまたはＦＰＧＡなどである。プロセッサ１０１は、ＣＰＵ、ＤＳＰ、ＡＳＩＣ、ＦＰＧＡなどのうちの２以上の要素の組み合わせでもよい。
【００３９】
ＲＡＭ１０２は、ノード１００の主記憶装置である。ＲＡＭ１０２は、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部を一時的に記憶する。また、ＲＡＭ１０２は、プロセッサ１０１による処理に用いる各種データを記憶する。
【００４０】
ＨＤＤ１０３は、ノード１００の補助記憶装置である。ＨＤＤ１０３は、内蔵した磁気ディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３は、ＯＳのプログラム、アプリケーションプログラム、および各種データを記憶する。ノード１００は、フラッシュメモリやＳＳＤ（Solid State Drive）などの他の種類の補助記憶装置を備えてもよく、複数の補助記憶装置を備えてもよい。
【００４１】
ＨＣＡ１０４は、ＩＢケーブルを用いて、ＩｎｆｉｎｉＢａｎｄスイッチ１０に接続されている。ＨＣＡ１０４は、ＩｎｆｉｎｉＢａｎｄスイッチ１０を介してノード２００と通信する。
【００４２】
画像信号処理部１０５は、プロセッサ１０１からの命令に従って、ノード１００に接続されたディスプレイ１１に画像を出力する。ディスプレイ１１としては、ＣＲＴ（Cathode Ray Tube）ディスプレイや液晶ディスプレイなどを用いることができる。
【００４３】
入力信号処理部１０６は、ノード１００に接続された入力デバイス１２から入力信号を取得し、プロセッサ１０１に出力する。入力デバイス１２としては、例えば、マウスやタッチパネルなどのポインティングデバイス、キーボードなどを用いることができる。
【００４４】
媒体リーダ１０７は、記録媒体１３に記録されたプログラムやデータを読み取る装置である。記録媒体１３として、例えば、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤなどの磁気ディスク、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）などの光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）を使用できる。また、記録媒体１３として、例えば、フラッシュメモリカードなどの不揮発性の半導体メモリを使用することもできる。媒体リーダ１０７は、例えば、プロセッサ１０１からの命令に従って、記録媒体１３から読み取ったプログラムやデータをＲＡＭ１０２またはＨＤＤ１０３に格納する。
【００４５】
通信インタフェース１０８は、ネットワーク２０と接続される。通信インタフェース１０８は、ネットワーク２０を介して他の情報処理装置と通信を行う。
図４は、ノードのソフトウェア例を示す図である。ノード１００は、ＯＳ１１０およびアプリケーション１２０を含む。ＯＳ１１０は、ノード１００の全体を制御する基本的なソフトウェアである。アプリケーション１２０は、ノード１００において、ユーザの業務支援機能を提供するソフトウェアである。
【００４６】
ＯＳ１１０は、ｉＳＣＳＩコントローラ１１１およびドライバ１１２を有する。ｉＳＣＳＩコントローラ１１１は、ｉＳＣＳＩプロトコルを処理するソフトウェアモジュールである。ｉＳＣＳＩコントローラ１１１は、ｉＳＥＲモジュール１５０を有する。ｉＳＥＲモジュール１５０は、ＲＤＭＡ機能を提供するモジュールである。ドライバ１１２は、ＨＣＡ１０４を制御するソフトウェアである。
【００４７】
ノード２００は、ノード１００と同様に、ＯＳ２１０およびアプリケーション２２０を有する。ＯＳ２１０は、ノード２００の全体を制御する基本的なソフトウェアである。アプリケーション２２０は、ノード２００において、ユーザの業務支援機能を提供するソフトウェアである。
【００４８】
ＯＳ２１０は、ｉＳＣＳＩコントローラ２１１およびドライバ２１２を有する。ｉＳＣＳＩコントローラ２１１は、ｉＳＣＳＩプロトコルを処理するソフトウェアモジュールである。ｉＳＣＳＩコントローラ２１１は、ｉＳＥＲモジュール２５０を有する。ｉＳＥＲモジュール２５０は、ＲＤＭＡ機能を提供するモジュールである。ドライバ２１２は、ＨＣＡ２０４を制御するソフトウェアである。
【００４９】
図５は、ｉＳＥＲモジュールの機能例を示す図である。ｉＳＥＲモジュール１５０は、ｉＳＥＲイニシエータ１６０およびｉＳＥＲターゲット１７０の機能を有する。ｉＳＥＲモジュール２５０は、ｉＳＥＲイニシエータ２６０およびｉＳＥＲターゲット２７０の機能を有する。
【００５０】
ｉＳＥＲイニシエータ１６０は、ｉＳＥＲターゲット２７０に接続し、通信する。同様に、ｉＳＥＲイニシエータ２６０は、ｉＳＥＲターゲット１７０に接続し、通信する。なお、通信の際に、ｉＳＥＲイニシエータとして機能するノードをクライアントノードと称することもある。ｉＳＥＲターゲットとして機能するノードをサーバノードと称することもある。すなわち、ノード１００がクライアントノードとして動作し、ノード２００がサーバノードとして動作することもあるし、ノード２００がクライアントノードとして動作し、ノード１００がサーバノードとして動作することもある。
【００５１】
ここで、ｉＳＥＲを用いたＲＤＭＡによるデータ送信において、２種類の通信方法（通信方法Ａ，Ｂとする）を選択可能である。通信方法Ａは、ＲＤＭＡ＿ＳＥＮＤ（単にＳＥＮＤと称することがある）である。通信方法Ｂは、ＲＤＭＡ＿ＷＲＩＴＥ（単にＲＤＭＡと称することがある）である。ＲＤＭＡ＿ＷＲＩＴＥは、ゼロコピー通信とも呼ばれることもある。
【００５２】
ＲＤＭＡ＿ＷＲＩＴＥでは、ＲＡＭ１０２上の送信対象となるメモリ領域を通信中に確保しておくために（例えば、メモリ領域のスワップアウトを防ぐために）、メモリ登録（memory registration）処理を伴う。一方、ＳＥＮＤでは、このようなメモリ登録処理を行わない代わりに、プロセッサ１０１によって、ＲＡＭ１０２上の通信データを、ＲＡＭ１０２上の通信用の所定のバッファにコピーする処理を伴う。このように、ＳＥＮＤおよびＲＤＭＡ＿ＷＲＩＴＥでは、異なる処理を行う。各処理の通信データサイズおよび通信応答時間には次のような関係がある。
【００５３】
図６は、閾値制御による通信方法決定の例を示す図である。図６では、横軸を通信データサイズとし、縦軸を通信応答時間とする。横軸の左側から右側に向かう方向が正の方向である。縦軸の下側から上側に向かう方向が正の方向である。
【００５４】
図６（Ａ）は、通信データサイズと通信応答時間との関係の一例を示している。実線の直線Ｌ１は、通信方法Ａ（ＳＥＮＤ）を用いた場合の関係を示す。点線の直線Ｌ２は、通信方法Ｂ（ＲＤＭＡ）を用いた場合の関係を示す。
【００５５】
通信方法Ａは、通信起動のオーバヘッドが、通信方法Ｂに比べて小さい。一方、通信方法Ａは、通信データサイズの増大に対して通信応答時間の低速化が通信方法Ｂに比べて激しい。
【００５６】
通信方法Ｂは、通信起動のオーバヘッドが、通信方法Ａに比べて大きい。一方、通信方法Ｂは、通信データサイズの増大に対して通信応答時間の低速化が通信方法Ａに比べて緩やかである。
【００５７】
このような関係があるとき、通信方法を選択するための１つの方法として、静的条件による閾値制御を行うことが考えられる。具体的には、通信方法Ａ，Ｂに対する上記の関係性を予め調査して、直線Ｌ１，Ｌ２により通信応答時間の大小関係が逆転する通信データサイズを閾値Ｄ１としてノードに設定しておく。ノードは、実際に送信する通信データサイズと、閾値Ｄ１との比較により、通信方法Ａ，Ｂの何れかを選択する。例えば、ノードは、通信データサイズが閾値Ｄ１よりも小さければ通信方法Ａを選択し、通信データサイズが閾値Ｄ１以上であれば通信方法Ｂを選択する。
【００５８】
ところが、図６（Ａ）で例示した関係性が常に成立しているとは限らない。例えば、実際の環境では、ノードの運用に応じた負荷などの状況の変化によって、通信データサイズと通信応答時間との関係は変化し得る。図６（Ｂ）は、通信方法Ａにおける通信データサイズと通信応答時間との変化後の関係（実線の直線Ｌ１ａに相当）を例示する。直線Ｌ１ａは、直線Ｌ１よりも、左側にシフトしている。このため、直線Ｌ１ａ，Ｌ２により通信応答時間の大小関係が逆転する通信データサイズＤ１ａは、閾値Ｄ１よりも小さくなる。
【００５９】
この場合、上記の閾値Ｄ１を用いた閾値制御を行うと、通信データサイズが、通信データサイズＤ１ａ以上で、閾値Ｄ１よりも小さい値Ｄ２であるとき、ノードは通信方法Ｂの方が有効であるにも関わらず、通信方法Ａを選択してしまうことになる。このように、静的条件による閾値制御では、状況の変化に追随して適切な通信方法を選択することは困難である。
【００６０】
そこで、ノード１００，２００は、状況の変化に追随して適切な通信方法を選択可能にする機能を提供する。以下では、ノード１００がｉＳＥＲイニシエータ１６０として機能し、ノード２００がｉＳＥＲターゲット２７０として機能する例を示すが、ｉＳＥＲイニシエータ／ターゲットの役割をノード１００，２００で逆にしてもよい。
【００６１】
図７は、ｉＳＥＲイニシエータ／ターゲットの機能例を示す図である。ｉＳＥＲイニシエータ１６０は、記憶部１６１、バッファ１６２、通信方法選択部１６３および通信処理部１６４を有する。記憶部１６１は、ＲＡＭ１０２やＨＤＤ１０３に確保された記憶領域を用いて実現される。バッファ１６２は、ＲＡＭ１０２に確保された記憶領域を用いて実現される。通信方法選択部１６３および通信処理部１６４は、ＲＡＭ１０２に記憶されたプログラムをプロセッサ１０１が実行することで実現される。
【００６２】
記憶部１６１は、選択確率テーブルおよび平均応答時間テーブルを記憶する。選択確率テーブルは、送信対象となるデータのサイズの範囲（送信データサイズ範囲と称する）に対応付けて、通信方法Ａの選択確率、および、通信方法Ｂの選択確率が登録されるテーブルである。平均応答時間テーブルは、送信データサイズ範囲に対応付けて、通信方法Ａの平均応答時間、および、通信方法Ｂの平均応答時間が登録されるテーブルである。なお、平均応答時間は、相加平均により計算される。
【００６３】
バッファ１６２は、送信対象のデータ（送信データと称する）を一時的に格納する。ここで、バッファ１６２に格納される送信データは、通信データの一例である（この場合、送信データサイズも通信データサイズの一例である）。
【００６４】
通信方法選択部１６３は、記憶部１６１に記憶された選択確率テーブルに基づいて、今回の送信データの送信に用いる通信方法を選択する。また、通信方法選択部１６３は、選択した通信方法による平均応答時間を測定して、記憶部１６１に記憶された平均応答時間テーブルを更新する。通信方法選択部１６３は、平均応答時間テーブルの更新に応じて、選択確率テーブルに記憶された選択確率を更新する。
【００６５】
通信処理部１６４は、通信方法選択部１６３により選択された通信方法を用いて、ノード２００に送信データを送信する。具体的には、通信処理部１６４は、送信データをパケット化し、ノード２００に送信する。送信データのサイズが１つのＩＢ（InfiniBand）パケットに収まるサイズよりも大きければ、通信処理部１６４は、送信データを分割して、複数のＩＢパケットを生成し、ノード２００に送信する。例えば、通信処理部１６４は、ＩＢパケット毎に、ノード２００からＡＣＫを受信する。あるいは、通信処理部１６４は、所定数のＩＢパケット毎に、ノード２００からＡＣＫを受信してもよい。
【００６６】
ｉＳＥＲターゲット２７０は、バッファ２７１および通信処理部２７２を有する。バッファ２７１は、ノード２００が備えるＲＡＭに確保された記憶領域を用いて実現される。通信処理部２７２は、ノード２００が備えるＲＡＭに記憶されたプログラムを、ノード２００が備えるプロセッサが実行することで実現される。
【００６７】
バッファ２７１は、ノード１００から受信したデータ（受信データという）を一時的に格納する。
通信処理部２７２は、ノード１００からパケット化された受信データを受信する。通信処理部２７２は、受信データから選択された通信方法を特定し、特定した通信方法に応じて受信データに対する所定の受信処理を行う。通信処理部２７２は、ＩＢパケット毎に、ノード１００にＡＣＫを送信する。あるいは、通信処理部２７２は、所定数のＩＢパケット毎に、ノード１００にＡＣＫを送信してもよい。
【００６８】
図８は、選択確率テーブルの例を示す図である。選択確率テーブル１６１ａは、記憶部１６１に格納される。選択確率テーブル１６１ａは、送信データサイズ範囲および選択確率の項目を含む。
【００６９】
送信データサイズ範囲の項目には、送信データサイズ範囲が登録される。ここで、送信データサイズ範囲を示す記号をＤとする。図８の例では、送信データサイズ範囲は、Ｄ＜１ＫＢ（ＫＢはキロバイトの略）、１ＫＢ≦Ｄ＜１０ＫＢ、１０ＫＢ≦Ｄ＜１００ＫＢ、および、１００ＫＢ≦Ｄ＜１ＭＢ（ＭＢはメガバイトの略）の４つに区分されている。選択確率の項目には、通信方法Ａの選択確率、および、通信方法Ｂの選択確率が登録される。
【００７０】
ここで、図６で説明したように、通信方法Ａは、送信データのサイズが比較的小さい場合に有利である。このため、送信データサイズ範囲が小さい方の２つの区分において、通信方法Ａの選択確率を、通信方法Ｂの選択確率よりも大きくする。また、通信方法Ｂは、送信データのサイズが比較的大きい場合に有利である。このため、送信データサイズ範囲が大きい方の２つの区分において、通信方法Ｂの選択確率を、通信方法Ｂの選択確率よりも大きくする。
【００７１】
例えば、選択確率テーブル１６１ａには、送信データサイズ範囲が“Ｄ＜１ＫＢ”（ＫＢはキロバイトの略）、通信方法Ａの選択確率が“０．９９”、通信方法Ｂの選択確率が“０．０１”という情報が登録される。これは、送信データサイズ範囲が１ＫＢ未満の場合、通信方法Ａの選択確率を０．９９（＝９９％）とし、通信方法Ｂの選択確率を０．０１（＝１％）とすることを示す。
【００７２】
同様に、選択確率テーブル１６１ａによれば、送信データサイズ範囲が１ＫＢ≦Ｄ＜１０ＫＢのとき、通信方法Ａの選択確率は０．７に設定され、通信方法Ｂの選択確率は０．３に設定されている。また、送信データサイズ範囲が１０ＫＢ≦Ｄ＜１００ＫＢのとき、通信方法Ａの選択確率は０．２に設定され、通信方法Ｂの選択確率は０．８に設定されている。更に、送信データサイズ範囲が１００ＫＢ≦Ｄ＜１ＭＢのとき、通信方法Ａの選択確率は０．０１に設定され、通信方法Ｂの選択確率は０．９９に設定されている。
【００７３】
通信方法Ａの選択確率、および、通信方法Ｂの選択確率は、何れも０よりも大きい値となるように決定される。
図８で例示した選択確率テーブル１６１ａの設定の初期値は、事前の検証環境で暫定的に求まる閾値Ｄ１により決定できる。例えば、図８で例示した選択確率テーブル１６１ａの設定が初期値と考える場合、閾値Ｄ１＝１０ＫＢであったと考えてもよい。なお、選択確率テーブル１６１ａを用いて、更に大きな送信データサイズについて管理することもできる。
【００７４】
図９は、平均応答時間テーブルの例を示す図である。平均応答時間テーブル１６１ｂは、記憶部１６１に格納される。平均応答時間テーブル１６１ｂは、送信データサイズ範囲および平均応答時間の項目を含む。
【００７５】
送信データサイズ範囲の項目には、送信データサイズ範囲が登録される。平均応答時間の項目には、通信方法Ａによる通信の平均応答時間、および、通信方法Ｂによる通信の平均応答時間が登録される。なお、平均応答時間の単位は、マイクロ秒とする。
【００７６】
例えば、平均応答時間テーブル１６１ｂには、送信データサイズ範囲が“Ｄ＜１ＫＢ”、通信方法Ａの平均応答時間が“１０”、通信方法Ｂの平均応答時間が“３０”という情報が登録される。これは、送信データサイズ範囲が１ＫＢ未満の場合、通信方法Ａの平均応答時間は１０マイクロ秒であり、通信方法Ｂの平均応答時間は３０マイクロ秒であることを示す。
【００７７】
同様に、平均応答時間テーブル１６１ｂによれば、送信データサイズ範囲が１ＫＢ≦Ｄ＜１０ＫＢのとき、通信方法Ａの平均応答時間は２０マイクロ秒であり、通信方法Ｂの平均応答時間は３０マイクロ秒である。また、送信データサイズ範囲が１０ＫＢ≦Ｄ＜１００ＫＢのとき、通信方法Ａの平均応答時間は３０マイクロ秒であり、通信方法Ｂの平均応答時間は３５マイクロ秒である。更に、送信データサイズ範囲が１００ＫＢ≦Ｄ＜１ＭＢのとき、通信方法Ａの平均応答時間は４０マイクロ秒であり、通信方法Ｂの平均応答時間は３５マイクロ秒である。
【００７８】
ただし、選択確率テーブル１６１ａの選択確率および平均応答時間テーブル１６１ｂの平均応答時間は、通信方法選択部１６３によって更新され得る。
図１０は、処理の呼出関係の例を示す図である。通信方法選択部１６３および通信処理部１６４は、互いに連携して、送信データの送信処理を実行する。例えば、通信方法選択部１６３は、送信データサイズ取得処理Ｐ１１、選択確率取得処理Ｐ１２、通信方法決定処理Ｐ１３、応答時間測定開始処理Ｐ１４、応答時間測定終了処理Ｐ１５、平均応答時間更新／選択確率更新判定処理Ｐ１６、および、選択確率更新処理Ｐ１７を、サブプロセスとして実行する。
【００７９】
また、通信処理部１６４は、送信処理部１６４ａおよび受信処理部１６４ｂを有する。送信処理部１６４ａは、通信方法選択部１６３により選択された通信方法を用いて、送信データの送信処理を実行する。具体的には、送信処理部１６４ａは、通信方法Ａ−送信処理Ｐ２１および通信方法Ｂ−送信処理Ｐ２２をサブプロセスとして実行する。受信処理部１６４ｂは、該当の通信方法による通信に関する受信ＡＣＫの受信処理を実行する。具体的には、受信処理部１６４ｂは、通信方法Ａ−ＡＣＫ受信処理Ｐ２４および通信方法Ｂ−ＡＣＫ受信処理Ｐ２５をサブプロセスとして実行する。
【００８０】
更に、通信処理部２７２は、通信方法判定処理Ｐ３１、通信方法Ａ−データ受信処理Ｐ３２、通信方法Ａ−ＡＣＫ送信処理Ｐ３３、通信方法Ｂ−データ受信処理Ｐ３４および通信方法Ｂ−ＡＣＫ送信処理Ｐ３５をサブプロセスとして実行する。
【００８１】
まず、送信対象となるデータ（送信データ）が発生すると、送信処理呼出部１８０により通信方法選択部１６３の送信データサイズ取得処理Ｐ１１を呼び出す。送信処理呼出部１８０は、送信バッファ１６２ａに送信データを書き込む。ここで、送信バッファ１６２ａは、バッファ１６２において通信処理部１６４用に確保されたバッファ領域である。送信処理呼出部１８０は、例えばＯＳ１１０の１つの機能でもよい。
【００８２】
送信データサイズ取得処理Ｐ１１は、送信データのサイズを取得する処理である。送信データサイズ取得処理Ｐ１１は選択確率取得処理Ｐ１２を呼び出す。選択確率取得処理Ｐ１２は、送信データのサイズおよび選択確率テーブル１６１ａに基づいて、各通信方法の選択確率を取得する処理である。選択確率取得処理Ｐ１２は、通信方法決定処理Ｐ１３を呼び出す。
【００８３】
通信方法決定処理Ｐ１３は、各通信方法の選択確率に応じて、今回の通信に用いる通信方法を決定する処理である。通信方法決定処理Ｐ１３は、送信処理部１６４ａにおける選択した通信方法に相当する送信処理を呼び出す。呼出候補となる送信処理は、通信方法Ａ−送信処理Ｐ２１および通信方法Ｂ−送信処理Ｐ２２である。
【００８４】
通信方法Ａ−送信処理Ｐ２１は、送信バッファ１６２ａに格納された送信データを、ＳＥＮＤ方式によって送信する処理である。通信方法Ｂ−送信処理Ｐ２２は、送信バッファ１６２ａに格納された送信データを、ＲＤＭＡ＿ＷＲＩＴＥ方式によって送信する処理である。通信方法Ａ−送信処理Ｐ２１および通信方法Ｂ−送信処理Ｐ２２は、データ送出時に、応答時間測定開始処理Ｐ１４を呼び出す。応答時間測定開始処理Ｐ１４は、時刻情報１６１ｃを参照して、送信開始時刻１６１ｄを記憶部１６１に記録する。応答時間測定開始処理Ｐ１４では、ＩＢパケットを識別する情報（例えば、トランスポートヘッダに含まれるシーケンス番号など）に対応付けて、送信開始時刻１６１ｄを記録してもよい。時刻情報１６１ｃは、所定のタイマ機能によって記憶部１６１に記録される情報でもよいし、ノード１００の所定のハードウェアタイマが提供する情報でもよい。一方、ノード１００から送信されたデータは、インターコネクト（ＩｎｆｉｎｉＢａｎｄスイッチ１０）を介して、ノード２００に到達する。
【００８５】
通信方法判定処理Ｐ３１は、受信したデータを基に通信方法を判定する処理である。判定結果が通信方法Ａの場合、通信方法判定処理Ｐ３１は、通信方法Ａ−データ受信処理Ｐ３２を呼び出す。判定結果が通信方法Ｂの場合、通信方法判定処理Ｐ３１は、通信方法Ｂ−データ受信処理Ｐ３４を呼び出す。
【００８６】
通信方法Ａ−データ受信処理Ｐ３２は、通信方法Ａ（ＳＥＮＤ）に応じたデータの受信処理である。通信方法Ａ−データ受信処理Ｐ３２では、受信データを受信バッファ２７１ａに書き込み、通信方法Ａ−ＡＣＫ送信処理Ｐ３３を呼び出す。ここで、受信バッファ２７１ａは、バッファ２７１において通信処理部２７２用に確保されたバッファ領域である。通信方法Ａ−ＡＣＫ送信処理Ｐ３３は、通信方法Ａに応じたＡＣＫ送信の処理である。
【００８７】
通信方法Ｂ−データ受信処理Ｐ３４は、通信方法Ｂ（ＲＤＭＡ＿ＷＲＩＴＥ）に応じたデータの受信処理である。通信方法Ｂ−データ受信処理Ｐ３４では、受信データを受信バッファ２７１ａに書き込み、通信方法Ｂ−ＡＣＫ送信処理Ｐ３５を呼び出す。通信方法Ｂ−ＡＣＫ送信処理Ｐ３５は、通信方法Ｂに応じたＡＣＫ送信の処理である。
【００８８】
ノード２００により送信されたＡＣＫは、インターコネクトを介して、ノード１００に到達する。ＡＣＫはＡＣＫ番号を含む。通信方法判定処理Ｐ２３は、ＡＣＫを受信し、受信したＡＣＫにより通信方法を判定する処理である。例えば、通信方法判定処理Ｐ２３では、送信処理部１６４ａにより送信済ＩＢパケットのシーケンス番号と、当該ＩＢパケットの送信に用いた通信方法との対応関係を記憶部１６１に記録しておく。また、通信方法判定処理Ｐ２３では、送信パケットサイズとＡＣＫ番号と送信済ＩＢパケットのシーケンス番号との関係から、送信済ＩＢパケットのシーケンス番号と、受信したＡＣＫとを対応付けることができる。よって、通信方法判定処理Ｐ２３では、記憶部１６１に記録した内容（送信済ＩＢパケットのシーケンス番号と通信方法との関係）から、受信したＡＣＫの通信方法を判定することができる。判定結果が通信方法Ａの場合、通信方法判定処理Ｐ２３は、通信方法Ａ−ＡＣＫ受信処理Ｐ２４を呼び出す。判定結果が通信方法Ｂの場合、通信方法判定処理Ｐ２３は、通信方法Ｂ−ＡＣＫ受信処理Ｐ２５を呼び出す。
【００８９】
通信方法Ａ−ＡＣＫ受信処理Ｐ２４は、通信方法Ａ（ＳＥＮＤ）に応じたＡＣＫの受信処理である。通信方法Ｂ−ＡＣＫ受信処理Ｐ２５は、通信方法Ｂ（ＲＤＭＡ＿ＷＲＩＴＥ）に応じたＡＣＫの受信処理である。通信方法Ａ−ＡＣＫ受信処理Ｐ２４および通信方法Ｂ−ＡＣＫ受信処理Ｐ２５は、ＡＣＫの受信処理が完了すると、応答時間測定終了処理Ｐ１５を呼び出す。受信処理部１６４ｂは、ＡＣＫ受信が完了した送信済ＩＢパケットのシーケンス番号を、応答時間測定終了処理Ｐ１５に通知してもよい。
【００９０】
応答時間測定終了処理Ｐ１５は、ＩＢパケットを用いた応答時間の測定を終了し、測定した応答時間を応答時間保存バッファ１６１ｅに記録する処理である。応答時間保存バッファ１６１ｅは、記憶部１６１において確保されたバッファ領域である。応答時間測定終了処理Ｐ１５では、時刻情報１６１ｃを参照して現在時刻を取得し、送信開始時刻１６１ｄとの時間差を、応答時間として求める。前述のように、送信開始時刻１６１ｄとして、送信済ＩＢパケットのシーケンス番号と送信開始時刻とを対応付けて記録しておくことで、受信処理部１６４ｂから通知されたシーケンス番号に対する送信済ＩＢパケットについて、応答時間を測定できる。応答時間測定終了処理Ｐ１５は、平均応答時間更新／選択確率更新判定処理Ｐ１６を呼び出す。
【００９１】
平均応答時間更新／選択確率更新判定処理Ｐ１６は、平均応答時間テーブル１６１ｂを更新する処理、および、選択確率更新の要否を判定する処理である。平均応答時間更新／選択確率更新判定処理Ｐ１６では、応答時間保存バッファ１６１ｅに新規に記録された応答時間を読み取り、送信データサイズ取得処理Ｐ１１で取得された送信データサイズについて平均応答時間を更新する。平均応答時間更新／選択確率更新判定処理Ｐ１６では、平均応答時間の計算のために、平均応答時間テーブル１６１ｂからこれまでの平均応答時間の読み出し、および、新規に計算した平均応答時間の書き込みを行う。更に、平均応答時間更新／選択確率更新判定処理Ｐ１６では、更新後の平均応答時間テーブル１６１ｂに基づいて、通信方法Ａ，Ｂの選択確率の更新を行うか否かを判定する。そして、選択確率の更新を行うと判定した場合、選択確率更新処理Ｐ１７を呼び出す。一方、選択確率の更新を行わないと判定した場合、何もせずにデータ送信処理を完了する。
【００９２】
選択確率更新処理Ｐ１７は、通信方法Ａ，Ｂの選択確率を更新する処理である。選択確率更新処理Ｐ１７では、選択確率テーブル１６１ａから既存の選択確率を取得し、所定の増減方法に従って、通信方法Ａ，Ｂの選択確率を増減する更新を行い、更新結果を選択確率テーブル１６１ａに書き込んで、データ送信処理を完了する。
【００９３】
次に、ノード１００のｉＳＥＲイニシエータ１６０による処理手順を説明する。
図１１は、ｉＳＥＲイニシエータ処理の例を示すフローチャートである。以下、図１１に示す処理をステップ番号に沿って説明する。
【００９４】
（Ｓ１１）送信処理呼出部１８０は、送信処理の開始を通信方法選択部１６３に通知する。
（Ｓ１２）送信処理呼出部１８０は、バッファ１６２に送信データをコピーする。例えば、前述のように、送信処理呼出部１８０は、バッファ１６２内に確保された送信バッファ１６２ａに送信データを格納する。
【００９５】
（Ｓ１３）通信方法選択部１６３は、バッファ１６２に格納された送信データのサイズ（送信データサイズ）を取得する。
（Ｓ１４）通信方法選択部１６３は、記憶部１６１に記憶された選択確率テーブル１６１ａを参照して、ステップＳ１３で取得した送信データサイズに対応する通信方法の選択確率を取得する。例えば、通信方法の選択候補は、通信方法Ａ，Ｂである。このため、通信方法選択部１６３は、該当の送信データサイズに対応する通信方法Ａの選択確率、および、通信方法Ｂの選択確率を取得する。
【００９６】
（Ｓ１５）通信方法選択部１６３は、取得した通信方法Ａの選択確率、および、通信方法Ｂの選択確率に基づいて、今回のデータ送信に用いる通信方法を決定する。具体的には、該当の送信データサイズでのデータ送信回数をＮとし、そのうち通信方法Ａを選択する回数をｎ１、通信方法Ｂを選択する回数をｎ２とする。通信方法選択部１６３は、該当の送信データサイズについて、比較的大きなＮに対して、ｎ１／Ｎ〜ｐ１となるように通信方法Ａを選択する。また、通信方法選択部１６３は、該当の送信データサイズについて、比較的大きなＮに対して、ｎ２／Ｎ〜ｐ２となるように通信方法Ｂを選択する。通信方法選択部１６３は、通信方法の決定結果を通信処理部１６４に通知する。
【００９７】
（Ｓ１６）通信処理部１６４は、通信方法選択部１６３により決定された通信方法により、送信処理を開始する。通信処理部１６４は、送信処理の開始を通信方法選択部１６３に通知する。
【００９８】
（Ｓ１７）通信方法選択部１６３は、記憶部１６１に現在時刻ｔ１を記録する。現在時刻ｔ１は、図１０で説明した送信開始時刻１６１ｄに相当する。
（Ｓ１８）通信処理部１６４は、バッファ１６２に記憶された送信データをノード２００へ送出する。
【００９９】
（Ｓ１９）通信処理部１６４は、ＡＣＫ受信を待機する。
（Ｓ２０）通信処理部１６４は、ステップＳ１８のデータ送信に対して、ノード２００からＡＣＫを受信する。通信処理部１６４は、ＡＣＫ受信を通信方法選択部１６３に通知する。
【０１００】
（Ｓ２１）通信方法選択部１６３は、現在時刻ｔ２を取得する。
（Ｓ２２）通信方法選択部１６３は、ＡＣＫからステップＳ１７で記録した時刻ｔ１を特定し、時刻ｔ１，ｔ２の時間差を求めることで、今回の通信の通信応答時間を算出する。ここで、算出された通信応答時間をＴｃとする。
【０１０１】
（Ｓ２３）通信処理部１６４は、ＡＣＫ受信処理を完了する。
（Ｓ２４）通信方法選択部１６３は、記憶部１６１に記憶された平均応答時間テーブル１６１ｂを更新する。具体的には、通信方法選択部１６３は、今回の送信データサイズおよび通信方法に対応する平均応答時間Ｔａを、平均応答時間テーブル１６１ｂから取得する。通信方法選択部１６３は、該当の送信データサイズの該当の通信方法の今回までの選択回数をｎとし、Ｔａ’＝｛（ｎ−１）Ｔａ＋Ｔｃ｝／ｎを、更新後の平均応答時間として、平均応答時間テーブル１６１ｂに記録する。
【０１０２】
（Ｓ２５）通信方法選択部１６３は、平均応答時間テーブル１６１ｂについて、ステップＳ２４の更新前後における各通信方法の平均応答時間の大小関係の変化を確認する。
（Ｓ２６）通信方法選択部１６３は、ステップＳ２５の確認に応じて、通信方法の選択確率を更新するか否かを判定する。更新する場合、処理をステップＳ２７に進める。更新しない場合、処理を終了する。具体的には、通信方法選択部１６３は、該当の送信データサイズについて、通信方法Ａの平均応答時間と、通信方法Ｂの平均応答時間との大小関係が、今回の更新によって逆転した場合、選択確率を更新すると判定する。一方、通信方法選択部１６３は、該当の送信データサイズについて、通信方法Ａの平均応答時間と、通信方法Ｂの平均応答時間との大小関係が、今回の更新によって逆転していない場合、選択確率を更新しないと判定する。
【０１０３】
（Ｓ２７）通信方法選択部１６３は、該当の送信データサイズについて、選択確率テーブル１６１ａの各通信方法の選択確率を更新する。通信方法選択部１６３は、各通信方法の選択確率が０よりも大きくなるように、選択確率を更新する。何れかの通信方法の選択確率を０にしてしまうと、該当の通信方法が選択されなくなり、当該通信方法による平均応答時間の変化を監視できなくなるからである。選択確率の更新方法の詳細は後述される。
【０１０４】
なお、図１１の手順では、ある送信データの送信が完了したタイミングで、選択確率を更新するか否かを判定するものとしたが、選択確率を更新するか否かの判定タイミングは別のタイミングでもよい。例えば、通信方法選択部１６３は、選択確率を更新するか否かの判定を、所定の周期（例えば、数十分、数時間などの周期）で行って、選択確率を更新してもよい。あるいは、通信方法選択部１６３は、選択確率が小さい方の通信方法を選択して通信を行った際に、平均応答時間を更新した後で、選択確率を更新するか否かの判定を行い、当該判定に応じて選択確率を更新してもよい。このようにすれば、選択確率を更新するかの判定を頻繁に行わずに済む。
【０１０５】
次に、ノード２００のｉＳＥＲターゲット２７０による処理手順を説明する。
図１２は、ｉＳＥＲターゲット処理の例を示すフローチャートである。以下、図１２に示す処理をステップ番号に沿って説明する。
【０１０６】
（Ｓ３１）通信処理部２７２は、ノード１００から受信したデータ（受信データ）から通信方法を判定する。例えば、通信処理部２７２は、今回の通信に、通信方法Ａ、または、通信方法Ｂの何れが用いられているかを判定する。
【０１０７】
（Ｓ３２）通信処理部２７２は、判定した通信方法に応じて受信処理を開始する。
（Ｓ３３）通信処理部２７２は、受信データをバッファ２７１に保存する。例えば、前述のように、通信処理部２７２は、バッファ２７１に確保された受信バッファ２７１ａに受信データを格納する。
【０１０８】
（Ｓ３４）通信処理部２７２は、今回の通信方法に応じてＡＣＫの送信処理を開始する。こうして、ノード２００は、ノード１００へＡＣＫを応答する。
続いて、ノード１００による通信方法の選択確率更新の具体例を説明する。
【０１０９】
図１３は、選択確率更新の具体例（その１）を示す図である。ここで、図１３において、“−＞”の記号は、当該記号の左側の数値から、当該記号の右側の数値への更新を表す。図１３の平均応答時間テーブル１６１ｂの例によれば、送信データの送信を通信方法Ａを用いて行った結果、あるタイミングの通信方法Ａの平均応答時間が次のように変化している。
【０１１０】
送信データサイズ範囲Ｄ＜１ＫＢでは、通信方法Ａの平均応答時間は、１０マイクロ秒から、１５マイクロ秒に変化している。同範囲について、通信方法Ｂの平均応答時間は３０マイクロ秒である。すなわち、送信データサイズ範囲Ｄ＜１ＫＢでは、通信方法Ａの平均応答時間と通信方法Ｂの平均応答時間との大小関係の逆転はない。
【０１１１】
送信データサイズ範囲１ＫＢ≦Ｄ＜１０ＫＢでは、通信方法Ａの平均応答時間は、２０マイクロ秒から、３０マイクロ秒に変化している。同範囲について、通信方法Ｂの平均応答時間は３０マイクロ秒である。すなわち、送信データサイズ範囲１ＫＢ≦Ｄ＜１０ＫＢでは、通信方法Ａの平均応答時間と通信方法Ｂの平均応答時間との大小関係の逆転はない。
【０１１２】
送信データサイズ範囲１０ＫＢ≦Ｄ＜１００ＫＢでは、通信方法Ａの平均応答時間は、３０マイクロ秒から４５マイクロ秒に変化している。同範囲について、通信方法Ｂの平均応答時間は３５マイクロ秒である。すなわち、送信データサイズ範囲１０ＫＢ≦Ｄ＜１００ＫＢでは、通信方法Ａの平均応答時間と通信方法Ｂの平均応答時間との大小関係が逆転している。
【０１１３】
送信データサイズ範囲１００ＫＢ≦Ｄ＜１ＭＢでは、通信方法Ａの平均応答時間は、４０マイクロ秒から６０マイクロ秒に変化している。同範囲について、通信方法Ｂの平均応答時間は３５マイクロ秒である。すなわち、送信データサイズ範囲１００ＫＢ≦Ｄ＜１ＭＢでは、通信方法Ａの平均応答時間と通信方法Ｂの平均応答時間との大小関係の逆転はない。
【０１１４】
この場合、送信データサイズ範囲１０ＫＢ≦Ｄ＜１００ＫＢについて、平均応答時間の逆転を契機に、通信方法選択部１６３は、選択確率テーブル１６１ａに記録された通信方法Ａの選択確率、および、通信方法Ｂの選択確率を更新する。例えば、送信データサイズ範囲１０ＫＢ≦Ｄ＜１００ＫＢでは、通信方法Ａよりも通信方法Ｂの方が有利である可能性があるため、通信方法選択部１６３は、通信方法Ａの選択確率を減らし、通信方法Ｂの選択確率を増やす。通信方法Ａの選択確率を増やす量、および、通信方法Ｂの選択確率を減らす量は、任意に与えられる。１つの例として、送信データサイズ範囲毎に、通信方法Ａ，Ｂに対して付与する選択確率の最大値および最小値を予め定めておく。最大値および最小値は、０よりも大きく、１よりも小さい値とする。そして、一方の通信方法（平均応答時間が小さい方の通信方法）の選択確率を当該最大値、他方の通信方法（平均応答時間が大きい方の通信方法）の選択確率を当該最小値となるよう切り替えることが考えられる。
【０１１５】
図１４は、選択確率更新の具体例（その２）を示す図である。図１４（Ａ）は、選択確率更新の第１の例を示している。例えば、ある送信データサイズ範囲について、通信方法の選択確率の最大値が０．９９、最小値が０．０１であり、平均応答時間の大小関係の逆転により、通信方法Ａの平均応答時間が通信方法Ｂの平均応答時間よりも大きくなった場合を考える。この場合、通信方法選択部１６３は、通信方法Ａの選択確率を０．９９から０．０１に更新する。一方、通信方法選択部１６３は、通信方法Ｂの選択確率を０．０１から０．９９に更新する。このように、通信方法選択部１６３は、１度の更新で、両通信方法の選択確率を急激に増減させてもよい。
【０１１６】
図１４（Ｂ）は、選択確率更新の第２の例を示している。通信方法選択部１６３は、通信方法Ａの選択確率を０．９９から０．０１へ、通信方法Ｂの選択確率を０．０１から０．９９へ、所定割合ずつ、一定の変化量で増減させてもよい。図１４（Ｂ）では、選択確率を０．１ずつ増やし、選択確率を０．１ずつ減らす例（１段階目の更新後）を示している。この場合、通信方法選択部１６３は、所定の周期で、選択確率を０．１ずつ段階的に増減させる（最終段の増減量は例外的に０．０８となる）。したがって、選択確率の更新開始から、更新終了までに一定の期間（更新期間と称する）が生じる。更新期間中に、再度、通信方法Ａの平均応答時間と、通信方法Ｂの平均応答時間との大小関係が逆転した場合（大小関係が元に戻った場合）、通信方法選択部１６３は、通信方法Ａの選択確率、および、通信方法Ｂの選択確率の更新を中止する。そして、通信方法選択部１６３は、両方の選択確率を更新期間前の値に戻す。選択確率を戻す場合、本例では、通信方法選択部１６３は、通信方法Ａの選択確率を０．９９に戻し、通信方法Ｂの選択確率を０．０１に戻す。このように、選択確率を段階的に更新することで、一時的な要因による性能特性の変化にも適切に対応できる。
【０１１７】
図１４（Ｃ）は、選択確率更新の第３の例を示している。通信方法選択部１６３は、両選択確率の差分に応じて、選択確率を段階的に増減する際の変化量Δｐを決定してもよい。例えば、通信方法選択部１６３は、通信方法Ａの選択確率、および、通信方法Ｂの選択確率の差分ｄを求め、差分ｄに応じて変化量を求めてもよい。一例として、通信方法選択部１６３は、変化量Δｐを、Δｐ＝ｄ／４＋０．０５と決定することが考えられる。
【０１１８】
なお、上記の例では、送信データサイズ（バッファ１６２に格納された送信データのサイズ）に対して、通信方法毎の選択確率や平均応答時間を管理するものとした。一方、通信方法選択部１６３は、通信パケットサイズに対して、通信方法毎の選択確率や平均応答時間を管理してもよい。すなわち、通信パケットを通信データの一例と考えてもよく、また、通信パケットサイズを通信データサイズの一例と考えてもよい。
【０１１９】
図１５は、通信パケットサイズに対するテーブル例を示す図である。図１５（Ａ）は、選択確率テーブル１６１ｆを例示している。図１５（Ｂ）は、平均応答時間テーブル１６１ｇを例示している。選択確率テーブル１６１ｆは、通信パケットサイズ範囲に対して通信方法Ａの選択確率、および、通信方法Ｂの選択確率が登録される点が、選択確率テーブル１６１ａと異なる。平均応答時間テーブル１６１ｇは、通信パケットサイズ範囲に対して、通信方法Ａの平均応答時間、および、通信方法Ｂの平均応答時間が登録される点が、平均応答時間テーブル１６１ｂと異なる。
【０１２０】
例えば、通信パケットサイズＤｐの範囲（通信パケットサイズ範囲）は、Ｄｐ＜１ＫＢ、１ＫＢ≦Ｄｐ＜２ＫＢ、・・・のように区分される。選択確率テーブル１６１ｆには、通信パケットサイズ範囲毎に、通信方法Ａの選択確率、および、通信方法Ｂの選択確率が登録される。同様に、平均応答時間テーブル１６１ｇには、通信パケットサイズ範囲毎に、通信方法Ａの平均応答時間、および、通信方法Ｂの平均応答時間が登録される。
【０１２１】
通信方法選択部１６３は、選択確率テーブル１６１ｆに基づいて、今回の通信パケットサイズに対して、通信方法Ａの選択確率、および、通信方法Ｂの選択確率を取得し、両選択確率に応じて、通信方法Ａ，Ｂの何れかを選択することもできる。通信方法選択部１６３は、当該通信パケットサイズによる通信に対して、選択した通信方法による通信の平均応答時間を平均応答時間テーブル１６１ｇに記録する。そして、通信方法選択部１６３は、平均応答時間テーブル１６１ｇにおける通信方法Ａの平均応答時間、および、通信方法Ｂの平均応答時間の大小関係の逆転に応じて、通信方法Ａの選択確率、および、通信方法Ｂの選択確率を更新することもできる。
【０１２２】
また、上記の説明では、選択候補の通信方法が２つの場合を例示したが、選択候補の通信方法は３つ以上でもよい。選択候補の通信方法が３つ以上のときも、例えば、通信方法選択部１６３は、第１の通信方法の平均応答時間が、第２の通信方法の平均応答時間よりも大きくなった場合に、第１の通信方法の選択確率を減らし、第２の通信方法の選択確率を増やすことが考えられる。通信方法選択部１６３は、第１の通信方法の平均応答時間が、複数の第２の通信方法の平均応答時間よりも大きくなった場合に、第１の通信方法の選択確率を減らし、複数の第２の通信方法の選択確率を増やしてもよい。
【０１２３】
ここで、例えば、通信方法の選択候補が複数ある場合、通信データサイズ（送信バッファ内の送信データサイズや通信パケットサイズ）に応じた通信性能を、通信方法毎に、装置開発時などに予め測定することが考えられる。そして、通信データサイズ毎に選択すべき通信方法を定めた条件（静的な条件）を、ノード１００，２００に予め格納しておくことが考えられる。
【０１２４】
ところが、このように静的な条件で通信方法を決定すると、図６でも例示したように、通信方法の決定が当該条件により固定化してしまう。このため、状況の変化（例えば、ノード１００，２００の負荷の変動による通信性能の変化など）に対応できないことがあるという問題がある。
【０１２５】
一方、ノード１００によれば、選択確率に応じて通信方法を選択し、通信結果に基づいて選択確率を更新する。このとき、ある通信データサイズにおいて、相対的に高い通信性能を実現できる通信方法の選択確率を相対的に高くし、相対的に低い通信性能となる通信方法の選択確率を相対的に低くする。そうすると、比較的高い通信性能を実現しながら、かつ、各通信方法の通信性能の比較により、性能特性の変化を把握することが可能となる。こうして、ノード１００は、状況の変化に応じて適切な通信方法を決定することができる。
【０１２６】
なお、第１の実施の形態の情報処理は、演算部１ｂにプログラムを実行させることで実現できる。また、第２の実施の形態の情報処理は、プロセッサ１０１にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体１３に記録できる。
【０１２７】
例えば、プログラムを記録した記録媒体１３を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体１３に記録されたプログラムまたは他のコンピュータから受信したプログラムを、ＲＡＭ１０２やＨＤＤ１０３などの記憶装置に格納し（インストールし）、当該記憶装置からプログラムを読み込んで実行してもよい。
【０１２８】
以上の第１，第２の実施の形態を含む実施形態に関し、更に以下の付記を開示する。
（付記１）  通信データのサイズに対して通信方法の選択確率を記憶する記憶部と、
前記通信データのサイズに対する前記選択確率に応じて複数の通信方法から今回の通信に用いる前記通信方法を選択し、選択した前記通信方法による通信結果を記録し、前記通信結果に基づいて前記記憶部に記憶された前記選択確率を更新する演算部と、
を有する情報処理装置。
【０１２９】
（付記２）  前記演算部は、第１の通信方法による第１の平均応答時間と第２の通信方法による第２の平均応答時間との比較に応じて、前記第１の通信方法の第１の選択確率、および、前記第２の通信方法の第２の選択確率を更新する、付記１記載の情報処理装置。
【０１３０】
（付記３）  前記演算部は、前記第１の平均応答時間が前記第２の平均応答時間よりも大きくなると、前記第１の選択確率を減らし、前記第２の選択確率を増やす、付記２記載の情報処理装置。
【０１３１】
（付記４）  前記演算部は、前記第１の選択確率、および、前記第２の選択確率を、所定の変化量ずつ段階的に更新する、付記２または３記載の情報処理装置。
（付記５）  前記演算部は、前記第１の選択確率と前記第２の選択確率との差に応じて、前記変化量を決定する、付記４記載の情報処理装置。
【０１３２】
（付記６）  前記演算部は、前記第１の通信方法および前記第２の通信方法のうち、前記選択確率が小さい方の通信方法を用いて通信を行った際に、前記選択確率を更新する、付記２乃至５の何れか１つに記載の情報処理装置。
【０１３３】
（付記７）  前記演算部は、前記第１の選択確率、および、前記第２の選択確率を段階的に更新している間に、前記第１の平均応答時間と前記第２の平均応答時間との大小関係が更新開始前の関係に戻ると、前記第１の選択確率および前記第２の選択確率の更新を中止する、付記４乃至６の何れか１つに記載の情報処理装置。
【０１３４】
（付記８）  前記演算部は、更新の停止後に、前記第１の選択確率と、前記第２の選択確率とを、更新開始前の値に戻す、付記７記載の情報処理装置。
（付記９）  前記演算部は、前記選択確率を０よりも大きい値とする、付記１乃至８の何れか１つに記載の情報処理装置。
【０１３５】
（付記１０）  前記通信データのサイズは、通信パケットサイズである、付記１乃至９の何れか１つに記載の情報処理装置。
（付記１１）  コンピュータに、
通信データのサイズに対して通信方法の選択確率を記憶する記憶部を参照して、前記通信データのサイズに対する前記選択確率に応じて複数の通信方法から今回の通信に用いる前記通信方法を選択し、
選択した前記通信方法による通信結果を記録し、
前記通信結果に基づいて前記記憶部に記憶された前記選択確率を更新する、
処理を実行させる通信方法決定プログラム。
【０１３６】
（付記１２）  コンピュータが、
通信データのサイズに対して通信方法の選択確率を記憶する記憶部を参照して、前記通信データのサイズに対する前記選択確率に応じて複数の通信方法から今回の通信に用いる前記通信方法を選択し、
選択した前記通信方法による通信結果を記録し、
前記通信結果に基づいて前記記憶部に記憶された前記選択確率を更新する、
通信方法決定方法。
【符号の説明】
【０１３７】
１，２  情報処理装置
１ａ  記憶部
１ｂ  演算部
３  ネットワーク
Ｔ１  選択確率情報
Ｔ２  通信結果情報
Ｔ１ａ，Ｔ２ａ  レコード
【図１】
2018011148.tif 000003
【図２】
2018011148.tif 000004
【図３】
2018011148.tif 000005
【図４】
2018011148.tif 000006
【図５】
2018011148.tif 000007
【図６】
2018011148.tif 000008
【図７】
2018011148.tif 000009
【図８】
2018011148.tif 000010
【図９】
2018011148.tif 000011
【図１０】
2018011148.tif 000012
【図１１】
2018011148.tif 000013
【図１２】
2018011148.tif 000014
【図１３】
2018011148.tif 000015
【図１４】
2018011148.tif 000016
【図１５】
2018011148.tif 000017