ネットワーク上の複数の計算ノードに割り当てられた仮想マシンの間のネットワークトラフィックを監視することと、前記ネットワークトラフィックの閾値量を上回る量の仮想マシン間通信をネットワーク上で有する第1及び第2の仮想マシンを識別することと、前記第1及び第2の仮想マシンのうちの少なくとも1つを移動させて、前記第1及び第2の仮想マシンが同じ計算ノードに割り当てられて前記第1及び第2の仮想マシンの間の仮想マシン間通信がもはやネットワーク上に向けられないようにすることと、を含む、コンピュータ実施の方法。前記計算ノードは、ネットワークスイッチのイーサネットリンクに結合され、前記方法は、前記ネットワークスイッチの管理情報データベースからデータを取得して、前記第1及び第2の仮想マシンの間の通信に使用されている前記イーサネットリンクを通るネットワーク帯域幅の量を決定することをさらに含む、請求項1に記載のコンピュータ実施の方法。前記第1及び第2の仮想マシンの間の通信に起因する前記ネットワーク帯域幅の量は、前記第1及び第2の仮想マシンに割り当てられた媒体アクセス制御アドレス又はインターネットプロトコルアドレスによって識別される、請求項2に記載のコンピュータ実施の方法。前記第1及び第2の仮想マシンのうちの少なくとも1つを移動させることは、前記第1の仮想マシンを第1の計算ノードから、第2の仮想マシンを動作させている第2の計算ノードに移動させることを含む、請求項1に記載のコンピュータ実施の方法。前記第1及び第2の仮想マシンのうちの少なくとも1つを移動させることは、前記第1及び第2の仮想マシンの両方をある計算ノードに移動させることを含む、請求項1に記載のコンピュータ実施の方法。前記第1及び第2の仮想マシンの間の仮想マシン間通信の一定時間にわたる典型値を計算することをさらに含み、前記第1及び第2の仮想マシンを前記識別することは、閾値を上回る仮想マシン間通信の典型値を有する第1及び第2の仮想マシンを識別することを含む、請求項1に記載のコンピュータ実施の方法。前記計算される値は、平均値、中央値、及び標準偏差から選択される、請求項6に記載のコンピュータ実施の方法。最高レベルの仮想マシン間通信を有する仮想マシンをランク付けするステップをさらに含む。請求項1に記載のコンピュータ実施の方法。前記第2の計算ノードが前記第1の仮想マシンを動作させるのに十分な未使用リソースを有することを確認することをさらに含む、請求項4に記載のコンピュータ実施の方法。前記未使用リソースの量を前記確認することは、前記計算ノードの重要プロダクトデータを読み出して、前記計算ノードの入力/出力容量、プロセッサ容量、及びメモリ容量を決定することを含む、請求項9に記載のコンピュータ実施の方法。前記未使用リソースの量を前記確認することは、前記計算ノードから直接に、プロセッサ利用量及びメモリ利用量を取得することを含む、請求項9に記載のコンピュータ実施の方法。前記第1の仮想マシンを動作させている第1の計算ノード上の未使用リソースの量、及び前記第2の仮想マシンを動作させている第2の計算ノード上の未使用リソースの量を決定することと、前記第1及び第2の仮想マシンの、前記リソースの要求量を決定することと、前記第1の仮想マシンを前記第2の計算ノードに移動させることと、前記第2の仮想マシンを前記第1の計算ノードに移動させることとの間で選択して、移動後のリソースの利用量が前記第1及び第2の計算ノードの間で最も均一に分配されるようにすることと、をさらに含む、請求項1に記載のコンピュータ実施の方法。前記未使用リソースの量を前記決定するステップは、前記計算ノードの重要プロダクトデータを読み出して、前記計算ノードの入力/出力容量、プロセッサ容量、及びメモリ容量を決定することを含む、請求項12に記載のコンピュータ実施の方法。前記未使用リソースの量を前記決定することは、前記計算ノードから直接に、プロセッサ利用量及びメモリ利用量を取得することを含む、請求項12に記載のコンピュータ実施の方法。前記ネットワークトラフィックの前記閾値量は前記帯域幅の閾値百分率である、請求項2に記載の方法。仮想マシンの間のネットワークトラフィックを監視して、仮想マシン環境におけるシステムリソースを管理するためのコンピュータ実施の方法を提供する。本発明の一実施形態は、ネットワーク上の複数の計算ノードに割り当てられた仮想マシン間のネットワークトラフィックを監視することと、ネットワークトラフィックの閾値量を上回る量の仮想マシン間通信をネットワーク上で有する第1及び第2の仮想マシンを識別することとを含むコンピュータ実施の方法を提供する。本方法は、第1及び第2の仮想マシンのうちの少なくとも1つを移動させて、第1及び第2の仮想マシンが同じ計算ノードに割り当てられて第1及び第2の仮想マシンの間の仮想マシン間通信がもはやネットワーク上に向けられないようにすることをさらに含む。本発明の一実施形態は、ネットワーク上の複数の計算ノードに割り当てられた仮想マシン間のネットワークトラフィックを監視することと、ネットワークトラフィックの閾値量を上回る量の仮想マシン間通信をネットワーク上で有する第1及び第2の仮想マシンを識別することとを含むコンピュータ実施の方法を提供する。本方法は、第1及び第2の仮想マシンのうちの少なくとも1つを移動させて、第1及び第2の仮想マシンが同じ計算ノードに割り当てられて第1及び第2の仮想マシンの間の仮想マシン間通信がもはやネットワーク上に向けられないようにすることをさらに含む。さらに別の実施形態において、計算ノードはネットワークスイッチのイーサネットリンクに結合され、データがネットワークスイッチの管理情報データベースから取得されて、第1及び第2の仮想マシンの間の通信に使用されているイーサネットリンクを通るネットワーク帯域幅の量が決定される。2つの仮想マシンの間の通信は、仮想マシン間通信、又はVM間通信と呼ぶことができる。複数の計算ノード上の仮想マシンを有するシステムにおいて、VM間通信はネットワークトラフィックを生じる。ネットワークスイッチはその管理情報ベースMIB内にネットワーク統計データを収集する。随意にMIBデータを用いて第1及び第2の仮想マシンの間の通信に起因するネットワーク帯域幅の量を識別することができ、またMIBデータは第1及び第2の仮想マシンに割り当てられた媒体アクセス制御MACアドレス又はインターネットプロトコルIPアドレスによって識別される。例えば、MIBデータは、2つの仮想マシンを表すMACカプレットに関連するネットワークトラフィックを識別することができ、又は識別するのに用いることができる。従って、送信元VMのMACアドレス及び宛先VMのMACアドレスの両方は2つのVMの間のネットワークトラフィックに関連して記録することができる。各ネットワークスイッチのMIBからのデータは、各シャーシ内の管理ノードと共有することができ、及び/又は遠隔管理ノードと直接共有することができる。遠隔管理ノードがネットワークトラフィックデータを直接に取得するか又はシャーシ管理ノードから取得するかに関わらず、遠隔管理エンティティは全てのVM間トラフィックデータにアクセスできる。随意に、最大の仮想マシン間通信を有する仮想マシンを、場合により最大から最小のVM間ネットワークトラフィックまでランク付けて、移動させるのに適切なVMの識別を容易にすることができる。本発明の様々な実施形態において、VM間トラフィックは、ネットワークトラフィックに関連するIPアドレスもまた識別することができるので、全体のネットワークレベルで又は全体のネットワークの内部で、例えばIPサブネットレベルで管理することができる。ルータ2つの異なったサブネットを接続できるデバイスを必要としないのでIPサブレベルを管理する方がより容易であり得る。従って、MIBはネットワーク全体にわたる仮想マシンのIPアドレスを用いることができる。ネットワークが1つのサブネットのみを含む場合には、各仮想マシンに関連するMACアドレスを用いるのがより簡単となることがあり、何故ならMACアドレスはISO層2のエンティティであるのに対してIPアドレスは層3のエンティティであるからである。ネットワークトラフィックは、高レベルのVM間ネットワークトラフィックを有する2つの仮想マシンを同じ物理的計算ノード上に配置することによって減らすことができる。従って、本方法は、第1又は第2の仮想マシンのうちの少なくとも1つを移動させることを含む。1つの選択肢において、移動は第1の仮想マシンを第1の計算ノードから、第2の仮想マシンが動作している第2の計算ノードに移動させることを含む。しかし、第1及び第2の計算ノードは追加の仮想マシンを収容するには不十分な量の未使用リソースを有する可能性がある。別の選択肢において、移動は第1及び第2の仮想マシンの両方を、第1及び第2の仮想マシンの両方を収容するのに十分な使用可能リソースを有する1つの計算ノード、例えば第3の計算ノードに移動させることを含む。別の実施形態において、コンピュータ実施の方法は、第1及び第2の仮想マシンの間の、一定時間にわたる仮想マシン間通信の典型的な値を計算することをさらに含む。そのような典型値の非限定的な例としては、一定時間にわたる平均帯域幅、中央帯域幅、及び帯域幅の標準偏差が挙げられる。従って、第1及び第2の仮想マシンは、閾値を上回る仮想マシン間通信の典型値を有する仮想マシンとして識別することができる。瞬時値ではなく典型値を用いることは、VM間ネットワークトラフィックの短時間ピークの結果としてVMを移動させることを避けることになる。さらに別の実施形態において、コンピュータ実施の方法は、第2の計算ノードが第1の仮想マシンを動作させるのに十分な未使用リソースを有することを確認することをさらに含む。この確認は、第2の計算ノードの重要プロダクトデータVDPを読み出して第2の計算ノードの入力/出力容量、プロセッサ容量、及びメモリ容量を決定することを含むことができる。さらに、プロセッサ利用量及びメモリ利用量を第2の計算ノードから直接取得することができる。未使用リソースの量は、サーバなどの所与の計算ノードのリソースの容量から現在の利用量を差し引くことにより計算することができる。コンピュータ実施の方法のさらに別の実施形態は、第1の仮想マシンを動作させている第1の計算ノード上の未使用リソースの量及び第2の仮想マシンを動作させている第2の計算ノード上の未使用リソースの量を決定することと、第1及び第2の仮想マシンのリソース要求量を決定することと、第1の仮想マシンを第2の計算ノードに移動させることと第2の仮想マシンを第1の計算ノードに移動させることとの間の選択をして移動後のリソースの利用量が第1及び第2の計算ノードの間で最も均一に分配されるようにすることと、をさらに含む。第1及び第2の仮想マシンを識別するのに用いられるネットワークトラフィックの閾値量は、計算ノードの帯域幅の絶対量として又はリンク帯域幅の百分率として提示することができることを認識されたい。例えば、絶対閾値量は100Mbpsとすることができ、また百分率閾値量はリンク帯域幅の25とすることができる。遠隔管理ノードは、ネットワークトラフィックの閾値量を上回る量の仮想マシン間通信をネットワーク上で有する第1及び第2の仮想マシンを識別することに関与することができる。本発明の様々な実施形態により、遠隔管理ノードはネットワーク内のネットワークスイッチのMIBからのネットワーク統計を収集し、どの仮想マシンが最も高レベルのVM間ネットワークトラフィックを有するかを決定することができる。遠隔管理ノードは次に第1及び第2の仮想マシンのうちの少なくとも1つの適切な移動を開始して2つの仮想マシンが同じ物理的サーバ上に存在するようにすることができる。2つの仮想マシンが単一の物理的サーバ上で同時に動作する場合、それらVMの間のVM間通信は物理的サーバから抜け出ないのでネットワークトラフィックに対する寄与が減るか又は解消される。本出願の文脈において、仮想マシンは、様々な量のリソース、例えば入力/出力容量、メモリ容量、及びプロセッサ容量などを要求するものとして記述することができる。しかし、仮想マシンによって使用されるリソースの量は、大部分は仮想マシンに割り当てられるソフトウェアタスク又はプロセスの関数となる。例えば、コンピュータ支援の設計製図CADDアプリケーション及び大きなスプレッドシートアプリケーションは大量の計算を必要とするのでプロセッサ集約型であるが非常に小さなネットワーク帯域幅しか必要としないと考えられる。ウェブサーバアプリケーションは大量のネットワーク帯域幅を使用するが、使用可能なメモリ又はプロセッサリソースの小部分のみを使用することがある。それとは反対に、データベース管理を用いる財務アプリケーションは遥かに大きな処理容量及びメモリ容量を必要とし、入力/出力帯域幅の使用量は少ない。さらに別に実施形態において本方法は、計算ノードのプロセッサ利用量及びメモリ利用量をその計算ノードから直接取得することをさらに含む。当業者であれば、この情報は、物理的計算ノード上で実行中の全てのプロセスから必要とされるメモリ及びCPU利用量を取得するハイパーバイザタスクマネージャから得られることを認識するであろう。プロセッサ及びメモリの利用量は、現在使用中のプロセッサ及びメモリ容量の量を示し、又は逆に、現在未使用のプロセッサ及びメモリ容量の量の決定を可能にする。従って、仮想マシン選択プロセスの一部分として、又は少なくとも移動の前に、目標の計算ノードが追加の仮想マシンを実行するのに十分な未使用のプロセッサ及びメモリ容量を有することを確認することができる。本方法の様々な実施形態に関連して、計算ノードの入力/出力容量、プロセッサ容量、及びメモリ容量を、その計算ノードの重要プロダクトデータを読み出すことによって決定することも可能である。入力/出力容量、プロセッサ容量、及びメモリ容量から、それぞれ、入力/出力容量利用量、プロセッサ容量利用量、及びメモリ容量利用量を差し引くことにより、これらリソースの各々の未使用量が得られる。従って、仮想マシンの入力/出力容量要求量、プロセッサ容量要求量、及びメモリ容量要求量を特定の計算ノード上のリソースの未使用量と比較して、特定の仮想マシンを特定の計算ノードに、何れのリソースも過剰割当てせずに収容することができことを確認することができる。ここで図を参照すると、図1は本発明によって用いることができる例示的なコンピュータ102のブロック図である。コンピュータ102に関する、コンピュータ102内に示された、ハードウェア及びソフトウェアの両方を含む例示的なアーキテクチャの一部又は全ては、ソフトウェア配備softwaredeployingサーバ150、並びに、以下で図2及び図6に示されるプロビジョニングマネージャ/管理ノード222及びサーバブレード204a~204nによって用いることができることに留意されたい。本開示において説明されるブレードは、ブレードシャーシ内のサーバブレードとして例示的に説明され、示されるが、本明細書で説明されるコンピュータの一部又は全ては、独立型コンピュータ、サーバ、又は他の統合型若しくは独立型コンピューティング装置とすることができる。従って、ブレード、サーバブレード、コンピュータ、サーバ、及び計算ノードという用語は、本説明においては区別なく用いられる。コンピュータ102は、システムバス106に結合されたプロセッサユニット104を含む。プロセッサユニット104には、それぞれ1つ又は複数のプロセッサコアを有する1つ又は複数のプロセッサを用いることができる。ビデオアダプタ108は、ディスプレイ110を駆動/サポートし、同じくシステムバス106に結合される。一実施形態において、スイッチ107は、ビデオアダプタ108をシステムバス106に結合される。代替的に、スイッチ107は、ビデオアダプタ108をディスプレイ110に結合することができる。いずれの実施形態においても、スイッチ107は、ディスプレイ110をシステムバス106に結合し、従って、本明細書で説明されるプロセスをサポートする命令例えば、以下に説明される仮想マシンプロビジョニングプログラム-VMPP148の実行時にのみ機能できることを可能にする、好ましくは機械的なスイッチである。システムバス106は、バスブリッジ112を介して、入力/出力I/Oバス114に結合される。I/Oインタフェース116は、I/Oバス114に結合される。I/Oインタフェース116は、キーボード118、マウス120、媒体トレイ122CD-ROMドライブのような記憶装置、マルチメディアインタフェースなどを含むことができる、プリンタ124、及びVHDLチップ137が、以下に説明される方法で用いられない場合外部USBポート126を含む、様々なI/Oデバイスとの通信を可能にする。I/Oインタフェース116に接続されるポートの形式は、コンピュータアーキテクチャの当業者には周知の任意のものであってもよいが、好ましい実施形態においては、これらのポートの一部又は全ては、ユニバーサルシリアルバスUSBポートである。図示したように、コンピュータ102は、ネットワークインタフェース130を用いて、ネットワーク128を介してソフトウェア配備サーバ150と通信することができる。ネットワーク128は、インターネットなどの外部ネットワーク、又はイーサネット若しくは仮想プライベートネットワークVPNなどの内部ネットワークとすることができる。ハードドライブインタフェース132もまた、システムバス106に結合される。ハードドライブインタフェース132は、ハードドライブ134とのインタフェースである。好ましい実施形態において、ハードドライブ134は、同じくシステムバス106に結合されたシステムメモリ136と通信する。システムメモリは、コンピュータ102内の最下層の揮発性メモリとして定義される。この揮発性メモリは、これらに限定されるものではないが、キャッシュメモリ、レジスタ及びバッファを含む付加的なより高い層の揮発性メモリ図示せずを含む。システムメモリ136を埋めるデータは、コンピュータ102のオペレーティングシステムOS138及びアプリケーションプログラム144を含む。オペレーティングシステム138は、アプリケーション144などのリソースへのトランスペアレントなユーザアクセスを提供するシェル140を含む。一般に、シェル140は、インタプリタと、ユーザとオペレーティングシステムとの間のインタフェースとを提供するプログラムである。より具体的には、シェル140は、コマンドラインのユーザインタフェースに入力される又はファイルからのコマンドを実行する。従って、シェル140は、コマンドプロセッサとも呼ばれ、一般に、オペレーティングソフトウェア階層の最高位にあり、コマンドインタプリタとして機能する。シェルは、システムプロンプトを提供し、キーボード、マウス、又は他のユーザ入力媒体により入力されたコマンドを解釈し、解釈されたコマンドを、処理のためにオペレーティングシステムの適切なより下位例えばカーネル142に送る。シェル140は、テキストベースのライン指向ユーザインタフェースであるが、本発明は、グラフィカル、音声、ジェスチャなどの他のユーザインタフェースモードを等しく良好にサポートすることに留意されたい。図示したように、オペレーティングシステム138はまた、カーネル142も含み、これは、メモリ管理、プロセス及びタスク管理、ディスク管理、並びにマウス及びキーボード管理などの、オペレーティングシステム138の他の部分及びアプリケーションプログラム144に必要な本質的なサービスを提供することを含む、オペレーティングシステム138についてのより低いレベルの機能を含む。アプリケーションプログラム144は、ブラウザ146として例示的に示される、随意的なレンダラーrendererを含む。ブラウザ146は、ワールドワイドウェブWWWクライアント即ち、コンピュータ102が、ハイパーテキスト転送プロトコルHPPメッセージングを用いて、インターネットに対するネットワークメッセージを送受信するのを可能にし、従って、ソフトウェア配備サーバ150及び説明済みの他のコンピュータシステムとの通信を可能にする、プログラムモジュール及び命令を含む。コンピュータ102のシステムメモリ並びに、ソフトウェア配備サーバ150のシステムメモリ内のアプリケーションプログラム144は、仮想マシンプロビジョニングプログラムVMPP148も含む。VMPP148は、図2~図6に示すものを含む、以下に説明されるプロセスを実施するためのコードを含む。VMPP148は、以下に説明する必要な重要プロダクトデータvitalproductdata、VPDを提供するVPDテーブル151と通信することができる。一実施形態において、コンピュータ102は、オンデマンドベースでのものを含めて、VMPP148をソフトウェア配備サーバ150からダウンロードすることができる。さらに、本発明の一実施形態において、ソフトウェア配備サーバ150は、本発明と関連した機能VMPP148の実行を含むの全てを実行し、従って、コンピュータ102が、VMPP148を実行するために、それぞれの内部計算リソースを使用する必要をなくす。随意的に、VHDLVHSICハードウェア記述言語プログラム139も、システムメモリ136内に格納される。VHDLは、フィールドプログラマブルゲートアレイFPGA、特定用途向け集積回路ASIC、及び他の類似の電子デバイスのための例示的な設計入力言語である。一実施形態においては、VMPP148からの命令の実行により、VHDLプログラム139が、FPGA、ASIC等とすることができるVHDLチップ137を構成する。本発明の別の実施形態において、VMPP148からの命令の実行により、VHDLエミュレーションチップ152をプログラムするために、VHDLプログラム139が使用される。VHDLエミュレーションチップ152は、VHDLチップ137について上述したのと類似のアークテクチャを組み込むことができる。ひとたびVMPP148及びVHDLプログラム139がVHDLエミュレーションチップ152をプログラムすると、VHDLエミュレーションチップ152は、VMPP148内に見出される命令の一部又は全ての1つ又は複数の実行によって、記述される一部又は全ての機能を、ハードウェアとして実施する。つまり、VHDLエミュレーションチップ152は、VMPP148内に見出されるソフトウェア命令の一部又は全てのハードウェアエミュレーションである。一実施形態において、VHDLエミュレーションチップ152は、ひとたびVMPP148及びVHDLプログラム139からの命令に従って焼かれると、図2~図6に以下に説明されるプロセスを実施するのに必要な機能を実施する新しい回路に恒久的に変換される、プログラマブル読み出し専用メモリPROMである。コンピュータ102内に示されるハードウェア要素は、網羅的であることを意図したものではなく、寧ろ、本発明が必要とする本質的な構成要素を強調するための典型的なものである。例えば、コンピュータ102は、磁気カッセット、デジタル多目的ディスクDVD、及びベルヌーイカートリッジのような代替的な記憶装置を含むことができる。これら及び他の変形は、本発明の趣旨及び範囲内にあることが意図される。図2は、リソースのプールに関するクラウド環境として機能する例示的なブレードシャーシ202の図である。ブレードシャーシ202は、シャーシバックボーン206に結合された複数のブレード204a~204nここで、nは整数であるを備える。各々のブレードは、1つ又は複数の仮想マシンVMをサポートすることができる。コンピュータ技術分野の当業者には周知であるように、VMは、物理的コンピュータのソフトウェア実施エミュレーションである。単一の物理的コンピュータブレードは、各々が同じ又は異なる、或いは共有のオペレーティングシステムを実行する複数のVMをサポートすることができる。一実施形態において、各々のVMは、1特定のタイプのソフトウェアタスク例えば、データベース管理、グラフィックス、ワードプロセッシングなどを、2特定のユーザ、加入者、クライアント、グループ、又は他のエンティティのために、3一日の特定の時間又は週の特定の日例えば一日の又はスケジュールの許可された時間に、実行するように具体的に調整し、予約することができる。図2に示すように、ブレード204aは、複数のVM208a~208nここで、nは整数であるをサポートし、ブレード204nは、さらに別の複数のVM210a~210nここで、nは整数であるをサポートする。ブレード204a~204nは、ハイパーバイザ214、ゲストオペレーティングシステム、及びユーザ用のアプリケーション図示せずを供給する記憶装置212に結合される。記憶装置212からのプロビジョニングソフトウェアは、プロビジョニングマネージャ/管理ノード222にロードされ、本明細書で説明される本発明の様々な実施形態に従って、仮想マシンをブレード間で割り当てる。コンピュータのハードウェア特性は、VPD151からVMPP148に伝達される図1に従って。VMPPは、ネットワーク216を通じて、コンピュータのハードウェア特性を、ブレードシャーシのプロビジョニングマネージャ222に、管理インタフェース220に、次いで仮想マシンワークロードエンティティ218に伝達することができる。シャーシバックボーン206もまた、パブリックネットワーク例えば、インターネット、プライベートネットワーク例えば、仮想プライベートネットワーク又は実際の内部ハードウェアネットワークなどとすることができるネットワーク216に結合されることに留意されたい。ネットワーク216は、仮想マシンワークロード218が、ブレードシャーシ202の管理インタフェース220と通信することを可能にする。仮想マシンワークロード218は、ブレードシャーシ202内のいずれかのVM上で実行されるように要求されるソフトウェアタスクである。管理インタフェース220は、次に、このワークロードの要求をプロビジョニングマネージャ/管理ノード222に伝達し、このノードは、要求されたソフトウェアタスクを実行するようにブレードシャーシ202内のVMを構成することができるハードウェア及び/又はソフトウェア論理である。実質上、仮想マシンワークロード218は、ブレードシャーシ管理インタフェース220及びプロビジョニング管理ノード222と通信することによって、VMの全体のプロビジョニングを管理する。次に、この要求は、一般的なコンピュータシステム内のVMPP148にさらに伝達される図1を参照されたい。ブレードシャーシ202は、本開示のシステムが動作することができる例示的なコンピュータ環境であることに留意されたい。しかしながら、本開示のシステムの範囲は、ブレードシャーシにのみ限定されるべきではない。つまり、本開示の方法及びプロセスは、本明細書に説明される何らかのタイプのワークロード管理を用いる任意のコンピュータ環境においても用いることができる。従って、ブレードシャーシ、コンピュータシャーシ及びコンピュータ環境という用語は、複数のコンピュータ/ブレード/サーバを管理するコンピュータシステムを説明するのに区別なく用いられる。図2はまた、本発明のさらに別の実施形態による、IBMディレクタサーバのような随意的な遠隔管理ノード230も示す。遠隔管理ノード230は、管理インタフェース220を介して、ブレードシャーシ上のシャーシ管理ノード222と通信するが、任意の数のブレードシャーシ及びサーバと通信することができる。従って、グローバルプロビジョニングマネージャ232は、ローカルプロビジョンマネージャ222と通信し、連携して本発明の方法を実施することができる。随意的なグローバルプロビジョニングマネージャ232は、主として、複数のサーバシャーシ又はラックを有する大きな設備において有益であり、その場合、グローバルプロビジョニングマネージャは、VMのシャーシ間移動又は割り当てを調整することができる。グローバルプロビジョニングマネージャは、複数シャーシ又は複数ラックの構成のVMを常時監視していることが好ましい。ローカルプロビジョニングマネージャが有能である場合、そのエンティティは、シャーシ又はラック内でVMを移動させる役割を担い、その情報をグローバルプロビジョニングマネージャに送る。グローバルプロビジョニングマネージャは、複数のシャーシ又はラックの間でVMを移動させることに関与し、さらに場合によっては、ローカルプロビジョニングマネージャに対して特定のVMを移動させるように命令する。例えば、グローバルプロビジョニングマネージャ232は、該グローバルプロビジョニングマネージャが複数のシャーシ又は複数のラックシステム内のシャーシ又はラックの各々の中のVMに関するデータを必要とすることを除いて、ローカルプロビジョニングマネージャ222と同じVMデータを含むテーブルを構築し、保持することができる。グローバルプロビジョニングマネージャ232及びローカルプロビジョニングマネージャ222の各々が保持するテーブルは、互いの継続的な通信により同期される。有利なことに、複数のテーブルが、プロビジョニングマネージャのうちの1つが機能停止する場合に継続して動作するのを可能にする冗長性を与える。図3は、19インチのラック環境内の複数の物理的サーバを有する本発明の一実施形態を示す。この構成は、図3が仮想化ラック302を示す点を除いて、図2に示した構成202と類似する。ユーザ304は、ソフトウェアタスクの実行の要求を管理ノード306図2に示したプロビジョニングマネージャ/管理ノード222に類似しているに伝達することができる。特定のサーバ308並びにそれが外部ネットワーク312及び記憶装置314と通信するゲートウェイ316及び仮想化ストレージアレイ318を介してために結合されたネットワークスイッチ310のI/O機能に基づいて、ユーザの要求は、適切かつ最適なコンピュータ例えば、サーバ308にアドレス指定される。仮想化ラック302は、例えば、複数のサーバを保持するブレードシャーシである。各々の物理的サーバサーバ308を含むは、入力/出力トラフィックをサポートするために、I/Oネットワークアダプタを有する。サーバ上で実行できる仮想マシンの最適数を決定するために、プロビジョニングマネージャは、物理的サーバのネットワーク構成I/O機能を取り出し、この情報を調整して、VMを各々のサーバに適切に設定することができなければならない。図4は、ネットワークスイッチのMIBから取得することができ、管理ノードによって保持することができるネットワークトラフィックデータの一実施形態を示すテーブル400である。図示するように、第1列402は、通信を始める仮想マシンを列挙し、その仮想マシンを一意的なMACアドレスによって識別する。例示の目的のために、MACアドレスは、シャーシ番号、サーバ番号及び仮想マシン番号をまとめて含むラベルで表される。例えば、ヘッダの下のテーブルの第1行においては、仮想マシンIDC1S1VM1は、シャーシ1内のサーバ1上の仮想マシン1を指す。第2列404は、通信の宛先の仮想マシンを列挙する。従って、単一の行内で識別される2つの仮想マシンは、カプレットと呼ぶことができ、第3列406内に示される帯域幅は、1つの仮想マシンから別の仮想マシンへの通信に起因する仮想マシン間ネットワークトラフィックの量メガビット毎秒Mbpsの単位におけるである。テーブルの第1行は、C1S1VM1からC2S1VM1への通信のVM間ネットワーク帯域幅が、平均すると50Mbpsであること示す。MIBはまた、カプレット間の逆方向の、例えばC2S1VM1からC1S1VM1へのVM間ネットワークトラフィックに関する項目を含むことができるデータ入力は図示せず。しかしながら、幾つかの仮想マシン、例えば、CADDプログラムを実行しているVMのような幾つかの仮想マシンでは、VM間ネットワークトラフィックは、実質的に全て一方向となり得る。本発明の実施形態は、一方向又は双方向の帯域幅に基づくことができる。サーバが、仮想マシンの移動を受け入れるのに十分な未使用リソースを有するかどうかを判断する目的のために、テーブル400は、各々の仮想マシンのプロセッサ利用量及びメモリ利用量をさらに含むことができる。仮想マシンIDC1S1VM1から生じてシャーシ2のサーバ1上の3つの異なる仮想マシンC2S1VM1、C2S1VM2、C2S1VM3に向けられるネットワークトラフィック、及び、仮想マシンIDC1S1VM5から生じてシャーシ2のサーバ1上の単一の仮想マシンC2S1VM1に向けられるネットワークトラフィックを含んだ、テーブルの一部分のみが示される。シャーシ1のサーバ1及びシャーシ2のサーバ1は、互いに通信することができ、かつ、ネットワークスイッチによってグローバルプロビジョンマネージャと通信することもできる。遠隔管理ノードは、定期的に、全体のネットワーク内の各ネットワークスイッチのMIBからデータを収集する。ネットワークの安定性を確実にするために、遠隔管理ノードは、仮想マシンの移動の決定を行う前に、一定の時間にわたってトラフィックを平均することが好ましい。閾値レベルを上回るネットワーク帯域幅を有するVM-VMカップレット対が識別されると、遠隔管理ノードは、カプレット内のいずれかのVMの物理的サーバが、他方のVMを受け入れるためのリソースを有するかどうか、又は、カプレットの両方のVMが同じ物理的サーバ上に存在するように両方のVMを異なる物理的サーバに移動させる必要があるかどうかを判断することになる。図4の実施例においては、シャーシ1のサーバ1のVM5C1S1VM5は、十分な処理容量があるために、シャーシ2のサーバ1に移動される。遠隔管理ノードは、VMイメージを配備し、各物理的サーバの処理及びメモリ容量を既に決定している。この実施例において単一のVMC1S1VM5を移動させることは、VM間カプレットのプロセスが終了するまでに、平均300Mbpsのネットワーク帯域幅を削除すると予想される。図4のテーブル400で表される2つのサーバのシステムはかなり小さいが、この実施例は、任意の数のシャーシ内の任意の数のサーバを有するシステム内の2つのサーバを表す。テーブル400を作成するために、プロビジョニングマネージャは、各々のネットワークスイッチに対して管理情報ベースMIB統計に関する要求を送る。例えば、要求は、単純ネットワーク管理プロトコルSNMP取得要求/コマンド即ち、SNMPGETMIBStatsの形式にすることができる。スイッチは、要求された統計、例えばSNMPPUT即ち、SNMPPUTMIBStatsによって応答する。MIBStatsは、プロビジョニングマネージャが、各仮想マシンによって使用されている帯域幅を含むテーブルを作成又は埋めることを可能にする。各サーバ上の他の仮想マシンの各々に関する付加的なSNMPPUTMIBStatsを、各スイッチからプロビジョニングマネージャに伝達することができる。前述のように、ローカル又はグローバルプロビジョニングマネージャは、瞬間的ピークがVMの移動を生じることのないように、VM間ネットワークトラフィックを一定時間にわたって平均することが好ましい。同様に、ローカル又はグローバルプロビジョニングマネージャは、VMが同じ物理的サーバ上にある時間の間留まることを可能にすることによって、ネットワークにわたるVMの絶え間のない移動を避け、ネットワークの安定性を確実にするヒステリシスアルゴリズムを用いることが好ましい。図5は、図4のテーブル400に示される仮想マシンの1つのサーバから別のサーバへの移動を示すシステム500のブロック図である。仮想マシンC1S1VM5の、シャーシ1504のサーバ1502からシャーシ2508のサーバ1506への移動が矢印518で表される。移動の結果、C1S1VM5及びC2S1VM1のVMカプレットは、同じ物理的サーバ上に存在することになり、そのVMカプレットに起因する平均300MbpsのVM間ネットワークトラフィックが削除されることになる。図6はコンピュータ実施の方法600のフローチャートである。ステップ602は、ネットワーク上の複数の計算ノードに割り当てられた仮想マシンの間のネットワークトラフィックを監視することを含む。ステップ604において、ネットワークトラフィックの閾値量を上回る量の仮想マシン間通信をネットワーク上で有する第1及び第2の仮想マシンが識別される。次にステップ606は、第1及び第2の仮想マシンのうちの少なくとも1つを移動させ、第1及び第2の仮想マシンが同じ計算ノードに割り当てられて第1及び第2の仮想マシンの間の仮想マシン間通信がもはやネットワーク上に向けられないようにすることを含む。別の実施例において、VM1及びVM2が第1の計算ノード上にあって高レベルのVM間通信ネットワーク上ではないを有し、VM2もまた、第2の計算ノード上のVM3と高レベルのVM間通信ネットワーク上のを有することがある。そのような状況において本発明の実施形態は、VM2を第2の計算ノードに移動させてVM2-VM3通信に関するネットワークトラフィックを削除する必要があると判断する可能性がある。しかしながら、この実施例においてVM2の第2の計算ノードへの移動は、VM1とVM2はもはや同じ物理的計算ノード上に存在しなくなるので、VM1-VM2通信と関連した新たなネットワークトラフィックが、偶然生じることになる。しかしながら、VM間ネットワーク帯域幅の分析の次の繰り返しにより、この新たなVM間帯域幅がMIB内に識別されることになる。従って、最高レベルのVM間帯域幅を有するVMカプレットが識別され、さらなる移動が行われることになる。時間の経過及び本発明の繰り返しにより、VM1-VM2ネットワーク帯域幅が、最高レベルのネットワーク帯域幅を有するVMカプレットになるなど、著しい帯域幅を消費する場合には、VM1及びVM2のうちの1つを移動させてVM1及びVM2が再び同じ計算ノード上に存在するようにする。本方法は、VMが繰り返し前後に移動することを防止するヒステリシス機能を含むことが好ましい。本実施例においては、VM2の第2の計算ノードへの移動後、一定期間、VM2をさらに第1の計算ノードに戻してはならない期間を開始すべきである。結果として、VM1-VM2通信のネットワーク帯域幅を削除する必要がある場合には、本方法は、VM2を第1の計算ノードに移動させるべきではない即ち、逆方向の移動を防ぐと考え、代りにVM1を移動させるよう試みる。第2の計算ノードがVM1を受け入れるのに不十分なリソースしか有していない場合には、VM1及びVM2の両方を第3の計算ノードに移動させることができる。従って、時間の経過及び本方法の複数回の繰り返しにより、高レベルのVM間通信を有する複数のVMが存在する場合には、これらのVMは、最後には、一緒に同じ物理的計算ノード上に達するはずであり、その結果、本方法はVMの移動に関して安定点に達する。当業者であれば認識することになるように、本発明は、システム、方法、又はコンピュータプログラムとして具体化することができる。従って、本発明は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態ファームウェア、常駐ソフトウェア、マイクロコードなどを含む、又は本明細書で一般的に全て回路、モジュール、又はシステムと呼ぶことができるソフトウェア態様とハードウェア態様を組み合せた実施形態の形をとるものとすることができる。さらに、本発明は、その上に具体化されたコンピュータ使用可能プログラムコードを有する、1つ又は複数のコンピュータ可読記憶媒体内に具体化されたコンピュータプログラムの形を取ることができる。1つ又は複数のコンピュータ使用可能又はコンピュータ可読記憶媒体の任意の組合せを用いることができる。コンピュータ使用可能又はコンピュータ可読記憶媒体は、例えば、これらに限定されるものではないが、電子、磁気、電磁気、又は半導体装置若しくはデバイスとすることができる。コンピュータ可読記憶媒体のより具体的な例非網羅的なリストとして、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリRAM、読み出し専用メモリROM、消去可能プログラム可能読み出し専用メモリEPROM又はフラッシュメモリ、ポータブルコンパクトディスク読み出し専用メモリCD-ROM、光記憶装置、又は磁気記憶装置が挙げられる。プログラムを、例えば紙又は他の媒体の光学走査を介して電子的に取り込み、次いで必要に応じて、コンパイルするか、解釈するか、又は適切な方法で処理し、次いでコンピュータのメモリに格納することができるのでコンピュータ使用可能又はコンピュータ可読記憶媒体は、プログラムが印刷された紙又は別の適切な媒体とすることさえ可能である。本明細書の文脈において、コンピュータ使用可能又はコンピュータ可読記憶媒体は、コンピュータによって使用されるプログラムを含む又は格納することができる任意の記憶媒体とすることができる。コンピュータ使用可能記憶媒体上に含まれるコンピュータ使用可能プログラムコードは、ベースバンド内の、又は搬送波の一部としての、伝搬されたデータ信号により伝達することができる。コンピュータ使用可能プログラムコードは、無線、有線、光ファイバケーブル、RF等を含むがそれらに限定されないいずれかの適切な伝送媒体を用いて、1つの記憶媒体から別の記憶媒体に伝送することができる。本発明の動作を実行するためのコンピュータプログラムコードは、Java、Smalltalk、C等のようなオブジェクト指向プログラミング言語、及び、Cプログラミング言語又は同様なプログラミング言語のような、従来の手続き型プログラミング言語を含む、1つ又は複数のプログラミング言語の任意の組合せで書くことができる。プログラムコードは、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立したソフトウェアパッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部がリモートコンピュータ上で実行される場合もあり、又は完全にリモートコンピュータ若しくはサーバ上で実行される場合もある。一番最後のシナリオの場合、リモートコンピュータは、ローカルエリアネットワークLAN若しくは広域ネットワークWANを含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部のコンピュータへの接続がなされる場合もある例えば、インターネットサービスプロバイダを用いたインターネットを通じて。本発明は、本発明の実施形態による方法、装置システム及びコンピュータプログラムのフローチャート図及び/又はブロック図を参照して以下に説明される。フローチャート図及び/又はブロック図の各ブロック、並びにフローチャート図及び/又はブロック図内のブロックの組合せは、コンピュータプログラム命令によって実施することができることが理解されるであろう。これらのコンピュータプログラム命令を、機械を製造するために、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えて、その結果、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/行為を実施するための手段を作り出すようにさせることができる。これらのコンピュータプログラム命令を、コンピュータ又は他のプログラム可能なデータ処理装置を特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、その結果、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/行為を実施する命令手段を含む製品を製造するようにさせることもできる。コンピュータプログラム命令をコンピュータ又は他のプログラム可能データ処理装置上にロードして、一連の動作ステップをコンピュータ又は他のプログラム可能装置上で実行させ、コンピュータ又は他のプログラム可能装置上で実行される命令がフローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/行為を実施するためのプロセスを提供するように、コンピュータにより実行されるプロセスを生成することもできる。図面内のフローチャート及びブロック図は、本発明の種々の実施形態による、システム、方法及びコンピュータプログラムの可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実装するための1つ又は複数の実行可能な命令を含む、モジュール、セグメント又はコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に記された機能は、図面に記された順序とは異なる順序で行われることもあることにも留意されたい。例えば、連続して図示された2つのブロックが実際には実質的に同時に実行されることもあり、又はこれらのブロックは、関与する機能に応じて、ときには逆順で実行されることもある。ブロック図及び/又はフローチャート図の各ブロック、並びにブロック図及び/又はフローチャート図内のブロックの組合せは、指定された機能又は行為を実行する専用ハードウェアベースのシステム、又は専用ハードウェアとコンピュータ命令との組合せによって実装することができる。本明細書において用いられる用語は、特定の実施形態を説明する目的のためのもの過ぎず、発明を限定することを意図するものではない。本明細書において用いられる場合、文脈から明らかにそうでないことが示されていない限り、a、an及びtheの単数形は、複数形も同様に含むことが意図される。含むcomprises及び/又は含んでいるcomprisingという用語は、本明細書において用いられる場合、言明された特徴、整数、ステップ、動作、要素及び/又はコンポーネントの存在を特定するものではあるが、1つ又は複数の他の特徴、整数、ステップ、動作、要素、コンポーネント及び/又はそれらの群の存在又は追加を排除するものではないこともさらに理解される。好ましくはpreferably、好ましいpreferred、好むprefer、随意的にoptionally、することができるmay及び類似の用語は、言及される項目、条件、又はステップが、本発明の随意的な必須ではない特徴であることを示すために用いられる。以下の特許請求の範囲における全ての手段又はステップと機能との組合せミーンズ又はステッププラスファンクション要素の対応する構造、材料、行為及び均等物は、その機能を、明確に特許請求されているように他の特許請求された要素と組み合わせて実行するための、いかなる構造、材料又は行為をも含むことが意図される。本発明の説明は、例示及び説明の目的で提示されたものであるが、網羅的であることを意図するものではなく、本発明を開示された形態に限定することを意図するものでもない。本発明の範囲及び精神から逸脱することのない多くの変更及び変形が、当業者には明らかである。実施形態は、本発明の原理及び実際の用途を最も良く説明するため、及び、当業者が本発明を種々の変更を有する種々の実施形態について企図される特定の使用に好適なものとして理解することを可能にするために、選択及び記載された。