(57)【要約】【課題】使用するリンクの性能低下が発生した場合に性能低下の影響を抑えて通信を行うこと。【解決手段】デグレード検出部３４が、接続するリンクの性能低下を検出すると送信部３３に通知する。そして、接続するリンクの性能低下を通知されると、送信部３３の判定部３３ａがメッセージサイズに基づいて中継ノードを用いてメッセージを送信するか否かを判定する。そして、中継ノードを用いてメッセージを送信すると判定された場合に、送信部３３の第１送信部３３ｂが、中継ノードにメッセージを送信する。また、中継ノードを用いないでメッセージを送信すると判定された場合に、送信部３３の第２送信部３３ｂが、性能低下が発生したリンクを用いてメッセージを送信する。【選択図】図８
2019036102.tif 000002
【特許請求の範囲】
【請求項１】
データの宛先の情報処理装置への通信経路の性能が低下した場合に、該データの大きさが所定の閾値以下であるか否かを判定する判定部と、
前記判定部により前記データの大きさが所定の閾値以下でないと判定された場合に、前記宛先の情報処理装置とは異なり、前記宛先の情報処理装置に接続される他の情報処理装置に該データを送信する第１送信部と
前記判定部により前記データの大きさが所定の閾値以下であると判定された場合に、該データを前記通信経路を用いて前記宛先に送信する第２送信部と
を有することを特徴とする情報処理装置。
【請求項２】
前記第１送信部は、前記他の情報処理装置に確保された中継用バッファについて該他の情報処理装置から送信された情報であって該中継用バッファのアクセスに用いられる情報である中継用バッファ情報に基づいて前記データを該中継用バッファに送信することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記中継用バッファは分割され、分割されて得られた複数の部分バッファは前記宛先とは異なる複数の他の情報処理装置に確保され、
前記第１送信部は、前記データを分割し、前記複数の部分バッファについて前記複数の他の情報処理装置から送信された複数の部分バッファ情報に基づいて前記複数の部分バッファに送信することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記第１送信部は、リモートダイレクトメモリアクセスにより前記データを前記中継用バッファに送信することを特徴とする請求項２に記載の情報処理装置。
【請求項５】
前記通信経路の性能が低下したときにデータを中継する情報処理装置として選択された場合に、中継用バッファを確保して該中継用バッファに関する中継用バッファ情報を該中継用バッファを介して通信する他の情報処理装置に送信する初期化部をさらに有することを特徴とする請求項２、３又は４に記載の情報処理装置。
【請求項６】
他の情報処理装置とフルメッシュトポロジで接続されることを特徴とする請求項１〜５のいずれか１つに記載の情報処理装置。
【請求項７】
ネットワークにより接続された複数の情報処理装置と該複数の情報処理装置を管理する管理装置とを有する情報処理システムにおいて、
前記管理装置は、
第１情報処理装置が第２情報処理装置にデータを送信する際に使用する通信経路の性能が低下したときに使用される第３情報処理装置を選択する選択部を有し、
前記第１情報処理装置は、
前記通信経路の性能が低下した場合に、前記データの大きさが所定の閾値以下であるか否かを判定する判定部と、
前記判定部により前記データの大きさが所定の閾値以下でないと判定された場合に、該データを前記第３情報処理装置に送信する第１送信部と
前記判定部により前記データの大きさが所定の閾値以下であると判定された場合に、該データを前記通信経路を用いて前記第２情報処理装置に送信する第２送信部とを有し、
前記第２情報処理装置は、
前記通信経路の性能が低下した場合に、前記データの大きさが所定の閾値以下でないときに該データを前記第３情報処理装置から取得し、該データの大きさが所定の閾値以下であるときに該データを前記第１情報処理装置から受信する受信部を有する
ことを特徴とする情報処理システム。
【請求項８】
ネットワークにより接続された複数の情報処理装置と該複数の情報処理装置を管理する管理装置とを有する情報処理システムによる情報処理方法において、
前記管理装置は、
第１情報処理装置が第２情報処理装置にデータを送信する際に使用する通信経路の性能が低下したときに使用される第３情報処理装置を選択し、
前記第１情報処理装置は、
前記通信経路の性能が低下した場合に、前記データの大きさが所定の閾値以下であるか否かを判定し、
前記データの大きさが所定の閾値以下でない判定した場合に、該データを前記第３情報処理装置に送信し、該データの大きさが所定の閾値以下であると判定した場合に、該データを前記通信経路を用いて前記第２情報処理装置に送信し、
前記第２情報処理装置は、
前記通信経路の性能が低下した場合に、前記データの大きさが所定の閾値以下でないときに該データを前記第３情報処理装置から取得し、該データの大きさが所定の閾値以下であるときに該データを前記第１情報処理装置から受信する
ことを特徴とする情報処理方法。
【請求項９】
情報処理装置で実行されるプログラムにおいて、
データの宛先への通信経路の性能が低下した場合に、該データの大きさが所定の閾値以下であるか否かを判定し、
前記データの大きさが所定の閾値以下でないと判定した場合に、前記宛先の情報処理装置とは異なり、前記宛先の情報処理装置に接続される他の情報処理装置に該データを送信し、該データの大きさが所定の閾値以下であると判定された場合に、該データを前記通信経路を用いて前記宛先に送信する
処理を前記情報処理装置に実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理システム、情報処理方法及びプログラムに関する。
【背景技術】
【０００２】
スーパーコンピュータやＰＣクラスタと呼ばれる情報処理システムは、複数の情報処理装置をネットワークで接続することで実現される。複数の情報処理装置の接続形態には、ファットツリー（fattree）トポロジ、フルメッシュ（fullmesh）トポロジ等がある。
【０００３】
図１７は、ファットツリートポロジ及びフルメッシュトポロジを説明するための図である。図１７（ａ）はファットツリートポロジの一例を示し、図１７（ｂ）はフルメッシュトポロジの一例を示す。図１７において、丸は情報処理装置を表し、四角はネットワークスイッチ（以下スイッチ）を表す。
【０００４】
図１７（ａ）に示すように、ファットツリートポロジでは、複数の情報処理装置がスイッチに接続され、複数の情報処理装置に接続されるスイッチ同士が複数のスイッチにより接続される。ファットツリートポロジでは、２つの情報処理装置の最短通信経路は複数ある。
【０００５】
一方、図１７（ｂ）に示すように、フルメッシュトポロジでは、複数の情報処理装置がスイッチに接続され、複数の情報処理装置に接続されるスイッチ同士がリンクで接続される。フルメッシュトポロジでは、情報処理装置が通信する場合に経由するスイッチの数の最短数である最短ホップ数は小さいが、２つの情報処理装置の最短通信経路は１つである。
【０００６】
なお、複数のノードを接続するネットワークにおいて、いったん確立されたリンクが遮断されたときにも、別のリンクを動的に選択生成し、初期設定リンクが切れても所定の宛先ノードに確実にパケットを伝送する技術がある。また、通信ネットワーク及び転送ノードが、リンクステート情報が更新された時点で、故障したリンクを使用しないパスへ一時的に切り替えることで、通信遮断時間あるいはパケット転送不可時間を減少させる技術がある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００３−２９８５９４号公報
【特許文献２】特開２０１５−１２３４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
図１７（ｂ）に示したフルメッシュトポロジでは、通信経路で性能低下（デグレード：degrade）が発生すると、通信経路を使用するジョブの性能が低下するという問題がある。
【０００９】
本発明は、１つの側面では、通信経路の性能低下が発生した場合のジョブの性能低下を抑えることを目的とする。
【課題を解決するための手段】
【００１０】
１つの態様では、情報処理装置は、判定部と第１送信部と第２送信部とを有する。判定部は、データの宛先の情報処理装置への通信経路の性能が低下した場合に、データの大きさが所定の閾値以下であるか否かを判定する。第１送信部は、判定部によりデータの大きさが所定の閾値以下でないと判定された場合に、宛先の情報処理装置とは異なり、宛先の情報処理装置に接続される他の情報処理装置にデータを送信する。第２送信部は、判定部によりデータの大きさが所定の閾値以下であると判定された場合に、データを通信経路を用いて宛先に送信する。
【発明の効果】
【００１１】
１つの側面では、本発明は、通信経路の性能低下が発生した場合のジョブの性能低下を抑えることができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施例に係る情報処理システムがリンク性能低下時に行うメッセージ送受信を説明するための図である。
【図２】図２は、情報処理システムの構成を示す図である。
【図３Ａ】図３Ａは、情報処理システムによる中継用バッファを用いた送受信例（初期化）を示す図である。
【図３Ｂ】図３Ｂは、情報処理システムによる中継用バッファを用いた送受信例（開始状態）を示す図である。
【図３Ｃ】図３Ｃは、情報処理システムによる中継用バッファを用いた送受信例（送信プロセスのデータコピー）を示す図である。
【図３Ｄ】図３Ｄは、情報処理システムによる中継用バッファを用いた送受信例（受信プロセスへのコピー開始通知）を示す図である。
【図３Ｅ】図３Ｅは、情報処理システムによる中継用バッファを用いた送受信例（受信プロセスのデータコピー）を示す図である。
【図３Ｆ】図３Ｆは、情報処理システムによる中継用バッファを用いた送受信例（通信完了時）を示す図である。
【図４】図４は、管理ノードの機能構成を示す図である。
【図５】図５は、ジョブ実行情報管理表の一例を示す図である。
【図６】図６は、中継ノード管理表の一例を示す図である。
【図７】図７は、中継ノードとして動作する計算ノードの機能構成を示す図である。
【図８】図８は、ジョブを実行する計算ノードの機能構成を示す図である。
【図９】図９は、管理ノードによるジョブ起動処理のフローを示すフローチャートである。
【図１０】図１０は、中継ノード決定処理のフローを示すフローチャートである。
【図１１】図１１は、ジョブ実行プロセスによる初期化処理のフローを示すフローチャートである。
【図１２】図１２は、中継プロセスの初期化処理のフローを示すフローチャートである。
【図１３】図１３は、送信プロセスによる処理のフローを示すフローチャートである。
【図１４】図１４は、受信プロセスによる処理のフローを示すフローチャートである。
【図１５】図１５は、計算ノードのハードウェア構成を示す図である。
【図１６】図１６は、多層フルメッシュトポロジを示す図である。
【図１７】図１７は、ファットツリートポロジ及びフルメッシュトポロジを説明するための図である。
【発明を実施するための形態】
【００１３】
以下に、本願の開示する情報処理装置、情報処理システム、情報処理方法及びプログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。
【実施例】
【００１４】
まず、実施例に係る情報処理システムがリンク性能低下時に行うメッセージ送受信について説明する。リンク性能の低下は、例えば、リンクがマルチレーンである場合に、一部のレーンが故障すると発生する。あるいは、情報処理装置間の通信で使用されているリンクが、別の通信で新たに使用されると、リンク性能の低下が発生する。
【００１５】
図１は、実施例に係る情報処理システムがリンク性能低下時に行うメッセージ送受信を説明するための図である。図１に示すように、実施例に係る情報処理システム１は、３台の計算ノード３がそれぞれリンク５で接続された４台のスイッチ４を有する。計算ノード３は、情報処理装置である。各スイッチ４は、他の３台のスイッチ４にリンク５で接続される。すなわち、情報処理システム１は、フルメッシュトポロジの接続形態を有する。
【００１６】
なお、ここでは説明の便宜上、４台のスイッチ４を示したが、情報処理システム１は、４台より多い又は少ないスイッチ４を有してよい。また、各スイッチ４には３台より多い又は少ない計算ノード３がリンク５で接続されてよい。
【００１７】
リンク＃１で表されるリンク５に性能低下が発生すると、リンク＃１を使用して通信を行っていた送信プロセスと受信プロセスは、中継ノードで表される計算ノード３の中継用バッファを介して通信を行う。ここで、送信プロセスは、送信ノードで表される計算ノード３で動作するプロセスである。送信ノードは、リンク＃１に接続する一方のスイッチ４にリンク５で接続する。受信プロセスは、受信ノードで表される計算ノード３で動作するプロセスである。受信ノードは、リンク＃１に接続する他方のスイッチ４にリンク５で接続する。
【００１８】
ただし、送信するメッセージのサイズが小さい場合には、送信プロセスはリンク＃１を用いて受信プロセスにメッセージを送信する。送信するメッセージのサイズが小さい場合とは、例えば、送信するメッセージのサイズが５１２バイト以下の場合である。送信プロセスは、大きいサイズのメッセージの送信時には、高い通信バンド幅が要求されるため、中継ノードを経由してメッセージを受信プロセスに送信する。
【００１９】
このように、情報処理システム１は、リンク５に性能低下が発生すると、メッセージのサイズが大きい場合に、リンク５を利用する通信を中継ノードを介して行う。したがって、情報処理システム１は、リンク５に性能低下が発生した場合のルーティングの再設定を不要とすることができ、再設定にともなうオーバーヘッドをなくすことができる。
【００２０】
次に、情報処理システム１の構成について説明する。図２は、情報処理システム１の構成を示す図である。図２に示すように、情報処理システム１は、管理ノード２と、複数の計算ノード３を有する。管理ノード２と複数の計算ノード３は、管理用ネットワーク１ａで接続される。複数の計算ノード３は、計算用ネットワーク１ｂで接続される。なお、計算用ネットワーク１ｂは、図１に示したフルメッシュトポロジのネットワークである。
【００２１】
管理ノード２は、計算ノード３を管理する。管理ノード２ではジョブスケジューラコントローラ２ａが動作する。ジョブスケジューラコントローラ２ａは、ユーザからジョブを受け付け、計算ノード３にジョブを割り当て、計算ノード３にジョブの実行を依頼する。各計算ノード３ではジョブスケジューラデーモン３ａが動作する。ジョブスケジューラデーモン３ａは、ジョブスケジューラコントローラ２ａからジョブの実行依頼を受け取り、ジョブを実行する。
【００２２】
なお、図２ではジョブスケジューラコントローラ２ａは管理ノード２で動作するが、ジョブスケジューラコントローラ２ａはいずれかの計算ノード３で動作してもよい。計算ノード３で動作するジョブスケジューラコントローラ２ａは、計算用ネットワーク１ｂを利用して他の計算ノード３にジョブの実行を依頼してもよい。
【００２３】
次に、情報処理システム１による中継用バッファを用いた送受信例について図３Ａ〜図３Ｆを用いて説明する。図３Ａ〜図３Ｆは、情報処理システム１による中継用バッファを用いた送受信例を示す図である。
【００２４】
図３Ａ〜図３Ｆにおいて、プロセス＃１は、メッセージを送信するプロセスであり、図１の送信プロセスに対応し、プロセス＃２は、メッセージを受信するプロセスであり、図１の受信プロセスに対応する。送信バッファは、プロセス＃１が送信用に用いる通信バッファであり、受信バッファは、プロセス＃２が受信用に用いる通信バッファである。中継プロセスは、中継ノードで動作するプロセスである。中継ノードは、後述するように、ジョブの起動時に管理ノード２により決定される。
【００２５】
図３Ａに示すように、中継プロセスは、初期化時に、中継用バッファ３０ａを確保し、ＲＤＭＡ（Remote  Direct  Memory  Access）通信用情報をプロセス＃１とプロセス＃２に送信する。ここで、ＲＤＭＡ通信用情報には、ホスト情報、Ｒｋｅｙ、Ｒａｄｄｒｅｓｓが含まれる。
【００２６】
ホスト情報は、中継ノードの情報であり、中継ノードにアクセスする場合に用いられる。ホスト情報は、例えば、中継ノードの名前、ＩＰアドレスである。Ｒｋｅｙは、中継用バッファ３０ａのアクセスに用いられるキーである。Ｒａｄｄｒｅｓｓは、中継用バッファ３０ａのアドレスである。プロセス＃１及びプロセス＃２は、ＲＤＭＡ通信用情報を受信すると中継ノード情報３０ｄとして保存する。プロセス＃１は、ホスト情報で特定される中継ノードのメモリのＲａｄｄｒｅｓｓで特定されるアドレスにＲｋｅｙを指定してメッセージを書き込む。プロセス＃２は、ホスト情報で特定される中継ノードのメモリのＲａｄｄｒｅｓｓで特定されるアドレスからＲｋｅｙを指定してメッセージを読み出す。また、受信プロセスは、中継フラグ３０ｃを有する。中継フラグ３０ｃは、中継用バッファ３０ａを用いて通信するか否かを示す情報である。
【００２７】
そして、通信の開始状態では、図３Ｂに示すように、送信バッファは、メッセージ「１２３４５」を記憶する。そして、図３Ｃに示すように、プロセス＃１は、リンク性能低下を確認する（ステップ＃１）。すると、プロセス＃１は、送信バッファのメッセージ「１２３４５」を中継用バッファ３０ａに送信する（ステップ＃２）。プロセス＃１は、中継ノード情報３０ｄを用いて、「１２３４５」をＲＤＭＡ  ＷＲＩＴＥすることによって、「１２３４５」を中継用バッファ３０ａに送信する。ＲＤＭＡ  ＷＲＩＴＥによりメッセージが中継用バッファ３０ａに書き込まれるため、中継プロセスは動作することなくスリープ状態である。
【００２８】
そして、図３Ｄに示すように、プロセス＃１は、プロセス＃２に中継用バッファ３０ａへのデータコピー開始を通知する。プロセス＃１は、性能低下したリンク５を用いて中継フラグ３０ｃを「１」に更新する。（ステップ＃３）。中継フラグ３０ｃの更新に用いられるメッセージのサイズは小さいので、バンド幅は小さくて良い。
【００２９】
そして、図３Ｅに示すように、プロセス＃２は、中継フラグ３０ｃの変化を確認する（ステップ＃４）。そして、プロセス＃２は、中継用バッファ３０ａから受信バッファへデータコピーを行う（ステップ＃５）。プロセス＃２は、中継ノード情報３０ｄを用いて、ＲＤＭＡ  ＲＥＡＤにより中継用バッファ３０ａからメッセージ「１２３４５」を読み出し、受信バッファに書き込む。そして、通信完了時には、図３Ｆに示すように、受信バッファがメッセージ「１２３４５」を記憶する状態になる。
【００３０】
次に、管理ノード２及び計算ノード３の機能構成について図４〜図８を用いて説明する。図４は、管理ノード２の機能構成を示す図である。図４に示すように、管理ノード２は、記憶部２０とジョブ起動部２１を有する。
【００３１】
記憶部２０は、ジョブ実行情報管理表２０ａと中継ノード管理表２０ｂを記憶する。ジョブ実行情報管理表２０ａは、ジョブの実行に関する情報を管理するためのテーブルである。図５は、ジョブ実行情報管理表２０ａの一例を示す図である。図５に示すように、ジョブ実行情報管理表２０ａには、ジョブ名、利用ノード名、メモリ量上限及び実行時間がジョブ毎に登録される。
【００３２】
ジョブ名は、ジョブを識別する名前である。利用ノード名は、ジョブが利用する計算ノード３の名前である。メモリ量上限は、ジョブが各計算ノード３で使用するメモリ量の上限である。実行時間は、ジョブの実行時間である。例えば、「ジョブＡ」で識別されるジョブは、「ノード＃１」と「ノード＃２」を利用し、各計算ノード３でメモリを最大「１００ＭＢ（メガバイト）」使用し、実行時間は「２０分」である。
【００３３】
中継ノード管理表２０ｂは、ジョブが使用する中継ノードの情報を管理するためのテーブルである。図６は、中継ノード管理表２０ｂの一例を示す図である。図６に示すように、中継ノード管理表２０ｂには、対象ジョブ名、中継ノード名及びバッファサイズがジョブ毎に登録される。
【００３４】
対象ジョブ名は、中継用バッファ３０ａを使用するジョブを識別する名前である。中継ノード名は、中継用バッファ３０ａのある計算ノード３を識別する名前である。バッファサイズは、中継用バッファ３０ａのサイズである。例えば、「ジョブＡ」で識別されるジョブは、「ノード＃３」にある「１００ＭＢ」の中継用バッファ３０ａを使用する。
【００３５】
ジョブ起動部２１は、中継ノードを決定し、ジョブを実行する計算ノード３と中継ノードを指定してジョブを起動する。ジョブ起動部２１は、中継ノード決定部２２を有する。中継ノード決定部２２は、ジョブ実行情報管理表２０ａを参照して中継ノードを決定し、中継ノードの情報を中継ノード管理表２０ｂに登録する。
【００３６】
図７は、中継ノードとして動作する計算ノード３の機能構成を示す図である。図７に示すように、中継ノードとして動作する計算ノード３は、記憶部３０と中継部３１をジョブ毎に有する。
【００３７】
記憶部３０には、中継用バッファ３０ａが含まれる。中継部３１は、記憶部３０に中継用バッファ３０ａを確保し、中継用バッファ３０ａを利用する全ジョブ実行プロセスにＲＤＭＡ通信用情報を送信する。ここで、ジョブ実行プロセスは、ジョブを実行するプロセスであり、図３Ａ〜図３Ｆに示したプロセス＃１及びプロセス＃２に対応する。ジョブ実行プロセスは、メッセージの送信側である場合には、図１に示した送信プロセスであり、メッセージの受信側である場合には、図１に示した受信プロセスである。ジョブ実行プロセスは、ホスト情報で特定される中継ノードのメモリのＲａｄｄｒｅｓｓで特定されるアドレスにＲｋｅｙを指定してアクセスする。中継部３１は、図３Ａ〜図３Ｆに示した中継プロセスに対応する。
【００３８】
図８は、ジョブを実行する計算ノード３の機能構成を示す図である。図８に示すように、ジョブを実行する計算ノード３は、記憶部３０と、初期化部３２と、送信部３３と、デグレード検出部３４と、受信部３５とをジョブ毎に有する。
【００３９】
記憶部３０には、通信バッファ３０ｂが含まれる。通信バッファ３０ｂは、他の計算ノード３との通信に用いられるバッファである。通信バッファ３０ｂには、送信バッファと受信バッファが含まれる。また、記憶部３０は、中継フラグ３０ｃと中継ノード情報３０ｄを記憶する。
【００４０】
初期化部３２は、ジョブが起動されるとＭＰＩ（Message  Passing  Interface）ライブラリの初期化を行い、中継ノードからＲＤＭＡ通信用情報を受信して中継ノード情報３０ｄとして記憶部３０に格納する。ＭＰＩライブラリは、計算ノード間の通信に用いられるライブラリである。ジョブ実行プロセスは、ホスト情報で特定される中継ノードのメモリのＲａｄｄｒｅｓｓで特定されるアドレスにＲｋｅｙを指定してアクセスする。初期化部３２は、ジョブ実行プロセスの初期化処理に対応する。
【００４１】
送信部３３は、受信ノードにメッセージを送信する。送信部３３は、図１に示した送信プロセスに対応する。送信部３３は、判定部３３ａと、第１送信部３３ｂと、第２送信部３３ｃとを有する。
【００４２】
判定部３３ａは、デグレード検出部３４によりリンク５の性能低下が検出されると、送信されるメッセージのサイズが５１２バイト以下であるか否かを判定する。そして、判定部３３ａは、送信されるメッセージのサイズが５１２バイト以下でない場合には、第１送信部３３ｂにメッセージの送信を指示し、送信されるメッセージのサイズが５１２バイト以下の場合には、第２送信部３３ｃにメッセージの送信を指示する。また、判定部３３ａは、デグレード検出部３４によりリンク５の性能低下が検出されていない場合には、第２送信部３３ｃにメッセージの送信を指示する。
【００４３】
第１送信部３３ｂは、中継用バッファ３０ａを用いてメッセージを受信ノードに送信する。第１送信部３３ｂは、ＲＤＭＡ  ＷＲＩＴＥを用いてメッセージを中継用バッファ３０ａに書き込む。また、第１送信部３３ｂは、受信ノードの中継フラグ３０ｃを更新する。第２送信部３３ｃは、中継用バッファ３０ａを用いることなくメッセージを受信ノードに送信する。
【００４４】
デグレード検出部３４は、リンク５を監視し、リンク５の性能低下が発生すると送信部３３にリンク５の性能低下を通知する。デグレード検出部３４は、ポートの状態を取得することでリンク５の性能低下を検知する。
【００４５】
受信部３５は、送信ノードから送信されたメッセージを受信する。受信部３５は、図１に示した受信プロセスに対応する。受信部３５は、中継フラグ３０ｃが「１」に更新されている場合には、ＲＤＭＡ  ＲＥＡＤを用いて中継用バッファ３０ａから受信バッファへデータコピーを行う。
【００４６】
なお、各計算ノード３は、ジョブを実行するとともに中継ノードとしても動作する。したがって、各計算ノード３は、図７に示した機能と図８に示した機能の両方を有する。
【００４７】
次に、管理ノード２によるジョブ起動処理のフローについて説明する。図９は、管理ノード２によるジョブ起動処理のフローを示すフローチャートである。なお、管理ノード２によるジョブ起動処理は、図２に示したジョブスケジューラコントローラ２ａによる処理の一部として行われる。
【００４８】
図９に示すように、管理ノード２は、ジョブ実行情報管理表２０ａから起動ジョブのメモリ量上限を取得し（ステップＳ１）、取得したメモリ量上限を中継用バッファ３０ａの必要バッファ量として中継ノードを決定する中継ノード決定処理を行う（ステップＳ２）。
【００４９】
そして、管理ノード２は、ジョブを起動する（ステップＳ３）。管理ノード２によるジョブの起動により、ジョブを実行する計算ノード３は初期化処理を行ってジョブを実行する。また、中継ノードは、初期化処理を実行する。
【００５０】
図１０は、中継ノード決定処理のフローを示すフローチャートである。図１０に示すように、管理ノード２は、インデックスで指定される計算ノード３の情報を計算ノード情報リストから取り出す（ステップＳ１１）。ここで、計算ノード情報リストは、各計算ノード３に関する情報のリストである。各計算ノード３に関する情報には、メモリの未使用量が含まれる。また、インデックスは１に初期化されている。
【００５１】
そして、管理ノード２は、インデックスで指定される計算ノード３のメモリの未使用量が必要バッファ量より大きいか否かを判定し（ステップＳ１２）、大きい場合には、インデックスで指定される計算ノード３を中継ノードと決定する（ステップＳ１３）。一方、メモリの未使用量が必要バッファ量より大きくない場合には、管理ノード２は、インデックスを１増加し、次の計算ノード３に関する情報を計算ノード情報リストから取り出し（ステップＳ１４）、ステップＳ１２へ戻る。
【００５２】
このように、管理ノード２がジョブを起動する際に中継ノードを決定することで、ジョブを実行する計算ノード３は、通信に使用するリンク５に性能低下が発生した場合に、中継ノードを利用して通信を行うできる。
【００５３】
次に、計算ノード３による処理のフローについて図１１〜図１４を用いて説明する。図１１は、ジョブ実行プロセスによる初期化処理のフローを示すフローチャートである。なお、ジョブ実行プロセスは、図２に示したジョブスケジューラデーモン３ａにより起動される。
【００５４】
図１１に示すように、ジョブ実行プロセスは、ＭＰＩライブラリの初期化を行う（ステップＳ２１）。そして、ジョブ実行プロセスは、中継用バッファ３０ａの読み書きに必要な情報（ＲＤＭＡ通信用情報）を中継プロセスから受信し、中継ノード情報３０ｄとして記憶部３０に格納する（ステップＳ２２）。
【００５５】
このように、ジョブ実行プロセスが初期化処理で中継用バッファ３０ａの読み書きに必要な情報を中継プロセスから受信して中継ノード情報３０ｄとして記憶部３０に格納するので、ジョブ実行プロセスは中継用バッファ３０ａを用いて通信することができる。
【００５６】
図１２は、中継プロセスの初期化処理のフローを示すフローチャートである。なお、中継プロセスは、図２に示したジョブスケジューラデーモン３ａにより起動される。図１２に示すように、中継プロセスは、中継用バッファ３０ａを通信用に確保する（ステップＳ３１）。そして、中継プロセスは、全てのジョブ実行プロセスに中継用バッファ３０ａの読み書きに必要な情報（ＲＤＭＡ通信用情報）を送信する（ステップＳ３２）。
【００５７】
このように、中継プロセスが中継用バッファ３０ａを確保して中継用バッファ３０ａの読み書きに必要な情報をジョブ実行プロセスに送信することによって、ジョブ実行プロセスは中継用バッファ３０ａを用いて通信することができる。
【００５８】
図１３は、送信プロセスによる処理のフローを示すフローチャートである。図１３に示すように、送信プロセスは、ポートの状態を取得する（ステップＳ４１）。ここで、ポートの状態にはポートに接続するリンク５のスピードが含まれる。
【００５９】
そして、送信プロセスは、リンク５のスピードは低下しているか否かを判定し（ステップＳ４２）、低下している場合には、メッセージサイズは５１２バイト以下であるか否かを判定する（ステップＳ４３）。そして、メッセージサイズが５１２バイト以下でない場合には、送信プロセスは、メッセージを中継用バッファ３０ａに送信し（ステップＳ４４）、中継フラグ３０ｃを「１」に更新する（ステップＳ４５）。
【００６０】
一方、メッセージサイズが５１２バイト以下である場合、あるいは、リンク５のスピードが低下していない場合には、送信プロセスは、メッセージを受信プロセスの受信バッファに書き込む（ステップＳ４６）。
【００６１】
このように、送信プロセスは、リンク５のスピードが低下し、かつ、メッセージサイズが５１２バイト以下でない場合にメッセージを中継用バッファ３０ａに送信することによって、通信性能の低下を抑えることができる。
【００６２】
図１４は、受信プロセスによる処理のフローを示すフローチャートである。図１４に示すように、受信プロセスは、受信バッファにメッセージがあるか否かを判定し（ステップＳ５１）、ある場合には、受信プロセスの受信バッファからコピーを行う（ステップＳ５２）。
【００６３】
そして、受信プロセスは、中継フラグ３０ｃは「１」に更新されているか否かを判定し（ステップＳ５３）、「１」に更新されている場合には、中継用バッファ３０ａから受信バッファへデータコピーを行う（ステップＳ５４）。
【００６４】
このように、受信プロセスは、中継フラグ３０ｃが「１」に更新されている場合に中継用バッファ３０ａからデータコピーを行うことで、送信プロセスが中継用バッファ３０ａを介して送信したメッセージを受信することができる。
【００６５】
次に、計算ノード３のハードウェア構成について説明する。図１５は、計算ノード３のハードウェア構成を示す図である。図１５に示すように、計算ノード３は、ＣＰＵ（Central  Processing  Unit）４１と、メモリ４２と、ＨＤＤ（Hard  Disk  Drive）４３と、通信インタフェース４４とを有する。
【００６６】
ＣＰＵ４１は、メモリ４２からプログラムを読み出して実行する中央処理装置である。  図７に示した中継部３１、図８に示した初期化部３２、送信部３３、デグレード検出部３４及び受信部３５の機能は、ＣＰＵ４１でプログラムがプロセスとして実行されることによって実現される。
【００６７】
メモリ４２は、プログラムやプログラムの実行途中結果などを記憶するＲＡＭ（Random  Access  Memory）である。ＨＤＤ４３は、プログラムやデータを格納するディスク装置である。通信インタフェース４４は、他の計算ノード３と通信するためのインタフェースである。通信インタフェース４４は、リンク５と接続するポートを有し、ポートの通信速度を記憶する。
【００６８】
そして、計算ノード３において実行されるプログラムは、計算ノード３により読み出し可能な記録媒体の一例であるＤＶＤ（Digital  Versatile  Disk）に記憶され、ＤＶＤから読み出されて計算ノード３にインストールされる。あるいは、計算ノード３において実行されるプログラムは、ネットワークで接続されたコンピュータシステムのデータベースなどに記憶され、データベースから読み出されて計算ノード３にインストールされる。そして、インストールされたプログラムは、ＨＤＤ４３に記憶され、メモリ４２に読み出されてＣＰＵ４１によって実行される。
【００６９】
上述してきたように、実施例では、デグレード検出部３４が、接続するリンク５の性能低下を検出すると送信部３３に通知する。そして、接続するリンク５の性能低下を通知されると、送信部３３の判定部３３ａがメッセージサイズが５１２バイト以下か否かを判定する。そして、メッセージサイズが５１２バイト以下でないと判定された場合に、送信部３３の第１送信部３３ｂが、中継用バッファ３０ａにメッセージを送信する。一方、メッセージサイズが５１２バイト以下であると判定された場合に、送信部３３の第２送信部３３ｃが、性能が低下したリンク５を用いてメッセージを送信する。したがって、情報処理システム１は、宛先の計算ノード３に接続するリンク５の性能が低下した場合にも、性能低下の影響を抑えてメッセージを宛先の計算ノード３に送信することができる。
【００７０】
また、実施例では、第１送信部３３ｂは、ＲＤＭＡ  ＷＲＩＴＥによりメッセージを中継用バッファ３０ａに書き込むので、中継ノードに負荷を与えることなくメッセージを中継用バッファ３０ａに送信することができる。
【００７１】
また、実施例では、中継ノードとして選択されると、中継部３１が、中継用バッファ３０ａを確保し、全てのジョブ実行プロセスに中継用バッファ３０ａの読み書きに必要な情報を送信する。したがって、ジョブ実行プロセスは、中継用バッファ３０ａを用いて通信することができる。
【００７２】
なお、実施例では、１つの中継ノードを用いる場合について説明したが、情報処理システム１は、複数の中継ノードを用いてもよい。複数の中継ノードを用いる場合には、中継用バッファ３０ａは、複数の中継ノードで均等分割される。管理ノード２は、中継ノードとして複数の計算ノード３を決定する。各中継ノードは、全てのジョブ実行ノードに中継用バッファ３０ａの読み書きに必要な情報を送信する。複数の中継ノードを用いることによって、中継ノードを経由する通信の負荷を分散することができるとともに、各中継用バッファのサイズを小さくすることができる。
【００７３】
また、実施例では、計算ノード３の接続形態が単層フルメッシュトポロジである場合について説明したが、計算ノード３の接続形態は例えば多層フルメッシュトポロジのように他のトポロジであってもよい。
【００７４】
図１６は、多層フルメッシュトポロジを示す図である。図１６に示すように、多層フルメッシュトポロジは、単層フルメッシュトポロジの各スイッチ間リンクの間にスパインスイッチ６と呼ばれるスイッチが置かれ、スパインスイッチ６により複数の単層フルメッシュトポロジが接続されたトポロジである。なお、計算ノード３とリンクで接続するスイッチ４はリーフスイッチと呼ばれる。
【００７５】
また、実施例では、リンク性能が低下すると中継用バッファ３０ａを使用するか否かを判定したが、送信プロセスは、通信を開始する際にリンクの負荷に基づいて中継用バッファ３０ａを使用するか否かを判定してもよい。
【符号の説明】
【００７６】
１    情報処理システム
１ａ    管理用ネットワーク
１ｂ    計算用ネットワーク
２    管理ノード
２ａ    ジョブスケジューラコントローラ
３    計算ノード
３ａ    ジョブスケジューラデーモン
４    スイッチ
５    リンク
６    スパインスイッチ
２０    記憶部
２０ａ    ジョブ実行情報管理表
２０ｂ    中継ノード管理表
２１    ジョブ起動部
２２    中継ノード決定部
３０    記憶部
３０ａ    中継用バッファ
３０ｂ    通信バッファ
３０ｃ    中継フラグ
３０ｄ    中継ノード情報
３１    中継部
３２    初期化部
３３    送信部
３３ａ    判定部
３３ｂ    第１送信部
３３ｃ    第２送信部
３４    デグレード検出部
３５    受信部
４１    ＣＰＵ
４２    メモリ
４３    ＨＤＤ
４４    通信インタフェース
【図１】
2019036102.tif 000003
【図２】
2019036102.tif 000004
【図３Ａ】
2019036102.tif 000005
【図３Ｂ】
2019036102.tif 000006
【図３Ｃ】
2019036102.tif 000007
【図３Ｄ】
2019036102.tif 000008
【図３Ｅ】
2019036102.tif 000009
【図３Ｆ】
2019036102.tif 000010
【図４】
2019036102.tif 000011
【図５】
2019036102.tif 000012
【図６】
2019036102.tif 000013
【図７】
2019036102.tif 000014
【図８】
2019036102.tif 000015
【図９】
2019036102.tif 000016
【図１０】
2019036102.tif 000017
【図１１】
2019036102.tif 000018
【図１２】
2019036102.tif 000019
【図１３】
2019036102.tif 000020
【図１４】
2019036102.tif 000021
【図１５】
2019036102.tif 000022
【図１６】
2019036102.tif 000023
【図１７】
2019036102.tif 000024