説明

通信方法及び情報処理システム

【課題】通信の混雑の可能性を低下させること。
【解決手段】データを送信する第一の情報処理装置群とデータを受信する第二の情報処理装置群とを含む情報処理システムにおける通信方法であって、前記第一の情報処理装置が、いずれかの前記第二の情報処理装置に送信するデータを、当該第二の情報処理装置の識別情報に関連付けて記憶し、前記各第二の情報処理装置によって生成され、前記第一の情報処理装置群及び前記第二の情報処理装置群の間において転送される、前記第二の情報処理装置への送信権を示す第一のトークンの受信に応じ、当該第一のトークンの生成元の前記第二の情報処理装置の前記識別情報に関連付けて前記データ記憶部が記憶するデータを、該第二の情報処理装置に送信する処理を実行する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、通信方法及び情報処理システムに関する。
【背景技術】
【0002】
クラスタ構成のコンピュータシステム等、複数のコンピュータ(以下、「ノード」という。)に並列的に処理を実行させるコンピュータシステムにおいては、ノード間の通信の衝突又は混雑等がボトルネックとなる場合がある。
【0003】
そこで、従来、予め各ノードに処理を実行させるアプリケーションプログラム(以下、「アプリケーション」という。)に関して、通信の衝突等が発生しないように予め通信パターンが設計されていた。当該通信パターンは、アプリケーションプログラムに設定され、各ノードは、当該ノードのアプリケーションプログラムに設定された通信パターンに従って通信を行うことで、ノード間の通信の混雑の回避が図られていた。
【0004】
但し、処理の進行に応じて入力されるデータに基づいて、通信相手となるノードが変化するようなアプリケーションプログラムに関しては、最適な通信パターンを設計するのは困難である。通信相手が実行時に動的に変化するため、通信パターンを予測することができないからである。
【0005】
従来、このようなアプリケーションに関しては、通信相手のランダム性により、衝突等の可能性が低いことを期待して、特別な対策はとられていなかった。また、衝突等が発生したとしても、TCP/IPの帯域制御及びフロー制御や、LAN(Local Area Network)のフレーム衝突回避技術等によって、スループット制御が可能であると考えられていた。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特公平7−93636号公報
【特許文献2】特開平04−070235号公報
【特許文献3】特開2000−332803号公報
【特許文献4】特開平9−252312号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、通信相手がランダムであり、大量のメッセージ通信を行うアプリケーションプログラムでは、システム全体を俯瞰すると、一部のノードに対する通信が一時的に集中する可能性がある。したがって、通信の衝突等の可能性は、必ずしも低いとはいえない。
【0008】
また、TCP/IPの帯域制御やフロー制御は、効果が顕れるまでに時間を要する。LANのフレーム衝突回避技術によっても、LANスイッチにおいてパケットが消失したり、各ノードのプロトコルスタックやLANスイッチでの制御切り替えのためのオーバーヘッドが発生したりする。
【0009】
その結果、ネットワークの一部で通信の混雑が発生し、システム全体で本来の性能が発揮できない可能性があった。
【0010】
そこで、一側面では、通信の混雑の可能性を低下させることのできる通信方法及び情報処理システムの提供を目的とする。
【課題を解決するための手段】
【0011】
一つの案では、データを送信する第一の情報処理装置群とデータを受信する第二の情報処理装置群とを含む情報処理システムにおける通信方法であって、前記第一の情報処理装置が、いずれかの前記第二の情報処理装置に送信するデータを、当該第二の情報処理装置の識別情報に関連付けて記憶し、前記各第二の情報処理装置によって生成され、前記第一の情報処理装置群及び前記第二の情報処理装置群の間において転送される、前記第二の情報処理装置への送信権を示す第一のトークンの受信に応じ、当該第一のトークンの生成元の前記第二の情報処理装置の前記識別情報に関連付けて前記データ記憶部が記憶するデータを、該第二の情報処理装置に送信する処理を実行する。
【発明の効果】
【0012】
一態様によれば、通信の混雑の可能性を低下させることができる。
【図面の簡単な説明】
【0013】
【図1】本発明の実施の形態における情報処理システムの構成例を示す図である。
【図2】本発明の実施の形態における計算ノードのハードウェア構成例を示す図である。
【図3】本発明の実施の形態における計算ノードの機能構成例を示す図である。
【図4】通信制御部の初期化処理の処理手順の一例を説明するためのフローチャートである。
【図5】バッファ管理情報記憶部の構成例を示す図である。
【図6】統計情報記憶部の構成例を示す図である。
【図7】通信情報記憶部の構成例を示す図である。
【図8】送信権トークン管理部の初期化処理の処理手順の一例を説明するためのフローチャートである。
【図9】トークン管理情報記憶部の構成例を示す図である。
【図10】送信権トークンの構成例を示す図である。
【図11】情報処理部の初期化処理の処理手順の一例を説明するためのフローチャートである。
【図12】情報処理データの送信要求の受け付け時に実行される処理手順の一例を説明するためのフローチャートである。
【図13】要求トークンの発行処理の処理手順の一例を説明するためのフローチャートである。
【図14】要求トークンの構成例を示す図である。
【図15】他ノード宛の送信権トークンの受信に応じて実行される処理手順の一例を説明するためのフローチャートである。
【図16】要求トークンが受信された際に実行される処理手順の一例を説明するためのフローチャートである。
【図17】自ノード宛の送信権トークンの受信に応じて実行される処理手順の一例を説明するためのフローチャートである。
【図18】トークン送信予定時刻の到来に応じて実行される処理手順の一例を説明するためのフローチャートである。
【図19】他ノードからのメッセージの送信に応じて実行される処理手順の一例を説明するためのフローチャートである。
【発明を実施するための形態】
【0014】
以下、図面に基づいて本発明の実施の形態を説明する。図1は、本発明の実施の形態における情報処理システムの構成例を示す図である。
【0015】
情報処理システム1は、例えば、クラスタシステムとも呼ばれるコンピュータシステムである。同図において、情報処理システム1は、LAN(Local Area Network)等のネットワーク及びスイッチSW等を介して通信可能に接続された複数(同図では、32台)のコンピュータを含む。以下、各コンピュータを「計算ノードN」という。同図では、各計算ノードNが、LANスイッチを介してスター型に接続されている例が示されているが、本実施の形態の有効範囲は、特定のネットワークトポロジに限定されない。また、計算ノードN間の通信には、無線通信が利用されてもよい。
【0016】
各計算ノードNは、例えば、共通のアプリケーションプログラムがインストールされ、各計算ノードNに対する入力データに関して、他の計算ノードN(他ノード)と並列的に情報処理を実行する。並列的な情報処理の過程において、各計算ノードNは、他ノードと相互に通信を行う。
【0017】
各計算ノードNが実行する情報処理の一例として、共起頻度分析が挙げられる。例えば、或る文書データにおいて、所定単位内(例えば、1文又は1ページ等)に、共に出現する単語の組、及び当該単語の組の出現頻度等が解析される。各計算ノードNには、それぞれ異なる文書データが入力データとして入力される。各計算ノードNは、入力された文書データに関して共起頻度分析を行う。また、各計算ノードNには、それぞれ異なる単語の組が割り当てられ、各計算ノードNは、割り当てられた単語の組の共起回数の計数(カウント)をも行う。例えば、各計算ノードNには、事前に0〜31のいずれかの1つの番号が重複しないように割り当てられる。例えば、共起する単語の組のハッシュ値を32で除した場合の余りの値と一致する番号が割り当てられた計算ノードNが、当該単語の組の計数を行う。
【0018】
このような情報処理によれば、各計算ノードNは、単語の組の共起の検出に応じ、当該単語の組の共起回数を計数する計算ノードNに対して、共起回数の加算要求を通知するための通信を行う。斯かる通知先は、ランダム性が高いと考えられる。このように、通信相手に関してランダム性の高い通信が発生する情報処理に関して、本実施の形態は好適である。但し、本実施の形態が適用可能な情報処理は、所定のものに限定されない。複数の計算ノードNの連携によって(すなわち、複数の計算ノードNが相互に通信しながら)実行される情報処理であればよい。
【0019】
なお、情報処理システム1において、情報処理の結果を他の計算ノードNに送信する計算ノードN群と、他の計算ノードNによる情報処理の結果を受信する計算ノードN群とが区別されていてもよい。以下、前者を「送信側ノード」といい、後者を「受信側ノード」という。もちろん、各計算ノードNが、送信側ノード及び受信側ノードの双方を兼ねてもよい。
【0020】
情報処理システム1の基本的な動作について説明する。本実施の形態では、送信権トークンと呼ばれるデータが、例えば、各計算ノードNの間で順番に転送される。例えば、送信権トークンは、計算ノードN群によって形成される仮想的なリングトポロジ上を巡回(流通)する。送信権トークンとは、ネットワーク上にデータを送信する権利(送信権)を表現するデータである。送信権トークンは、受信側ノードごとに生成される。したがって、複数の受信側ノードが存在する場合、各受信側ノードに対応する複数の送信権トークンが各計算ノードN間を巡回する。すなわち、一つの送信権トークンは、当該送信権トークンに対応する計算ノードNに対するデータの送信権を示す。
【0021】
各計算ノードNは、情報処理の結果、他の計算ノードNに送信したメッセージという。)が発生した場合、当該他の計算ノードNに対する送信権トークンが受信されるまで、当該メッセージをバッファリング(蓄積)しておく。送信権トークンを受信した計算ノードNは、送信権トークンに対応する他の計算ノードNに関してそれまでに蓄積されていたメッセージの一部又は全部を、当該他の計算ノードNに送信する。なお、メッセージとは、例えば、情報処理の結果や、当該結果に基づく他ノードへの処理要求等を含むデータである。
【0022】
但し、メッセージが発生してから送信されるまでのレイテンシ(遅延時間)に制限が有る場合がある。この場合、他の計算ノードNによって保持されてしまうかもしれない送信権ノードの受信を待機していたのでは、当該制限を満たすことができない状況に陥る可能性が有る。そこで、このような状況になった計算ノードNは、例えば、送信権トークンの巡回方向(転送方向)とは逆方向に、要求トークンを送出する。要求トークンとは、特定の計算ノードNへの送信権の獲得要求を示すデータである。ネットワーク上において、要求トークンと当該要求トークンの目的とする送信権トークンとが衝突する(出くわす)と、当該送信権トークンの利用に関して、当該要求トークンの送信元の計算ノードNが優先される。
【0023】
以上は、基本的な動作の説明であり、後述されるように、送信権トークン及び要求トークンの転送等は、各計算ノードNによって実行される処理判断に基づいて更に複雑に制御される。
【0024】
図2は、本発明の実施の形態における計算ノードのハードウェア構成例を示す図である。図2の計算ノードNは、それぞれバスBで相互に接続されているドライブ装置100と、補助記憶装置102と、メモリ装置103と、CPU104と、インタフェース装置105とを有する。
【0025】
計算ノードNでの処理を実現するプログラムは、記録媒体101によって提供される。プログラムを記録した記録媒体101がドライブ装置100にセットされると、プログラムが記録媒体101からドライブ装置100を介して補助記憶装置102にインストールされる。但し、プログラムのインストールは必ずしも記録媒体101より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置102は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【0026】
メモリ装置103は、プログラムの起動指示があった場合に、補助記憶装置102からプログラムを読み出して格納する。CPU104は、メモリ装置103に格納されたプログラムにしたがって計算ノードNに係る機能を実行する。インタフェース装置105は、ネットワークに接続するためのインタフェースとして用いられる。
【0027】
なお、記録媒体101の一例としては、CD−ROM、DVDディスク、又はUSBメモリ等の可搬型の記録媒体が挙げられる。また、補助記憶装置102の一例としては、HDD(Hard Disk Drive)又はフラッシュメモリ等が挙げられる。記録媒体101及び補助記憶装置102のいずれについても、コンピュータ読み取り可能な記録媒体に相当する。
【0028】
図3は、本発明の実施の形態における計算ノードの機能構成例を示す図である。同図において、一つの計算ノードNは、情報処理部11及び通信制御部12等を有する。
【0029】
情報処理部11は、例えば、情報処理を実行するアプリケーションプログラムがCPU104に実行させる処理によって実現される。情報処理部11は、通信制御部12を用いて、処理結果を他の計算ノードNに伝達したり、他の計算ノードNにおける処理結果を取得したりする。なお、情報処理部11は、通信制御部12が有するAPI(Application Program Interface)121を介して、通信制御部12を利用する。
【0030】
通信制御部12は、情報処理部11による情報処理の結果に関する通信を制御する。同図において、通信制御部12は、バッファ管理部122、送受信部123、送信権トークン管理部124、及び要求トークン管理部125等を含む。これら各部は、計算ノードNにインストールされたプログラムがCPU104に実行させる処理により実現される。通信制御部12は、また、統計情報記憶部131、通信情報記憶部132、トークン管理情報記憶部133、自ノード宛送信権トークン記憶部134、及び他ノード宛送信権トークン記憶部135等を有する。これら、各記憶部は、補助記憶装置102又はメモリ装置103等を用いて実現可能である。通信制御部12は、更に、メッセージの送信先となる他ノードごとに、バッファ管理情報記憶部141及び送信バッファ142等を有する。バッファ管理情報記憶部141及び送信バッファ142は、例えば、メモリ装置103等を用いて実現可能である。
【0031】
バッファ管理部122は、情報処理部11からのメッセージの送信要求に応じ、当該メッセージを送信先の計算ノードNに対応する送信バッファ142に記憶する。バッファ管理部122は、また、当該送信バッファ142に対応するバッファ管理情報記憶部141の記憶内容を更新する。送信バッファ142は、対応する計算ノードN宛のメッセージを蓄積(バッファリング)するための記憶領域である。バッファ管理情報記憶部141は、対応する計算ノードNの識別情報や、対応する送信バッファ142の使用状況等を示す情報を記憶する。したがって、他ノードに対するメッセージは、当該他ノードの識別情報に関連付けられて送信バッファに記憶される。
【0032】
なお、専ら受信側ノードである計算ノードNは、バッファ管理部122、バッファ管理情報記憶部141、及び送信バッファ142を有していなくてもよい。
【0033】
送受信部123は、当該計算ノードN(自ノード)において、他ノード宛の送信権トークンが受信された際に、当該他ノードに対応する送信バッファ142に記憶されている(蓄積されている)メッセージの一部又は全部を当該他ノードに送信する。送受信部123は、また、他ノードが自ノード宛に送信したメッセージの受信を検知し、当該メッセージを情報処理部11に引き渡す。
【0034】
送信権トークン管理部124は、当該計算ノードNが受信側ノードである場合、自ノードが発行した送信権トークン(以下、「自ノード宛の送信権トークン」という。)の生成(発行)を行い、生成された送信権トークンを各計算ノードN間において流通(転送)させる。送信権トークン管理部124は、また、当該計算ノードNが送信側ノードである場合、他ノードが発行した送信権トークン(以下、「他ノード宛の送信権トークン」という。)が受信されたときに、当該他ノードに対するメッセージの送信を送受信部123に要求する。要求トークン管理部125は、必要に応じて要求トークンの生成(発行)を行い、生成された要求トークンを各計算ノードN間において流通(転送)させる。要求トークン管理部125は、また、要求トークンの受信に応じ、当該要求トークンが目的とする送信権トークンが自ノードにおいて保持されている場合は、当該送信権トークンに対して当該要求トークンを記録(格納)する。
【0035】
統計情報記憶部131は、通信制御部12による通信に関する統計情報を記憶する。通信情報記憶部132は、送信権トークンや要求トークンの送信先を識別するための情報を記憶する。トークン管理情報記憶部133は、自ノード宛の送信権トークンの流通状況(転送状況)を示す情報等を記憶する。自ノード宛送信権トークン記憶部134は、送信待ちの自ノード宛の送信権トークンを、登録された順に記憶する。すなわち、自ノード宛送信権トークン記憶部134は、送信待ちの自ノード宛の送信権トークンのキューとして機能する。なお、専ら送信側ノードである計算ノードNは、トークン管理情報記憶部133及び自ノード宛送信権トークン記憶部134を有していなくてもよい。
【0036】
他ノード宛送信権トークン記憶部135は、他ノード宛の送信権トークンが受信された場合に、当該送信権トークンを一時的に記憶する。
【0037】
以下、情報処理システム1において各計算ノードNが実行する処理手順について説明する。なお、本実施の形態では、各計算ノードNが、送信側ノード及び受信側ノードの双方を兼ねる場合について説明する。
【0038】
図4は、通信制御部の初期化処理の処理手順の一例を説明するためのフローチャートである。同図に示される処理手順は、例えば、通信制御部12の起動時に実行される。
【0039】
ステップS101において、バッファ管理部122は、他ノードごとの送信バッファ142及びバッファ管理情報記憶部141を初期化する。例えば、各送信バッファ142及び各バッファ管理情報記憶部141のメモリ領域がメモリ装置103内に確保され、各バッファ管理情報記憶部141に初期値が記録される。
【0040】
図5は、バッファ管理情報記憶部の構成例を示す図である。同図に示されるように、各バッファ管理情報記憶部141は、対象ノード、バッファ使用量、送信メッセージ長履歴、入力メッセージ長履歴、送信権トークン到着時刻履歴、要求トークン送信予定時刻履歴、レイテンシ履歴、及び最大許容レイテンシ等を記憶する。
【0041】
対象ノードは、対応する計算ノードNの識別子(以下、「ノード識別子」という。)である。バッファ使用量は、対応する送信バッファ142の使用量である。すなわち、バッファ使用量は、対応する送信バッファ142に記憶(蓄積)されている各メッセージのデータサイズ(メッセージ長)の合計値である。送信メッセージ長履歴は、過去に送信されたメッセージのメッセージ長と、当該メッセージの送信時刻との組み合わせの履歴である。送信メッセージ長履歴によって、単位時間当たりに送信されるメッセージ長(すなわち、メッセージが送信される速度(メッセージの送信スループット))を知ることができる。入力メッセージ長履歴は、情報処理部11より入力された(送信が要求された)メッセージのメッセージ長と当該メッセージの入力時刻(送信要求時刻)との組み合わせの履歴である。入力メッセージ長履歴によって、単位時間当たりに入力されるメッセージ長(すなわち、メッセージが入力される速度(メッセージの受信スループット))を知ることができる。
【0042】
送信権トークン到着時刻履歴は、当該バッファ管理情報記憶部141が対応する他ノード宛の送信権トークンが到着した(受信された)時刻の履歴である。なお、各計算ノードN(各受信側ノード)は、自ノード宛の送信権トークンを複数発行する場合がある。したがって、送信権トークン単位で到着時刻を区別可能なように、送信権トークン到着時刻履歴には、到着時刻と共に、到着した送信権トークンのIDが記録される。
【0043】
要求トークン送信予定時刻履歴は、当該バッファ管理情報記憶部141が対応する他ノード宛の送信権トークンを目的とする要求トークンの送信時刻の履歴である。レイテンシ履歴は、当該バッファ管理情報記憶部141が対応する他ノードに対して要求トークンが送信されてから、当該他ノード宛の送信権トークンが受信されるまでに要した時間の履歴である。最大許容レイテンシは、メッセージが入力されてから(メッセージの送信要求を受け付けてから)、当該メッセージが送信(出力)されるまでのレイテンシ(遅延時間)として許容される最大値である。
【0044】
なお、ステップS101では、対象ノードには、バッファ管理情報記憶部141が対応する計算ノードNのノード識別子が記録される。バッファ使用量には「0」が記録される。また、最大許容レイテンシには、例えば、補助記憶装置102に予め記憶されている設定値が記録される。当該設定値は、計算ノードNごとに異なる値であってもよいし、全計算ノードNに対して共通の値であってもよい。また、送信メッセージ長履歴、入力メッセージ長履歴、送信権トークン到着時刻履歴、要求トークン送信予定時刻履歴、及びレイテンシ履歴の内容は空とされる。
【0045】
続いて、送受信部123は、統計情報記憶部131を初期化する(S102)。例えば、統計情報記憶部131のメモリ領域がメモリ装置103内に確保され、統計情報記憶部131に初期値が記録される。
【0046】
図6は、統計情報記憶部の構成例を示す図である。同図に示されるように、統計情報記憶部131は、送信スループット履歴及び受信スループット履歴等を記憶する。送信スループット履歴は、或る期間ごとの送信スループットと、当該期間の区切りの時刻との組み合わせの履歴である。本実施の形態において、当該期間は、メッセージを送信するタイミングによって区切られる。したがって、当該期間は必ずしも一定ではない。受信スループット履歴は、或る期間ごとの、受信スループットと、当該期間の区切りの時刻との組み合わせの履歴である。本実施の形態において、当該期間は、メッセージを受信するタイミングによって区切られる。したがって、当該期間は必ずしも一定ではない。なお、送信スループット履歴に関して、送信先の区別は無い。また、受信スループット履歴に関して、送信元の区別は無い。
【0047】
ステップS102では、送信スループット履歴及び受信スループット履歴の内容は空にされる。
【0048】
続いて、送受信部123は、ノード一覧情報を、例えば、補助記憶装置102より読み込み、通信情報記憶部132に記録する(S103)。
【0049】
図7は、通信情報記憶部の構成例を示す図である。同図において、通信情報記憶部132は、ノード一覧情報、送信権トークン送信先、及び要求トークン送信先等の項目を有する。
【0050】
ノード一覧情報は、情報処理システム1に属する各計算ノードNのノード識別子の一覧である。通信において、IPアドレスによって各計算ノードNが識別されるのであれば、ノード識別子は、IPアドレスであるのが好適である。ノード一覧情報は、また、送信権トークンや要求トークンの巡回に関する、各計算ノードN間の順序関係をも示す。例えば、当該一覧情報は、当該順序関係に従った順番で、各計算ノードNのノード識別子を含む。当該順序関係は、上記した仮想的なリングトポロジにおける順序関係である。
【0051】
送信権トークン送信先は、上記順序関係、自ノード(当該計算ノードN)にとって送信権トークンの送信先となる計算ノードNのノード識別子である。要求トークン送信先は、自ノードにとって要求トークンの送信先となる計算ノードNのノード識別子である。
【0052】
続いて、送受信部123は、通信情報記憶部132の送信権トークン送信先及び要求トークン送信先に値を設定する(S104)。例えば、送信権トークン送信先には、ノード一覧情報が示す順序関係において、自ノード(当該計算ノードN)の次に位置する計算ノードNのノード識別子が設定される。一方、要求トークン送信先には、ノード一覧情報が示す順序関係において、自ノードの前に位置する計算ノードNのノード識別子が設定される。この場合、送信権トークンと要求トークンとの転送方向は、相互に逆方向となる。
【0053】
続いて、送信権トークン管理部124は、初期化処理を実行する(S105)。
【0054】
ステップS105の詳細について説明する。図8は、送信権トークン管理部の初期化処理の処理手順の一例を説明するためのフローチャートである。専ら送信側ノードである計算ノードNは、図8の処理を実行しなくてもよい。
【0055】
ステップS111において、送信権トークン管理部124は、トークン管理情報記憶部133を初期化する。例えば、トークン管理情報記憶部133のメモリ領域がメモリ装置103内に確保され、トークン管理情報記憶部133に初期値が記録される。
【0056】
図9は、トークン管理情報記憶部の構成例を示す図である。同図において、トークン管理情報記憶部133は、発行数、トークン送信予定時刻、送信時刻履歴、及び受信時刻履歴等の項目を有する。
【0057】
発行数は、現在の自ノード宛の送信権トークンの発行数である。後述されるように、自ノード宛の送信権トークンの数は、通信状況等に応じて調整される。初期化処理において、発行数には「0」が記録される。トークン送信予定時刻は、自ノード宛の送信権トークンを送信する予定時刻である。送信時刻履歴は、自ノード宛の送信権トークンに関して、自ノードが過去に送信した時刻と、当該送信権トークンのIDとの組み合わせの履歴である。受信時刻履歴は、自ノード宛の送信権トークンに関して、自ノードが過去に受信した時刻と、当該送信権トークンのIDとの組み合わせの履歴である。例えば、送信時刻履歴と受信時刻履歴において、IDが一致する送信時刻及び受信時刻に基づいて、当該IDに係る送信権トークンが仮想的なリングトポロジを一周するのに要した時間を算出することができる。
【0058】
続いて、送信権トークン管理部124は、自ノード宛の送信権トークンを一つ生成する(S112)。送信権トークンの生成に応じ、送信権トークン管理部124は、トークン管理情報記憶部133の発行数の値に1を加算する。
【0059】
図10は、送信権トークンの構成例を示す図である。同図において、送信権トークンは、ID、対象ノード、最大許容転送長、総転送量、周回所要時間履歴、要求トークンリスト、ノード別バッファ逼迫度、ノード別他ノード宛データ量、及びノード別最大許容レイテンシ逼迫度等の項目を有する。
【0060】
IDは、各送信権トークンを識別するための識別子である。対象ノードは、当該送信権トークンによって与えられる送信権によってメッセージの送信先とすることのできる計算ノードNのノード識別子である。すなわち、対象ノードは、当該送信権トークンの発行元の計算ノードNのノード識別子である。総転送量は、当該送信権トークンが仮想的なリングトポロジを一周する間に、当該送信権トークンに基づいて送信されたメッセージの総量である。周回所要時間履歴は、当該送信権トークンが仮想的なリングトポロジを一周するのに要した時間の履歴である。要求トークンリストは、当該送信権トークンを対象とする要求トークンを格納するための項目である。
【0061】
ノード別バッファ逼迫度は、当該送信権ノードの対象ノード以外の計算ノードN別の、当該対象ノードに対応する送信バッファ142の逼迫の度合い(程度)である。ノード別他ノード宛データ量は、当該送信権ノードの対象ノード以外の計算ノードN別の、全ての送信バッファ142の使用量の総和である。ノード別最大許容レイテンシ切迫度は、当該送信権ノードの対象ノード以外の各計算ノードN別の、当該対象ノードに対応する送信バッファ142に蓄積されているメッセージに関する最大許容レイテンシに対する切迫の度合い(程度)である。すなわち、最大許容レイテンシに対する残り時間の少なさの度合いである。
【0062】
続いて、送信権トークン管理部124は、生成された送信権トークンを自ノード宛送信権トークン記憶部134に記憶(登録)する(S113)。自ノード宛送信権トークン記憶部134は、例えば、FIFO(First-In First-Out)等のキュー構造によって、送信権トークンを記憶する。
【0063】
続いて、送信権トークン管理部124は、自ノード宛送信権トークン記憶部134より、最も古い送信権トークンを取得し、当該送信権トークンの送信を送受信部123に要求する(S114)。ここでは、自ノード宛送信権トークン記憶部134には送信権トークンが一つしか記憶されていない状態であるため、ステップS113において登録された送信権トークンの送信が要求される。当該要求に応じ、送受信部123は、通信情報記憶部132の送信権トークン送信先に設定されているノード識別子に係る計算ノードN宛に、当該要求に係る送信権トークンを送信する。
【0064】
続いて、送信権トークン管理部124は、トークン管理情報記憶部133のトークン送信予定時刻の値を設定する(S115)。トークン送信予定時刻は、例えば、現在時刻であってもよいし、予め設定されている所定時間が現在時刻に加算された時刻であってもよい。
【0065】
続いて、送信権トークン管理部124は、トークン送信予定時刻を通知するためのタイマ機能を起動する(S116)。当該タイマ機能は、時間の経過を監視し、指定された時刻(トークン送信予定時刻)の到来を送信権トークン管理部124に通知する機能である。
【0066】
続いて、情報処理部11の初期化処理について説明する。図11は、情報処理部の初期化処理の処理手順の一例を説明するためのフローチャートである。同図に示される処理手順は、例えば、情報処理部11の起動時に実行される。
【0067】
ステップS121において、情報処理部11は、API121を介して、受信用コールバック関数の登録を通信制御部12に要求する(S121)。通信制御部12の送受信部123は、当該要求に指定された受信用コールバック関数のアドレスをメモリ装置103に記憶する。受信用コールバック関数は、自ノードにおいて他ノードからのメッセージの受信が検知された場合に、送受信部123によって呼び出される関数である。したがって、情報処理部11は、受信用コールバック関数が呼び出されることによって、メッセージの受信を検知することができる。
【0068】
続いて、情報処理部11は、API121を介して、受信用バッファの登録を通信制御部12に要求する(S122)。通信制御部12の送受信部123は、当該要求に指定された受信用バッファのアドレスをメモリ装置103に記憶する。受信用バッファは、受信されたメッセージを情報処理部11に伝達するために用いられる記憶領域である。
【0069】
続いて、情報処理部11は、API121を介して、最大許容レイテンシの登録を通信制御部12に要求する(S123)。通信制御部12のバッファ管理部122は、当該要求に指定された最大許容レイテンシの値を、各バッファ管理情報記憶部141の最大許容レイテンシに記録する。なお、情報処理部11が、メッセージの送信要求時において最大許容レイテンシを指定する場合は、ステップS123は、実行されなくてもよい。
【0070】
情報処理部11は、初期化処理の終了後、例えば、補助記憶装置102に記憶されている入力データに基づいて情報処理(例えば、共起頻度分析等)を実行する。情報処理部11は、情報処理の結果としてのデータ(メッセージ)を、他の計算ノードNに送信する場合、当該メッセージの送信を通信制御部12に要求する。
【0071】
続いて、情報処理部11からのメッセージの送信要求に応じて通信制御部12が実行する処理手順について説明する。
【0072】
図12は、メッセージの送信要求の受け付け時に実行される処理手順の一例を説明するためのフローチャートである。専ら受信側ノードである計算ノードNは、図12の処理を実行しなくてもよい。
【0073】
ステップS131において、通信制御部12は、API121を介して、情報処理部11よりメッセージの送信要求を受け付ける。当該送信要求には、送信対象のメッセージ及び送信先の計算ノードN(送信先ノード)のノード識別子が指定される。また、当該メッセージに対する最大許容レイテンシが指定されてもよい。
【0074】
続いて、バッファ管理部122は、送信要求に指定された送信先ノードに対応する送信バッファ142に、送信要求に指定されたメッセージを、現在時刻を示す情報に関連付けて記録(コピー)する(S132)。以下、当該現在時刻を「送信要求時刻」という。なお、最大許容レイテンシが送信要求に指定されている場合、最大許容レイテンシも、メッセージに関連付けられて送信バッファ142に記録される。また、当該送信バッファ142に既に他のメッセージが格納されている場合、当該他のメッセージに続けて、今回の送信要求に係るメッセージ等が記録される。したがって、送信バッファ142には、一以上の送信要求において指定されたメッセージ等が蓄積される。
【0075】
なお、送信要求を受け付けるためのAPI121が、送信対象のメッセージが格納されたメモリ領域のポインタ(アドレス)と、メッセージ長とを引数として受け付ける場合、当該ポインタ及びメッセージ長とが、送信バッファ142に格納されてもよい。すなわち、この場合、メッセージの実体ではなく、情報処理部11がメッセージを格納したメモリ領域を特定する情報が送信バッファ142に格納されてもよい。
【0076】
続いて、バッファ管理部122は、送信先ノードに対応するバッファ管理情報記憶部141の内容を更新する(S133)。具体的には、送信要求において指定されたメッセージの長さ(データサイズ)が、バッファ使用量に加算される。また、入力メッセージ長履歴に、当該メッセージのメッセージ長と現在時刻との組み合わせが追加される。
【0077】
続いて、バッファ管理部122は、バッファ使用量が閾値a以下であるか否かを判定する(S134)。閾値aは、例えば、以下の式(1)を用いて算出される。
【0078】
閾値a=バッファサイズ×安全係数 ・・・(1)
バッファサイズとは、送信先ノードに対応する送信バッファ142が記憶可能なデータサイズ(メッセージ長)である。安全係数とは、バッファサイズを超えるメッセージが送信バッファ142に記録されないようにするための(すなわち、バッファ使用量を所定量以内に抑制するための)係数である。したがって、安全係数は0より大きく1未満の値(例えば、0.6等)とされる。
【0079】
すなわち、ステップS114では、送信先ノードに対応する送信バッファ142が、所定の程度以上逼迫しているか否かが判定される。
【0080】
又は、閾値aは、以下の式(2)を用いて算出されてもよい。
【0081】
閾値a=バッファサイズ−平均送信スループット×平均周回所要時間 ・・・(2)
平均送信スループットは、統計情報記憶部131(図6)の送信スループット履歴の平均値である。平均周回所要時間は、送信先ノードに対応する送信権トークンが、仮想的なリングトポロジの周回(一周)に要する時間の平均値である。平均周回所要時間は、例えば、送信先ノードに対応するバッファ管理情報記憶部141(図5)の送信権トークン到着時刻履歴に基づいて算出される。すなわち、送信権トークン到着時刻履歴に含まれる、各到着時刻の間の時間を、送信権トークンの周回所要時間とみなし、その平均値が算出される。なお、送信権トークン到着時刻履歴に、複数の送信権トークンに関する到着時刻が混在している場合は、送信権トークン別に、各到着時間の間の時間(周回時間)が算出されればよい。その後、送信権トークンの区別なく、全ての周回時間の平均値が算出されればよい。
【0082】
また、式(1)及び式(2)のそれぞれより算出される各閾値aと、バッファ使用量とが比較されてもよい。この場合、例えば、バッファ使用量がいずれかの閾値aを超えていれば、バッファ使用量は閾値aを超えていると判定されてもよい。
【0083】
なお、式(1)及び式(2)は、一例である。送信先ノードに対応する送信バッファ142の逼迫の程度を判定可能であれば、他の式によって閾値aが算出されてもよい。
【0084】
バッファ使用量が閾値a以下である場合(S134でYes)、バッファ管理部122は、当該送信バッファ142に記録された時期が最も古いメッセージに関連付けられている送信要求時刻からの経過時間が閾値b以下であるか否かを判定する(S135)。閾値bは、例えば、以下の式(3)を用いて算出される。
【0085】
閾値b=最大許容レイテンシ×安全係数 ・・・(3)
最大許容レイテンシは、バッファ管理情報記憶部141(図5)に記憶されている最大許容レイテンシ、又は送信先ノードのバッファに記録された時期が最も古いメッセージに関連付けられている最大許容レイテンシである。安全係数は、送信先ノード宛の送信権トークンが受信されるまでの時間を考慮して、メッセージが最大許容レイテンシの制限内に送信されるようにするための係数である。
【0086】
すなわち、ステップS135では、送信先ノードに対応するメッセージの送信期限がどの程度切迫しているかが判定される。
【0087】
又は、閾値bは、以下の式(4)を用いて算出されてもよい。
【0088】
閾値b=最大許容レイテンシ−平均周回所要時間 ・・・(4)
式(3)及び式(4)のそれぞれより算出される各閾値bと、送信要求時刻からの経過時間とが比較されてもよい。この場合、例えば、当該経過時間がいずれかの閾値bを超えていれば、バッファ使用量は閾値bを超えていると判定されてもよい。
【0089】
なお、式(3)及び式(4)は、一例である。メッセージの送信期限の切迫の程度を判定可能であれば、他の式によって閾値bが算出されてもよい。
【0090】
上記経過時間が閾値b以下である場合(S135でYes)、図12の処理は終了する。一方、バッファ使用量が閾値aを超える場合(S134でNo)、又は上記経過時間が閾値bを超える場合(S135でNo)、バッファ管理部122は、送信先ノードのノード識別子を指定して、要求トークンの発行を要求トークン管理部125に要求する。当該要求に応じ、要求トークン管理部125は、要求トークンの発行処理を実行する(S136)。このように、要求トークンは、或る送信バッファ142の空き容量が小さくなった場合、又はメッセージの送信期限が迫ってきた場合に発行される。
【0091】
続いて、ステップS136の詳細について説明する。図13は、要求トークンの発行処理の処理手順の一例を説明するためのフローチャートである。専ら受信側ノードである計算ノードNは、図13の処理を実行しなくてもよい。
【0092】
ステップS141において、要求トークン管理部125は、要求トークンを生成する。
【0093】
図14は、要求トークンの構成例を示す図である。同図において、要求トークンは、ID、対象ノード、発行元ノード、及び送信要求経過時間等の項目を有する。
【0094】
IDは、各要求トークンを識別するための識別子である。対象ノードは、当該要求トークンによって獲得したい送信権トークンの宛先である計算ノードNのノード識別子である。発行元ノードは、当該要求トークンの発行元(生成元)の計算ノードNのノード識別子である。送信要求経過時間は、対象ノードに対応する送信バッファ142において最も古いメッセージの送信要求時刻からの経過時間である。
【0095】
ステップS141において生成された要求トークンの対象ノードには、バッファ管理部122からの要求トークンの発行要求において指定された送信先ノードのノード識別子が記録される。また、送信元ノードには、自ノードのノード識別子が記録される。また、送信要求経過時間には、バッファ管理部122からの要求トークンの発行要求において指定された送信先ノードに対応する送信バッファ142において、最も古いメッセージの送信要求時刻からの経過時間が記録される。
【0096】
続いて、要求トークン管理部125は、生成された要求トークンの送信を送受信部123に要求する。送受信部123は、当該要求トークンを、通信情報記憶部132において要求トークン送信先に設定されているノード識別子に係る計算ノードN宛に送信する(S142)。続いて、要求トークン管理部125は、要求トークンの対象ノードに対応するバッファ管理情報記憶部141(図5)の内容を更新する(S143)。具体的には、要求トークン送信履歴に、送信された要求トークンのIDと現在時刻との組みあわせが追加される。
【0097】
続いて、他ノード宛の送信権トークンが受信された際に実行される処理手順について説明する。図15は、他ノード宛の送信権トークンの受信に応じて実行される処理手順の一例を説明するためのフローチャートである。専ら受信側ノードである計算ノードNは、図15におけるステップS151〜S160を実行しなくてもよい。
【0098】
他ノード宛の送信権トークンが受信されると、送信権トークン管理部124は、当該送信権トークンを他ノード宛送信権トークン記憶部135に記憶する(S151)。すなわち、当該送信権トークンは、自ノードにおいて一時的に保持される。
【0099】
続いて、送信権トークン管理部124は、当該他ノード(以下、「送信先ノード」という。)に対応するバッファ管理情報記憶部141(図5)の記憶内容を更新する(S152)。具体的には、当該バッファ管理情報記憶部141の送信権トークン到着時刻履歴に、現在時刻が追加される。
【0100】
続いて、送信権トークン管理部124は、受信された送信権トークンの要求トークンリストに、自ノード以外の計算ノードN(他ノード)が発行した要求トークンが含まれているか否かを判定する(S153)。すなわち、送信先ノードへのメッセージの送信に急を要する計算ノードNの存在の有無が判定される。なお、他ノードが発行した要求トークンであるか自ノードが発行した要求トークンであるかは、要求トークン内の発行元ノード(図14)を参照することにより判定可能である。
【0101】
当該送信権トークンの要求トークンリストに他ノードが発行した要求トークンが含まれていない場合(S153でYes)、送信権トークン管理部124は、送信先ノードに対応するバッファ管理情報記憶部141を参照して、送信条件を満たすか否かを判定する(S154)。送信条件とは、送信先ノードに対応する送信バッファ142に記憶されているメッセージの送信が許可されるための条件をいう。
【0102】
本実施の形態において、送信条件は、例えば、条件1〜条件4を含む。条件1及び条件2を積極的条件といい、条件3及び条件4を消極的条件ということとする。積極的条件は、条件1又は条件2のいずれかが満たされれば、満たされる。消極的条件は、条件3及び条件4の双方が満たされた場合に満たされる。そして、積極的条件と消極的条件との双方が満たされた場合に、送信条件が満たされる。但し、積極的条件又は消極的条件のいずれか一方のみが、送信条件を構成してもよい。また、積極的条件は、条件1又は条件2のいずれか一方のみであってもよい。消極的条件は、条件3又は条件4のいずれか一方のみであってもよい。
【0103】
条件1〜条件4の具体的な内容は、以下の通りである。
【0104】
条件1:送信先ノードに対応するバッファ使用量が、ノード別最低バッファリング量を超えること。
【0105】
条件2:先頭メッセージに関して最大許容レイテンシ×安全係数の時間が経過していること。
【0106】
条件3:送信先ノードに対応する送信バッファ142に関して自ノードよりもバッファ逼迫度が高い他ノードが存在しないこと。
【0107】
条件4:送信先ノード宛のメッセージに関する最大許容レイテンシ切迫度が自ノードよりも高い他ノードが存在しないこと。
【0108】
条件1は、所定量(ノード別最低バッファリング量)を超えるメッセージが送信バッファ142に蓄積されていることを条件とするものである。条件1が満たされた場合に、メッセージの送信が許可されるようにすることにより、一回に送信するメッセージ長を増加させることができ、スループットの向上を図ることができる。なお、ノード別最低バッファリング量は、自ノードにおいて、他ノード別に予め設定されている(例えば、補助記憶装置102に記憶されている)、送信バッファ142へのメッセージの蓄積量の最低値である。ノード別最低バッファリング量は、全ての他ノードに関して共通の値であってもよい。
【0109】
条件2は、最大許容レイテンシ内に、メッセージが送信されるようにするための条件である。先頭メッセージとは、送信バッファ142に最も古く蓄積されたメッセージをいう。最大許容レイテンシは、メッセージごとに指定される場合は、メッセージごとの値が使用され、そうでない場合は、バッファ管理情報記憶部141の最大許容レイテンシの値が使用される。なお、安全係数は、メッセージの送信時期に関して、最大許容レイテンシを超えないようにするための係数である。したがって、安全係数は0より大きく1未満の値(例えば、0.6等)となる。
【0110】
条件3は、送信先ノードに対応する送信バッファ142が、自ノードよりも逼迫している他ノードが存在する場合は、当該送信先ノードに対するメッセージの送信を当該他ノードに優先的に実行させて、当該他ノードにおける送信バッファ142の残量の枯渇を防止するための条件である。自ノードのバッファ逼迫度は、例えば、送信先ノードに対応する送信バッファ142の現時点のバッファ使用量を、当該送信バッファ142のサイズによって除することにより算出される。他ノードのバッファ逼迫度は、当該送信権トークンのノード別バッファ逼迫度より取得することができる。なお、全ての送信側ノードの全ての送信バッファ142のサイズが同じである場合、バッファ逼迫度を計算する際の分母の値は共通である。したがって、この場合は、単に、バッファ使用量が比較されてもよい。すなわち、条件3は、「送信先ノードに対応する送信バッファ142に関して自ノードよりもバッファ使用量が大きい他ノードが存在しないこと。」に置き換えられてもよい。
【0111】
条件4は、送信先ノードに対するメッセージに関して、最大許容レイテンシに対する切迫度が自ノードよりも高い他ノードが存在する場合は、当該送信先ノードに対するメッセージの送信を当該他ノードに優先的に実行させて、最大許容レイテンシを超えた遅延の発生を防止するための条件である。自ノードの最大許容レイテンシ切迫度は、例えば、先頭メッセージの入力時刻から現在時刻までの経過時間を、最大許容レイテンシによって除することにより算出される。他ノードの最大許容レイテンシ切迫度は、当該送信権トークンのノード別最大許容レイテンシ切迫度より取得することができる。なお、全ての送信側ノードの全ての送信バッファ142に関して最大許容レイテンシが同じである場合、最大許容レイテンシ切迫度を計算する際の分母の値は共通である。したがって、この場合は、単に、経過時間が比較されてもよい。すなわち、条件4は、「送信先ノード宛のメッセージに関する経過時間が自ノードよりも長い他ノードが存在しないこと。」に置き換えられてもよい。
【0112】
続いて、送信権トークン管理部124は、送信先メッセージに対応する送信バッファ142に記憶されているメッセージに関して、送信先ノードへの送信を、送受信部123に要求する(S155)。ここで、送信されるメッセージ長は、当該送信バッファ142のバッファ使用量と当該送信権トークンの最大許容転送長とのうちの小さい方とされる。すなわち、送信されるメッセージ長は、送信先ノードが許容している最大の転送長の範囲内に制限される。送信先ノードに対する通信の混雑を回避するためである。したがって、当該送信バッファ142において、先頭のメッセージから、当該メッセージ長の範囲内に含まれるメッセージが、送受信部123への要求に指定される。送受信部123は、指定されたメッセージを、送信先ノードに送信する。メッセージの送信に応じ、送受信部123は、統計情報記憶部131における送信スループット履歴を更新する。具体的には、送信スループット履歴の最後に記録されている時刻と現在時刻との差分によって、今回送信されたメッセージのメッセージ長を除することにより、前回のメッセージ送信時から今回のメッセージ送信時における送信スループットが算出される。算出された送信スループットと、現在時刻との組み合わせは、送信スループット履歴に追加される。
【0113】
続いて、送信権トークン管理部124は、送信先ノードに対応するバッファ管理情報記憶部141の記憶内容を更新する(S156)。具体的には、当該バッファ管理情報記憶部141のバッファ使用量から、ステップS155において送信されたメッセージ長が減算される。また、送信メッセージ長履歴に、当該メッセージ長と現在時刻との組み合わせが追加される。
【0114】
続いて、送信権トークン管理部124は、受信された送信権トークンの要求トークンリストに、自ノードが発行した要求トークンが含まれているか否かを判定する(S157)。当該要求トークンが含まれている場合(S157でYes)、送信権トークン管理部124は、ステップS158及びS159を実行する。
【0115】
ステップS158において、送信権トークン管理部124は、当該送信権トークンの要求トークンリストより、自ノードが発行した要求トークンを削除する。ステップS155においてメッセージを送信することができたため、当該要求トークンは不要となったからである。続いて、送信権トークン管理部124は、送信先ノードに対応するバッファ管理情報記憶部141の記憶内容を更新する(S159)。具体的には、当該バッファ管理情報記憶部141のレイテンシ履歴に、当該要求トークンの送信時刻から、当該送信権トークンが受信されるまでの経過時間が追加される。当該要求トークンの送信時刻は、当該バッファ管理情報記憶部141の要求トークン送信予定時刻履歴において最後に記録されている時刻である。
【0116】
ステップS159、又はステップS153、S154、若しくはS157でNoの場合に続いて、送信権トークン管理部124は、受信された送信権トークンの内容(図10)を更新する(S160)。具体的には、当該送信権トークンのノード別バッファ逼迫度、ノード別他ノード宛データ量、及びノード別最大許容レイテンシ切迫度において、自ノードのバッファ逼迫度、他ノード宛データ量、及び最大許容レイテンシ切迫度が更新される。バッファ逼迫度及び最大許容レイテンシ切迫度の算出方法は上記した通りである。他ノード宛データ量は、自ノードにおける全ての送信バッファ142のバッファ使用量の合計値である。また、メッセージの送信(S155)が実行された場合は、当該送信権トークンの総転送量に、送信されたメッセージ長が加算される。
【0117】
続いて、送信権トークン管理部124は、当該送信権トークンの転送を送受信部123に要求する(S161)。この際、当該送信権トークンは、他ノード宛送信権トークン記憶部135より削除される。当該要求に応じ、送受信部123は、通信情報記憶部132の送信権トークン送信先に設定されているノード識別子に係る計算ノードN宛に、当該要求に係る送信権トークンを送信する。
【0118】
なお、当該送信権トークンの要求トークンリストに、他ノードの要求トークンが含まれている場合、ステップS161において、送信権トークン管理部124は、当該要求トークンの発行元ノードのノード識別子を指定して、当該送信権トークンの送信を送受信部123に要求してもよい。この場合、送受信部123は、指定されたノード識別子に係る計算ノードN宛に、当該送信権トークンを送信する。すなわち、当該送信権トークンは、仮想的なリングトポロジを巡回するのではなく、当該発行元ノードに対して直接的に転送される。その結果、当該送信権トークンが当該発行元ノードに到達する時間を早めることができる。
【0119】
続いて、他ノードが発行元ノードである要求トークンが受信された際に実行される処理手順について説明する。図16は、要求トークンが受信された際に実行される処理手順の一例を説明するためのフローチャートである。
【0120】
他ノードが発行元である要求トークンが受信されると、要求トークン管理部125は、自ノードにおいて当該要求トークンに対応する送信権トークンが保持されているか否かを判定する(S171)。すなわち、当該要求トークンの対象ノード(図14)と、対象ノードが一致する送信権トークンが、他ノード宛送信権トークン記憶部135に記憶されているか否かが判定される。
【0121】
該当する送信権トークンが他ノード宛送信権トークン記憶部135に記憶されている場合(S171でYes)、要求トークン管理部125は、当該送信権トークンの要求トークンリストに、当該要求トークンを追加する(記録する)(S172)。この場合、当該要求トークンは、当該送信権トークンに付随して、図15のステップS161において転送される。なお、当該要求トークンリスト内に一以上の他の要求トークンが既に含まれている場合、要求トークン管理部125は、仮想的なリングトポロジにおいて自ノードを先頭とした場合の順序関係に基づいてソートされた順番で、当該要求トークンリストをソートする。
【0122】
一方、該当する送信権トークンが他ノード宛送信権トークン記憶部135に記憶されていない場合(S171でNo)、要求トークン管理部125は、当該要求トークンの転送を送受信部123に要求する(S173)。送受信部123は、当該要求に応じ、通信情報記憶部132の要求トークン送信先に設定されているノード識別子に係る計算ノードN宛に、当該要求トークンを送信する。
【0123】
このように、或るノードにおいて、要求トークンがその対象ノード宛の送信権トークンに遭遇すると、当該要求トークンは、当該送信権トークンに格納される。
【0124】
続いて、自ノード宛の送信権トークンが受信された際に実行される処理手順について説明する。図17は、自ノード宛の送信権トークンの受信に応じて実行される処理手順の一例を説明するためのフローチャートである。専ら送信側ノードである計算ノードNは、図17の処理を実行しなくてもよい。
【0125】
自ノード宛の送信権トークンが受信されると、送信権トークン管理部124は、トークン管理情報記憶部133(図9)の記憶内容を更新する(S181)。具体的には、当該送信権トークンのIDと、現在時刻(すなわち、当該送信権トークンの受信時刻)との組み合わせが、受信時刻履歴に追加される。
【0126】
続いて、送信権トークン管理部124は、当該送信権トークンが、仮想的なリングトポロジ上において今回の一周に要した時間(周回所要時間)を算出する(S182)。周回所要時間は、送信権トークン管理情報記憶部133の受信時刻履歴において当該送信権トークンのIDに関する最後の受信時刻から、送信時刻履歴において当該送信権トークンのIDに関する最後の送信時刻を減ずることにより求めることができる。なお、算出された周回所要時間は、当該送信権トークンの周回所要時間履歴に追加される。
【0127】
続いて、送信権トークン管理部124は、今回の周回所要時間が、予め設定されている上限値を超えるか否かを判定する(S183)。今回の周回所要時間が、上限値を超える場合(S183でYes)、送信権トークン管理部124は、自ノード宛の送信権トークンを新たに生成する(S184)。新たに生成された送信権トークンに含まれる各項目の初期値は、ステップS112において説明した通りである。但し、新たに生成された送信権トークンのIDは、受信された送信権トークンのIDとは異なる。続いて、送信権トークン管理部124は、トークン管理情報記憶部133の発行数に1を加算する(S185)。新たな送信権トークンの生成により、自ノード宛の送信権トークンの発行数が増加したからである。
【0128】
なお、周回所要時間が上限値を超える場合に、自ノード宛の送信権トークンが増やされるのは、自ノード宛のメッセージの送信に関するレイテンシ(遅延)を減少させるためである。すなわち、自ノード宛の送信権トークンの周回所要時間が上限値を超えるということは、自ノード宛にメッセージを送信する他ノードが多い状態であることを示唆する。自ノード宛にメッセージを送信する他ノードが多ければ多いほど、自ノード宛の送信権トークンが他ノードによって保持される機会が多くなり、その結果、当該送信権トークンの巡回速度が低下するからである。このような状態では、自ノード宛にメッセージを送信したい他ノードによる、メッセージ送信までの待機時間は長くなってしまう。すなわち、メッセージの送信に関してレイテンシが大きくなる。そこで、自ノード宛の送信権トークンの数を増加させて、当該待機時間を削減しようというわけである。例えば、自ノード宛の送信権トークンが、一つから二つに増加した場合であって、二つの送信権トークンの間隔が、仮想的なリングトポロジの半分の距離である場合、理論的には、自ノード宛のメッセージ送信までの待機時間は、半分になることが期待できる。
【0129】
一方、今回の周回所要時間が、上限値以下である場合(S183でNo)、送信権トークン管理部124は、今回の周回所要時間が、予め設定されている下限値未満であるか否かを判定する(S186)。今回の周回所要時間が、下限値未満である場合(S186でYes)、送信権トークン管理部124は、トークン管理情報記憶部133の発行数の値は1を超えるか否かを判定する(S187)。すなわち、自ノード宛の送信権トークンが2以上発行されているか否かが判定される。当該発行数が1を超える場合(S187でYes)、送信権トークン管理部124は、当該発行数から1を減算する(S188)。続いて、送信権トークン管理部124は、受信された送信権トークンを破棄し(S189)、図17の処理を終了させる。その結果、当該送信権トークンの転送は停止される。
【0130】
すなわち、周回所要時間が下限値未満であるということは、自ノード宛に対してメッセージを送信したい他ノードの数に対して、自ノード宛の送信権トークンの数が過剰であることを示す。従って、自ノード宛の送信権トークンを削減して、自ノード宛の送信権トークンの数を、適正値に戻そうというわけである。
【0131】
なお、上記上限値及び上記下限値は、例えば、一つの計算ノードNあたりの最大基準値及び最小基準値が予め設定され、当該最大基準値及び当該最小基準値に、情報処理システム1の計算ノードNの総数を乗ずることにより算出されてもよい。この場合、一つの計算ノードNあたりの最大基準値は、例えば、最大許容レイテンシ×安全係数によって算出されてもよい。一つの計算ノードNあたりの最小基準値は、最大基準値×係数によって算出されてもよい。また、上限値及び下限値は、相互に異なる方法に基づいて算出されてもよい。
【0132】
ステップS185、又はS186でNoの場合に続いて、送信権トークン管理部124は、自ノード宛の送信権トークン一つあたりの最大許容転送長を算出する(S190)。具体的には、発行数×最大許容転送長の値が常に一定となるように、最大許容転送長が算出される。すなわち、以下の演算によって、自ノード宛の送信権トークン一つあたりの最大許容転送長が算出される。
【0133】
自ノード宛の送信権トークン一つあたりの最大許容転送長=所定値÷発行数
所定値は、ステップS112において、自ノード宛の一つ目の送信権トークンが生成されるときに、当該送信権トークンの最大許容転送長に設定される値である。算出された値は、今回受信された自ノード宛の送信権トークンの最大許容転送長(図10)に設定される。また、ステップS184において新たな送信権トークンが生成された場合、当該送信権トークンの最大許容転送長にも設定される。
【0134】
なお、S186でNoの場合は、今回の送信権トークンの受信に応じて自ノード宛の送信権トークンの発行数の増減は行われなかった場合である。この場合にも最大許容転送長が算出されるのは、今回の送信権トークンの受信前において、自ノード宛の別の送信権トークンが受信された際に、発行数の増減が行われている可能性が有るからである。すなわち、自ノード宛の複数の送信権トークンの到着時期には時間的なずれがあるため、自ノード宛の全ての送信権トークンの最大許容転送長を一度に更新するのは困難である。そこで、自ノード宛の送信権トークンが受信されるたびに、その時の発行数に基づいて、当該送信権トークンに対して最大許容転送長が設定されるのである。
【0135】
なお、ステップS189において、受信された送信権トークンが破棄された場合、最大許容転送長の設定対象である送信権トークンは無い。したがって、最大許容転送長の算出の必要はない。当該送信権トークンの破棄による発行数の減少に基づく最大許容転送長の変更は、以後に受信される自ノード宛の送信権トークンに関してステップS190が実行された際に行われる。
【0136】
このように、自ノード宛の送信権トークンの増減に応じて各送信権トークンの最大許容転送長が調整されることにより、自ノードに対する通信の混雑や、自ノードに対する通信のレイテンシの増加を回避することができる。すなわち、仮に、送信権トークンが増加した場合に、各送信権トークンの最大許容転送長が変更されないままであったとしたら、自ノードに送信されるメッセージ量が自ノードの許容範囲を超えて増加する可能性が考えられる。また、仮に、送信権トークンが減少した場合に、送信権トークンの最大許容転送長が変更されないままであったとしたら、他ノードは、自ノードの許容範囲に比較して少量のメッセージしか送信できず、その結果、レイテンシが増加する可能性が考えられる。一方、本実施の形態のように、自ノード宛の送信権トークンの増減に応じて各送信権トークンの最大許容転送長が調節されれば、上記のような不都合の発生を回避できる可能性を高めることができる。
【0137】
続いて、送信権トークン管理部124は、受信された送信権トークンに記録されている、今回の一周における総転送量(図10)が、上限値を超えるか又は下限値未満であるか否かを判定する(S191)。当該上限値及び当該下限値は、周回所要時間に関する上限値及び下限値とは異なる閾値である。
【0138】
受信された送信権トークンに記録されている総転送量が上限値を超える場合、又は下限値未満である場合(S191でYes)、送信権トークン管理部124は、当該送信権トークンの最大許容転送長を調整する(S192)。具体的には、総転送量が上限値を超える場合、最大許容転送長は短くされる。一方、総転送量が下限値未満である場合、最大許容転送長は長くされる。これも、自ノードに対する通信の混雑や、自ノードに対する通信のレイテンシの増加を回避するための措置である。
【0139】
なお、総転送量に関する上限値及び下限値は、例えば、予め設定されていればよい。または、1つの計算ノードNあたりの通信スループットの最大基準値及び最小基準値が予め設定され、当該最大基準値又は当該最小基準値×周回所要時間÷自ノード宛送信トークンの発行数によって当該上限値及び当該下限値が算出されてもよい。
【0140】
続いて、送信権トークン管理部124は、受信された送信権トークンの総転送量を「0」に初期化する(S193)。当該総転送量は、一周分の総転送量であるからである。続いて、送信権トークン管理部124は、受信した送信権トークンを、自ノード宛送信権トークン記憶部134に記憶する(S194)。また、ステップS184において、新たな送信権トークンが生成されている場合、当該送信権トークンも、自ノード宛送信権トークン記憶部134に記憶される。
【0141】
ステップS194において自ノード宛送信権トークン記憶部134に記憶された送信権トークンが、自ノード宛送信権トークン記憶部134のキュー構造において先頭である場合(S195でYes)、送信権トークン管理部124は、トークン管理情報記憶部133(図9)のトークン送信予定時刻の値を設定する(S196)。トークン送信予定時刻には、例えば、トークン管理情報記憶部133の送信時刻履歴における最後の送信時刻に対して所定時間が加算された時刻が設定される。当該所定時間は、予め設定されてもよいし、例えば、1つの計算ノードNあたりの所要時間の設定値×計算ノードN数÷自ノード宛の送信権トークンの発行数によって算出されてもよい。又は、当該所定時間は、周回所要時間÷自ノード宛の送信権トークンの発行数によって算出されてもよい。
【0142】
続いて、送信権トークン管理部124は、トークン送信予定時刻を通知するためのタイマ機能を起動する(S197)。
【0143】
続いて、図17のステップS197や図8のステップS116等において起動されたタイマ機能によって、トークン送信予定時刻の到来が送信権トークン管理部124に通知された際に実行される処理手順について説明する。
【0144】
図18は、トークン送信予定時刻の到来に応じて実行される処理手順の一例を説明するためのフローチャートである。専ら送信側ノードである計算ノードは、図18の処理を実行しなくてもよい。
【0145】
タイマ機能によるトークン送信予定時刻の到来の通知に応じ、送信権トークン管理部124は、自ノード宛送信権トークン記憶部134の先頭に記憶されている送信権トークンを一つ取得する(S201)。なお、取得された送信権トークンは、自ノード宛送信権トークン記憶部134より削除される。
【0146】
続いて、送信権トークン管理部124は、当該送信権トークンの送信を送受信部123に要求する(S202)。送受信部123は、通信情報記憶部132の送信権トークン送信先に設定されているノード識別子に係る計算ノードN宛に、当該要求に係る送信権トークンを送信する。
【0147】
なお、当該送信権トークンの要求トークンリストに、他ノードの要求トークンが含まれている場合、ステップS202において、送信権トークン管理部124は、当該要求トークンの発行元ノードのノード識別子を指定して、当該送信権トークンの送信を送受信部123に要求してもよい。この場合、送受信部123は、指定されたノード識別子に係る計算ノードN宛に、当該送信権トークンを送信する。すなわち、当該送信権トークンは、仮想的なリングトポロジを巡回するのではなく、当該発行元ノードに対して直接的に転送される。その結果、当該送信権トークンが当該発行元ノードに到達する時間を早めることができる。
【0148】
続いて、送信権トークン管理部124は、トークン管理情報記憶部133の送信時刻履歴に、送信された送信権トークンのトークン識別子と現在時刻(すなわち、送信時刻)との組み合わせを追加する(S203)。続いて、送信権トークン管理部124は、自ノード宛送信権トークン記憶部134に、送信待ちの送信権トークンが記憶されているか否かを確認する(S204)。自ノード宛送信権トークン記憶部134に送信権トークンが記憶されている場合(S204でYes)、送信権トークン管理部124は、トークン管理情報記憶部133(図9)のトークン送信予定時刻の値を設定する(S205)。設定されるトークン送信予定時刻の決定方法は、図17のステップS196において説明した通りでよい。続いて、送信権トークン管理部124は、トークン送信予定時刻を通知するためのタイマ機能を起動する(S206)。
【0149】
続いて、他ノードから送信された自ノード宛のメッセージが受信された際に実行される処理手順について説明する。
【0150】
図19は、他ノードからのメッセージの送信に応じて実行される処理手順の一例を説明するためのフローチャートである。ここでいう、他ノードからのメッセージの送信とは、例えば、図15のステップS155において実行される処理である。専ら送信側ノードである計算ノードNは、図19の処理を実行しなくてもよい。
【0151】
ステップS211において、送受信部123によって、他ノードから送信された自ノード宛のメッセージの受信が検知される。メッセージの受信の検知は、例えば、OS(Operating System)からのシグナル等を契機にした、送受信部123の受信関数の呼び出しによって行われる。
【0152】
続いて、送受信部123は、受信されたメッセージを情報処理部11に引き渡す(S212)。具体的には、送受信部123は、受信されたメッセージを、図11のステップS122において登録された受信用バッファに記録し、ステップS121において登録された受信用コールバック関数を呼び出す。受信用コールバック関数の呼び出しに応じ、情報処理部11は、メッセージの受信を検知することができ、受信用バッファよりメッセージを取り出すことができる。
【0153】
続いて、送受信部123は、統計情報記憶部131における受信スループット履歴を更新する(S213)。具体的には、受信スループット履歴の最後に記録されている時刻と現在時刻との差分によって、今回受信されたメッセージのメッセージ長を除することにより、前回のメッセージ受信時から今回のメッセージ受信時における受信スループットが算出される。算出された受信スループットと、現在時刻との組み合わせが、受信スループット履歴に追加される。
【0154】
上述したように、本実施の形態によれば、送信権トークンが受信されるまでは、メッセージはバッファリングされる。その結果、一度のメッセージの送信時におけるメッセージの送信量を増加させることができ、スループットを向上させることができる。また、メッセージを送信可能な計算ノードNは、送信権トークンを保持している計算ノードNに制限されることで、一部の計算ノードNに対するメッセージの集中を回避することができる。その結果、各計算ノードNの通信時間が、総通信量におおよそ比例するようになり、各計算ノードNの総通信量が同じであれば、通信時間のばらつきを小さくすることができる。したがって、情報処理システム1全体での通信時間を短縮することができる。また、各計算ノードNは、他の計算ノードNの状況を考慮して、自ノードからの送信の是非を判断するため、情報処理システム1でのネットワーク利用率を向上させることができ、情報処理システム1でのスループットを向上させることができる。
【0155】
なお、本実施の形態は、特に、分散並列計算機による通信であって、通信する相手が処理結果に応じて定まり、予め通信相手をスケジューリングできず、結果的に一様乱雑な通信が発生し、レイテンシ要件が緩いシステムに好適である。また、送信バッファ142のサイズが、処理対象とされるメッセージの総量に比較して小さい場合に好適である。
【0156】
また、本実施の形態では、送信権トークン及び要求トークンが、仮想的なリングトポロジを巡回する例を説明した。しかし、送信権トークン及び要求トークンの流通経路として、他のトポロジが採用されてもよい。例えば、仮想的なバイナリツリー状のトポロジが当該流通経路とされてもよい。例えば、各計算ノードNは、他ノードにメッセージを送信する全ての計算ノードNが構成するバイナリツリーにおける、自ノードと、二つの子ノードとの関係を示す情報を有する。各送信権トークンは、バイナリツリーのルートノードからリーフノード方向へ転送され、リーフノードに到達すると、ルートノード方向へ返送される。要求トークンは、送信権トークンに対して逆方向に転送されればよい。すなわち、リーフノードからルートノード方向に転送されればよい。
【0157】
なお、本実施の形態において、送信側ノードは、第一の情報処理装置の一例である。受信側ノードは、第二の情報処理装置の一例である。但し、送信側ノードと受信側ノードとの双方を兼ねる計算ノードNがあってもよい。また、送信バッファ142は、データ記憶部の一例である。送信権トークンは、第一のトークンの一例である。要求トークンは、第二のトークンの一例である。送受信部123は、送信部の一例である。
【0158】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【0159】
以上の説明に関し、更に以下の項を開示する。
(付記1)
データを送信する第一の情報処理装置群とデータを受信する第二の情報処理装置群とを含む情報処理システムにおける通信方法であって、
前記第一の情報処理装置が、
いずれかの前記第二の情報処理装置に送信するデータを、当該第二の情報処理装置の識別情報に関連付けて記憶し、
前記各第二の情報処理装置によって生成され、前記第一の情報処理装置群及び前記第二の情報処理装置群の間において転送される、前記第二の情報処理装置への送信権を示す第一のトークンの受信に応じ、当該第一のトークンの生成元の前記第二の情報処理装置の前記識別情報に関連付けて前記データ記憶部が記憶するデータを、該第二の情報処理装置に送信する処理を実行する通信方法。
(付記2)
前記送信する処理は、受信された前記第一のトークンの生成元の前記第二の情報処理装置の前記識別情報に関連付けて前記データ記憶部が記憶するデータのデータ量が所定量を超える場合、又は前記データが前記データ記憶部に記憶されてから所定時間が経過した場合に、前記データを前記第二の情報処理装置に送信する付記1記載の通信方法。
(付記3)
前記第一の情報処理装置が、
前記第一のトークンの受信に応じ、当該第一のトークンの生成元の前記第二の情報処理装置の前記識別情報に関連付けて前記データ記憶部が記憶するデータのデータ量に関する情報又は前記データが前記データ記憶部に記憶されてからの経過時間に関する情報を前記第一のトークンに記録し、
受信された前記第一のトークンの生成元の前記第二の情報処理装置の前記識別情報に関連付けて前記データ記憶部が記憶するデータのデータ量に関する情報又は前記データが前記データ記憶部に記憶されてからの経過時間に関する情報を、前記第一のトークンに記録されている、他の前記第一の情報処理装置に関する前記データ量に関する又は前記経過時間に関する情報と比較して、当該データ記憶部が記憶するデータの送信の是非を判定する処理を実行する付記1又は2記載の通信方法。
(付記4)
前記送信する処理は、受信された前記第一のトークンの生成元の前記第二の情報処理装置の前記識別情報に関連付けて前記データ記憶部が記憶するデータのうち、当該第一のトークンに記録されている、当該第一のトークンを受信した前記第一の情報処理装置に送信を許容するデータ量のデータを送信する付記1乃至3いずれか一項記載の通信方法。
(付記5)
前記第二の情報処理装置が、
当該第二の情報処理装置が生成した前記第一のトークンに関して、前記第一の情報処理装置群及び前記第二の情報処理装置群の間における転送の所要時間が第一の所定値を超える場合は、前記第一のトークンを新たに生成し、当該第一のトークンを前記第一の情報処理装置群の間で転送させる処理を実行する付記1乃至4いずれか一項記載の通信方法。
(付記6)
前記第二の情報処理装置が、
当該第二の情報処理装置が生成した前記第一のトークンに関して、前記第一の情報処理装置群及び前記第二の情報処理装置群の間における転送の所要時間が第二の所定値未満である場合は、当該第一のトークンの転送を終了させる処理を実行する付記5記載の通信方法。
(付記7)
前記第二の情報処理装置が、
当該第二の情報処理装置が生成元である前記第一のトークンの数に応じて、当該第一のトークンを受信した前記第一の情報処理装置に送信を許容するデータ量を変更し、変更後の値を当該第一のトークンに記録する処理を実行する付記5又は6記載の通信方法。
(付記8)
前記第二の情報処理装置が、
当該第二の情報処理装置が生成元である前記第一のトークンに基づく当該第二の情報処理装置に対する前記データの送信量に応じて、当該第一のトークンを受信した前記第一の情報処理装置に送信を許容するデータ量を変更し、変更後の値を当該第一のトークンに記録する処理を実行する付記1乃至7いずれか一項記載の通信方法。
(付記9)
前記第一の情報処理装置が、
前記データ記憶部に記憶された前記データのデータ量又は前記データが前記データ記憶部に記憶されてからの経過時間に応じ、当該データ記憶部に関連付けられている前記識別情報が指定された第二のトークンを生成し、当該第二のトークンを前記第一の情報処理装置群及び前記第二の情報処理装置群の間で転送させ、
他の前記第一の情報処理装置によって生成された前記第二のトークンの受信に応じ、当該第一の情報処理装置が当該第二のトークンに指定されている前記識別情報に係る前記第二の情報処理装置が生成した前記第一のトークンを有している場合、当該第二のトークンを当該第一のトークンに記録する処理を実行し、
前記送信する処理は、受信された前記第一のトークンに他の前記第一の情報処理装置によって生成された前記第二のトークンが記録されている場合は、当該第一のトークンに基づくデータの送信を実行しない付記1乃至8いずれか一項記載の通信方法。
(付記10)
データを送信する第一の情報処理装置群とデータを受信する第二の情報処理装置群とを含む情報処理システムであって、
前記第一の情報処理装置は、
いずれかの前記第二の情報処理装置に送信するデータを、当該第二の情報処理装置の識別情報に関連付けて記憶するデータ記憶部と、
前記各第二の情報処理装置によって生成され、前記第一の情報処理装置群及び前記第二の情報処理装置群の間において転送される、前記第二の情報処理装置への送信権を示す第一のトークンの受信に応じ、当該第一のトークンの生成元の前記第二の情報処理装置の前記識別情報に関連付けて前記データ記憶部が記憶するデータを、該第二の情報処理装置に送信する送信部とを有する情報処理システム。
(付記11)
前記送信部は、受信された前記第一のトークンの生成元の前記第二の情報処理装置の前記識別情報に関連付けて前記データ記憶部が記憶するデータのデータ量が所定量を超える場合、又は前記データが前記データ記憶部に記憶されてから所定時間が経過した場合に、前記データを前記第二の情報処理装置に送信する付記10記載の情報処理システム。
(付記12)
前記第一の情報処理装置は、
前記第一のトークンの受信に応じ、当該第一のトークンの生成元の前記第二の情報処理装置の前記識別情報に関連付けて前記データ記憶部が記憶するデータのデータ量に関する情報又は前記データが前記データ記憶部に記憶されてからの経過時間に関する情報を前記第一のトークンに記録する記録部を有し、
前記記録部は、受信された前記第一のトークンの生成元の前記第二の情報処理装置の前記識別情報に関連付けて前記データ記憶部が記憶するデータのデータ量に関する情報又は前記データが前記データ記憶部に記憶されてからの経過時間に関する情報を、前記第一のトークンに記録されている、他の前記第一の情報処理装置に関する前記データ量に関する又は前記経過時間に関する情報と比較して、当該データ記憶部が記憶するデータの送信の是非を判定する付記10又は11記載の情報処理システム。
(付記13)
前記送信部は、受信された前記第一のトークンの生成元の前記第二の情報処理装置の前記識別情報に関連付けて前記データ記憶部が記憶するデータのうち、当該第一のトークンに記録されている、当該第一のトークンを受信した前記第一の情報処理装置に送信を許容するデータ量のデータを送信する付記10乃至12いずれか一項記載の情報処理システム。
(付記14)
前記第二の情報処理装置は、
当該第二の情報処理装置が生成した前記第一のトークンが前記第一の情報処理装置群及び前記第二の情報処理装置群の間における転送の所要時間が第一の所定値を超える場合は、前記第一のトークンを新たに生成し、当該第一のトークンを前記第一の情報処理装置群の間で転送させる生成部を有する付記10乃至13いずれか一項記載の情報処理システム。
(付記15)
前記生成部は、前記所要時間が第二の所定値未満である場合は、当該第一のトークンの転送を終了させる付記14記載の情報処理システム。
(付記16)
前記生成部は、当該第二の情報処理装置が生成元である前記第一のトークンの数に応じて、当該第一のトークンを受信した前記第一の情報処理装置に送信を許容するデータ量を変更し、変更後の値を当該第一のトークンに記録する付記14又は15記載の情報処理システム。
(付記17)
前記生成部は、当該第二の情報処理装置が生成元である前記第一のトークンに基づく当該第二の情報処理装置に対する前記データの送信量に応じて、当該第一のトークンを受信した前記第一の情報処理装置に送信を許容するデータ量を変更し、変更後の値を当該第一のトークンに記録する付記10乃至16いずれか一項記載の情報処理システム。
(付記18)
前記各第一の情報処理装置は、
前記データ記憶部に記憶された前記データのデータ量又は前記データが前記データ記憶部に記憶されてからの経過時間に応じ、当該データ記憶部に関連付けられている前記識別情報が指定された第二のトークンを生成し、当該第二のトークンを前記第一の情報処理装置群及び前記第二の情報処理装置群の間で転送させる第二の生成部を有し、
前記第二の生成部は、他の前記第一の情報処理装置によって生成された前記第二のトークンの受信に応じ、当該第一の情報処理装置が当該第二のトークンに指定されている前記識別情報に係る前記第二の情報処理装置が生成した前記第一のトークンを有している場合、当該第二のトークンを当該第一のトークンに記録し、
前記送信部は、受信された前記第一のトークンに他の前記第一の情報処理装置によって生成された前記第二のトークンが記録されている場合は、当該第一のトークンに基づくデータの送信を実行しない付記10乃至17いずれか一項記載の情報処理システム。
【符号の説明】
【0160】
1 情報処理システム
N 計算ノード
11 情報処理部
12 通信制御部
100 ドライブ装置
101 記録媒体
102 補助記憶装置
103 メモリ装置
104 CPU
105 インタフェース装置
121 API
122 バッファ管理部
123 送受信部
124 送信権トークン管理部
125 要求トークン管理部
131 統計情報記憶部
132 通信情報記憶部
133 トークン管理情報記憶部
134 自ノード宛送信権トークン記憶部
135 他ノード宛送信権トークン記憶部
141 バッファ管理情報記憶部
142 送信バッファ
B バス

