以下に、図面を参照して、本発明にかかる情報処理装置、通信パケット滞留通知方法、および通信パケット滞留通知プログラムの実施の形態を詳細に説明する。
(実施の形態にかかる通信パケット滞留通知方法の一実施例)
図1は、実施の形態にかかる通信パケット滞留通知方法の一実施例を示す説明図である。図1において、情報処理装置100は、適切なタイミングでパケットの滞留を検出するコンピュータである。以下の説明では、情報処理装置100が複数ある場合に、それぞれの情報処理装置100を区別する場合には「情報処理装置100#i」と表記する場合がある。iは自然数である。
ここで、複数のノードをTorus網、Mesh網、Ring網などのネットワークトポロジで接続した計算機システムにおいて、複数のノードを用いてジョブを実行した際にジョブの処理が遅延してしまうことがある。例えば、ジョブを実行するノード間の通信経路上の中継ノードでパケットの輻輳などが発生して、中継ノードでパケットが滞留してしまうことがある。このとき、ジョブを実行するノード間のパケットの送受信にかかる通信時間が増大して、ジョブの処理が遅延してしまう。
しかしながら、ジョブの実行が終了した後では、ジョブの処理が遅延した状況を再現することができず、ジョブを実行するノード間の通信経路上の中継ノードでパケットの輻輳などが発生してパケットが滞留したのか否かを判定することが難しい場合がある。例えば、同じジョブを同じノードに再び実行させても、ジョブを実行するノード間の通信経路上の中継ノードの使用状況が変わり、中継ノードで輻輳が発生せずパケットの滞留が起こらなくなれば、ジョブの処理が遅延した状況が再現されなくなる。
一方で、中継ノードでのパケットの滞在時間を絶対評価しても、中継ノードでパケットが滞留したことを検出することが難しい場合がある。例えば、パケットが複数の中継ノードを経由した場合、中継ノードを経由するごとに中継ノードで送信の待ち合わせをする他のパケットが多くなる可能性が高く、パケットの滞留がなくても通信経路が長くなるほど中継ノードごとの滞在時間が長くなる傾向がある。換言すれば、通信経路の長さによって許容できる滞在時間が異なるため、滞在時間を絶対評価してもパケットの滞留を検出することが難しい。例えば、パケットの滞留を検出する際に用いる滞在時間の閾値を、通信経路が最短の場合に応じた低い値に設定した場合には、パケットの滞留がない場合であっても、パケットの滞留があると検出されてしまうことがある。
このように、適切なタイミングでパケットの滞留を検出することが難しい。そして、パケットの滞留がないにも関わらず、監視サーバなどにパケットの滞留が通知されてしまい、パケットが滞留した原因などの解析にかかる負荷の増大化、またはネットワークの通信量の増大化などを招いてしまうことがある。そこで、本実施の形態では、適切なタイミングでパケットの滞留を検出して通知可能にすることができる通信パケット滞留通知方法について説明する。
情報処理装置100は、上述した計算機システムに含まれる複数のノードのいずれかとして動作し、マルチホップ通信により、他の情報処理装置100に対してデータを送受信する。情報処理装置100は、例えば、第1装置が送信元である送信待ちのパケットと、第1装置とは異なる第2装置が送信元である送信待ちのパケットとを保持する記憶部101を有する。第1装置および第2装置とは、計算機システムに含まれるノードのいずれかである。
第1装置は、例えば、自装置である。第1装置は、自装置とは異なる他の情報処理装置100であってもよい。送信待ちのパケットとは、他の情報処理装置100を宛先とするパケットである。第1装置が送信元である送信待ちのパケットは、例えば、第1装置が自装置であれば、自装置が実行するジョブによって生成された送信待ちのパケットである。第2装置は、例えば、自装置とは異なる他の情報処理装置100のそれぞれである。第2装置が送信元である送信待ちのパケットは、例えば、第2装置となる他の情報処理装置100が実行するジョブによって生成された送信待ちのパケットである。
また、情報処理装置100は、第1装置が送信元である送信待ちのパケット、または第2装置が送信元である送信待ちのパケットを、所定割合にしたがって送信する通信部102を有する。所定割合は、例えば、自装置が送信元である送信待ちのパケットと、他の情報処理装置100が送信元である送信待ちのパケットとのうち、どちらのパケットをどのくらい優先して送信するかを示す割合である。
通信部102は、例えば、所定割合が「1:1」であって、記憶部101に第1装置または第2装置が送信元である送信待ちのパケットがあれば、第1装置または第2装置が送信元である送信待ちのパケットを交互に送信する。通信部102は、記憶部101に第1装置が送信元である送信待ちのパケットがなくなれば、第2装置が送信元である送信待ちのパケットを連続して送信してもよい。通信部102は、記憶部101に第2装置が送信元である送信待ちのパケットがなくなれば、第1装置が送信元である送信待ちのパケットを連続して送信してもよい。
また、情報処理装置100は、第2装置が送信元である送信待ちのいずれかのパケットについて記憶部101における滞在時間を計測する。滞在時間は、例えば、第2装置が送信元である送信待ちのパケットが、記憶部101によって保持されてから通信部102によって送信されるまでの経過時間である。
また、情報処理装置100は、対応情報103を参照して、いずれかのパケットについて計測した滞在時間が、第2装置から自装置までのホップ数に対応する閾値以上であるか否かを判定する。閾値は、自装置でパケットの輻輳などが発生してパケットが滞留したか否かを判定する基準値である。対応情報103は、ホップ数と滞在時間に関する閾値との対応関係を示す情報である。
ここで、パケットのホップ数が多くなるほど、送信の待ち合わせをする他のパケットが多くなる可能性が高く、パケットのスループットが悪化し、パケットの滞在時間が増大しやすくなる。スループットは、例えば、あるパケットについての単位時間当たりの転送量である。このため、対応情報103には、スループットの悪化によるパケットの滞在時間の増大を考慮した上で、自装置でパケットが滞留したか否かを判定可能なように、ホップ数が多いほど、大きい閾値が対応付けて設定される。
そして、情報処理装置100は、閾値以上であると判定した場合には、閾値以上であると判定したパケットを識別可能な情報を、自装置で滞留した可能性があるパケットを示す情報として出力する。パケットを識別可能な情報は、例えば、パケットの識別情報、パケットの送信元または宛先の識別情報、パケットを生成したジョブの識別情報などである。
図1の例では、(1)情報処理装置100#3は、他の情報処理装置100#2から自装置までの通信経路上を1ホップして自装置に到達した第1パケット111を記憶部101に記憶する。(2)情報処理装置100#3は、第1パケット111が記憶部101に記憶されてから通信部102に送信されるまでの記憶部101における第1パケット111の滞在時間「3s」を計測する。
(3)情報処理装置100#3は、対応情報103を参照して、第1パケット111のホップ数「1」に対応する閾値「2s」を取得し、第1パケット111の滞在時間「3s」が閾値以上であるか否かを判定する。ここでは、情報処理装置100は、閾値以上であると判定する。
(4)情報処理装置100#3は、第1パケット111について閾値以上であると判定したため、第1パケット111の送受信の際に自装置に通信の輻輳などが発生した可能性があるとして、第1パケット111を識別可能な情報を出力する。換言すれば、情報処理装置100#3は、第1パケット111について、滞在時間が増大しており、滞留した可能性があると判定し、第1パケット111を識別可能な情報を出力する。
(5)情報処理装置100#3は、他の情報処理装置100#1から自装置までの通信経路上を2ホップして自装置に到達した第2パケット112を記憶部101に記憶する。(6)情報処理装置100#3は、第2パケット112が記憶部101に記憶されてから通信部102に送信されるまでの記憶部101における第2パケット112の滞在時間「3s」を計測する。
(7)情報処理装置100#3は、対応情報103を参照して、第2パケット112のホップ数「2」に対応する閾値「4s」を取得し、第2パケット112の滞在時間「3s」が閾値以上であるか否かを判定する。ここでは、情報処理装置100は、閾値以上ではないと判定する。
(8)情報処理装置100#3は、第2パケット112について閾値以上ではないと判定したため、第2パケット112を識別可能な情報を出力しないようにする。換言すれば、情報処理装置100#3は、第2パケット112について、滞在時間が増大しても、滞留していないと判定し、第2パケット112を識別可能な情報を出力しないようにする。
このように、情報処理装置100によれば、滞在時間が同じパケットであってもホップ数に応じて異なる閾値と比較することができ、閾値以上であれば自装置でパケットの輻輳などがあり、パケットが滞留した可能性があると判定することができる。これにより、情報処理装置100は、ホップ数の増大によって滞在時間が増大したにも関わらず、パケットが滞留した可能性があると判定してしまうことを抑制することができる。
一方で、情報処理装置100は、滞在時間が所定値よりも大きいパケットが複数あっても、自装置で滞留した可能性があるパケットと、ホップ数の増大によって滞在時間が増大したパケットとを判別することができる。そして、情報処理装置100は、自装置でパケットの輻輳などが発生して、滞留した可能性があるパケットを識別可能な情報を出力することができる。
また、情報処理装置100は、滞留がないパケットを識別可能な情報を出力することを抑制するため、滞留した可能性があるパケットを記憶するメモリサイズの増大化を低減したり、計算機システムにおける通信量の増大化を抑制することができる。また、情報処理装置100は、滞留がないパケットを識別可能な情報を出力することを抑制するため、パケットが滞留した原因などを解析する際の負荷の増大化を抑制することができる。
また、計算機システムの利用者は、情報処理装置100によって出力された、滞在時間が閾値以上であると判定されたパケットを識別可能な情報を参照することができる。そして、利用者は、情報処理装置100によって出力された情報によって識別されるパケットの送受信の際に、情報処理装置100に輻輳などが発生しており、パケットが滞留した可能性があることを把握することができる。利用者は、例えば、パケットが滞留した可能性がある連続した複数の情報処理装置100があれば、最も後段の情報処理装置100が原因となってパケットが滞留した可能性があると解析することができる。
ここでは、情報処理装置100が、第1装置が自装置であり、自装置または他の情報処理装置100が送信元である送信待ちのパケットを、所定割合にしたがって送信する場合について説明したが、これに限らない。例えば、情報処理装置100は、自装置でパケットを生成せず、2つの他の情報処理装置100のうちの一方が送信元である送信待ちのパケットと、他方が送信元である送信待ちのパケットとを、所定割合にしたがって送信する装置であってもよい。
ここでは、情報処理装置100が、第1装置または第2装置が送信元である送信待ちのパケットを所定割合にしたがって送信する場合について説明したが、これに限らない。例えば、情報処理装置100は、3以上の装置のそれぞれが送信元である送信待ちのパケットを所定割合にしたがって送信する装置であってもよい。
ここで、上述した情報処理装置100の動作は、電気回路を用いてハードウェア的に実現することができる。また、上述した情報処理装置100の動作は、プロセッサとメモリとを用いてソフトウェア的に実現することもできる。以下、上述した情報処理装置100の動作を、電気回路を用いてハードウェア的に実現する場合について説明する。
(情報処理装置100のハードウェア構成例)
次に、図2を用いて、図1に示した情報処理装置100のハードウェア構成例について説明する。
図2は、情報処理装置100のハードウェア構成例を示すブロック図である。図2において、情報処理装置100は、CPU(Central Processing Unit)201と、メモリ202と、接続装置203と、ディスクドライブ204と、ディスク205とを有する。また、CPU201と、メモリ202と、接続装置203と、ディスクドライブ204とは、バス200によってそれぞれ接続される。
ここで、CPU201は、情報処理装置100の全体の制御を司る。メモリ202は、例えば、ROM(Read Only Memory)、RAM(Random Access Memory)およびフラッシュROMなどを有する。具体的には、例えば、フラッシュROMやROMが各種プログラムを記憶し、RAMがCPU201のワークエリアとして使用される。メモリ202に記憶されるプログラムは、CPU201にロードされることで、コーディングされている処理をCPU201に実行させる。
接続装置203は、通信回線を通じてネットワーク210に接続され、ネットワーク210を介して他のコンピュータ(例えば、他の情報処理装置100)に接続される。そして、接続装置203は、ネットワーク210と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。接続装置203のハードウェア構成例は、例えば、図3を用いて後述する。また、接続装置203は、情報処理装置100の動作をソフトウェア的に実現する場合には、モデムやLAN(Local Area Network)アダプタなどであってもよい。
ディスクドライブ204は、CPU201の制御にしたがってディスク205に対するデータのリード/ライトを制御する。ディスクドライブ204は、例えば、磁気ディスクドライブである。ディスク205は、ディスクドライブ204の制御で書き込まれたデータを記憶する不揮発メモリである。ディスク205は、例えば、磁気ディスク、光ディスクなどである。
情報処理装置100は、上述した構成部のほか、例えば、キーボード、マウス、ディスプレイなどを有することにしてもよい。また、情報処理装置100は、ディスクドライブ204およびディスク205の代わりに、SSD(Solid State Drive)および半導体メモリなどを有していてもよい。
(接続装置203のハードウェア構成例)
次に、図3を用いて、図2に示した接続装置203のハードウェア構成例について説明する。
図3は、接続装置203のハードウェア構成例を示すブロック図である。図3において、接続装置203は、受信バッファ310#1〜310#nを有する。また、接続装置203は、受信側の座標用レジスタ321#1〜321#nと、受信側のカウンタ用レジスタ322#1〜322#nと、受信側のパケットID用レジスタ323#1〜323#nと、受信側の滞在時間通知回路330とを有する。nは、自然数である。
また、接続装置203は、送信バッファ340#1〜340#nを有する。また、接続装置203は、送信側の座標用レジスタ351#1〜351#nと、送信側のカウンタ用レジスタ352#1〜352#nと、送信側のパケットID用レジスタ353#1〜353#nと、送信側の滞在時間通知回路360とを有する。また、受信バッファ310と送信バッファ340との段数は異なってもよい。また、接続装置203は、調停回路370と、送信回路380とを有する。
受信バッファ310#1〜310#nは、ネットワーク210に接続され、他の情報処理装置100が送信元である送信待ちのパケットを、ネットワーク210から入力されて保持する。受信バッファ310#1〜310#nは、自装置のバスに接続され、保持したパケットが、自装置が宛先である送信待ちのパケットであれば、自装置のバスに出力する。受信バッファ310#1〜310#nは、送信回路380に接続され、保持したパケットが、他の情報処理装置100が宛先である送信待ちのパケットであれば、送信回路380に出力する。
受信側の座標用レジスタ321#1〜321#nは、それぞれの受信バッファ310#1〜310#nに対応する。受信側の座標用レジスタ321#1〜321#nは、ネットワーク210に接続され、それぞれの受信バッファ310#1〜310#nに保持された送信待ちのパケットの送信元座標および宛先座標を、ネットワーク210から入力されて保持する。受信側の座標用レジスタ321#1〜321#nは、受信側の滞在時間通知回路330に接続され、保持した送信元座標および宛先座標を、受信側の滞在時間通知回路330に出力する。
受信側のカウンタ用レジスタ322#1〜322#nは、それぞれの受信バッファ310#1〜310#nに対応する。受信側のカウンタ用レジスタ322#1〜322#nは、それぞれの受信バッファ310#1〜310#nに保持された送信待ちのパケットの滞在時間を示すカウンタ値を保持し、一定時間ごとにカウンタ値をカウントアップする。受信側のカウンタ用レジスタ322#1〜322#nは、受信側の滞在時間通知回路330に接続され、保持した滞在時間を示すカウンタ値を、受信側の滞在時間通知回路330に出力する。
受信側のパケットID用レジスタ323#1〜323#nは、それぞれの受信バッファ310#1〜310#nに対応する。受信側のパケットID用レジスタ323#1〜323#nは、ネットワーク210に接続され、それぞれの受信バッファ310#1〜310#nに保持された送信待ちのパケットの識別情報を、ネットワーク210から入力されて保持する。受信側のパケットID用レジスタ323#1〜323#nは、受信側の滞在時間通知回路330に接続され、保持した識別情報を、受信側の滞在時間通知回路330に出力する。
接続装置203は、それぞれの受信バッファ310#1〜310#nに保持された送信待ちのパケットから、当該パケットの送信元座標および宛先座標を出力可能な場合には、受信側の座標用レジスタ321#1〜321#nを有していなくてもよい。また、接続装置203は、それぞれの受信バッファ310#1〜310#nに保持された送信待ちのパケットから、当該パケットの識別情報を出力可能な場合には、受信側のパケットID用レジスタ323#1〜323#nを有していなくてもよい。
受信側の滞在時間通知回路330は、自座標保持回路331と、閾値保持回路332と、ホップ数算出回路333と、閾値選択回路334と、比較回路335と、生成回路336とを有する。自座標保持回路331は、自座標を保持する記憶回路である。自座標保持回路331は、ホップ数算出回路333に接続され、保持した自座標を、ホップ数算出回路333に出力する。
ホップ数算出回路333は、自座標保持回路331に接続され、自座標保持回路331から自座標を入力される。ホップ数算出回路333は、受信側の座標用レジスタ321#1〜321#nに接続され、受信側の座標用レジスタ321#1〜321#nから送信元座標を入力される。ホップ数算出回路333は、入力された自座標と送信元座標とを比較することにより、送信待ちパケットのホップ数を算出する。ホップ数算出回路333は、閾値選択回路334に接続され、算出したホップ数を、閾値選択回路334に出力する。
ホップ数算出回路333のハードウェア構成例は、例えば、図4を用いて後述する。ホップ数算出回路333は、例えば、送信元座標<自座標である場合には、自座標−送信元座標をホップ数として算出する。また、ホップ数算出回路333は、送信元座標<自座標ではない場合には、自座標−送信元座標+計算機システムにおける最大ホップ数を、ホップ数として算出する。
閾値保持回路332は、複数のホップ数のそれぞれのホップ数に対応する閾値を保持する。閾値保持回路332は、閾値選択回路334に接続され、保持した閾値を、閾値選択回路334に出力する。閾値選択回路334は、ホップ数算出回路333に接続され、ホップ数を入力される。閾値選択回路334は、閾値保持回路332に接続され、複数の閾値を入力される。閾値選択回路334は、入力された複数の閾値のうち、入力されたホップ数に対応する閾値を選択する。閾値選択回路334は、比較回路335に接続され、選択した閾値を、比較回路335に出力する。
比較回路335は、受信側のカウンタ用レジスタ322#1〜322#nに接続され、滞在時間を入力される。比較回路335は、閾値選択回路334に接続され、閾値を入力される。比較回路335は、入力された滞在時間と、入力された閾値とを比較する。比較回路335は、生成回路336に接続され、滞在時間と閾値とを比較した結果を、生成回路336に出力する。
生成回路336は、比較回路335に接続され、滞在時間と閾値とを比較した結果を入力される。生成回路336は、受信側のパケットID用レジスタ323#1〜323#nに接続され、識別情報を入力される。生成回路336は、入力された滞在時間と閾値とを比較した結果に基づいて、滞在時間が閾値以上であれば、入力された識別情報を含む通知パケットを生成する。生成回路336は、送信回路380に接続され、生成した通知パケットを、送信回路380に出力する。生成回路336は、自装置のバス200に接続され、生成した通知パケットを、自装置のバス200に出力する。
送信バッファ340#1〜340#nは、自装置のバス200に接続され、自装置のバス200から自装置が送信元である送信待ちのバッファを入力されて保持する。送信バッファ340#1〜340#nは、送信回路380に接続され、保持したパケットが、他の情報処理装置100が宛先である送信待ちのパケットであれば、送信回路380に出力する。
送信側の座標用レジスタ351#1〜351#nは、それぞれの送信バッファ340#1〜340#nに対応する。送信側の座標用レジスタ351#1〜351#nは、自装置のバス200に接続され、それぞれの送信バッファ340#1〜340#nに保持された送信待ちのパケットの送信元座標および宛先座標を、自装置のバス200から入力されて保持する。送信側の座標用レジスタ351#1〜351#nは、送信側の滞在時間通知回路360に接続され、保持した送信元座標および宛先座標を、送信側の滞在時間通知回路360に出力する。
送信側のカウンタ用レジスタ352#1〜352#nは、それぞれの送信バッファ340#1〜340#nに対応する。送信側のカウンタ用レジスタ352#1〜352#nは、それぞれの送信バッファ340#1〜340#nに保持された送信待ちのパケットの滞在時間を示すカウンタ値を保持し、一定時間ごとにカウンタ値をカウントアップする。送信側のカウンタ用レジスタ352#1〜352#nは、送信側の滞在時間通知回路360に接続され、保持した滞在時間を示すカウンタ値を、送信側の滞在時間通知回路360に出力する。
送信側のパケットID用レジスタ353#1〜353#nは、それぞれの送信バッファ340#1〜340#nに対応する。送信側のパケットID用レジスタ353#1〜353#nは、自装置のバス200に接続され、それぞれの送信バッファ340#1〜340#nに保持された送信待ちのパケットの識別情報を、自装置のバス200から入力されて保持する。送信側のパケットID用レジスタ353#1〜353#nは、送信側の滞在時間通知回路360に接続され、保持した識別情報を、送信側の滞在時間通知回路360に出力する。
接続装置203は、それぞれの送信バッファ340#1〜340#nに保持された送信待ちのパケットから、当該パケットの送信元座標および宛先座標を出力可能な場合には、送信側の座標用レジスタ351#1〜351#nを有していなくてもよい。また、接続装置203は、それぞれの送信バッファ340#1〜340#nに保持された送信待ちのパケットから、当該パケットの識別情報を出力可能な場合には、送信側のパケットID用レジスタ353#1〜353#nを有していなくてもよい。
送信側の滞在時間通知回路360は、受信側の滞在時間通知回路330と同様に動作するため、説明を省略する。送信側の滞在時間通知回路360は、通知パケットを生成し、生成した通知パケットを、送信回路380、または自装置のバス200に出力する。
調停回路370は、所定割合にしたがって、受信バッファ310#1〜310#n、および送信バッファ340#1〜340#nに保持された送信待ちのパケットのいずれを送信するかを決定する。調停回路370は、受信バッファ310#1〜310#nに保持された送信待ちのパケットを送信する場合には、受信側の滞在時間通知回路330を動作開始させる。また、調停回路370は、送信バッファ340#1〜340#nに保持された送信待ちのパケットを送信する場合には、送信側の滞在時間通知回路360を動作開始させる。調停回路370は、受信側の滞在時間通知回路330、または送信側の滞在時間通知回路360を動作開始させた結果、通知パケットが生成された場合には、送信待ちのパケットと、通知パケットとのいずれを送信するかを決定する。
送信回路380は、受信バッファ310#1〜310#nに接続され、他の情報処理装置100が送信元である送信待ちのパケットを、受信バッファ310#1〜310#nから入力される。送信回路380は、送信バッファ340#1〜340#nに接続され、自装置が送信元である送信待ちのパケットを、送信バッファ340#1〜340#nから入力される。送信回路380は、受信側の滞在時間通知回路330に接続され、通知パケットを、受信側の滞在時間通知回路330から入力される。送信回路380は、送信側の滞在時間通知回路360に接続され、通知パケットを、送信側の滞在時間通知回路360から入力される。
送信回路380は、調停回路370に接続され、調停回路370の決定にしたがって、受信バッファ310#1〜310#n、および送信バッファ340#1〜340#nのいずれかに保持された送信待ちのパケットを、ネットワーク210に出力する。また、送信回路380は、調停回路370に接続され、調停回路370の決定にしたがって、受信側の滞在時間通知回路330、または送信側の滞在時間通知回路360に生成された通知パケットを、ネットワーク210に出力する。
(ホップ数算出回路333のハードウェア構成例)
次に、図4を用いて、図3に示したホップ数算出回路333のハードウェア構成例について説明する。
図4は、ホップ数算出回路333のハードウェア構成例を示すブロック図である。図4において、ホップ数算出回路333は、補数生成器401と、第1加算器402と、比較回路403と、選択回路404と、第2加算器405とを有する。
補数生成器401は、受信側の座標用レジスタ321#1〜321#nに接続され、受信側の座標用レジスタ321#1〜321#nから送信元座標を入力され、送信元座標の2の補数を算出する。補数生成器401は、第1加算器402に接続され、算出した送信元座標の2の補数を第1加算器402に出力する。第1加算器402は、自座標保持回路331に接続され、自座標を入力され、補数生成器401に接続され、送信元座標について2の補数を入力される。第1加算器402は、入力された自座標と、送信元座標の2の補数に基づいて、自座標から送信元座標までの差分「自座標−送信元座標」を算出する。第1加算器402は、第2加算器405に接続され、第2加算器405に算出した差分「自座標−送信元座標」を出力する。
比較回路403は、受信側の座標用レジスタ321#1〜321#nに接続され、受信側の座標用レジスタ321#1〜321#nから送信元座標を入力される。比較回路403は、自座標保持回路331に接続され、自座標を入力される。比較回路403は、入力された自座標と、入力された送信元座標とを比較する。比較回路403は、選択回路404に接続され、自座標と送信元座標とを比較した結果を、選択回路404に出力する。
選択回路404は、比較回路403に接続され、自座標と送信元座標とを比較した結果を入力される。選択回路404は、入力された自座標と送信元座標とを比較した結果に基づいて、0または最大ホップ数を選択する。選択回路404は、例えば、比較した結果が、送信元座標<自座標ではない場合には、第2加算器405が「自座標−送信元座標+最大ホップ数」を算出する際に、最大ホップ数が使用されるため、最大ホップ数を選択する。一方で、選択回路404は、比較した結果が、送信元座標<自座標である場合には、第2加算器405が「自座標−送信元座標」を算出する際に、最大ホップ数が使用されないため、形式的に0を選択する。選択回路404は、第2加算器405に接続され、選択した0または最大ホップ数を第2加算器405に出力する。
第2加算器405は、第1加算器402に接続され、自座標から送信元座標までの差分「自座標−送信元座標」を入力される。第2加算器405は、選択回路404に接続され、選択した0または最大ホップ数を入力される。第2加算器405は、入力された差分「自座標−送信元座標」と、入力された0または最大ホップ数とを加算し、「自座標−送信元座標+最大ホップ数」または「自座標−送信元座標」を算出する。第2加算器405は、選択回路404に接続され、算出した「自座標−送信元座標+計算機システムにおける最大ホップ数」または「自座標−送信元座標」を出力する。
ここでは、選択回路404の選択結果に応じて、第2加算器405において、第1加算器402から入力された差分に、0を加算するか、最大ホップ数を加算するかが決定される場合について説明したが、これに限らない。例えば、第1加算器402にオーバーフロービットがあれば、第1加算器402においてオーバーフローが発生した場合に、第2加算器405において最大ホップ数が加算されるようにしてもよい。
(計算機システム500の一例)
次に、図5を用いて、図2に示した情報処理装置100を複数接続した計算機システム500の一例について説明する。
図5は、計算機システム500の一例を示す説明図である。図5において、計算機システム500は、x台の情報処理装置100をRing網で接続したシステムである。図5の例では、xは6である。ここでは、先頭の1段目の情報処理装置100#1と、末尾の6段目の情報処理装置100#6とが接続され、Ring網を実現する。このため、先頭の1段目の情報処理装置100#1は、末尾の6段目の情報処理装置100#6にとっては後段の情報処理装置100となる。また、末尾の6段目の情報処理装置100#6は、先頭の1段目の情報処理装置100#1にとっての前段の情報処理装置100となる。
計算機システム500において、情報処理装置100は、前段の情報処理装置100からパケットを受信して、受信した送信待ちのパケットを受信バッファ310に保持する。情報処理装置100は、自装置において生成された送信待ちのパケットを、送信バッファ340に保持する。情報処理装置100は、送信バッファ340に保持された送信待ちのパケット、または受信バッファ310に保持された送信待ちのパケットを、所定割合にしたがって後段の情報処理装置100に送信する。
これにより、計算機システム500において、パケットはネットワーク210上を一方向に送信される。例えば、情報処理装置100#1から、情報処理装置100#6に送信されるパケットは、情報処理装置100#2〜#5によって中継されてから、情報処理装置100#6に到達することになる。
(情報処理装置100の機能的構成例)
次に、図6を用いて、情報処理装置100の機能的構成例について説明する。
図6は、情報処理装置100の機能的構成例を示すブロック図である。図6において、情報処理装置100は、保持部601と、記憶部602と、通信部603と、計測部604と、判定部605と、出力部606とを含む。
記憶部602と、保持部601と、通信部603とは、例えば、図3に示した接続装置203により、その機能を実現する。計測部604と判定部605と出力部606とは、制御部となる機能であり、例えば、図3に示した接続装置203により、その機能を実現する。
記憶部602は、第1装置が送信元である送信待ちのパケットと、第1装置とは異なる第2装置が送信元である送信待ちのパケットとを保持する。第1装置は、例えば、自装置である。第2装置は、例えば、自装置とは異なる1以上の情報処理装置100のそれぞれである。
記憶部602は、例えば、第1装置が送信元である送信待ちのパケットを保持する第1バッファと、第2装置が送信元である送信待ちのパケットを保持する第2バッファとを有する。第1バッファは、例えば、送信バッファ340である。第2バッファは、例えば、受信バッファ310である。これにより、記憶部602は、通信部603によって受信され、または自装置によって生成されてから、通信部603によって送信されるまでの間、送信待ちのパケットを保持しておくことができる。
保持部601は、対応情報103を記憶する。対応情報103は、ホップ数と滞在時間に関する閾値との対応関係を示す情報である。保持部601は、例えば、図9に後述する対応情報テーブル900を記憶する。これにより、保持部601は、判定部605によって用いられる対応情報103を記憶しておくことができる。
また、対応情報103は、ホップ数と、第1装置または第2装置が送信元である送信待ちパケットを送信する割合と、滞在時間に関する閾値との対応関係を示す情報であってもよい。保持部601は、例えば、図10に後述する対応情報テーブル900を記憶する。これにより、保持部601は、判定部605によって用いられる、第1装置または第2装置が送信元である送信待ちパケットを送信する割合に応じた対応情報103を記憶しておくことができる。
また、対応情報103は、ホップ数の範囲と滞在時間に関する閾値とを対応付けた情報であってもよい。保持部601は、例えば、図11に後述する対応情報テーブル900を記憶する。これにより、保持部601は、判定部605によって用いられる対応情報103のメモリサイズを低減することができる。
通信部603は、例えば、第1装置または第2装置が送信元である送信待ちパケットを受信し、記憶部602に入力する。通信部603は、具体的には、自装置のバス200から、自装置が送信元であるパケットを受信し、自装置が送信元である送信待ちのパケットとして送信バッファ340に入力する。また、通信部603は、ネットワーク210から、他の情報処理装置100が送信元であるパケットを受信し、他の情報処理装置100が送信元である送信待ちのパケットとして、受信バッファ310に入力する。これにより、通信部603は、他の情報処理装置100とのパケットの送受信を制御することができる。
また、通信部603は、記憶部602に記憶された、第1装置が送信元である送信待ちのパケット、または第2装置が送信元である送信待ちのパケットを、所定割合にしたがって、他の情報処理装置100または自装置のバス200に送信する。通信部603は、例えば、送信バッファ340に保持された自装置が送信元である送信待ちのパケットと、受信バッファ310に保持された他の情報処理装置100が送信元である送信待ちのパケットとを、所定割合「1:1」で送信する。これにより、通信部603は、他の情報処理装置100とのパケットの送受信を制御することができる。
計測部604は、第2装置が送信元である送信待ちのいずれかのパケットについて記憶部602における滞在時間を計測する。計測部604は、例えば、他の情報処理装置100が送信元である送信待ちのパケットが受信バッファ310に入力されると、パケットの滞在時間を示すカウンタ値のカウントアップを開始する。これにより、計測部604は、判定部605によって、自装置でパケットの輻輳などが発生して、パケットが滞留したか否かを判定する際に用いられるパケットの滞在時間を取得することができる。
計測部604は、記憶部602に保持された第2装置が送信元である送信待ちのパケット群のうちの1以上のパケットのそれぞれについて計測した滞在時間についての最小値、最大値、および平均値の少なくともいずれかを算出してもよい。これにより、計測部604は、計算機システム500の利用者によって、パケットが滞留した原因などを解析する際に参照されるパラメータを取得することができる。
計測部604は、第2装置が送信元である送信待ちのパケットに、第2装置から自装置の前段の情報処理装置100までの当該パケットのホップ数が含まれていれば、当該ホップ数を取得してもよい。そして、計測部604は、取得したホップ数をインクリメントして得られた値を、第2装置から自装置までのホップ数として算出し、当該パケットに含まれるホップ数を更新する。
判定部605は、対応情報103を参照して、計測部604が計測した滞在時間が、第2装置から自装置までのホップ数に対応する閾値以上であるか否かを判定する。判定部605は、例えば、パケットの滞在時間が、パケットのホップ数に対応する閾値以上であるか否かを判定する。判定部605は、閾値以上であれば、自装置でパケットが滞留した可能性があると判定する。これにより、判定部605は、パケットのホップ数に応じたスループットの悪化によるパケットの滞在時間の増大を考慮した上で、自装置でパケットが滞留した可能性があるか否かを判定することができる。
判定部605は、対応情報103を参照して、計測した滞在時間が、算出したホップ数と、通信部603の送信に関する所定割合との組み合わせに対応する閾値以上であるか否かを判定する。例えば、対応情報103がホップ数と第1装置または第2装置が送信元である送信待ちパケットを送信する割合と滞在時間に関する閾値との対応関係を示す情報である場合がある。この場合、判定部605は、パケットの滞在時間が、パケットのホップ数と通信部603の送信に関する所定割合に対応する閾値以上であるか否かを判定する。
これにより、判定部605は、通信部603の送信に関する所定割合が「1:1」ではない場合にも、パケットのホップ数と通信部603の送信に関する所定割合との組み合わせに応じたスループットの悪化による滞在時間の増大を考慮することができる。そして、判定部605は、スループットの悪化によるパケットの滞在時間の増大を考慮した上で、自装置でパケットが滞留した可能性があるか否かを判定することができる。
判定部605は、対応情報103を参照して、計測した滞在時間が、第2装置から自装置までのホップ数を含む範囲に対応する閾値以上であるか否かを判定する。判定部605は、例えば、対応情報103がホップ数の範囲と滞在時間に関する閾値とを対応付けた情報であれば、パケットの滞在時間がパケットのホップ数が含まれる範囲に対応する閾値以上であるか否かを判定する。これにより、判定部605は、対応情報103のメモリサイズを低減しても、自装置でパケットが滞留した可能性があるか否かを判定することができる。
出力部606は、判定部605がいずれかのパケットについて閾値以上であると判定した場合に、いずれかのパケットかを識別可能な情報を出力する。パケットを識別可能な情報は、例えば、パケットの識別情報、パケットの送信元または宛先の識別情報、パケットを生成したジョブの識別情報などである。出力部606は、例えば、パケットを識別可能な情報を、他の情報処理装置100に送信し、ディスプレイに表示し、プリンタに印刷出力し、またはメモリ202などの記憶領域に記憶する。
出力部606は、具体的には、判定部605がいずれかのパケットについて閾値以上であると判定した場合に、いずれかのパケットの送信元および宛先のうちの少なくともいずれかに、いずれかのパケットを識別可能な情報を送信する。これにより、出力部606は、計算機システム500の利用者に、自装置で滞留した可能性があるパケットを識別可能な情報を通知することができる。
また、出力部606は、いずれかのパケットの送信元に、いずれかのパケットを識別可能な情報を送信するため、いずれかのパケットの生成元であるジョブを実行した情報処理装置100に送信することができる。そして、いずれかのパケットの生成元であるジョブを情報処理装置100に実行させた計算機システム500の利用者は、どのジョブを実行した際にどの情報処理装置100でどのパケットが滞留した可能性があるのかを把握することができる。
出力部606は、具体的には、判定部605がいずれかのパケットについて閾値以上であると判定した場合に、いずれかのパケットの送信元からの要求に応じて、いずれかのパケットを識別可能な情報を当該送信元に送信する。これにより、出力部606は、閾値以上であると判定されるごとに送信処理を行わなくてもよいため、計算機システム500における通信量の増大化を抑制することができる。
出力部606は、例えば、判定部605がいずれかのパケットについて閾値以上であると判定した場合に、いずれかのパケットを識別可能な情報と、計測した滞在時間とを対応付けて出力してもよい。出力部606は、具体的には、図13に後述する通知パケットを、閾値以上であると判定したパケットの送信元または宛先となる他の情報処理装置100に送信する。これにより、出力部606は、パケットが滞留した原因などを解析する際に計算機システム500の利用者に参照されるパラメータを通知することができる。
出力部606は、計測部604が算出した結果を出力してもよい。出力部606は、例えば、判定部605がいずれかのパケットについて閾値以上であると判定した場合に、いずれかのパケットを識別可能な情報に、計測部604が算出した結果を付与した通知パケットを生成する。そして、出力部606は、生成した通知パケットを、いずれかのパケットの送信元または宛先となる他の情報処理装置100に送信する。これにより、出力部606は、パケットが滞留した原因などを解析する際に計算機システム500の利用者に参照されるパラメータを通知することができる。
出力部606は、判定部605が、1つのジョブによって生成された一連のパケットのうち、いずれかのパケットについて閾値以上であると判定した場合、通信部603が一連のパケットを送信してから、いずれかのパケットを識別可能な情報を出力する。これにより、出力部606は、ジョブごとに一度にまとめて、ジョブによって生成された一連のパケットが滞留した可能性があるか否かを示す情報を送信するため、計算機システム500における通信量の増大化を抑制することができる。
保持部601と記憶部602とは、例えば、上述した動作がソフトウェア的に実現される場合、図2に示したメモリ202などの記憶領域によって実現されてもよい。通信部603は、例えば、情報処理装置100の動作がソフトウェア的に実現される場合には、図2に示したメモリ202などの記憶装置に記憶されたプログラムをCPU201に実行させることにより、または、接続装置203により、その機能を実現してもよい。
計測部604〜出力部606は、例えば、上述した動作がソフトウェア的に実現される場合、図2に示したメモリ202などの記憶装置に記憶されたプログラムをCPU201に実行させることにより、または、接続装置203により、その機能を実現してもよい。各機能部の処理結果は、例えば、情報処理装置100の動作がソフトウェア的に実現される場合には、図2に示したメモリ202などの記憶領域に記憶される。
(計算機システム500の実施例)
次に、図7を用いて、計算機システム500の実施例について説明する。
図7は、計算機システム500の実施例を示す説明図である。図7において、情報処理装置100は、前段の情報処理装置100からパケットを受信する都度、受信されたパケットを、いずれかの受信バッファ310に入力し、保持させる。また、情報処理装置100は、パケットを保持した受信バッファ310に対応する受信側の座標用レジスタ321と、受信側のカウンタ用レジスタ322と、受信側のパケットID用レジスタ323とを更新する。
これにより、情報処理装置100は、他の情報処理装置100が送信元である送信待ちのパケットを保持することができる。また、情報処理装置100は、他の情報処理装置100が送信元である送信待ちのパケットの識別情報、送信元座標および宛先座標を保持することができる。また、情報処理装置100は、他の情報処理装置100が送信元である送信待ちのパケットの滞在時間を示すカウンタ値のカウントアップを開始することができる。
また、情報処理装置100は、自装置においてパケットを生成する都度、生成されたパケットを、いずれかの送信バッファ340に入力し、保持させる。また、情報処理装置100は、パケットを保持した受信バッファ310に対応する送信側の座標用レジスタ351と、送信側のカウンタ用レジスタ352と、送信側のパケットID用レジスタ353とを更新する。
これにより、情報処理装置100は、自装置が送信元である送信待ちのパケットを保持することができる。また、情報処理装置100は、自装置が送信元である送信待ちのパケットの識別情報、送信元座標および宛先座標を保持することができる。また、情報処理装置100は、自装置が送信元である送信待ちのパケットの滞在時間を示すカウンタ値のカウントアップを開始することができる。ここで、図8の説明に移行し、パケットのデータ構造について説明する。
(パケット800のデータ構造)
図8は、パケット800のデータ構造を示す説明図である。図8において、パケット800は、CRC(Cyclic Redundancy Code)と、転送データと、IDと、送信元座標と、宛先座標とを含む。CRCは、パケット800のフッタ部分に含まれる。CRCは、パケット800の誤り検出に用いられる符号である。転送データは、パケット800の本体部分に含まれる。転送データは、パケット800の内容である。IDは、パケット800のヘッダ部分に含まれる。IDは、パケット800の識別情報である。
送信元座標は、パケット800のヘッダ部分に含まれる。送信元座標は、パケット800の送信元が存在する計算機システム500上の座標である。送信元座標は、例えば、送信元となる情報処理装置100の識別情報である。宛先座標は、パケット800のヘッダ部分に含まれる。宛先座標は、パケット800の宛先が存在する計算機システム500上の座標である。宛先座標は、例えば、宛先となる情報処理装置100の識別情報である。
また、パケット800は、IDに対応付けてフラグTを有してもよい。フラグTは、パケット800が、あるデータを分割した一連のパケット800の末尾のパケット800であるか否かを示す情報である。また、パケット800は、送信元座標に対応付けてフラグRを有してもよい。フラグRは、閾値以上であると判定されたパケット800を識別可能な情報を、送信元座標に送信することを要求する情報である。
また、パケット800は、パケット800自体のホップ数(不図示)を有してもよい。ホップ数は、例えば、パケット800が情報処理装置100を経由する都度、経由した情報処理装置100によってインクリメントされる。これにより、情報処理装置100は、自座標と送信元座標とに基づいて、ホップ数を算出しなくてもよい。
図7の説明に戻り、情報処理装置100は、受信バッファ310に保持された送信待ちのパケット800と送信バッファ340に保持された送信待ちのパケット800とを、所定割合にしたがって、自装置のバス200または後段の情報処理装置100に送信する。所定割合は、例えば、「1:1」である。
情報処理装置100は、例えば、受信バッファ310に保持された送信待ちのパケット800と送信バッファ340に保持された送信待ちのパケット800とを、所定割合にしたがって読み出し、読み出した送信待ちのパケット800の宛先を取得する。ここで、情報処理装置100は、宛先が自装置であれば、読み出した送信待ちのパケット800を、自装置のバス200に送信する。一方で、情報処理装置100は、宛先が他の情報処理装置100であれば、読み出した送信待ちのパケット800を後段の情報処理装置100に送信する。
ここで、情報処理装置100#1を送信元とする送信待ちのパケット800についてのそれぞれの情報処理装置100#1〜#3でのスループットについて説明する。まず、情報処理装置100#1を送信元とする送信待ちのパケット800が、情報処理装置100#1の送信バッファ340に対して入力され、出力される際のスループットを「1(基準値)」とする。
このとき、情報処理装置100#1では、送信バッファ340および受信バッファ310に保持された送信待ちのパケット800が、所定割合「1:1」にしたがって送信されることになる。換言すれば、情報処理装置100#1を送信元とする送信待ちのパケット800は、情報処理装置100#1で、他の情報処理装置100を送信元とする送信待ちのパケット800と待ち合わせて送信されることになる。このため、情報処理装置100#1を送信元とする送信待ちのパケット800が、情報処理装置100#1から情報処理装置100#2に送信される際のスループットは、半分になり「1/2」になる。
さらに、情報処理装置100#1を送信元とする送信待ちのパケット800は、情報処理装置100#2でも、情報処理装置100#2を送信元とする送信待ちのパケット800と待ち合わせて送信されることになる。このため、情報処理装置100#1を送信元とする送信待ちのパケット800が、情報処理装置100#2に中継されて情報処理装置100#3に送信される際のスループットは、さらに半分になり「1/4」になる。
さらに、情報処理装置100#1を送信元とする送信待ちのパケット800は、情報処理装置100#3でも、情報処理装置100#3を送信元とする送信待ちのパケット800と待ち合わせて送信されることになる。このため、情報処理装置100#1を送信元とする送信待ちのパケット800が、情報処理装置100#2および情報処理装置100#3に中継されて情報処理装置100#4に送信される際のスループットは、さらに半分になり「1/8」になる。
このように、パケット800について、ホップ数が増大するほど、スループットが低下することになり、情報処理装置100における滞在時間の増大化を招く。そこで、情報処理装置100は、図9に後述する対応情報テーブル900に基づき、パケット800のホップ数に応じて異なる閾値を用いて、パケット800の滞在時間と閾値とを比較する。
また、所定割合が「1:1」ではない場合には、ホップ数の増大によるスループットの低下度合いが異なる。そこで、情報処理装置100は、所定割合が「1:1」ではない場合には、図10に後述する所定割合に応じた対応情報テーブル900に基づいてホップ数に応じて異なる閾値を用いてもよい。また、情報処理装置100は、図11に後述する対応情報テーブル900に基づいてホップ数の範囲に応じて異なる閾値を用いてもよい。
ここで、図9〜図11を用いて、対応情報テーブル900の記憶内容について説明する。対応情報テーブル900は、例えば、閾値保持回路332によって実現される。また、対応情報テーブル900は、情報処理装置100の動作がソフトウェア的に実現される場合には、図2に示したメモリ202などの記憶領域によって実現されてもよい。
(対応情報テーブル900の記憶内容の第1の例)
図9は、対応情報テーブル900の記憶内容の第1の例を示す説明図である。図9に示す対応情報テーブル900は、所定割合が「1:1」である場合に用いられる対応情報テーブル900の記憶内容の一例である。
図9に示すように、対応情報テーブル900は、IDのフィールドに対応付けて、ホップ数と、閾値とのフィールドを有する。対応情報テーブル900は、ホップ数ごとに各フィールドに情報を設定することにより、対応情報103がレコード900−aとして記憶される。aは、自然数である。図9の例では、aは、1〜mの自然数である。mは、計算機システム500における最大ホップ数である。
IDとは、対応情報103の識別情報である。ホップ数とは、パケット800のホップ数である。閾値とは、パケット800のホップ数に対応する閾値である。例えば、レコード900−aは、ホップ数「a」に、閾値「2^a」を対応付けた対応情報103である。
これにより、情報処理装置100は、パケット800の滞在時間が、ホップ数に応じたスループットのときの滞在時間か、自装置でパケットが滞留したときの滞在時間かを判別可能になる。また、情報処理装置100は、送信バッファ340が複数段あれば、ホップ数に対応する閾値に段数を乗算した値を、パケット800の滞在時間と比較する閾値として用いてもよい。
(対応情報テーブル900の記憶内容の第2の例)
図10は、対応情報テーブル900の記憶内容の第2の例を示す説明図である。図10に示す対応情報テーブル900は、所定割合が「1:1」ではない場合に用いられる対応情報テーブル900の記憶内容の一例である。具体的には、図10に示す対応情報テーブル900は、所定割合が「2:1」である場合に用いられる対応情報テーブル900の記憶内容の一例である。
図10に示すように、対応情報テーブル900は、IDのフィールドに対応付けて、ホップ数と、閾値とのフィールドを有する。対応情報テーブル900は、ホップ数ごとに各フィールドに情報を設定することにより、対応情報103がレコード900−aとして記憶される。aは、自然数である。図10の例では、aは、1〜mの自然数である。mは、計算機システム500における最大ホップ数である。
IDとは、対応情報103の識別情報である。ホップ数とは、パケット800のホップ数である。閾値とは、パケット800のホップ数に対応する閾値である。例えば、レコード900−aは、ホップ数「a」に、閾値「3^a/2」を対応付けた対応情報103である。
これにより、情報処理装置100は、送信バッファ340および受信バッファ310について所定割合が「2:1」である場合に対して適用可能な対応情報103を記憶することができる。換言すれば、情報処理装置100は、ホップ数の増加に応じて、スループットが「1/3」ずつ悪化していく場合に対して適用可能な対応情報103を記憶することができる。
そして、情報処理装置100は、パケット800の滞在時間が、ホップ数に応じたスループットのときの滞在時間か、自装置でパケットが滞留したときの滞在時間かを判別可能になる。また、情報処理装置100は、送信バッファ340が複数段あれば、ホップ数に対応する閾値に段数を乗算した値を、パケット800の滞在時間と比較する閾値として用いてもよい。
(対応情報テーブル900の記憶内容の第3の例)
図11は、対応情報テーブル900の記憶内容の第3の例を示す説明図である。図11に示す対応情報テーブル900は、ホップ数の範囲ごとに閾値を対応付けた対応情報テーブル900の記憶内容の一例である。
図11に示すように、対応情報テーブル900は、IDのフィールドに対応付けて、ホップ数グループと、閾値とのフィールドを有する。対応情報テーブル900は、ホップ数グループごとに各フィールドに情報を設定することにより、対応情報103がレコード900−aとして記憶される。aは、自然数である。図11の例では、aは、1〜mの自然数である。mは、計算機システム500における最大ホップ数である。
IDとは、対応情報103の識別情報である。ホップ数グループとは、パケット800のホップ数を複数含むグループである。閾値とは、パケット800のホップ数グループに対応する閾値である。例えば、レコード900−aは、ホップ数「(3×a−2)〜(3×a)」のホップ数グループ「#a」に、閾値「2^(3×a)」を対応付けた対応情報103である。これにより、情報処理装置100は、ホップ数の一つ一つに対して閾値を記憶しなくてもよいため、対応情報テーブル900のメモリサイズを低減することができる。
図7の説明に戻り、情報処理装置100が、8段の受信バッファ310と、8段の送信バッファ340とを有する場合を例に挙げて、情報処理装置100#1が送信元であるパケット800の滞在時間を閾値と比較する流れについて説明する。受信バッファ310と、送信バッファ340とは、各段、1KB(Kilo Byte)分のバッファである。
ここでは、情報処理装置100#1は、5KBのデータを、1KBずつ分割して得られた、情報処理装置100#1を送信元とするパケット800を、情報処理装置100#2を介して情報処理装置100#3に送信する。また、情報処理装置100#2は、同様に、5KBのデータを、1KBずつ分割して得られた、情報処理装置100#2を送信元とするパケット800を、情報処理装置100#4に送信する。
この場合、情報処理装置100#2において、情報処理装置100#1を送信元とするパケット800は、情報処理装置100#2を送信元とするパケット800と交互に、情報処理装置100#3に送信される。また、情報処理装置100#1を送信元とするパケット800の滞在時間は、ホップ数「1」に対応する閾値と比較される。
また、情報処理装置100#1を送信元とするパケット800の滞在時間が閾値以上であれば、情報処理装置100#1を送信元とするパケット800を識別可能な情報を含む通知パケットが生成される。そして、通知パケットは、情報処理装置100#2から、閾値以上であると判定したパケット800の送信元である情報処理装置100#1、または宛先である情報処理装置100#3に送信される。
この場合、情報処理装置100#3において、情報処理装置100#1を送信元とするパケット800は、情報処理装置100#2を送信元とするパケット800と交互に、情報処理装置100#3のバス200、または情報処理装置100#4に送信される。また、情報処理装置100#1を送信元とするパケット800の滞在時間は、ホップ数「2」に対応する閾値と比較される。
また、情報処理装置100#1を送信元とするパケット800の滞在時間が閾値以上であれば、情報処理装置100#1を送信元とするパケット800を識別可能な情報を含む通知パケットが生成される。そして、通知パケットは、情報処理装置100#3から、閾値以上であると判定したパケット800の送信元である情報処理装置100#1、または宛先である情報処理装置100#3のバス200に送信される。ここで、図12の説明に移行し、パケット800の滞在時間を閾値と比較する一例について説明する。
(パケット800の滞在時間を閾値と比較する一例)
図12は、パケット800の滞在時間を閾値と比較する一例を示す説明図である。図12において、情報処理装置100#2における滞在時間を閾値と比較する一例について説明し、情報処理装置100#3における滞在時間を閾値と比較する一例については説明を省略する。
1サイクル目では、情報処理装置100#1は、5KBのデータから先頭1KBのデータを分割して、パケットID「#a−1」が付与されたパケット800を生成する。
2サイクル目では、情報処理装置100#1は、5KBのデータから2番目の1KBのデータを分割して、パケットID「#a−2」が付与されたパケット800を生成する。また、情報処理装置100#1は、パケットID「#a−1」が付与されたパケット800を、送信バッファ340#0に入力する。
3サイクル目では、情報処理装置100#1は、5KBのデータから3番目の1KBのデータを分割して、パケットID「#a−3」が付与されたパケット800を生成する。また、情報処理装置100#1は、パケットID「#a−2」が付与されたパケット800を、送信バッファ340#1に入力する。また、情報処理装置100#1は、パケットID「#a−1」が付与されたパケット800を、情報処理装置100#2への伝送路に出力する。情報処理装置100#2は、5KBのデータから先頭1KBのデータを分割して、パケットID「#b−1」が付与されたパケット800を生成する。
4サイクル目では、情報処理装置100#1は、5KBのデータから4番目の1KBのデータを分割して、パケットID「#a−4」が付与されたパケット800を生成する。また、情報処理装置100#1は、パケットID「#a−3」が付与されたパケット800を、送信バッファ340#2に入力する。また、情報処理装置100#1は、パケットID「#a−2」が付与されたパケット800を、情報処理装置100#2への伝送路に出力する。
情報処理装置100#2は、パケットID「#a−1」が付与されたパケット800を、受信バッファ310#0に入力する。また、情報処理装置100#2は、5KBのデータから2番目の1KBのデータを分割して、パケットID「#b−2」が付与されたパケット800を生成する。また、情報処理装置100#2は、パケットID「#b−1」が付与されたパケット800を、送信バッファ340#0に入力する。
5サイクル目では、情報処理装置100#1は、5KBのデータから5番目の1KBのデータを分割して、パケットID「#a−5」が付与されたパケット800を生成する。また、情報処理装置100#1は、パケットID「#a−4」が付与されたパケット800を、送信バッファ340#3に入力する。また、情報処理装置100#1は、パケットID「#a−3」が付与されたパケット800を、情報処理装置100#2への伝送路に出力する。
情報処理装置100#2は、パケットID「#a−2」が付与されたパケット800を、受信バッファ310#1に入力する。また、情報処理装置100#2は、受信バッファ310#0に対応する受信側のカウンタ用レジスタ322#0のカウンタ値を「1」にカウントアップする。
また、情報処理装置100#2は、5KBのデータから3番目の1KBのデータを分割して、パケットID「#b−3」が付与されたパケット800を生成する。また、情報処理装置100#2は、パケットID「#b−2」が付与されたパケット800を、送信バッファ340#1に入力する。また、情報処理装置100#2は、パケットID「#a−1」が付与されたパケット800を、情報処理装置100#3への伝送路に出力する。
ここで、情報処理装置100#2は、出力したパケットID「#a−1」が付与されたパケット800に対応する受信側のカウンタ用レジスタ322#0のカウンタ値が閾値以上であるか否かを判定する。情報処理装置100#2は、閾値以上であれば、対応する送信側の座標用レジスタ351#0と、送信側のパケットID用レジスタ353#0とに基づいて、通知パケットを生成する。
ここでは、情報処理装置100#2は、通信量の低減のため、パケットID「#a−1」〜「#a−5」を送信してから、通知パケットを送信する。情報処理装置100#2は、通知パケットを生成する都度、通知パケットを送信してもよい。通知パケットのデータ構造については図13に後述する。
6サイクル目では、情報処理装置100#1は、パケットID「#a−5」が付与されたパケット800を、送信バッファ340#4に入力する。また、情報処理装置100#1は、パケットID「#a−4」が付与されたパケット800を、情報処理装置100#2への伝送路に出力する。
情報処理装置100#2は、パケットID「#a−3」が付与されたパケット800を、受信バッファ310#2に入力する。また、情報処理装置100#2は、受信バッファ310#1に対応する受信側のカウンタ用レジスタ322#1のカウンタ値を「1」にカウントアップする。
また、情報処理装置100#2は、5KBのデータから4番目の1KBのデータを分割して、パケットID「#b−4」が付与されたパケット800を生成する。また、情報処理装置100#2は、パケットID「#b−3」が付与されたパケット800を、送信バッファ340#2に入力する。また、情報処理装置100#2は、パケットID「#b−1」が付与されたパケット800を、情報処理装置100#3への伝送路に出力する。これにより、パケットID「#a−2」が付与されたパケット800は、滞在時間が増大することになる。
情報処理装置100#3は、パケットID「#a−1」が付与されたパケット800を、受信バッファ310#0に入力する。
7サイクル目では、情報処理装置100#1は、パケットID「#a−5」が付与されたパケット800を、情報処理装置100#2への伝送路に出力する。
情報処理装置100#2は、パケットID「#a−4」が付与されたパケット800を、受信バッファ310#3に入力する。また、情報処理装置100#2は、受信バッファ310#2に対応する受信側のカウンタ用レジスタ322#2のカウンタ値を「1」にカウントアップする。また、情報処理装置100#2は、受信バッファ310#1に対応する受信側のカウンタ用レジスタ322#1のカウンタ値を「2」にカウントアップする。
ここで、情報処理装置100#2は、受信側のカウンタ用レジスタ322#1のカウンタ値が閾値以上であれば、対応する送信側の座標用レジスタ351#1と、送信側のパケットID用レジスタ353#1とに基づいて、通知パケットを生成する。
また、情報処理装置100#2は、5KBのデータから5番目の1KBのデータを分割して、パケットID「#b−5」が付与されたパケット800を生成する。また、情報処理装置100#2は、パケットID「#b−4」が付与されたパケット800を、送信バッファ340#3に入力する。また、情報処理装置100#2は、パケットID「#a−2」が付与されたパケット800を、情報処理装置100#3への伝送路に出力する。
ここで、情報処理装置100#2は、出力したパケットID「#a−2」が付与されたパケット800に対応する受信側のカウンタ用レジスタ322#1のカウンタ値が閾値以上であるか否かを判定する。情報処理装置100#2は、閾値以上であれば、対応する送信側の座標用レジスタ351#1と、送信側のパケットID用レジスタ353#1とに基づいて、通知パケットを生成する。
情報処理装置100#3は、パケットID「#b−1」が付与されたパケット800を、受信バッファ310#1に入力する。また、情報処理装置100#3は、パケットID「#a−1」が付与されたパケット800を、自装置のバス200に出力する。
8サイクル目では、情報処理装置100#2は、パケットID「#a−5」が付与されたパケット800を、受信バッファ310#4に入力する。また、情報処理装置100#2は、受信バッファ310#3に対応する受信側のカウンタ用レジスタ322#3のカウンタ値を「1」にカウントアップする。また、情報処理装置100#2は、受信バッファ310#2に対応する受信側のカウンタ用レジスタ322#2のカウンタ値を「2」にカウントアップする。
また、情報処理装置100#2は、パケットID「#b−5」が付与されたパケット800を、送信バッファ340#4に入力する。また、情報処理装置100#2は、パケットID「#b−2」が付与されたパケット800を、情報処理装置100#3への伝送路に出力する。
情報処理装置100#3は、パケットID「#a−2」が付与されたパケット800を、受信バッファ310#0に入力する。また、情報処理装置100#3は、パケットID「#b−1」が付与されたパケット800を、情報処理装置100#4への伝送路に出力する。
9サイクル目では、情報処理装置100#2は、受信バッファ310#4に対応する受信側のカウンタ用レジスタ322#4のカウンタ値を「1」にカウントアップする。また、情報処理装置100#2は、受信バッファ310#3に対応する受信側のカウンタ用レジスタ322#3のカウンタ値を「2」にカウントアップする。また、情報処理装置100#2は、受信バッファ310#2に対応する受信側のカウンタ用レジスタ322#2のカウンタ値を「3」にカウントアップする。また、情報処理装置100#2は、パケットID「#a−3」が付与されたパケット800を、情報処理装置100#3への伝送路に出力する。
ここで、情報処理装置100#2は、出力したパケットID「#a−2」が付与されたパケット800に対応する受信側のカウンタ用レジスタ322#2のカウンタ値が閾値以上であるか否かを判定する。情報処理装置100#2は、閾値以上であれば、対応する送信側の座標用レジスタ351#2と、送信側のパケットID用レジスタ353#2とに基づいて、通知パケットを生成する。
情報処理装置100#3は、パケットID「#b−2」が付与されたパケット800を、受信バッファ310#3に入力する。また、情報処理装置100#3は、パケットID「#a−2」が付与されたパケット800を、自装置のバス200に出力する。
10サイクル目では、情報処理装置100#2は、受信バッファ310#4に対応する受信側のカウンタ用レジスタ322#4のカウンタ値を「2」にカウントアップする。また、情報処理装置100#2は、受信バッファ310#3に対応する受信側のカウンタ用レジスタ322#3のカウンタ値を「3」にカウントアップする。また、情報処理装置100#2は、パケットID「#b−3」が付与されたパケット800を、情報処理装置100#3への伝送路に出力する。
情報処理装置100#3は、パケットID「#a−3」が付与されたパケット800を、受信バッファ310#4に入力する。また、情報処理装置100#3は、パケットID「#b−2」が付与されたパケット800を、情報処理装置100#4への伝送路に出力する。
11サイクル目では、情報処理装置100#2は、受信バッファ310#4に対応する受信側のカウンタ用レジスタ322#4のカウンタ値を「3」にカウントアップする。また、情報処理装置100#2は、受信バッファ310#3に対応する受信側のカウンタ用レジスタ322#3のカウンタ値を「4」にカウントアップする。また、情報処理装置100#2は、パケットID「#a−4」が付与されたパケット800を、情報処理装置100#3への伝送路に出力する。
ここで、情報処理装置100#2は、出力したパケットID「#a−2」が付与されたパケット800に対応する受信側のカウンタ用レジスタ322#3のカウンタ値が閾値以上であるか否かを判定する。情報処理装置100#2は、閾値以上であれば、対応する送信側の座標用レジスタ351#3と、送信側のパケットID用レジスタ353#3とに基づいて、通知パケットを生成する。
情報処理装置100#3は、パケットID「#b−3」が付与されたパケット800を、受信バッファ310#5に入力する。また、情報処理装置100#3は、パケットID「#a−3」が付与されたパケット800を、自装置のバス200に出力する。
12サイクル目では、情報処理装置100#2は、受信バッファ310#4に対応する受信側のカウンタ用レジスタ322#4のカウンタ値を「4」にカウントアップする。また、情報処理装置100#2は、パケットID「#b−4」が付与されたパケット800を、情報処理装置100#3への伝送路に出力する。
情報処理装置100#3は、パケットID「#a−4」が付与されたパケット800を、受信バッファ310#6に入力する。また、情報処理装置100#3は、パケットID「#b−3」が付与されたパケット800を、情報処理装置100#4への伝送路に出力する。
13サイクル目では、情報処理装置100#2は、受信バッファ310#4に対応する受信側のカウンタ用レジスタ322#4のカウンタ値を「5」にカウントアップする。また、情報処理装置100#2は、パケットID「#a−5」が付与されたパケット800を、情報処理装置100#3への伝送路に出力する。
ここで、情報処理装置100#2は、出力したパケットID「#a−2」が付与されたパケット800に対応する受信側のカウンタ用レジスタ322#4のカウンタ値が閾値以上であるか否かを判定する。情報処理装置100#2は、閾値以上であれば、対応する送信側の座標用レジスタ351#4と、送信側のパケットID用レジスタ353#4とに基づいて、通知パケットを生成する。
情報処理装置100#3は、パケットID「#b−4」が付与されたパケット800を、受信バッファ310#7に入力する。また、情報処理装置100#3は、パケットID「#a−4」が付与されたパケット800を、自装置のバス200に出力する。
14サイクル目では、情報処理装置100#2は、パケットID「#b−5」が付与されたパケット800を、情報処理装置100#3への伝送路に出力する。また、情報処理装置100#2は、通知パケットが生成されていれば、生成した通知パケットを情報処理装置100#1に送信する。
情報処理装置100#3は、パケットID「#a−5」が付与されたパケット800を、受信バッファ310#0に入力する。また、情報処理装置100#3は、パケットID「#b−4」が付与されたパケット800を、情報処理装置100#4への伝送路に出力する。
15サイクル目では、情報処理装置100#3は、パケットID「#b−5」が付与されたパケット800を、受信バッファ310#1に入力する。また、情報処理装置100#3は、パケットID「#a−5」が付与されたパケット800を、自装置のバス200に出力する。
16サイクル目では、情報処理装置100#3は、パケットID「#b−5」が付与されたパケット800を、情報処理装置100#4への伝送路に出力する。ここで、図13の説明に移行し、通知パケットのデータ構造について説明する。
(通知パケット1300のデータ構造)
図13は、通知パケット1300のデータ構造を示す説明図である。図13において、通知パケット1300は、CRCと、カウンタ値と、IDと、送信元座標と、宛先座標とを含む。
CRCは、通知パケット1300のフッタ部分に含まれる。CRCは、通知パケット1300の誤り検出に用いられる符号である。カウンタ値は、通知パケット1300の本体部分に含まれる。カウンタ値は、閾値以上であると判定した計測時間である。IDは、通知パケット1300のヘッダ部分に含まれる。IDは、通知パケット1300の識別情報である。
送信元座標は、通知パケット1300のヘッダ部分に含まれる。送信元座標は、通知パケット1300の送信元が存在する計算機システム500上の座標である。送信元座標は、例えば、送信元となる自装置の識別情報である。宛先座標は、通知パケット1300のヘッダ部分に含まれる。宛先座標は、通知パケット1300の宛先が存在する計算機システム500上の座標である。宛先座標は、例えば、宛先となる情報処理装置100の識別情報であって、閾値以上であると判定したパケット800の送信元となる情報処理装置100の識別情報である。
また、パケット800は、カウンタ値に対応付けてフラグVを有してもよい。フラグVは、パケット800に、カウンタ値が設定済みであるか否かを示す情報である。また、パケット800は、宛先座標に対応付けてフラグJを有してもよい。フラグJは、通知パケット1300であることを示す情報である。
(接続装置203の別の例)
次に、図14を用いて、接続装置203の別の例について説明する。
図14は、接続装置203の別の例を示す説明図である。図14において、接続装置203は、図3と同様に、受信バッファ310#1〜310#nを有する。また、接続装置203は、図3と同様に、受信側の座標用レジスタ321#1〜321#nと、受信側のカウンタ用レジスタ322#1〜322#nと、受信側のパケットID用レジスタ323#1〜323#nとを有する。また、接続装置203は、図3と同様に、受信側の滞在時間通知回路330を有する。
また、接続装置203は、図示は省略するが、図3と同様に、送信バッファ340#1〜340#nを有する。また、接続装置203は、図示は省略するが、図3と同様に、送信側の座標用レジスタ351#1〜351#nと、送信側のカウンタ用レジスタ352#1〜352#nと、送信側のパケットID用レジスタ353#1〜353#nとを有する。また、接続装置203は、図示は省略するが、図3と同様に、送信側の滞在時間通知回路360を有する。また、接続装置203は、調停回路370と、送信回路380とを有する。
図14の例では、接続装置203は、さらに、要求用レジスタ1401と、要求ID用レジスタ1402とを有する。要求用レジスタ1401は、滞在時間の通知要求を保持するレジスタである。要求ID用レジスタ1402は、滞在時間の通知要求がされたパケット800の識別情報を保持するレジスタである。
受信側の滞在時間通知回路330は、図3と同様に、自座標保持回路331と、閾値保持回路332と、ホップ数算出回路333と、閾値選択回路334と、比較回路335と、生成回路336とを有する。図14の例では、生成回路336は、メモリとOR回路とを有する。生成回路336は、OR回路によって、比較回路335が比較した結果と、メモリの内容と結合して、結合した結果でメモリの内容を上書きする。これにより、生成回路336は、比較回路335から入力された比較結果をメモリに蓄積することができる。
生成回路336は、要求用レジスタ1401から通知要求が入力された場合に、メモリに蓄積した比較結果のうち、要求ID用レジスタ1402から入力された識別情報が示すパケット800についての比較結果に基づいて、通知パケット1300を生成する。生成回路336は、通知パケット1300を生成すると、通知パケット1300を送信回路380に出力して、他の情報処理装置100に送信させる。
このように、接続装置203は、滞在時間の通知要求が入力されてから通知パケット1300を生成して送信し、滞在時間の通知要求が入力されなければ通知パケット1300を生成しない。これにより、接続装置203は、通信量を低減し、ネットワーク210の輻輳を抑制することができる。
(計算機システム500の別の例)
次に、図15を用いて、計算機システム500の別の例について説明する。
図15は、計算機システム500の別の例を示す説明図である。図15に示すように、計算機システム500の別の例は、x台の情報処理装置100をRing網で、双方向に通信可能に接続したシステムである。図15の例では、xは6である。
計算機システム500の別の例において、情報処理装置100は、送信バッファ340および受信バッファ310に加えて、送信待ちの通知パケット1300を保持する通知用送信バッファ1520および通知用受信バッファ1510を有する。ここで、情報処理装置100は、パケット800とは逆方法に通知パケット1300を送信する。
計算機システム500の別の例において、情報処理装置100は、前段の情報処理装置100からパケット800を受信して、受信した送信待ちのパケット800を受信バッファ310に保持する。情報処理装置100は、自装置において生成された送信待ちのパケット800を、送信バッファ340に保持する。情報処理装置100は、送信バッファ340に保持された送信待ちのパケット800、または受信バッファ310に保持された送信待ちのパケット800を、所定割合にしたがって自装置のバス200または後段の情報処理装置100に送信する。
また、情報処理装置100は、後段の情報処理装置100から通知パケット1300を受信して、受信した送信待ちの通知パケット1300を通知用受信バッファ1510に保持する。情報処理装置100は、自装置において生成された送信待ちの通知パケット1300を、通知用送信バッファ1520に保持する。情報処理装置100は、通知用送信バッファ1520に保持された送信待ちの通知パケット1300、または通知用受信バッファ1510に保持された送信待ちの通知パケット1300を、所定割合にしたがって読み出す。そして、情報処理装置100は、読み出した通知パケット1300を、自装置のバス200または後段の情報処理装置100に送信する。
計算機システム500の別の例によれば、パケット800と、通知パケット1300との経路が異なるため、通知パケット1300を送信することによって、パケット800の送受信が輻輳してしまうことを防止することができる。
(計算機システム500の別の例における通知パケット1300のデータ構造)
次に、図16を用いて、図15に示した計算機システム500の別の例における通知パケット1300のデータ構造の一例について説明する。
図16は、計算機システム500の別の例における通知パケット1300のデータ構造の一例を示す説明図である。図16において、通知パケット1300は、CRCと、情報処理装置100ごとのカウンタ値と、IDと、送信元座標と、宛先座標とを含む。
CRCは、通知パケット1300のフッタ部分に含まれる。CRCは、通知パケット1300の誤り検出に用いられる符号である。カウンタ値は、通知パケット1300の本体部分に含まれる。カウンタ値は、情報処理装置100の識別情報ごとに設定される。カウンタ値は、例えば、情報処理装置100の座標ごとに設定される。情報処理装置100ごとのカウンタ値は、情報処理装置100ごとに計測した計測時間である。IDは、通知パケット1300のヘッダ部分に含まれる。IDは、通知パケット1300の識別情報である。
送信元座標は、通知パケット1300のヘッダ部分に含まれる。送信元座標は、通知パケット1300の送信元が存在する計算機システム500上の座標である。送信元座標は、例えば、送信元となる自装置の識別情報である。宛先座標は、通知パケット1300のヘッダ部分に含まれる。宛先座標は、通知パケット1300の宛先が存在する計算機システム500上の座標である。宛先座標は、例えば、宛先となる情報処理装置100の識別情報であって、閾値以上であると判定したパケット800の送信元となる情報処理装置100の識別情報である。
また、パケット800は、カウンタ値に対応付けてフラグVを有してもよい。フラグVは、パケット800に、カウンタ値が設定済みであるか否かを示す情報である。また、パケット800は、宛先座標に対応付けてフラグJを有してもよい。フラグJは、通知パケット1300であることを示す情報である。
別の計算システムにおいて、図16に示した通知パケット1300を用いて、通知パケット1300を転送する情報処理装置100が、通知パケット1300に対して自装置での滞在時間を設定してから転送するようにすることができる。これにより、計算機システム500の別の例の利用者は、通知パケット1300の転送経路上の情報処理装置100でのパケット800の滞在時間を把握することができる。
このとき、情報処理装置100は、Vフラグを参照して、設定済みの滞在時間を上書きしないようにする。また、情報処理装置100は、滞在時間を設定した際には、CRCを再計算して、CRCを上書きする。
(通知処理手順)
次に、図17を用いて、通知処理手順の一例について説明する。情報処理装置100は、図17に示すような通知処理を、CPU201とメモリ202とを用いてソフトウェア的に実現してもよい。
図17は、通知処理手順の一例を示すフローチャートである。図17において、情報処理装置100は、送信バッファ340または受信バッファ310に対するパケット800の入力を受け付ける(ステップS1701)。
次に、情報処理装置100は、送信バッファ340または受信バッファ310に対するパケット800の入力に応じて、パケット800の滞在時間を示すカウンタ値についてカウントアップを開始する(ステップS1702)。そして、情報処理装置100は、送信バッファ340および受信バッファ310に保持されたパケット800を調停し、パケット800が読み出し可能になり、送信されることを検出する(ステップS1703)。
次に、情報処理装置100は、カウンタのカウントアップを停止する(ステップS1704)。そして、情報処理装置100は、自座標と送信元座標とを比較して、読み出したパケット800のホップ数を算出し、複数の閾値のうちのホップ数に対応する閾値を読み出す(ステップS1705)。
次に、情報処理装置100は、カウンタ値が閾値以上であるか否かを判定する(ステップS1706)。ここで、カウンタ値が閾値未満である場合(ステップS1706:No)、情報処理装置100は、通知処理を終了する。
一方で、カウンタ値が閾値以上である場合(ステップS1706:Yes)、情報処理装置100は、読み出したパケット800の識別情報を付与した通信路上の問題発生の通知パケット1300を、パケット800の送信元に送信する(ステップS1707)。そして、情報処理装置100は、通知処理を終了する。これにより、情報処理装置100は、自装置が輻輳して滞在時間を増大させた可能性があるパケット800を識別可能な情報を、当該パケット800の送信元に送信することができる。
以上説明したように、情報処理装置100によれば、第2装置が送信元である送信待ちのいずれかのパケット800について記憶部602における滞在時間を計測することができる。そして、情報処理装置100によれば、計測した滞在時間が、第2装置から自装置までのホップ数に対応する閾値以上であるか否かを判定し、閾値以上であると判定した場合にいずれかのパケット800を識別可能な情報を出力することができる。
これにより、情報処理装置100は、ホップ数が増大したことに起因して滞在時間が増大したにも関わらず、自装置で滞留した可能性があると判定してしまうことを抑制することができる。一方で、情報処理装置100は、滞在時間が所定値よりも大きいパケット800が複数あっても、自装置で滞留した可能性があるパケット800と、ホップ数の増大によって滞在時間の増大を招いたパケット800とを判別することができる。そして、情報処理装置100は、自装置で滞留した可能性があるパケット800を識別可能な情報を出力することができる。
また、情報処理装置100によれば、閾値以上であると判定した場合に、いずれかのパケット800の送信元および宛先のうちの少なくともいずれかに、いずれかのパケット800を識別可能な情報を送信することができる。これにより、情報処理装置100は、計算機システム500の利用者に、自装置でパケット800が滞留した可能性があることを通知することができる。
また、情報処理装置100によれば、閾値以上であると判定した場合に、いずれかのパケット800の送信元からの要求に応じて、いずれかのパケット800を識別可能な情報を当該送信元に送信することができる。これにより、情報処理装置100は、閾値以上であると判定するごとに送信処理を行わなくてもよいため、計算機システム500における通信量の増大化を抑制することができる。
また、情報処理装置100によれば、対応情報103として、ホップ数と、第1装置または第2装置が送信元である送信待ちパケット800を送信する割合と、滞在時間に関する閾値との対応関係を示す情報を用いることができる。そして、情報処理装置100によれば、対応情報103を参照して、計測した滞在時間が、算出したホップ数と所定割合との組み合わせに対応する閾値以上であるか否かを判定することができる。これにより、情報処理装置100は、パケット800の滞在時間が、パケット800のホップ数に応じたスループットのときの滞在時間か、自装置でパケット800が滞留したときの滞在時間かを判別可能になる。
また、情報処理装置100によれば、第2装置が送信元であるパケット800群のうちの同一ジョブにより生成された一連のパケット800のいずれかのパケット800について記憶部602における滞在時間を計測することができる。そして、情報処理装置100によれば、計測した滞在時間が閾値以上であると判定した場合、一連のパケット800が送信されてから、いずれかのパケット800を識別可能な情報を出力する。これにより、情報処理装置100は、ジョブごとに一度にまとめて、ジョブによって生成された一連のパケット800が滞留した可能性があるか否かを示す情報を送信するため、計算機システム500における通信量の増大化を抑制することができる。
また、情報処理装置100によれば、閾値以上であると判定した場合に、いずれかのパケット800を識別可能な情報と、計測した滞在時間とを対応付けて出力することができる。これにより、計測部604は、パケット800が滞留した原因などを解析する際に計算機システム500の利用者に参照されるパラメータを取得することができる。
また、情報処理装置100によれば、対応情報103として、ホップ数の範囲と滞在時間に関する閾値とを対応付けた情報を用いることができる。そして、情報処理装置100によれば、対応情報103を参照して、計測した滞在時間が、第2装置から自装置までのホップ数を含む範囲に対応する閾値以上であるか否かを判定することができる。これにより、情報処理装置100は、ホップ数の一つ一つに対して閾値を記憶しなくてもよいため、対応情報テーブル900のメモリサイズを低減することができる。
また、情報処理装置100によれば、滞在時間についての最小値、最大値、および平均値の少なくともいずれかを算出し、算出した結果を出力することができる。これにより、計測部604は、パケット800が滞留した原因などを解析する際に計算機システム500の利用者に参照されるパラメータを取得することができる。
また、情報処理装置100によれば、第1装置として、自装置を採用し、第2装置として、情報処理装置100とは異なる1以上の装置のそれぞれを採用することができる。これにより、情報処理装置100は、自装置が送信元である送信待ちのパケット800と、他の情報処理装置100が送信元である送信待ちのパケット800とを所定の割合で送信する場合に適応することができる。
また、情報処理装置100によれば、第1装置が送信元である送信待ちのパケット800を保持する第1バッファと、第2装置が送信元である送信待ちのパケット800を保持する第2バッファとを用いることができる。これにより、情報処理装置100は、第1装置が送信元である送信待ちのパケット800と、第2装置が送信元である送信待ちのパケット800とをハードウェア的に分類して処理することができる。
なお、本実施の形態で説明した通信パケット滞留通知方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本通信パケット滞留通知プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本通信パケット滞留通知プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)第1装置が送信元である送信待ちのパケットと、前記第1装置とは異なる第2装置が送信元である送信待ちのパケットとを保持する記憶部と、
前記第1装置が送信元である送信待ちのパケット、または前記第2装置が送信元である送信待ちのパケットを、所定割合にしたがって送信する通信部と、
前記第2装置が送信元である送信待ちのいずれかのパケットについて前記記憶部における滞在時間を計測し、ホップ数と滞在時間に関する閾値との対応関係を示す対応情報を参照して、計測した前記滞在時間が、前記第2装置から自装置までのホップ数に対応する閾値以上であるか否かを判定し、前記閾値以上であると判定した場合に前記いずれかのパケットを識別可能な情報を出力する、制御部と、
を有することを特徴とする情報処理装置。
(付記2)前記制御部は、
前記閾値以上であると判定した場合に、前記いずれかのパケットの送信元および宛先のうちの少なくともいずれかに、前記いずれかのパケットを識別可能な情報を送信する、ことを特徴とする付記1に記載の情報処理装置。
(付記3)前記制御部は、
前記閾値以上であると判定した場合に、前記いずれかのパケットの送信元からの要求に応じて、前記いずれかのパケットを識別可能な情報を当該送信元に送信する、ことを特徴とする付記1に記載の情報処理装置。
(付記4)前記対応情報は、ホップ数と、前記第1装置または前記第2装置が送信元である送信待ちパケットを送信する割合と、滞在時間に関する閾値との対応関係を示す情報であって、
前記制御部は、
前記対応情報を参照して、計測した前記滞在時間が、算出した前記ホップ数と前記所定割合との組み合わせに対応する閾値以上であるか否かを判定する、ことを特徴とする付記1〜3のいずれか一つに記載の情報処理装置。
(付記5)前記制御部は、
前記第2装置が送信元であるパケット群のうちの同一ジョブにより生成された一連のパケットのいずれかのパケットについて前記記憶部における滞在時間を計測する、ことを特徴とする付記1〜4のいずれか一つに記載の情報処理装置。
(付記6)前記制御部は、
前記閾値以上であると判定した場合に、前記いずれかのパケットを識別可能な情報と、計測した前記滞在時間とを対応付けて出力する、ことを特徴とする付記1〜5のいずれか一つに記載の情報処理装置。
(付記7)前記対応情報は、ホップ数の範囲と滞在時間に関する閾値とを対応付けた情報であって、
前記制御部は、
前記対応情報を参照して、計測した前記滞在時間が、前記第2装置から自装置までのホップ数を含む範囲に対応する閾値以上であるか否かを判定する、ことを特徴とする付記1〜6のいずれか一つに記載の情報処理装置。
(付記8)前記制御部は、
前記記憶部に保持された前記第2装置が送信元である送信待ちのパケット群のうちの1以上のパケットのそれぞれについて計測した滞在時間についての最小値、最大値、および平均値の少なくともいずれかを算出し、算出した結果を出力する、ことを特徴とする付記1〜7のいずれか一つに記載の情報処理装置。
(付記9)前記第1装置は、前記情報処理装置であって、
前記第2装置は、前記情報処理装置とは異なる1以上の装置のそれぞれである、ことを特徴とする付記1〜8のいずれか一つに記載の情報処理装置。
(付記10)前記記憶部は、
前記第1装置が送信元である送信待ちのパケットを保持する第1バッファと、前記第2装置が送信元である送信待ちのパケットを保持する第2バッファとを有する、ことを特徴とする付記1〜9のいずれか一つに記載の情報処理装置。
(付記11)コンピュータが、
第1装置が送信元である送信待ちのパケットと、前記第1装置とは異なる第2装置が送信元である送信待ちのパケットとを保持する記憶部に保持された、前記第1装置が送信元である送信待ちのパケット、または前記第2装置が送信元である送信待ちのパケットを、所定割合にしたがって送信し、
前記第2装置が送信元である送信待ちのいずれかのパケットについて前記記憶部における滞在時間を計測し、
ホップ数と滞在時間に関する閾値との対応関係を示す対応情報を参照して、計測した前記滞在時間が、前記第2装置から自装置までのホップ数に対応する閾値以上であるか否かを判定し、
前記閾値以上であると判定した場合に前記いずれかのパケットを識別可能な情報を出力する、
処理を実行することを特徴とする通信パケット滞留通知方法。
(付記12)コンピュータに、
第1装置が送信元である送信待ちのパケットと、前記第1装置とは異なる第2装置が送信元である送信待ちのパケットとを保持する記憶部に保持された、前記第1装置が送信元である送信待ちのパケット、または前記第2装置が送信元である送信待ちのパケットを、所定割合にしたがって送信し、
前記第2装置が送信元である送信待ちのいずれかのパケットについて前記記憶部における滞在時間を計測し、
ホップ数と滞在時間に関する閾値との対応関係を示す対応情報を参照して、計測した前記滞在時間が、前記第2装置から自装置までのホップ数に対応する閾値以上であるか否かを判定し、
前記閾値以上であると判定した場合に前記いずれかのパケットを識別可能な情報を出力する、
処理を実行させることを特徴とする通信パケット滞留通知プログラム。