(57)【要約】      （修正有）【課題】マルチプロセッサで、特定ノード間のリンク負荷が集中した場合にこれを分散させる。【解決手段】データ処理ネットワークにおいてパケット・トラフィックを管理する方法は、ネットワークの相互接続部内の各リンクを通過するパケット・トラフィックの量を示すデータを収集することを含む。収集されたデータは、対応するパケットの送信元および送信先を示す送信元および送信先情報を含む。次いで、収集したデータから、使用頻度の高いリンクを識別する。次いで、使用頻度の高いリンクに関連するパケット・データを分析して、当該使用頻度の高いリンクのパケット送信元およびパケット送信先の組合せを識別する。これに応答して、識別されたパケット送信元およびパケット送信先の組合せに関連するプロセスを、例えばネットワークの別のノードに移行して、該使用頻度の高いリンク上のトラフィックを軽減する。【選択図】図１
2006094464.tif 000002
【特許請求の範囲】
【請求項１】
複数のスイッチおよび複数の相互接続リンクを含む相互接続部を介して相互接続された複数のノードから構成されるデータ処理ネットワークにおいてパケット・トラフィックを管理する方法であって、
選択したリンクを通過するパケット・トラフィックの量を示すデータを収集するステップと、
前記収集したデータから使用頻度の高いリンクを識別するステップと、
前記使用頻度の高いリンクについて収集データを分析して、前記使用頻度の高いリンクのトラフィックの一因となっている送信元ノードおよび送信先ノードの組合せを識別するステップと、
前記識別した送信元および送信先の組合せに関連するプロセスを移行させるステップとを含み、前記移行されたプロセスにより生成されるパケットが、前記使用頻度の高いリンク以外のリンクからなる送信元から送信先までの経路を通過する、方法。
【請求項２】
パケット・トラフィックの量を示すデータを収集するステップが、前記相互接続部内の各スイッチのパケット・データを収集するステップを含む、請求項１に記載の方法。
【請求項３】
前記相互接続部内の各スイッチのデータを収集するステップが、各スイッチ上のエージェントを実行するステップを含み、各スイッチのエージェントが、該スイッチが接続される選択したリンク上のパケット・トラフィックを監視するように構成される、請求項２に記載の方法。
【請求項４】
各スイッチのデータを収集するステップが、各スイッチごとにデータ・テーブルを生成するステップを含み、各データ・テーブルが、当該スイッチに関連する各リンク対ごとにエントリを含み、各エントリが、監視期間の間に対応するリンク対を通過するパケットの数を示す、請求項３に記載の方法。
【請求項５】
各リンク対エントリが、当該スイッチに関連する入力リンクおよび出力リンクの一意的な組合せに対応する、請求項４に記載の方法。
【請求項６】
送信元および送信先の組合せに関連するプロセスを移行させるステップが、別の送信元ノードにプロセスを移行させるステップを含み、前記別の送信元ノードと前記送信先ノードとを接続する経路が前記使用頻度の高いリンクを含まない、請求項５に記載の方法。
【請求項７】
収集したデータを分析するステップが、関連する送信元および送信先の情報の最も多く見られる組合せを識別するステップを含む、請求項１に記載の方法。
【請求項８】
マルチプロセッサ・ネットワークであって、
一組のノードと、
前記ノードが互いに通信することを可能にする、前記ノードのそれぞれが接続される一組のスイッチおよび相互接続リンクと、
選択したリンクを通過するパケットの数を示すリンク・データを収集する手段と、
前記リンク・データから使用頻度の高いリンクを識別する手段と、
前記リンク・データを分析して、前記使用頻度の高いリンクを通過するパケットを発生させる候補プロセスを識別する手段と、
候補プロセスのマッピングを第１のノードから第２のノードに変更する手段とを含み、前記候補プロセスが発生させるパケットは、前記第２のノードにマップされると、前記使用頻度の高いリンクを迂回する経路を通る、マルチプロセッサ・ネットワーク。
【請求項９】
前記相互接続リンクはそれぞれ、１つの送信元装置を１つの送信先装置に接続するものであり、前記送信元装置および前記送信先装置は、前記一組のノードおよび前記一組のスイッチから選択される、請求項８に記載のネットワーク。
【請求項１０】
リンク・データを収集する前記手段が、前記一組のスイッチのそれぞれにインストールされるエージェントを含み、各エージェントが、対応するスイッチが接続されるリンクのうちの少なくとも一部分についてのパケット・データを収集するように構成される、請求項９に記載のネットワーク。
【請求項１１】
エージェントが収集したパケット・データが、対応するリンクを通過する各パケットごとに、当該パケットの送信元および送信先を示す送信元および送信先データを含む、請求項１０に記載のネットワーク。
【請求項１２】
各エージェントが、前記一部分のリンクのそれぞれについてデータ・テーブルを生成するように構成され、各データ・テーブルが、対応するリンクを通過する各パケットごとにエントリを有し、データ・テーブル中のエントリ数が、対応するリンクを通過するパケットの総数を示す、請求項１１に記載のネットワーク。
【請求項１３】
使用頻度の高いリンクを識別する前記手段が、指定閾値を超えるパケット総数を有するリンクを識別する手段を含む、請求項１２に記載のネットワーク。
【請求項１４】
リンク・データを分析する前記手段が、送信元データおよび送信先データの組合せに従ってパケット・データを評価して、頻繁に現れる送信元と送信先の組合せを識別する手段を含む、請求項１３に記載のネットワーク。
【請求項１５】
前記リンク・データが、パケットの送信元および送信先を示す情報を含まず、リンク・データを分析する前記手段が、送信元ノードおよび送信先ノードの組合せが識別されるまで連続的に最も可能性の高い直前および直後のネットワーク装置を決定する手段を含む、請求項１０に記載のネットワーク。
【請求項１６】
複数のスイッチおよび複数の相互接続リンクを含む相互接続部を介して相互接続された複数のノードで構成されたデータ処理ネットワークにおいてパケット・トラフィックを管理する、コンピュータ可読媒体に記憶されるコンピュータ・プログラムであって、
選択したリンクのパケット・トラフィックの量を示すデータを収集する、選択したスイッチ上のコンピュータ・コード手段と、
収集したデータを分析して、使用頻度の高いリンク上のトラフィックの一因となっている送信元ノードおよび送信先ノードの組合せを識別するコンピュータ・コード手段と、
識別した送信元および送信先の組合せに関連するプロセスを移行させて、使用頻度の高いリンク上のトラフィックを軽減するコンピュータ・コード手段とを含む、コンピュータ・プログラム。
【請求項１７】
パケット・トラフィックの量を示すデータを収集することが、相互接続部内の各スイッチについてのパケット・データを収集することを含む、請求項１６に記載のコンピュータ・プログラム。
【請求項１８】
相互接続部内の各スイッチについてのデータを収集することが、スイッチ上のエージェントを実行することを含み、各スイッチ・エージェントが、当該スイッチが接続される選択したリンク上のパケット・トラフィックを監視するように構成される、請求項１７に記載のコンピュータ・プログラム。
【請求項１９】
各スイッチについてのデータを収集することが、当該スイッチが監視している各リンクについてデータ・テーブルを生成することを含み、前記データ・テーブルが、送信元ノードおよび送信先ノードの各組合せに対応するエントリを含む、請求項１８に記載のコンピュータ・プログラム。
【請求項２０】
各パケット中の送信元情報が、前記ネットワークの送信元ノードを識別し、各パケット中の送信先情報が、送信先ノードを識別する、請求項１９に記載のコンピュータ・プログラム。
【請求項２１】
送信元および送信先の組合せに関連するプロセスを移行させることが、別の送信元ノードにプロセスを移行させることを含み、前記別の送信元ノードと前記送信先ノードとを接続する経路が、前記使用頻度の高いリンクを含まない、請求項２０に記載のコンピュータ・プログラム。
【請求項２２】
パケット・トラフィック・データが、対応するパケットの送信元ノードまたは送信先ノードを示さず、収集したデータを分析する前記コード手段が、最も可能性の高い送信元ノードおよび送信先ノードの組合せが識別されるまで、連続的に最も可能性の高い直前および直後のネットワーク装置を識別するコード手段を含む、請求項１６に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＰＥＲＣＳの第１フェーズによって与えられたＮＢＣＨＣ０２００５６により、政府援助を得てなされたものである。政府は本発明における一定の権利を有する。(This invention was made with Government support under NBCHC020056 awarded by PERCS phase 1.  THE GOVERNMENT HAS CERTAIN RIGHTS IN THIS INVENTION.)
【０００２】
本発明は、データ処理ネットワークの分野に関し、より詳細には、マルチプロセッサ・ネットワークにおけるネットワーク・パケットのルーティングの管理に関する。
【背景技術】
【０００３】
相互接続部を介して複数のノードを相互接続したマルチプロセッサ・システムでは、相互接続部(interconnect)を使用して、計算に関するデータやＩ／Ｏ要件に関するデータなど様々なデータを転送することができる。従来のネットワークでは、プロセスまたはスレッドとそれらに対応するノードとの間のマッピングに特に注目しておらず、システムの相互接続部の利用状況が最適とは言えないことがある。相互接続部において、特定の物理リンクばかりが集中的に使用され、他のリンクがほとんど使用されていないこともある。このような集中的に使用されるリンクを通過するパケットの数がそのリンクの帯域幅制限に近づくと、その他のリンクの帯域幅に余裕がある状況でも、ネットワークの性能すなわち応答時間が低下する可能性がある。相互接続部の利用バランスが崩れたときにプロセスを移行(migrate)させ、より均一に物理リンクにパケットを分配することができる方法、システムおよびネットワークを実施することが望ましい。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
ネットワークが比較的少数のノードおよび相互接続リンクからなる場合には、必要が生じた場合にどのプロセスを移行させるのが有利であるかを決定するタスクは、かなり管理しやすい。しかし、ノードおよび相互接続リンクの数が増えると、望ましくない相互接続部の利用パターンを識別して補正する作業は、急激に困難になる。したがって、ネットワーク利用状況のアンバランスに対処しようとするいかなるシステムまたは技術も、その解決策がノード数および相互接続部内のスイッチ数の影響を比較的受けないようにスケーラブルでなければならない。
【課題を解決するための手段】
【０００５】
確認されたこれらの目的は、本発明によるデータ処理ネットワークにおいてパケット・トラフィックを管理する方法によって達成される。この方法は、ネットワークの相互接続部内の各リンクを通過するパケット・トラフィックの量を示すデータを収集することを含む。収集されたデータは、対応するパケットの送信元および送信先を示す送信元および送信先情報を含む。次いで、収集したデータから、一組の使用頻度の高いリンクを識別する。次いで、使用頻度の高いリンクに関連するパケット・データを分析して、当該使用頻度の高いリンク上のパケット・トラフィックの有意な一因となっているパケット送信元およびパケット送信先の組合せを識別する。これに応答して、識別されたパケット送信元およびパケット送信先の組合せに関連するプロセスを、例えばネットワークの別のノードに移行して、該使用頻度の高いリンク上のトラフィックを軽減する。一実施形態では、各相互接続スイッチにインストールされたエージェントが、そのスイッチに接続された相互接続リンクについてのパケット・データを収集する。エージェントは、監視している各リンクごとにデータ・テーブルを生成する。データ・テーブルは、監視期間中にリンクを通過する各パケットごとにエントリを含む。各エントリは、対応するパケットに関連する送信元および送信先の情報を含む。送信元情報は、ネットワークの送信元ノードを識別することができ、送信先情報は、送信先ノードを識別することができる。特定の送信元および送信先の組合せに関連するプロセスの移行は、それを送信先ノードに接続する経路が使用頻度の高いリンクを含まないような別の送信元ノードにプロセスを移行することを含むことができる。
【０００６】
本発明のその他の目的および利点は、以下の詳細な説明を読み、添付の図面を参照すれば、明らかになるであろう。
【０００７】
本発明は様々な修正を施すことができ、また代替の形態をとることもできるが、例示を目的として、本発明の特定の実施形態を図面に示し、それらの実施形態について本明細書で詳細に述べる。ただし、図面および本明細書の詳細な説明は、開示した特定の実施形態に本発明を限定するためのものではなく、本発明は、添付の特許請求の範囲において定義する本発明の趣旨および範囲に含まれるあらゆる修正形態、均等物および代替形態を含むものとする。
【発明を実施するための最良の形態】
【０００８】
概して言えば、本発明は、マルチプロセッサ・データ処理ネットワーク、およびネットワークの相互接続部の利用状況を最適化して、比較的少数の物理相互接続リンクが過剰利用されることによる性能低下を防止または軽減する方法に関する。本発明では、ネットワーク内のパケット・トラフィックを管理して、そのピアを有意に超えるトラフィックを搬送するリンクが生じないようにパケット・トラフィック負荷を分配する。これを行うために、相互接続部のトラフィックを監視し、様々なグループに分類し、各グループには送信元識別子および送信先識別子を付けておく。この情報は、システム・ソフトウェアに定期的に報告される。システム・ソフトウェアは、各相互接続スイッチから得られる「ローカル」統計量をアセンブルして、ボトルネック・リンクを通る送信元送信先間通信の大域ビューを得る。これらのリンクを通過する全ての送信元送信先対について、システム・ソフトウェアは、トラフィックが別のリンクにルーティングされるようにプロセス・ノード・マッピングを変更する。
【０００９】
ここで図面を参照すると、図１は、本発明の一実施形態によるデータ処理ネットワーク１００の要素をいくつか選択して示す図である。ネットワーク１００は、２つ以上のプロセッサが協働して特定の機能を実現する、または特定のタスクを実行する多重処理ネットワークとして特徴付けることができる。例えばウェブ・センタに適用すると、ネットワーク１００を含む複数のシステムが、ウェブ・サイトまたはその他のウェブでアクセス可能なサービスを、集合的にユーザに対して提供することができる。また、ネットワーク１００は、データベース・サービスまたは特定のアプリケーションを提供することもできる。この場合には、ネットワーク１００は、インターネットなど、それより大きなネットワークの中で、それ自体がノードとして機能することもある。
【００１０】
図１に示すように、ネットワーク１００は、相互接続部１１０を介して相互接続された複数のデータ処理システム１０１〜１０８（本明細書ではノード１０１〜１０８とも呼ぶ）を含む。図１に示すように、各ノード１０１〜１０８は、一対の論理接続で相互接続部１１０に接続される。ノードと相互接続部１１０の間の第１の接続１２１（ノード１０１とともに示す）は、その他のノードからのメッセージを伝達し、該ノードと相互接続部の間の第２の接続１２２は、相互接続部１１０を介してその他のノードにメッセージを伝達する。第１の接続１２１および第２の接続１２２は、本願の状況ではそれらの機能が異なることを強調するために、図１では別個に示しているが、共通の物理リンクまたは物理接続を用いて接続１２１および１２２を実施することもできることに留意されたい。
【００１１】
一実施形態では、ノード１０１〜１０８は全て、ほぼ同じハードウェアおよびシステム・ソフトウェアを有する。図４に示すように、各ノード１０１〜１０８は、１つまたは複数の汎用マイクロプロセッサ４０２を含み、汎用マイクロプロセッサ４０２は、マイクロプロセッサ４０２が共有するシステム・メモリ４０４に共用システム・バス４０５を介してアクセスすることができる。さらに、各ノード１０１〜１０８は、システム・バス４０５と、アダプタ４１２および４１４など１つまたは複数の周辺アダプタが接続される周辺バス４１０との間のインタフェースをとるブリッジ４０６を含むことができる。一般的な例として、ノード１０１〜１０８の周辺アダプタは、ネットワーク・インタフェース・アダプタと、システム内の永続的記憶装置に対するアクセスを実現するハード・ディスク制御装置とを含むことができる。
【００１２】
一実施形態では、ネットワーク１００は、キャッシュ・コヒーレントな不均等メモリ・アーキテクチャ（ＮＵＭＡ : non-uniform memory architecture）を有するものとして特徴付ける。ＮＵＭＡシステムでは、特定のノードのプロセッサは、そのノードのシステム・メモリに対する「ローカル」アクセスを有する。プロセッサは、ネットワーク１００上のその他のノードのシステム・メモリに対しては「遠隔（リモート）」アクセスを有する。このメモリ・アーキテクチャは、ローカル・アクセスの待ち時間が遠隔アクセスの待ち時間より短いことから、不均等（non-uniform）と呼ばれる。ネットワーク１００のＮＵＭＡ実施態様では、図１の相互接続部１１０は、介在する制御装置を介して各ノード１０１のシステム・バス４０５に直接接続することができる（ＬＡＮノード同士が周辺バスまたはＩ／Ｏバスに接続されたアダプタを介して通信する従来のＬＡＮとは異なる）。
【００１３】
次に図２を参照すると、図１のネットワーク１００が、相互接続部１１０の構造を強調してさらに詳細に示してある。図２に示す実施態様では、相互接続部１１０は、各ノードからその他の各ノードまでの間に一意的な経路が存在するようにノード１０１〜１０８を相互接続する一組のスイッチ２０１〜２１２を含む。スイッチ２０１〜２１２はそれぞれ、２つの装置からの入力を受け、別の２つの装置に対して出力を行う。したがって、各スイッチは、２つの装置のいずれかからのメッセージを、２つの出力側装置のいずれかに対してルーティングすることができる。スイッチを接続することができる装置は、ノード、または別のスイッチである。各スイッチにつながる接続および各スイッチから延びる接続を、本明細書では「相互接続リンク」、または単に「リンク」と呼ぶ。したがって、各リンクは、１つの相互接続装置を別の１つの相互接続装置に接続する。
【００１４】
図示の実施態様では、特定数のノードおよびスイッチを示し、各スイッチは２つの入力側装置（スイッチの左側の装置）と２つの出力側装置（スイッチの右側の装置）の間の接続を実現するものとして示しているが、これより多数のノードおよびスイッチを備え、より複雑なスイッチを有する（すなわち３つ以上の入力側装置と３つ以上の出力側装置を相互接続するスイッチを有する）実施態様など、その他の実施態様も本発明に含まれる。図示の実施態様は、比較的管理しやすいネットワークに関連する本発明の概念を示すために与えたものである。
【００１５】
本発明を説明するために、いくつかのネットワーク・パケットが相互接続部１１０を通過した、または通過している時点におけるネットワーク１００を図２に示してある。パケットが送り出されるノードを「送信元（source）ノード」と呼び、パケットが送られるノードを「送信先（destination）ノード」と呼ぶ。分かりやすくするために、例示的なパケットが通過する相互接続リンクを実線で示し、残りのリンクを点線で示す。各リンクを通過するパケットの数は、各当該リンクに重ねて示す長円の中の数字で示す。
【００１６】
図示の例では、ノード１０４はノード１０５に対して３０個のパケットを送信し、ノード１０６はノード１０５に対して５０個のパケットを送信し、ノード１０８は、ノード１０６に対して２０個のパケットを、ノード１０７に対して１０個のパケットを送信する。例えば、ノード１０４が送信する３０個のパケットは、ノード１０４からスイッチ２０４まで延びるリンク２１５を通過する。スイッチ２０４は、各パケットに含まれる送信先情報に基づいて、これら３０個のパケット（ならびにノード１０８から受信したその他の３０個のパケット）を、リンク２１６を介してスイッチ２０８にルーティングする。スイッチ２０８は、スイッチ２０４から受信したパケットのうちの５０個（ならびにスイッチ２０２から受信した５０個のパケットを合わせて合計１００個のパケット）を、リンク２２０を介してスイッチ２１１にルーティングする。最後に、スイッチ２１１が、８０個のパケット（ノード１０４からのパケット３０個を含む）を、リンク２１７を介してノード１０５にルーティングする（残り２０個のパケットはリンク２１８を介してノード１０６にルーティングする）。相互接続部１１０を介して送信されるパケットはそれぞれ、少なくとも送信元識別子および送信先識別子を含む。この簡略化した図では、例えば、スイッチ２０８からスイッチ２１１に対してリンク２２０を介して１００個のパケットが送信されているが、残りのリンクで８０個を超えるパケットを搬送しているものは存在せず、多くのリンクはパケットを全く搬送していないことが分かる。
【００１７】
本発明は、システムがリンク２２０などの使用頻度の高いリンクを識別して、高い使用頻度の一因になっていると考えられる１つまたは複数のプロセスを移行させて当該リンクのパケット負荷を軽減する（例えばそこから指定の送信先までの経路が当該使用頻度の高いリンクを通らないノードに当該プロセスを移行する）ことができるようにするデータを生成することに関する。本発明の利点の１つは、そのスケーラビリティである。すなわち、本発明は、使用頻度の高いリンクを識別する作業の複雑さが、ノードおよびスイッチの数の増加に比例して直線的に増すだけとなるように実施される。この利点は、各スイッチでパケット・データを収集することにより得られる。これに対して、送信元ノードおよび送信先ノードのみでパケットを評価することによって使用頻度の高いリンクを決定しようとする方法では、ノードおよびスイッチの数が増えるにつれて、指数関数的に複雑さが増すことになる。
【００１８】
本発明の一部は、コンピュータ可読媒体に記憶した一連または一組のコンピュータ実行可能命令（コンピュータ・ソフトウェア）として実施することができる。コンピュータ可読媒体は、ハード・ディスクや読取り専用メモリ（ＲＯＭ）デバイス、ＣＤまたはＤＶＤディスク、磁気テープなど、永続的記憶媒体にすることができる。実行中には、ソフトウェアの一部は、ＤＲＡＭシステム・メモリやＳＲＡＭキャッシュ・メモリなどの揮発性記憶媒体内に存在することができる。このような一実施形態では、コンピュータ・ソフトウェアは、図１に示すネットワーク１００などのデータ処理ネットワークがそのネットワーク・リンクの使用状況を最適化することを可能にする機能を提供する。
【００１９】
図３を参照すると、本発明の一実施形態による実行中のプロセスまたはスレッドをデータ処理ノードにマッピングする方法３００の流れ図が示してある。図示の実施形態では、方法３００では、図２の相互接続部１１０などネットワーク相互接続部の各スイッチにおけるパケット統計量を収集する（ブロック３０２）。ここで図５を参照すると、一実施態様による各相互接続リンクごとに収集した統計量の概念図が示してある。この概念図では、データベースまたはテーブル５０１は、相互接続１１０（図２）の各リンク（リンク２２０など）ごとに作成され、保持される。
【００２０】
各スイッチ２０１から２１２は、テーブル５０１など、当該スイッチが接続される各リンクごとのテーブルを保持するのに十分な資源および機能を含む。資源の利用を節約するためには、大部分のスイッチは、その１つまたは複数の出力に接続された１つまたは複数のリンク、またはその１つまたは複数の入力に接続された１つまたは複数のリンクをトラッキングするだけでよい。例えば図２を参照して、各スイッチがその入力に接続された全てのリンクに関する統計量を保持している場合には、トラッキングされないリンクは、スイッチ２０９から２１２の出力に接続されたリンクだけであることは明らかであろう。同様に、各スイッチがその出力リンクに関する統計量を保持している場合には、トラッキングされないリンクは、スイッチ２０１から２０４への入力リンクのみである。相互接続部の利用パターンを完全にカバーするためには、あるスイッチのサブセットが、その入力リンクおよび出力リンクに関するデータを保持していなければならない。各スイッチがどのリンクをトラッキングするかは、ネットワーク１００および相互接続部１１０の構成を認識しているシステム・ソフトウェアが決定することが好ましい。
【００２１】
したがって、一実施形態によれば、各スイッチは、対応するスイッチが処理する、またはこれを通過するパケットをトラッキングすることができるエージェント（通常はソフトウェアまたはファームウェアで実施される）を含む。図２では、これらのパケット・トラッキング・ソフトウェア・エージェントを、参照番号２３０で示す実行可能ソフトウェア・コードで表す（分かりやすくするために、いくつかのスイッチではエージェント２３０を省略してある）。図５に戻ると、これらのスイッチ・エージェントが保持するテーブル５０１は、リンク識別子５０２および一組のエントリ５０３を含む。各エントリ５０３は、送信元識別子５０４および送信先識別子５０６を含む。
【００２２】
各パケット通過相互接続部１１０は、少なくとも、パケットの送信元およびその送信先を示す指示を含む。送信元および送信先は、実行中のプロセスもしくはスレッドまたは処理ノード、あるいはその両方によって識別することができる。さらに、各エントリはカウント５０８を含む。これは、その名が示す通り、エントリ５０３に関連する送信元識別子および送信先識別子を有する対応するリンク上のパケット発生数を示す。図示の各テーブル５０１の実施形態では、全てのカウント値５０８の合計カウント５０９も保持する。
【００２３】
したがって、テーブル５０１は、特定のリンクを通過するパケット数を示す情報、ならびにそれらのパケットの送信元および送信先に関する情報を提供する。図３に戻ると、パケット統計量は、指定された時間または期間、収集され、保持される。次いで、システム・ソフトウェアは、現在の指定期間が経過したかどうかを判定し（ブロック３０４）、経過していなければ、各スイッチのエージェントはパケット統計量の収集を継続する。指定期間が経過している場合には、システム・ソフトウェアは、各テーブル５０１のパケット統計量を収集または累積して（ブロック３０６）、累積データベースにする。システム・ソフトウェアは、ネットワーク・ノードの１つまたは複数に存在しているアプリケーションまたはオペレーティング・システムのコードを参照する。図２では、本開示で参照するシステム・ソフトウェアは、ノード１０１にインストールされ、参照番号２４０で示してある。システム・ソフトウェア２４０は、その他の任意のネットワーク・ノードにインストールすることも、あるいは複数のノードにインストールされる分散型アプリケーションにすることもできることは理解されるであろう。
【００２４】
次いで、システム・ソフトウェア２４０は、使用頻度が高いリンクであると考えられる相互接続部１１０内のリンクを識別または選択する（ブロック３０８）。どのリンクの使用頻度が高いかを決定する方法は実施態様によって決まるが、通常は、あるリンクを介して送信されたパケットの総数に基づいて行う。この決定は、何らかの指定閾値に基づいて行うことも（例えばパケット数がＫを超える、など）、比較尺度基準に基づいて行うことも（例えばパケット数がその他の任意のリンクのパケット数より少なくとも１０％多い、など）、あるいはこの２つを組み合わせて行うこともできる。
【００２５】
使用頻度の高いリンクを識別した後で、システム・ソフトウェアは、リンクを通過するパケットを分析して、頻繁に現れる送信元識別子と送信先識別子の組合せを識別する（ブロック３１０）。頻繁に現れる送信元／送信先の組合せは、移行候補となるプロセスまたはスレッドを識別するものである。移行候補は、別の送信元または送信先あるいはその両方に移行させた場合に、当該使用頻度の高いリンクのパケット・トラフィックを軽減する可能性のあるプロセスを表している。例えば、頻繁に現れる送信元／送信先の組合せの送信元識別子が特定のノードにマップされる特定のプロセスを示している場合には、この示されたプロセスは、別のノードに移行する候補とすることができる。この状況・文脈では、「移行（migration）」とは、システム・ソフトウェアがプロセスを代替のノードにマップし直すプロセスを意味している。使用頻度の高い相互接続リンクのパケット・トラフィックの所望の軽減を達成するためには、当該使用頻度の高いリンクを含まない相互接続経路を用いて送信先にパケットを送信することができるノードに、当該プロセスをマップし直す。
【００２６】
図２に戻ると、例えば、リンクごとのパケット・データを分析すると、リンク２２０が使用頻度の高いリンク、またはボトルネット・リンクであると識別される。リンク２２０に対応するパケット・データをさらに分析すると、ノード１０６を送信元とし、ノード１０５を送信先とする組合せが、リンク２２０上に見られる１００個のパケットのうち５０個を占めることが分かる。次いで、これに応答して、システム・ソフトウェアは、ノード１０６上で実行されているプロセスを、移行候補として識別する。システム・ソフトウェアは相互接続部１１０の構成を認識しており、したがって、この候補プロセスをどこに移行させることができるかを知っている。具体的には、システム・ソフトウェアは、候補プロセスを、この処理中に別の使用頻度の高いリンクを生み出すことなく使用頻度の高いリンクのパケット・トラフィックを軽減する送信元ノードに移行させようとする。図２では、これらの目的は、ノード１０６で実行されているプロセスをノード１０１に移行することによって達成することができる。ノード１０１から発生してノード１０５を送信先とするパケットは、ノード１０５に到達するためには、スイッチ２０１、２０６および２１１を通過しなければならない。このスイッチ経路に関連するリンクは、リンク２２０を含まず、また有意なトラフィックが観測されるその他の任意のリンクも含まない。この場合には、ノード１０６からノード１０１にプロセッサを移行することにより、残りのリンクのいずれも過負荷状態にすることなく、リンク２２０のトラフィックを軽減することができる。ボトルネック・リンクを解消し、過負荷の一因となる負荷を分散させることにより、本発明では、パケット・トラフィックの効果的な管理を実現する。
【００２７】
上記の実施態様は、各パケットが送信元／送信先の情報（すなわち各パケットの送信元ノードおよび送信先ノードを示す情報）を有することに依拠するものである。この実施態様は、それほど複雑でないネットワーク構成においては有用性が高いが、スケーラビリティが制限されることがある。具体的に言うと、ノード数が増えるにつれて、送信元ノードおよび送信先ノードにより指示されるパケット情報を保持する作業の複雑さが指数関数的に増していく。数百ないし数千ものノードを含む非常に大規模なネットワークでは、図５を参照して上述したような方法でパケット情報を保持することが非効率的になる、または実行不可能になる可能性がある（すなわち上述のようにパケット情報を保持できるだけの十分な記憶能力または処理能力をスイッチが有することができない可能性がある）ことは理解されるであろう。
【００２８】
このような起こりうるスケーラビリティの問題への対処として、本発明の一実施形態では、縮小または簡略化したパケット情報セットを保持し、ネットワーク構成に関する知識を有するシステム・ソフトウェアによって任意のボトルネック・リンクの一因になる可能性が最も高い送信元／送信先の組合せを識別する。各リンクについて保持するパケット情報を大幅に簡略化することにより、この実施形態では、スケーラビリティの概念を完全に包含する。ネットワーク中のノード、スイッチおよびリンクの数が増加しても、任意の個々のリンクが保持するパケット情報はほぼ一定のままである。
【００２９】
次に図７を参照すると、上述のテーブル５０１に似た、この実施形態によるスイッチ・エージェントが保持するテーブル７０１の実施態様が示してある。図示の実施態様では、各テーブル７０１は、スイッチ２０１〜２１２のうちの１つに対応するファイルを表し、当該スイッチを識別する情報７０４を含む。別法では、情報７０４を省略し、各テーブル７０１に関連するスイッチを、ファイル位置であるファイル名で示す。
【００３０】
この実施態様では、各エントリ７０３は「リンク対」に対応し、当該リンク対を識別する情報７０２と、情報７０８が最後にクリアされたときから現在までに対応するリンク対（すなわち情報７０２で識別されるリンク対）を通過したパケット数を示すカウント情報７０８とを含む。リンク対は、入力リンクと出力リンクの一意的な組合せである。例えば、あるスイッチが２つの入力リンクおよび２つの出力リンクに接続されている場合には、このスイッチに関連する一意的なリンク対は４対存在する。
【００３１】
図２を参照して、例えば、リンク対２２２／２２０、２２２／２２１、２１６／２２０および２１６／２２１上のパケットのトラッキングを割り当てられているスイッチ２０８に対応するテーブル７０１は、リンク対２２２／２２０に関する第１のエントリ７０３や、リンク対２２２／２２１に関する第２のエントリ７０３などを含むことになる。さらに、リンク対２２２／２２０に関する第１のエントリ７０３は、リンク２２２からリンク２２０に渡されるパケット数を反映する５０というカウント値７０８を含み、第２のエントリ７０３は、リンク２２２からリンク２２１に渡されるパケットが存在しないことを反映する０というカウント値７０８を含むことになる。同様に、リンク対２１６／２２０および２１６／２２１に関するエントリも、それぞれ５０および１０となる。重要な点は、テーブル７０１が送信元ノード／送信先ノードの情報を含まないことである。各パケットの送信元ノードおよび送信先ノードを決定した後に、どのテーブル・エントリを増分させるかを決定すると、不要に長い時間が必要となり、また不要に大量の記憶領域がスイッチ内に必要となることがある。これを行う代わりに、各スイッチは、そのリンク対のうちの１つをパケットが通過したと判定し、当該リンク対に応じてテーブル７０１を指し示し、そのエントリのカウント値７０８を増分させるだけでよい。図７に示しこれに関連して説明したように適当な情報をテーブル７０１に記録するために必要とされる処理の量は、図５に示した実施形態により実施したスイッチを通過する各パケットを処理するのに必要な時間より大幅に少ないことは理解されるであろう。このことは、多数のノードを有する大規模ネットワークに特に当てはまる。
【００３２】
図７に従って実施されるパケットの監視およびトラッキングでは、移行候補となるプロセスを識別するための追加処理がシステム・レベルで必要となる。この実施形態では、ネットワーク構成に関する知識またはこれに対するアクセス権を有するソフトウェアは、各ネットワーク・スイッチのテーブル７０１に記憶されたパケット情報を使用して、ボトルネック・リンク、または有意なトラフィックを示しているその他の任意のリンクを通過するパケットについての最も可能性の高い送信元送信先間経路を決定する。ボトルネック・リンクは、適当なリンク対カウントを追加して個々のリンクのパケット・カウントを得ることにより識別される（例えば、スイッチ２０８のテーブル中のリンク対２２２／２２０およびリンク対２１６／２２０についてのエントリを追加して、リンク２２０についてのパケット・カウントを得る）。このようにして可能性の高い送信元送信先間経路を識別すると、次いで、ソフトウェアは、当該送信元ノードおよび送信先ノードに関連する１つまたは複数のプロセスを選択し、移行を行う。移行は、プロセスと、そのプロセスが実行されるノードとの間の関連付けをマップし直すことを含むことがある。移行先のノードは、そのノードからのプロセスが当該送信先ノードに向かうトラフィックを発生させたときに、ボトルネック・リンクを含まないネットワーク・スイッチ／リンク経路を通過するノードであることが好ましい。この実施態様の利点は、スイッチ２０１〜２１２で必要とされる処理管理またはデータベース管理あるいはその両方が大幅に減少することである。この実施態様による各スイッチは、各パケットの最初の送信元または最終的な送信先を顧慮することなく、そのスイッチが対応する各リンク対を通るパケットの数を単純にトラッキングするだけである。この手法の副次的な利点は、スイッチ・エージェントがネットワーク構成の変化に左右されないことである。ノードまたはスイッチあるいはその両方が追加または除去され、リンクが追加または除去された場合に、各スイッチ２０１〜２１２におけるリンク対カウント情報のローカル・トラッキングは変化しない。システム・ソフトウェア２４０（図２）のみが、ネットワークの変化を認識していればよい。
【００３３】
図６を参照すると、本発明の一実施形態によるネットワークを管理する方法６００の実施形態を示す流れ図が示してある。図示の実施形態では、各スイッチで、ローカルなパケット統計量を収集する（ブロック６０２）。この実施態様で収集されるパケット情報は、各リンクを通過するパケット数のみを含むことが好ましく、監視した各パケットの送信元ノードまたは送信先ノードあるいはその両方とも含まないことが好ましい。パケット情報は、図７を参照して上述したようにスイッチに関連するリンク対ごとにローカルに収集および記憶することができる。図示の実施形態では、パケット統計量は、ブロック６０４に示すように、指定の時間または期間収集される。
【００３４】
監視時間は実施態様に応じて周期的であっても非周期的であってもよいが、各監視時間が終了するときに、各スイッチ２０１〜２１２についてのリンク統計量を、好ましくはシステム・ソフトウェア２４０が記憶される、または実行されるノード上の中央データベースに収集する（ブロック６０６）。次いで、中央データベースのデータに基づいて、１つまたは複数の使用頻度の高いリンクを識別する（ブロック６０８）。
【００３５】
この実施形態における使用頻度の高いリンクの選択は、その前の監視期間の間に各リンクを通過したパケット数に応じて、単純にリンクを順序付けまたは分類することを含むことができる。図７に関連して上述したようにリンク統計量がリンク対ごとにローカルに監視および記憶される場合には、ブロック６０６におけるリンク統計量の蓄積は、適当なリンク対値のカウントを追加することによってリンク対データから個々のリンク統計量を得ることを含むことができる。その後、１つまたは複数の最もトラフィックの大きいリンクを識別する（ブロック６０８）。各期間に使用頻度が高いとして識別されるリンクの数は、実施態様によって様々である可能性がある。実施態様によっては、使用頻度が高いリンクとして認定する必要のあるパケットの最小数を規定するパケット数閾値を含むこともできる。この場合には、使用頻度が高いと認定されるリンクが存在しない（すなわちプロセス移行が不要な）監視期間があることもある。
【００３６】
しかし、リンクを通過するパケット数に基づいて、１つまたは複数のリンクが使用頻度が高いリンクとして識別された場合には、システム・ソフトウェア２４０を呼び出して、システム・ソフトウェア２４０がアクセス権を有するネットワーク構成情報を、図７に示す簡略なリンク対データ・セットと併せて分析することにより、プロセス移行の潜在候補を識別する。システム・ソフトウェア２４０は、特定の使用頻度の高いリンクについて、最も可能性が高いその直前のスイッチまたはノードおよび最も可能性が高いその直後のスイッチまたはノードを決定するという方法により、移行候補を識別することができる。この方法は、複雑さが解消されているため望ましい。図２に戻ると、例えば、システム・ソフトウェア２４０は、１つまたは複数のスイッチ（好ましくは全てのスイッチ）についてのリンク統計量を収集した後で、リンク２２０を使用頻度が高いリンクとして識別する。これは、そのリンクがネットワーク中のそのほかのどのリンクよりも多くのパケットを搬送しているからである。
【００３７】
このようにリンク２２０を使用頻度が高いリンクとして決定した後で、システム・ソフトウェア２４０は、最も可能性が高い直前のリンクを最大のトラフィックを搬送した入来(incoming)リンクとして決定する。この情報も、収集したリンク統計量情報に含めることができる。図示の例では、リンク２２０を介してパケット・トラフィックを送信するスイッチ２０８は、ネットワーク構成情報に対するアクセス権を有するシステム・ソフトウェア２４０が決定することができる２本の入来リンク、すなわちリンク２１６およびリンク２２２からパケットを受信する。次いで、システム・ソフトウェア２４０は、各入来リンク上のパケット数を単純に比較することにより、最も可能性の高い直前の推知を識別する。したがって、システム・ソフトウェア２４０は、リンク２１６がリンク２２２より多くのトラフィックを直前の監視期間の間に搬送したことを認識することができる。次いで、システム・ソフトウェア２４０は、スイッチ２０４が、スイッチ２０８に到達するパケット移動において最も可能性の高い直前のスイッチであると決定することができる。このようにして、システム・ソフトウェア２４０は、最も可能性の高い直前および直後のスイッチまたはノードを連続的に決定することにより、スイッチ２０８の前後について処理を行い、最終的に、識別した使用頻度の高いリンク２２０上のパケット・トラフィックの一因となっている可能性が最も高い送信元ノードおよび送信先ノードの組合せとして、送信元がノード１０４、送信先がノード１０５であることを決定することができる。
【００３８】
この例では、スイッチ２０４（ここで論じているスイッチ２０８の最も可能性の高い直前のスイッチ）の直前である可能性が最も高いノードまたはスイッチを決定することにより、興味深い例が得られる。具体的には、スイッチ２０４についてのパケット統計量は、そのパケットのうち３０個がノード１０４から来たものであり、そのパケットのうち３０個がノード１０８から来たものであることを示している。こうした状況では、システム・ソフトウェア２４０は、（最も以前に選択されたアルゴリズムまたはその他のアルゴリズムに従って選択した、あるいは任意に選択した）ノードのうち、両方を直前のノードとして識別することも、一方を直前のノードとして識別することも、あるいは両方とも直前のノードとして識別しないこともある。これらの可能性のうちどれに決定するかは、移行候補の識別においてシステム管理者がどの程度積極的であるかによって決まる。
【００３９】
ボトルネック・リンクを引き起こしている可能性が最も高い送信元／送信先の組合せを決定したら、システム・ソフトウェア２４０は、識別された送信元／送信先の組合せに関連する、またはこれと対応付けられる１つまたは複数のプロセスを識別することができる。次いで、システム・ソフトウェア２４０は、任意のこのような１つまたは複数のプロセスを別のノード・セットに移行させることができる。ここで、新たに識別されたセットの送信元と送信先の間の経路は、図５を参照して上述したシステム・ソフトウェアとほとんど同じ方法で任意の識別された使用頻度の高いリンクを含まない。図２の例では、システム・ソフトウェアは、ネットワーク構成を知っているので、ノード１０４からノード１０５までの経路がリンク２２０上のトラフィックの一因となっている可能性が最も高い送信元送信先間経路であることを認識することもできる。次いで、システム・ソフトウェアは、ノード１０４またはノード１０５あるいはその両方にマップされるプロセスを識別し、可能であればそれらのプロセスを別のノード・セットに移行させ、ブロック６０２のパケットの監視を再開することになる。
【００４０】
本発明がネットワーク環境におけるパケット・トラフィックを管理する機構も企図していることは、本開示を読んだ当業者には明らかであろう。図面に示し、詳細な説明において説明した本発明の実施形態は、単なる現時点において好ましい実施例とみなすべきものであることを理解されたい。頭記の特許請求の範囲は、開示の好ましい実施形態のあらゆる変形形態を包含するものとして広範に解釈されるものとする。
【図面の簡単な説明】
【００４１】
【図１】本発明の一実施形態によるデータ処理ネットワークの要素を選択して示す図である。
【図２】図１のデータ処理ネットワークの実施態様をさらに詳細に示す図である。
【図３】ネットワークおよび相互接続のボトルネックを最小限に抑えるために、複数のネットワーク・ノードにプロセスを分配するのに適した方法およびソフトウェア・コードの実施態様を示す流れ図である。
【図４】図１に示すネットワーク・ノードの一実施態様の要素を選択して示す図である。
【図５】本発明の実施形態で使用するのに適したデータ・テーブルを示す概念図である。
【図６】本発明の実施形態による、ネットワークおよび相互接続のボトルネックを最小限に抑えるために、複数のネットワーク・ノードにプロセスを分配するのに適した方法およびソフトウェア・コードの実施態様を示す流れ図である。
【図７】本発明の一実施形態で使用するのに適したデータ・テーブルを示す概念図である。
【符号の説明】
【００４２】
１００  ネットワーク
１０１  ノード
１１０  相互接続部
１２１  第１の接続
１２２  第２の接続
２０１  スイッチ
２３０  エージェント
２４０  システム・ソフトウェア
４０２  プロセッサ
４０４  システム
４０６  ブリッジ
４０７  ＮＵＭＡ制御装置
４１２  アダプタ
【図１】
2006094464.tif 000003
【図２】
2006094464.tif 000004
【図３】
2006094464.tif 000005
【図４】
2006094464.tif 000006
【図５】
2006094464.tif 000007
【図６】
2006094464.tif 000008
【図７】
2006094464.tif 000009