【特許請求の範囲】
【請求項1】
データを送信する第一の情報処理装置群とデータを受信する第二の情報処理装置群とを含む情報処理システムにおける通信方法であって、
前記第一の情報処理装置が、
いずれかの前記第二の情報処理装置に送信するデータを、当該第二の情報処理装置の識別情報に関連付けて記憶し、
前記各第二の情報処理装置によって生成され、前記第一の情報処理装置群及び前記第二の情報処理装置群の間において転送される、前記第二の情報処理装置への送信権を示す第一のトークンの受信に応じ、当該第一のトークンの生成元の前記第二の情報処理装置の前記識別情報に関連付けて前記データ記憶部が記憶するデータを、該第二の情報処理装置に送信する処理を実行する通信方法。
【請求項2】
前記送信する処理は、受信された前記第一のトークンの生成元の前記第二の情報処理装置の前記識別情報に関連付けて前記データ記憶部が記憶するデータのデータ量が所定量を超える場合、又は前記データが前記データ記憶部に記憶されてから所定時間が経過した場合に、前記データを前記第二の情報処理装置に送信する請求項1記載の通信方法。
【請求項3】
前記第一の情報処理装置が、
前記第一のトークンの受信に応じ、当該第一のトークンの生成元の前記第二の情報処理装置の前記識別情報に関連付けて前記データ記憶部が記憶するデータのデータ量に関する情報又は前記データが前記データ記憶部に記憶されてからの経過時間に関する情報を前記第一のトークンに記録し、
受信された前記第一のトークンの生成元の前記第二の情報処理装置の前記識別情報に関連付けて前記データ記憶部が記憶するデータのデータ量に関する情報又は前記データが前記データ記憶部に記憶されてからの経過時間に関する情報を、前記第一のトークンに記録されている、他の前記第一の情報処理装置に関する前記データ量に関する又は前記経過時間に関する情報と比較して、当該データ記憶部が記憶するデータの送信の是非を判定する処理を実行する請求項1又は2記載の通信方法。
【請求項4】
前記送信する処理は、受信された前記第一のトークンの生成元の前記第二の情報処理装置の前記識別情報に関連付けて前記データ記憶部が記憶するデータのうち、該第一のトークンに記録されている、当該第一のトークンを受信した前記第一の情報処理装置に送信を許容するデータ量のデータを送信する請求項1乃至3いずれか一項記載の通信方法。
【請求項5】
前記第二の情報処理装置が、
当該第二の情報処理装置が生成した前記第一のトークンが前記第一の情報処理装置群及び前記第二の情報処理装置群の間における転送の所要時間が第一の所定値を超える場合は、前記第一のトークンを新たに生成し、当該第一のトークンを前記第一の情報処理装置群の間で転送させる処理を実行する請求項1乃至4いずれか一項記載の通信方法。
【請求項6】
前記第二の情報処理装置が、
前記所要時間が第二の所定値未満である場合は、当該第一のトークンの転送を終了させる処理を実行する請求項5記載の通信方法。
【請求項7】
前記第二の情報処理装置が、
当該第二の情報処理装置が生成元である前記第一のトークンの数に応じて、当該第一のトークンを受信した前記第一の情報処理装置に送信を許容するデータ量を変更し、変更後の値を当該第一のトークンに記録する処理を実行する請求項5又は6記載の通信方法。
【請求項8】
前記第二の情報処理装置が、
当該第二の情報処理装置が生成元である前記第一のトークンに基づく当該第二の情報処理装置に対する前記データの送信量に応じて、当該第一のトークンを受信した前記第一の情報処理装置に送信を許容するデータ量を変更し、変更後の値を当該第一のトークンに記録する処理を実行する請求項1乃至7いずれか一項記載の通信方法。
【請求項9】
前記第一の情報処理装置が、
前記データ記憶部に記憶された前記データのデータ量又は前記データが前記データ記憶部に記憶されてからの経過時間に応じ、当該データ記憶部に関連付けられている前記識別情報が指定された第二のトークンを生成し、当該第二のトークンを前記第一の情報処理装置群及び前記第二の情報処理装置群の間で転送させ、
他の前記第一の情報処理装置によって生成された前記第二のトークンの受信に応じ、当該第一の情報処理装置が当該第二のトークンに指定されている前記識別情報に係る前記第二の情報処理装置が生成した前記第一のトークンを有している場合、当該第二のトークンを当該第一のトークンに記録する処理を実行し、
前記送信する処理は、受信された前記第一のトークンに他の前記第一の情報処理装置によって生成された前記第二のトークンが記録されている場合は、当該第一のトークンに基づくデータの送信を実行しない請求項1乃至8いずれか一項記載の通信方法。
【請求項10】
データを送信する第一の情報処理装置群とデータを受信する第二の情報処理装置群とを含む情報処理システムであって、
前記第一の情報処理装置は、
いずれかの前記第二の情報処理装置に送信するデータを、当該第二の情報処理装置の識別情報に関連付けて記憶するデータ記憶部と、
前記各第二の情報処理装置によって生成され、前記第一の情報処理装置群及び前記第二の情報処理装置群の間において転送される、前記第二の情報処理装置への送信権を示す第一のトークンの受信に応じ、当該第一のトークンの生成元の前記第二の情報処理装置の前記識別情報に関連付けて前記データ記憶部が記憶するデータを、該第二の情報処理装置に送信する送信部とを有する情報処理システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate


【公開番号】特開2013−42245(P2013−42245A)
【公開日】平成25年2月28日(2013.2.28)
【国際特許分類】
【出願番号】特願2011−176416(P2011−176416)
【出願日】平成23年8月11日(2011.8.11)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】