(57)【要約】      （修正有）【課題】仮想マシンのマイグレーション後に、マイグレーションの対象となる仮想マシン及びマイグレーションの移動先サーバで実行されていた他の仮想マシンを協調させる動作を速やかに実行するための情報処理方法を提供する。【解決手段】コンピュータ間で仮想マシン１１０，１１１，２１０，２１１の移動が実行される場合に、移動元コンピュータにおいて前記仮想マシンに割り当てられたリソース及び移動先コンピュータにおいて前記仮想マシンに割り当てられるリソースの差分に基づいて、前記移動元コンピュータにおける仮想マシンの帯域から前記移動先コンピュータにおける前記仮想マシンの帯域を算出することを特徴とする情報処理方法。【選択図】図１０
2014063324.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータ間で仮想マシンの移動が実行される場合に、移動元コンピュータにおいて前記仮想マシンに割り当てられたリソース及び移動先コンピュータにおいて前記仮想マシンに割り当てられるリソースの差分に基づいて、前記移動元コンピュータにおける仮想マシンの帯域から前記移動先コンピュータにおける前記仮想マシンの帯域を算出することを特徴とする情報処理方法。
【請求項２】
算出された帯域に基づいて、前記移動先コンピュータにおける前記仮想マシンの実行状態を決定することを特徴とする請求項１に記載の情報処理方法。
【請求項３】
前記実行状態を決定することにより、前記移動先コンピュータにおいて前記仮想マシンのデータ送信に割り当てられるキューの種類を決定することを特徴とする請求項２に記載の情報処理方法。
【請求項４】
前記キューの種類は、前記仮想マシンのデータ送信が割り当てられる第１キューと、前記仮想マシンのデータ送信及び他の仮想マシンのデータ送信の両方が割り当てられる第２キューとを含むことを特徴とする請求項３に記載の情報処理方法。
【請求項５】
前記差分は、移動元コンピュータにおいて前記仮想マシンに割り当てられた処理能力、及び移動先コンピュータにおいて前記仮想マシンに割り当てられる処理能力の差分であることを特徴とする請求項１〜４の何れか１項に記載の情報処理方法。
【請求項６】
コンピュータ間で仮想マシンの移動が実行される場合に、移動元コンピュータにおいて前記仮想マシンに割り当てられたリソース及び移動先コンピュータにおいて前記仮想マシンに割り当てられるリソースの差分に基づいて前記移動元コンピュータにおける仮想マシンの帯域から算出された前記移動先コンピュータにおける前記仮想マシンの帯域に基づいて、前記移動先コンピュータにおける前記仮想マシンの実行状態を決定することを特徴とする情報処理方法。
【請求項７】
コンピュータ間で仮想マシンの移動が実行される場合に、移動元コンピュータにおいて前記仮想マシンに割り当てられたリソース及び移動先コンピュータにおいて前記仮想マシンに割り当てられるリソースの差分に基づいて、前記移動元コンピュータにおける仮想マシンの帯域から前記移動先コンピュータにおける前記仮想マシンの帯域を算出する制御部を有することを特徴とする情報処理装置。
【請求項８】
前記制御部は、算出された帯域に基づいて、前記移動先コンピュータにおける前記仮想マシンの実行状態を決定することを特徴とする請求項７に記載の情報処理装置。
【請求項９】
コンピュータ間で仮想マシンの移動が実行される場合に、移動元コンピュータにおいて前記仮想マシンに割り当てられたリソース及び移動先コンピュータにおいて前記仮想マシンに割り当てられるリソースの差分に基づいて前記移動元コンピュータにおける仮想マシンの帯域から算出された前記移動先コンピュータにおける前記仮想マシンの帯域に基づいて、前記移動先コンピュータにおける前記仮想マシンの実行状態を決定する制御部を有することを特徴とする情報処理装置。
【請求項１０】
コンピュータ間で仮想マシンの移動が実行される場合に、移動元コンピュータにおいて前記仮想マシンに割り当てられたリソース及び移動先コンピュータにおいて前記仮想マシンに割り当てられるリソースの差分に基づいて前記移動元コンピュータにおける仮想マシンの帯域から算出された前記移動先コンピュータにおける前記仮想マシンの帯域に基づいて、前記移動先コンピュータにおける前記仮想マシンの実行状態を決定することをコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理方法、情報処理装置、及びプログラムに関する。
【背景技術】
【０００２】
サーバ内で仮想マシンを実行させる仮想化技術において、仮想マシンを他のサーバに移動させるマイグレーションという技術が知られている。仮想マシンのマイグレーションでは、移動させる仮想マシンの実行状態に関する設定情報が、仮想マシンの移動先となるサーバへ転送される。
【０００３】
図１に、関連技術が適用された情報処理システムが示される。情報処理システムは、サーバ１０及び２０、及びネットワーク４０を含む。サーバ１０は、仮想マシン１１及び１２、及び仮想スイッチ１３を含む。サーバ２０は、仮想マシン２１及び仮想スイッチ２２を含む。
【０００４】
例えば、仮想マシン１１は仮想スイッチ１３を介してネットワーク４０にデータを送信し、この送信されたデータが仮想スイッチ２２を介して仮想マシン２１によって受信される。仮想スイッチ１３は、仮想マシン１１によるデータ送信と仮想マシン１２によるデータ送信とを調停する。
【０００５】
例えば、仮想マシン１２がサーバ１０からサーバ２０にマイグレーションされる場合に、仮想マシン１２の実行状態に関する設定情報がサーバ２０に送信される。仮想マシン１２のマイグレーションが完了すると、マイグレーションされた仮想マシン１２が、もともとサーバ２０で実行されていた仮想マシン２１と共に、サーバ２０において実行される。
【０００６】
ところで、サービス品質パラメータに基づいて、複数のパイプ・フローから一つのパイプ・フローを選択する技術が知られている。また、あるサーバの物理ネットワークインターフェースカード（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ、以下ＮＩＣと表す）がより性能の高い物理ＮＩＣに変更された場合に、該サーバで実行中されているアプリケーションの受信バッファをオーバフローさせないように、擬似輻輳を発生させる技術が知られている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】ＷＯ２００５／０３２０２５号公報
【特許文献２】特開２０１１−２０３８１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
仮想マシンのマイグレーション後に、移動先サーバで当該マイグレーション前から実行されていた他の仮想マシンの動作と協調させる制御を実行するために、マイグレーションさせられる仮想マシンの帯域がどの程度であるか測定される。
【０００９】
マイグレーションの移動先サーバでは、マイグレーションさせられる仮想マシンと当該マイグレーション前から実行されていた他の仮想マシンとが物理リソースを共有する。移動先サーバのリソースの使用状況によっては、許容される範囲において、物理リソースの割り当てがマイグレーション前後で変更される場合があり、この変更に依存して帯域が変化する。また、仮想マシンが送信する単位時間当たりのデータは、仮想マシンに対する処理の要求頻度に依存する。
【００１０】
仮想マシンの帯域の測定の精度を保つためには一定以上の測定期間が必要であり、この測定期間において他の仮想マシンの動作と協調させる制御が待たされてしまう。
【００１１】
本願は、仮想マシンのマイグレーション後に、マイグレーションの対象となる仮想マシン及びマイグレーションの移動先サーバで実行されていた他の仮想マシンを協調させる動作を速やかに実行するための情報処理方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
開示の情報処理方法によれば、コンピュータ間で仮想マシンの移動が実行される場合に、移動元コンピュータにおいて前記仮想マシンに割り当てられたリソース及び移動先コンピュータにおいて前記仮想マシンに割り当てられるリソースの差分に基づいて、前記移動元コンピュータにおける仮想マシンの帯域から前記移動先コンピュータにおける前記仮想マシンの帯域を算出する。
【発明の効果】
【００１３】
本開示の一側面によれば、仮想マシンのマイグレーション後に、マイグレーションの対象となる仮想マシン及びマイグレーションの移動先サーバで実行されていた他の仮想マシンを協調させる動作が速やかに実行される。
【図面の簡単な説明】
【００１４】
【図１】関連技術が適用された情報処理システム。
【図２】実施例が適用された情報処理システム。
【図３】仮想マシンによるフロー及び送信キューの関係の例。
【図４】仮想マシンによるフロー及び送信キューの関係の他の例。
【図５】仮想マシンのマイグレーション及びフローの帯域に基づく処理の関係。
【図６】実施例が適用された情報処理システムにおける帯域プロファイルの例。
【図７】実施例が適用された情報処理システムにおける仮想マシンプロファイルの例。
【図８】実施例が適用された情報処理システムにおける帯域プロファイルの他の例。
【図９】実施例が適用された情報処理システムにおける帯域プロファイルの他の例。
【図１０】実施例が適用された情報処理システムの動作の例。
【図１１】実施例が適用された情報処理システムにおいて仮想マシンのマイグレーションが実行された場合のキュー管理の例。
【図１２】実施例が適用された情報処理システムにおいて仮想マシンのマイグレーションが実行された場合のキュー管理の他の例。
【図１３】実施例が適用されたサーバのハードウェア構成。
【図１４】実施例が適用されたサーバのキューコントローラの機能ブロック。
【図１５】実施例が適用されたサーバのキューコントローラで実行される処理。
【図１６】実施例が適用されたサーバのキューコントローラで実行される他の処理。
【図１７】実施例が適用されたサーバにおけるモニタの機能ブロック。
【図１８】実施例が適用されたサーバにおけるモニタで実行される処理。
【図１９】実施例が適用された管理サーバのハードウェア構成。
【発明を実施するための形態】
【００１５】
図２に、実施例が適用された情報処理システムが示される。情報処理システムは、サーバ１００、サーバ２００、管理サーバ３００、スイッチ４００、及びネットワーク５００を含む。
【００１６】
サーバ１００において、サーバ１００のプロセッサによってメモリに格納されたプログラムが実行されることにより、仮想マシン１１０及び１１１、仮想スイッチ１２０、モニタ１２３、スケジューラ１２２、ソータ１２１、ユニバーサルキュー１４０、インディビジュアルキュー１５０、及びキューコントローラ１３０が実行される。なお、図２において、仮想マシンがＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）と表される。
【００１７】
仮想マシン１１０及び仮想マシン１１１はコンピュータの動作をエミュレートするソフトウェア又はフレームワークである。仮想スイッチ１２０によって、仮想マシン１１０及び仮想マシン１１１から送信されたデータが調停され、調停されたデータがサーバ１００のＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）に送信される。ＮＩＣに送信されたデータがネットワーク５００を介してサーバ２００に送信される。
【００１８】
ソータ１２１は、キューコントローラ１３０による指示に従って、サーバ１００内で実行される仮想マシン１１０及び仮想マシン１１１から送信されるデータを、ユニバーサルキュー１４０又はインディビジュアルキュー１５０の何れか一方にソートする。なお、仮想マシン１１０及び仮想マシン１１１から送信されるデータが、データのリクエスト元や管理用データであるか否か等に基づいてフローとよばれる単位で分類されてもよい。ソータ１２１は、仮想マシン１１０及び仮想マシン１１１が送信するパケットに含まれる識別情報に基づいてフローを識別してもよい。例えば、パケットに含まれる送信元仮想マシンのＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレス及び宛先仮想マシンのＭＡＣアドレスの組み合わせに基づいてフローを識別する。例えば、データの種類を示すフラグに基づいてフローを識別する。ソータ１２１は、これらの識別方法によって、一つの仮想マシンから送信される複数のフローを識別することがある。ソータ１２１によって、それらのフロー毎にユニバーサルキュー１４０又はインディビジュアルキュー１５０の何れか一方が選択されて、仮想マシンから送信されるデータがソートされるようにしてもよい。
【００１９】
ユニバーサルキュー１４０は、複数の仮想マシンからのデータ又は複数のフローによるデータを格納するためのキューである。ユニバーサルキュー１４０に格納された順序でユニバーサルキュー１４０からデータが読み出される。
【００２０】
インディビジュアルキュー１５０は、特定の仮想マシンからのデータ又は特定のフローによるデータを格納するためのキューである。
【００２１】
なお、キューとは、サーバ１００の外部にデータが送信される際に、データの送信順序がスケジューラ１２２によって調停されるために一時的にデータを格納するための格納領域である。ユニバーサルキュー１４０及びインディビジュアルキュー１５０は、レジスタ、メモリ又はＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）において格納領域が割り当てられることによって実現される。例えば、レジスタ、メモリ又はＦＩＦＯにおいて複数の格納領域を準備しておき、後述されるキューコントローラ１３０の指示に従って、複数の格納領域の何れかがユニバーサルキュー１４０及びインディビジュアルキュー１５０として割り当てられるようにしてもよい。
【００２２】
スケジューラ１２２は、ユニバーサルキュー１４０及びインディビジュアルキュー１５０の何れか一方を所定の規則に従って順に選択することにより、ユニバーサルキュー１４０又はインディビジュアルキュー１５０に格納されたデータを調停し、調停されたデータをサーバ１００が有するＮＩＣに転送する。スケジューラ１２２は、例えば、上述された複数の格納領域を順に選択してデータを読み出したり、複数の格納領域に対応するアドレスを順に指定してデータを読み出したりすることによってデータを調停し、サーバ１００のＮＩＣに転送する。
【００２３】
なお、所定の規則として、サーバ１００に接続される外部リンクの帯域に基づく所定の割合に従って、インディビジュアルキュー１５０が選択されるようにしてもよい。例えば、フローの帯域が、サーバ１００に接続される外部リンクの帯域をサーバ１００内のフローの数で除算した値よりも大きい場合には、そのフローをインディビジュアルキュー１５０に割り当て、そのフローの帯域が確保される割合でそのインディビジュアルキュー１５０がスケジューラ１２２によって選択されるようにすればよい。なお、実測帯域の小さい他のフローの割り当てがユニバーサルキューにまとめられてもよい。
【００２４】
例えば、サーバ１００に接続される外部リンクの帯域が１０Ｇｂｐｓであるとする。サーバ１００内から送信されるフローの数が２０であり、そのうち１つのフローの帯域が１Ｇｂｐｓであるとする。なお、他のフローの帯域の合計が９Ｇｂｐｓ以下であるとする。この場合に、例えば、キューコントローラ１３０は、帯域が１Ｇｂｐｓのフローをインディビジュアルキュー１５０に割り当て、他のフローをユニバーサルキュー１４０に割り当てる。スケジューラ１２２は、１０回のうち少なくとも１回の割合でインディビジュアルキュー１５０を選択する。このようなキューの割り当てにより、全てのフローがユニバーサルキュー１４０に割り当てられた場合に帯域が１Ｇｂｐｓのフローによって複数のフローの送信期間に偏りが生じてしまうことがなく、フロー間の公平性が確保される。また、このような割合でインディビジュアルキュー１５０が選択されることによって、帯域が１Ｇｂｐｓのフローは、その帯域を確保した通信が可能となる。
【００２５】
なお、実施例は、サーバ１００においてユニバーサルキュー１４０及びインディビジュアルキュー１５０の各々が１つずつ実行される例に限定されない。後述するが、スケジューラ１２２によって実行されるキューの選択は、サーバ１００のプロセッサやメモリコントローラ、メモリなどを利用して実行される処理である。つまり、キューの数が多くなればなるほど、スケジューラ１２２によってプロセッサやメモリコントローラ、メモリが使用される割合が増えるため、スケジューラ１２２の処理負荷がサーバ１００に与える影響が増える。この場合、スケジューラ１２２の処理負荷がボトルネックとなることで、サーバ１００の外部リンクの帯域が有効に使用されないことがある。すなわち、フローの数やフローの帯域に基づきながら、キューの数が設定されるとよい。さらに、スケジューラ１２２によって選択される割合をユニバーサルキュー毎やインディビジュアルキュー毎に変更し、サーバ１００の外部へ送信される割合を適宜調整してもよい。
【００２６】
モニタ１２３は、仮想マシン１１０及び仮想マシン１１１による各フローをモニタし、各フローのデータ量を測定する。モニタ１２３は、ソータ１２１への入力、ソータ１２１からの出力、スケジューラ１２２への入力、又はスケジューラ１２２からの出力などにおいて、上述されたパケットの識別情報に基づいて各フローを識別して、各フローのデータ量を測定する。
【００２７】
キューコントローラ１３０は、モニタ１２３により測定されたデータ量を、測定にかかった時間で除算することにより、仮想マシン１１０及び仮想マシン１１１から送信されるフロー毎の帯域を算出する。なお、キューコントローラ１３０により求められた帯域によって、単位時間当たりにサーバ１００から外部に送信されるデータ量が表される。キューコントローラ１３０は、各フローの帯域に基づいて、各フローをユニバーサルキュー１４０又はインディビジュアルキュー１５０の何れに割り当てるか判定して、各フローに対するキューの割り当て規則を仮想スイッチ１２０に対して指示する。
【００２８】
なお、サーバ１００内で実行される仮想マシンは仮想マシン１１０及び仮想マシン１１１に限定されず、サーバ１００のプロセッサやメモリ等のリソースに従って、仮想マシンの数が変更されてもよい。
サーバ２００に含まれる構成について、上記に説明したサーバ１００の構成と実質的に同様のため説明を省略する。また、図２は例示であり、実施例は図２に示されるサーバの数、仮想マシンの数、ユニバーサルキューの数、インディビジュアルキューの数などに限定されない。
【００２９】
管理サーバ３００がサーバ１００及びサーバ２００に接続される。管理サーバ３００から管理用データがサーバ１００及びサーバ２００に送信されることによって、サーバ１００及びサーバ２００内で実行される仮想マシンの配備、マイグレーション、又は消去などが実行及び制御される。
【００３０】
管理サーバ３００によって仮想マシンのマイグレーションを命令されたサーバ１００及びサーバ２００が、マイグレーションの対象となる仮想マシンの設定情報を通信する。なお、仮想マシンの設定情報を通信するために、サーバ１００及びサーバ２００がスイッチ４００に接続され、スイッチ４００を介して仮想マシンの設定情報が通信されてもよい。また、仮想マシンの設定情報が管理サーバ３００を介して通信されてもよい。
【００３１】
例えば、仮想マシン２１１がサーバ２００からサーバ１００にマイグレーションさせられる場合を説明する。この場合、仮想マシン２１１の実行状態に関する設定情報が、管理サーバ３００又はスイッチ４００を介して、サーバ２００からサーバ１００に送信される。この設定情報がサーバ１００によって実行されることにより、仮想マシン２１１がサーバ１００内で実行される。なお、後述するが、実施例では、マイグレーションの際に、仮想マシン２１１の帯域と仮想マシンに割り当てられた物理リソースとが対応付けられた帯域プロファイルが、移動元サーバであるサーバ２００から移動先サーバであるサーバ１００に送信されたり、マイグレーション前後で割り当てる物理リソースが変更される場合には、変更後の設定情報が管理サーバ３００から移動先サーバであるサーバ１００に送信されたりする。
【００３２】
ネットワーク５００は、サーバ１００及びサーバ２００間の通信をするためのＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、又はＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）である。また、ネットワーク５００は、サーバ１００及びサーバ２００間の通信を中継させるためのブリッジやルータであってもよい。なお、サーバ１００及びサーバ２００は一つのデータセンタに含まれていてもよいし、互いに異なるデータセンタに含まれていてもよい。また、ネットワーク５００は他のネットワーク６００に接続されており、サーバ１００及びサーバ２００は、他のネットワーク６００に接続された他のサーバと通信する。なお、他のネットワーク６００はＬＡＮ又はＷＡＮである。
【００３３】
図３に、仮想マシンによるフロー及びキューの関係の例が示される。ここではサーバ１００に沿って説明するが、サーバ２００でも同様の実行状態がある。
【００３４】
図３に示されるサーバ１００は、複数（ｍ＋１個）の仮想マシン１１０−１１ｍ、仮想スイッチ１２０、ソータ１２１、スケジューラ１２２、モニタ１２３、キューコントローラ１３０、及び複数（ｎ＋１個）のインディビジュアルキュー１５０−１５ｎを含む。仮想マシン１１０−１１ｍの各々は、例えばデータのリクエスト元や管理用データであるか否か等に基づいて複数のフローを送信しているとする。仮想マシン１１０−１１ｍによるフローの数の合計がｎ＋１であり、インディビジュアルキュー１５０−１５ｎの数と一致しているとする。
【００３５】
キューコントローラ１３０は、仮想マシン１１０−１１ｍによる、数の合計がｎ＋１のフロー毎にインディビジュアルキュー１５０−１５ｎを割り当てるよう仮想スイッチ１２０に指示する。ソータ１２１によって各フローがインディビジュアルキュー１５０−１５ｎにソートされ、スケジューラ１２２によって、複数のインディビジュアルキュー１５０−１５ｎが設定された所定の規則に従って選択される。
【００３６】
仮想環境では、スケジューラ１２２によって実行される複数のインディビジュアルキュー１５０−１５ｎの選択は、サーバ１００のプロセッサやメモリコントローラ、メモリなどを利用して実行される処理である。つまり、キューの数が多いほど、スケジューラ１２２によってプロセッサやメモリコントローラ、メモリが使用される割合が増えるため、スケジューラ１２２の処理負荷がサーバ１００に与える影響が増える。この場合、スケジューラ１２２の処理負荷が通信のボトルネックとなることで、サーバ１００の外部リンクの帯域が有効に使用されないことがある。
【００３７】
ところで、図３で示されるサーバ１００に、サーバ２００内で実行されていた仮想マシンがマイグレーションさせられた場合を検討する。マイグレーションは、サーバで実行されている仮想マシンの処理負荷が高くなった場合に他の仮想マシンを他のサーバに移動させる負荷分散や、サーバのメンテナンスのために仮想マシンを一時的に他のサーバに移動させる場合や、仮想マシンを特定のサーバに集めて使われていないサーバの電源を落とすことで全体の消費電力を低減させる場合などに実行される。そのため、一度にマイグレーションさせられる仮想マシンの個数が複数となる場合がある。マイグレーションさせられる仮想マシンの個数が複数であり、かつ一つの仮想マシンに対応するフローが複数であるにもかかわらず、マイグレーション後にそれらのフロー各々をインディビジュアルキューに割り当ててしまうと、スケジューリングに係る処理負荷が著しく高くなる可能性がある。
【００３８】
この場合には、スケジューラ１２２がプロセッサやメモリコントローラ、メモリを使用する割合が増えるため、サーバ１００内でもともと実行されていた仮想マシンの処理能力に影響がおよんでしまう可能性がある。また、スケジューラ１２２の処理負荷がボトルネックとなることで、送信されるデータの帯域が外部リンクの帯域未満の状態で稼働される可能性が高くなる。以上に説明したことから、サーバ１００の物理リソースや外部リンクの帯域を有効に利用するために、仮想マシンのマイグレーションがあっても、フローの数やフローの帯域に基づきながら、キューの数が設定されるとよい。
【００３９】
ところで、仮想マシンのマイグレーション後にマイグレーションさせられた仮想マシンの帯域が測定されることによって、ユニバーサルキュー及びインディビジュアルキューの数を設定することが考えられる。また、マイグレーションによりフローの数が増えたことによってインディビジュアルキューに割り当てられていたフローをユニバーサルキューにまとめた方がサーバの負荷が減る場合も考えられる。
【００４０】
ただし、上述したように、帯域の測定には一定以上の時間が必要であるため、マイグレーション後の帯域を測定している期間では、もともと実行されていた仮想マシンの処理能力が下げられたり、外部リンクを帯域が有効に利用されないことがある。
【００４１】
図４に、仮想マシンによるフロー及び送信キューの関係の他の例が示される。ここではサーバ１００に沿って説明するが、サーバ２００でも同様の実行状態がある。
【００４２】
図４に示されるサーバ１００は、複数（ｍ＋１個）の仮想マシン１１０−１１ｍ、仮想スイッチ１２０、ソータ１２１、スケジューラ１２２、モニタ１２３、キューコントローラ１３０、及びユニバーサルキュー１４０を含む。仮想マシン１１０−１１ｍの各々は、例えばデータのリクエスト元や管理用データであるか否か等に基づいて複数のフローを送信しているとする。仮想マシン１１０−１１ｍによる全てのフローがユニバーサルキュー１４０に割り当てられているとする。
【００４３】
図３の例と比較すると、スケジューラ１２２が複数のキューを順に選択する処理がないため、スケジューラ１２２の処理負荷が通信のボトルネックになる可能性が低い。しかし、仮想マシン１１０−１１ｍによる複数のフローの帯域がそれぞれ違うと、帯域の大きいフローによってユニバーサルキュー１４０が占有されてしまう可能性がある。また、ユニバーサルキュー１４０に格納されたフローの順序によっては、特定のフローのデータばかりサーバ１００の外部リンクに送信される可能性がある。つまり、仮想マシン１１０−１１ｍによる全てのフローがユニバーサルキュー１４０に割り当てられた場合、帯域の小さいフローが、実際にはその帯域よりもさらに制限されてしまい、複数のフロー間で送信の不均衡が発生してしまう可能性がある。
【００４４】
ここで、図４で示されるサーバ１００に、サーバ２００内で実行されていた仮想マシンがマイグレーションさせられた場合を検討する。上述したように、マイグレーションさせられる仮想マシンの数が複数であり、かつ一つの仮想マシンに対応するフローが複数あることがあるため、マイグレーションされられた仮想マシンによるフローをユニバーサルキュー１４０にまとめると、帯域の偏りによってはサーバ１００内でもともと実行されていた仮想マシンの送信割合が圧迫される可能性がある。
【００４５】
ところで、仮想マシンのマイグレーション後にマイグレーションさせられた仮想マシンの帯域が測定されることによって、ユニバーサルキューを適宜、インディビジュアルキューに分離するなど、ユニバーサルキュー及びインディビジュアルキューの数が再設定されてもよい。ただし、上述したように、帯域の測定には一定以上の時間が必要であるため、マイグレーション後の帯域を測定している期間では、複数のフロー間に不均衡が生じた状態でサーバ１００が稼働してしまう。
【００４６】
図５に、仮想マシンのマイグレーション及びフローの帯域に基づく処理の関係の例が示される。時刻５０１において移動元サーバから移動先サーバへの仮想マシンのマイグレーションが開始される。時刻５１０に移動元サーバでは仮想マシンの移動が完了し、マイグレーションさせられた仮想マシンが時刻５２０により移動先サーバで実行される。
【００４７】
移動先サーバで仮想マシンが実行されると、処理５３０により移動先サーバにおいて帯域の測定が実行される。帯域の測定には一定以上の時間が必要となる。例えば、仮想マシンがｗｅｂサーバとして実行されている場合、仮想マシンはｗｅｂリクエストに応答してデータを送信する。このデータの送信は、ｗｅｂリクエストのタイミングや処理内容に依存しているため、送信タイミングに規則性がない場合がある。そのため、仮想マシンの帯域を精度よく測定するために、一定以上の時間のデータ量が測定される。なお、データ量が測定される時間は、例えば、数分のオーダーとなることがある。
【００４８】
以上に述べたことから、仮想マシンの実行が開始される時刻５２０から帯域が取得される時刻５４０までの期間５５０は、帯域の測定中となる。従って、期間５５０では帯域が未取得なため、帯域に基づく処理(例えば、図３や図４に示されるキュー管理)が実行されない。
【００４９】
時刻５４０において帯域の測定が完了すると、実測された帯域に基づく処理が実行可能な状態となる。すなわち、時刻５４０以降は、処理５６０で示されるように、実測された帯域に基づいて、例えば、フローのキュー割り当てが判定されてもよい。
【００５０】
時刻５４０以降も移動先サーバでの帯域の測定が継続され、時刻５７０において新たに測定された帯域に更新される。同様に、仮想マシンが実行されている間、移動先サーバでの帯域の測定が継続され、帯域が更新されていく。なお、サーバ内で複数の仮想マシンが実行される場合に、帯域の測定が複数の仮想マシンに対して同時に実行されてもよいし、複数の仮想マシン毎に非同期に実行されてもよい。非同期に測定が行われる場合には、他の仮想マシンの帯域測定の開始時点によらずに、仮想マシンのマイグレーション後から帯域測定が開始される。
【００５１】
図５に示された例では、仮想マシンの実行が開始される時刻５２０から時刻５４０までの期間５５０では帯域が未取得なため、上述されたように、スケジューラによる処理負荷が高いキュー管理の状態（図３）や、送信割合の不均衡が生じるキュー管理の状態（図４）でサーバが稼働してしまうことがある。
【００５２】
なお、移動先サーバにおいて、マイグレーションさせられる仮想マシンと移動先サーバで当該マイグレーション前から実行されていた他の仮想マシンとが物理リソースを共有することとなる。そのため、移動先サーバにおいて割り当て可能な物理リソースの状況によっては、マイグレーションさせられる仮想マシンに割り当てられる物理リソースが、許容される範囲内において、移動元サーバにおいて割り当てられていた物理リソースとは変更される場合がある。物理リソースが変更されたり、移動先サーバでの実行環境（例えばフローの数）が移動元サーバでの実行環境と異なることで、仮想マシンの帯域が変化することがある。すなわち、移動元サーバで仮想マシンの帯域が実測されていたとしても、その実測帯域と、移動先サーバにおける仮想マシンの実測帯域とが異なることがある。従って、移動元サーバにおける実測帯域をそのまま利用して処理の判定をすることができない場合がある。
【００５３】
ところで、一つのサーバにおいて複数の事業者による複数の仮想マシンが混在して実行されるような運用がされている場合に、ある事業者の仮想マシンのマイグレーションによって、もともと実行されていた他の事業者の仮想マシンの稼働状況に影響を与えてしまうことがある。仮想マシンによって実現されるサービスを提供する事業者やサービスの提供を受けるユーザは、サービスが安定的に稼働される状態を望むため、仮想マシンのマイグレーション後の帯域の実測中の期間であっても、フローのキュー管理がいち早く適切に実行され、マイグレーション前後においてシステム全体が安定的に稼働されることが望まれる。これは、サーバの稼働状況や仮想マシンの稼働状況に基づいて仮想マシンを移動させることによりシステム全体の安定化、効率化、及び省電力化などを実行させる、仮想マシンの管理者やデータセンタの管理者によっても望まれることである。
【００５４】
図６に、実施例が適用された情報処理システムにおける帯域プロファイルの例が示される。帯域プロファイルは、後述する図１３のメモリ２１００に格納される情報であって、図２に示される管理サーバ３００によって一意に割り当てられる仮想マシンのＩＤ、帯域、帯域が実測されたものか補正されたものかを示す情報、仮想マシンに割り当てられたＣＰＵ速度、及び仮想マシンに割り当てられたＮＩＣ速度が対応付けられた情報である。
【００５５】
図６の例では、ＩＤが“１”の仮想マシンに２ＧＨｚのＣＰＵ速度及び１ＧｂｐｓのＮＩＣ速度が割り当てられた際に、実測された帯域が２００Ｍｂｐｓであることが示される。なお、仮想マシンのＩＤに代えて仮想マシンのフロー毎にＩＤが割り当てられて、フロー毎の図６に示される情報を関連付けてもよい。フローのＩＤは、上述したようなフローのパケットに含まれる識別情報に基づいて一意に割り当てられればよい。
【００５６】
図７に、実施例が適用された情報処理システムにおける仮想マシンプロファイルの例が示される。仮想マシンプロファイルは、後述する図１３のメモリ２１００に格納される情報であって、仮想マシンに割り当てられたＣＰＵ速度、及び仮想マシンに割り当てられたＮＩＣ速度が対応付けられた情報である。仮想マシンプロファイルは、仮想マシンを配備するために作成される仮想マシンの設定情報に基づいて作成される。この設定情報は、仮想マシンに対して割り振るＣＰＵ速度、メモリ量、仮想ＮＩＣの速度、及びディスク容量などの情報を含む。仮想マシンプロファイルは、仮想マシンが配備されたり移動させられたりする際に管理サーバ３００から該当するサーバに送信される設定情報に基づいて作成される。図７の例では、仮想マシンに割り当てられたＣＰＵ速度が３ＧＨｚ及びＮＩＣ速度が１Ｇｂｐｓであることが示されている。後述するように、仮想マシンのマイグレーションの際に帯域プロファイルを受け取ったサーバは、自身のメモリ２１００に格納されている仮想マシンプロファイルに基づいて、受け取った帯域プロファイルにある帯域を補正する。
【００５７】
図８に、実施例が適用された情報処理システムにおける帯域プロファイルの他の例が示される。帯域プロファイルは、後述する図１３のメモリ２１００に格納される情報であって、仮想マシンのＩＤ、帯域、帯域が実測されたものか補正されたものかを示す情報、仮想マシンに割り当てられたＣＰＵ速度、及び仮想マシンに割り当てられたＮＩＣ速度が対応付けられた情報である。なお、上述したように、仮想マシンのＩＤに代えて仮想マシンのフロー毎にＩＤが割り当てられて、フロー毎に図８に示される情報を関連付けてもよい。
【００５８】
図８の例では、マイグレーション後、ＩＤが“１”の仮想マシンに３ＧＨｚのＣＰＵ速度及び１ＧｂｐｓのＮＩＣ速度が割り当てられた結果、移動元サーバで実測された帯域である２００Ｍｂｐｓが補正されて、移動先サーバでの帯域が３００Ｍｂｐｓであると予測されたことが示される。なお、帯域の補正は、移動元サーバにおいて仮想マシンに割り当てられた物理リソース（例えば図６）及び移動先サーバにおいて仮想マシンに割り当てられた物理リソース（例えば図７）の比率や、その比率に対して移動先サーバにおけるフローの数に依存した仮想スイッチのスケジューリング負荷を反映させるための係数を掛け算したり、移動先サーバにおいて仮想マシンに割り当てられた仮想ＮＩＣの速度や移動先サーバの物理ＮＩＣの速度を元に割り当てられた帯域の上限値により制限を加えたりすることによって実行される。
【００５９】
後述するように、図８に示される補正された帯域を予測値として利用することによって、移動先での帯域の実測を待っている期間（図５の期間５５０）であっても、例えばフローに対するキュー管理が実行される。
【００６０】
仮想マシンのマイグレーションは、負荷分散、メンテナンス、又は仮想マシンを特定のサーバに片寄せする際などに利用されるため、マイグレーション前後で仮想マシンに割り当てられる物理リソースが変更されたり、移動先サーバでの他の仮想マシン含めた稼働状況（フローの数）によっては移動後の帯域が移動元サーバで実測されたものとは異なってしまう。
【００６１】
例えば、仮想マシンがｗｅｂサーバとして実行されている場合、仮想マシンはｗｅｂリクエストに対して所定の処理を実行し、処理の結果をｗｅｂリクエスト元に送信する。仮想マシンが実行する処理は、仮想マシンに割り当てられたＣＰＵ速度に依存するため、ｗｅｂリクエスト元に送信される単位時間当たりのデータ量は仮想マシンに割り当てられたＣＰＵ速度に依存する。つまり、仮想マシンに割り当てられたＣＰＵ速度に依存して仮想マシンの帯域が変わる。また、仮想マシンに割り当てられたＮＩＣ速度によって仮想マシンの帯域が制限される。また、仮想スイッチによりスケジューリングされる割合によって帯域が制限される。例えば、複数の仮想マシンが実行されている場合には、それらが送信するデータ量の合計値が物理サーバのＮＩＣ速度に制限される。つまり、実行される物理サーバのＮＩＣ速度に依存して仮想マシンの帯域が変わる。以上に述べたとおり、仮想マシンに割り当てられる物理リソースの状況が変ったり、仮想マシンが実行されるサーバが変わったりすると、仮想マシンの帯域が変わる。
【００６２】
また、移動先サーバの余りの物理リソースによっては、許容される範囲内において、マイグレーションを完了させるためにも、仮想マシンに割り当てられる物理リソースの量を移動元で割り当てられていた物理リソースの量とは変更される場合がある。このような場合でも、上述するように、マイグレーションの前後で仮想マシンが単位時間当たりに処理可能な能力が変ったり、仮想ＮＩＣの上限値が変ったりすることによって、仮想マシンの帯域が変わる。
【００６３】
また、仮想スイッチを実行するための物理リソースは仮想マシンを実行するための物理リソースと共有されているため、移動先サーバにおいて仮想マシンの数が増えることでフロー数が増えると、仮想スイッチによるスケジューリングの負荷が大きくなる。この場合、仮想スイッチによるＣＰＵ占有率が大きくなるため、マイグレーション後の仮想マシンの帯域が想定されているものよりもさらに制限されることがある。
【００６４】
そこで、移動元サーバで実測された帯域が、仮想マシンに割り当てられる物理リソースの差分やサーバおける実行状態の差分、さらにＮＩＣ速度に基づいて補正されることで、移動先での帯域の実測値により近い予測値を得ることができる。精度の高い予測値を利用すれば、移動先での帯域の実測を待っている期間（図５の期間５５０）であっても、例えばフローに対するキュー管理が精度よく実行される。なお、移動元サーバ及び移動先サーバで仮想マシンに対する物理リソースの割り当てが実質的に同じ場合には、移動元サーバで実測された帯域が補正されることなく予測値として利用されてもよい。帯域の補正方法に関するより詳細な例が図１５の説明と共に後述される。
【００６５】
図９に、実施例が適用された情報処理システムにおける帯域プロファイルの他の例が示される。帯域プロファイルは、後述する図１３のメモリ２１００に格納される情報であって、仮想マシンのＩＤ、帯域、帯域が実測されたものか補正されたものかを示す情報、仮想マシンに割り当てられたＣＰＵ速度、及び仮想マシンに割り当てられたＮＩＣ速度が対応付けられた情報である。なお、上述したように、仮想マシンのＩＤに代えて仮想マシンのフロー毎にＩＤが割り当てられて、図９に示される情報をフロー毎に関連付けてもよい。
【００６６】
図９の例では、３ＧＨｚのＣＰＵ速度及び１ＧｂｐｓのＮＩＣ速度が割り当てられたＩＤが“１”の仮想マシンに対して、移動先サーバでの帯域の実測が行われた結果、実測された帯域が２９５Ｍｂｐｓであることが示される。
【００６７】
図１０に、実施例が適用された情報処理システムの動作の例が示される。ここでは、管理サーバ３００の命令に従って、サーバ２００内で実行されている仮想マシン２１１がサーバ１００にマイグレーションさせられ、その後、サーバ１００内で実行されている仮想マシン１１０がサーバ２００にマイグレーションさせられる例が示される。この例に沿って、実施例による帯域プロファイルの移動、帯域の補正、及び補正された帯域によるフローの管理が説明される。なお、図１０において、サーバがＳＶと表される。
【００６８】
はじめに、サーバ１００内では仮想マシン１１０及び仮想マシン１１１が実行され、サーバ２００内では仮想マシン２１０が実行されているとする。ここで、管理サーバ３００によって、仮想マシン２１１を配備させるための仮想マシン配備命令１０００がサーバ２００に通知される。この仮想マシン配備命令１０００と共に仮想マシン２１１に割り当てるＣＰＵ速度、メモリ、仮想ＮＩＣ速度、及びディスクの情報を含む設定情報がサーバ２００に通知され、仮想マシン配備命令１０００及び設定情報を受け取ったサーバ２００では、仮想マシン２１１が設定情報に基づいて実行される。
【００６９】
サーバ２００内で実行されるモニタ２２３によって、仮想マシン２１０及び仮想マシン２１１のデータ量を測定するための処理１０１０が実行される。例えば、モニタ２２３が実行中の仮想マシン２１０及び仮想マシン２１１のフローが所定期間モニターされ、所定期間に仮想マシン２１０及び仮想マシン２１１が送信するデータ量が測定される。処理１０１０によって実行中の仮想マシン２１０及び仮想マシン２１１のデータ量が測定されると、測定されたデータ量がキューコントローラ２３０に通知される。なお、仮想マシン２１０及び仮想マシン２１１のデータ量の測定が同時に実行されてキューコントローラ２３０に通知されてもよいし、仮想マシン２１０及び仮想マシン２１１毎にデータ量の測定が非同期に実行されてキューコントローラ２３０に通知されてもよい。非同期に測定が行われる場合には、例えば、仮想マシン２１０の帯域測定の開始時点によらずに、仮想マシン２１１の配備後から帯域測定が開始される。
【００７０】
サーバ２００内で実行されるキューコントローラ２３０によって、モニタ２２３により測定されたデータ量に基づき帯域を計算し、後述されるメモリ２１００に帯域プロファイルとして格納するための処理１０２０が実行される。キューコントローラ２３０によって、例えば、モニタ２２３により測定された仮想マシン２１０及び仮想マシン２１１の各フローのデータ量が、モニターされていた所定期間で除算されることにより、帯域が算出される。算出された帯域は実際に測定されたデータ量に基づいているため、帯域プロファイルにおいては、図６に示されるように、帯域の値に対して実測を表す情報である“Ｍ”が関連付けられている。また、この帯域が実測帯域とよばれることとする。
【００７１】
キューコントローラ２３０によって、実測帯域に基づくキュー管理を実行するための処理１０３０が実行される。例えば、フローの実測帯域が、サーバ２００に接続される外部リンクの帯域をサーバ２００内のフローの数で除算した値よりも大きい場合には、そのフローをインディビジュアルキューに割り当て、そのフローの帯域が確保される割合でそのインディビジュアルキューがスケジューラによって選択されるようにすればよい。なお、実測帯域の小さい他のフローの割り当てはユニバーサルキューに統合される。このようなキュー管理により、サーバ２００内の各フローが外部リンクに送信される公平性が担保されつつ、サーバ２００内のキューの数が削減されるためキューのスケジューリングにかかる処理負荷が抑制される。
【００７２】
サーバ２００においては、処理１０４０に示されるように、処理１０２０の後に実行中の仮想マシンのデータ量が測定される処理がモニタ２２３によって継続して実行される。また、モニタ２２３による処理に合わせて実測帯域の算出及びキュー管理の実行がキューコントローラ２３０によって継続して実行される。なお、図１０ではそれらのうち一部の表示が省略されている。
【００７３】
一方、サーバ１００内で実行されるモニタ１２３によって、仮想マシン１１０及び仮想マシン１１１のデータ量を測定するための処理１０５０が実行される。例えば、モニタ１２３が実行中の仮想マシン１１０及び仮想マシン１１１のフローが所定期間モニターされ、所定期間に仮想マシン１１０及び仮想マシン１１１が送信するデータ量が測定される。処理１０５０によって実行中の仮想マシン１１０及び仮想マシン１１１のデータ量が測定されると、測定されたデータ量がキューコントローラ１３０に通知される。
【００７４】
サーバ１００内で実行されるキューコントローラ１３０によって、モニタ１２３により測定されたデータ量に基づき帯域を算出し、後述されるメモリ２１００に帯域プロファイルとして格納するための処理１０６０が実行される。キューコントローラ１３０によって、例えば、モニタ１２３により測定された仮想マシン１１０及び仮想マシン１１１の各フローのデータ量が、モニターされていた所定期間で除算されることにより、帯域が算出される。算出された帯域は実際に測定されたデータ量に基づいているため、帯域プロファイルにおいては、図６に示されるように、帯域の値に対して実測を表す情報である“Ｍ”が関連付けられている。また、この帯域が実測帯域とよばれることとする。
【００７５】
キューコントローラ１３０によって、実測帯域に基づくキュー管理を実行するための処理１０７０が実行される。例えば、フローの実測帯域が、サーバ１００に接続される外部リンクの帯域をサーバ１００内のフローの数で除算した値よりも大きい場合には、そのフローをインディビジュアルキューに割り当て、そのフローの帯域が確保される割合でそのインディビジュアルキューがスケジューラによって選択されるようにすればよい。なお、実測帯域の小さい他のフローの割り当てはユニバーサルキューに統合される。このようなキュー管理により、サーバ１００内の各フローが外部リンクに送信される公平性が担保されつつ、サーバ１００内のキューの数が削減されるためキューのスケジューリングにかかる処理負荷が抑制される。
【００７６】
サーバ１００においては、処理１０８０に示されるように、処理１０５０の後に実行中の仮想マシンのデータ量が測定される処理がモニタ１２３によって継続して実行される。また、モニタ１２３による処理に合わせて実測帯域の算出及びキュー管理の実行がキューコントローラ１３０によって継続して実行される。なお、図１０ではそれらのうち一部の表示が省略されている。
【００７７】
管理サーバ３００は、サーバ２００内で実行されている仮想マシン２１１をサーバ１００にマイグレーションさせる仮想マシン移動命令１０９０をサーバ２００及びサーバ１００に通知する。仮想マシン移動命令１０９０を受け取ったサーバ２００は、仮想マシン２１１の設定情報をサーバ１００に送信して、仮想マシン２１１を停止させる。仮想マシン２１１の設定情報を受け取ったサーバ１００は、仮想マシン２１１を実行する。なお、このマイグレーションに伴い、サーバ１００において実行される仮想マシン２１１の設定を、サーバ１００における物理リソースの使用状況に合わせて変更する場合には、割り当てるＣＰＵ速度、メモリ、仮想ＮＩＣ速度、及びディスクの情報を含む変更された設定情報が管理サーバ３００からサーバ１００に通知され、変更された設定情報に基づいてサーバ１００において仮想マシン２１１が実行される。
【００７８】
ところで、仮想マシン２１１がサーバ１００にマイグレーションされた時点では、サーバ１００において仮想マシン２１１の帯域がまだ測定されていない。仮想マシン２１１の帯域の測定を待っている期間に仮想マシン２１１による１以上のフローのキュー管理が行われないことで、サーバ１００でのスケジューリングにかかる負荷が増加する可能性がある。また、もともとサーバ１００にあったフローが選択される割合が減少することでフロー選択の公平性が担保されなくなる可能性がある。
【００７９】
そこで、以下に説明するように、仮想マシン２１１の帯域が測定されるまでの期間１５００であっても、移動元サーバで仮想マシン２１１の実測された帯域が利用されたり補正されたりすることによって移動先サーバでの仮想マシン２１１の帯域が予測され、キュー管理が実行される。
【００８０】
仮想マシン移動命令１０９０を受け取ったサーバ２００では、キューコントローラ２３０によって、仮想マシン２１１の設定情報だけでなく図６に示される帯域プロファイルもサーバ１００に送信するための処理１１００が実行される。処理１１００によって送信される帯域プロファイルは図６に示される例に限定されないが、ここでは、仮想マシン２１１のＩＤを“１”として、仮想マシン２１１に割り当てられたＣＰＵ速度が２ＧＨｚ及びＮＩＣ速度が１Ｇｂｐｓの場合にサーバ２００における実測帯域が２００Ｍｂｐｓであるとして説明する。
【００８１】
サーバ１００では、キューコントローラ１３０によって、処理１１００により送信された帯域プロファイルを受け取り、サーバ２００において仮想マシン２１１の実測された帯域を補正するための処理１１１０が実行される。なお、サーバ１００において実行される仮想マシン２１１に割り当てられた物理リソースが、図７に示されるように、ＣＰＵ速度が３ＧＨｚ及びＮＩＣ速度が１Ｇｂｐｓに変更された例を説明する。
【００８２】
処理１１１０において、キューコントローラ１３０によって、帯域プロファイルにある移動元サーバ２００において仮想マシン２１１に割り当てられた物理リソース、及び仮想マシンプロファイルにある移動先サーバ１００において仮想マシン２１１に割り当てられる物理リソースが比較され、帯域プロファイル（図６）にある仮想マシン２１１の帯域が補正される。補正された帯域により帯域プロファイルが更新されるとともに、帯域が補正されたものであることを識別するために識別子が“Ｍ”から“Ｅ”に変えられる。更新された帯域プロファイル（図８）がサーバ１００のメモリ２１００に格納される。
【００８３】
例えば、サーバ２００において仮想マシン２１１に割り当てられたＣＰＵ速度が２ＧＨｚ及びＮＩＣ速度が１Ｇｂｐｓであるのに対して、サーバ１００において仮想マシン２１１に割り当てられたＣＰＵ速度が３ＧＨｚ及びＮＩＣ速度が１Ｇｂｐｓであるため、仮想マシンが実行される環境としてＣＰＵ速度が１．５倍になっている。そこで、キューコントローラ１３０により、仮想マシン２１１がサーバ１００で実行された場合には帯域が３００Ｍｂｐｓであるとして、サーバ２００で実測された帯域が補正される。なお、マイグレーション前後で仮想マシンに割り当てられる物理リソースや稼働状況が実質的に変更されない場合には、処理１１１０が省かれてもよい。つまり、移動元サーバでの実測帯域をそのまま利用してもよい。また、仮想マシン２１１が実行される環境としてフローの数が多くなると、これらのフローをスケジューリングする処理負荷によって仮想マシンの帯域が制限される場合があるため、３００Ｍｂｐｓに対して、事前にテスト環境などで求めたフローの数に依存する１以下の係数を、実行中のフロー数に基づいて掛け算することにより、３００Ｍｂｐｓよりも小さい帯域を補正された帯域としてもよい。また、マイグレーション後に仮想マシン２１１に割り当てられた仮想ＮＩＣの速度や、仮想マシン２１１が実行されるサーバの物理ＮＩＣの能力によっても帯域が制限されるため、補正された帯域がこれらインターフェースの速度以上である場合には、インターフェースの速度（上限値）が補正された帯域として置き換えられてもよい。なお、図８の例では、仮想マシンに割り当てられたＮＩＣ速度が１Ｇｂｐｓであるため、補正により求められた３００Ｍｂｐｓを仮想マシン２１１の帯域とする。
【００８４】
キューコントローラ１３０によって、補正された帯域に基づいてキュー管理をするための処理１１２０が実行される。例えば、仮想マシン２１１がサーバ１００にマイグレーションされたことによって、サーバ１００では仮想マシン２１１による１以上のフローが増加したことになる。仮想マシン１１０及び仮想マシン１１１による複数のフローの数と仮想マシン２１１によって増加するフローの数との合計値で外部リンクの帯域を除算した値よりも補正された帯域（上述の場合には３００Ｍｂｐｓ）が小さい場合には、仮想マシン２１１のフローがユニバーサルキューにまとめられてもよい。この場合には、仮想マシン２１１のマイグレーションがあってもキューの数が増加しないためキューのスケジューリングの負荷が大きくなることが抑制される。一方で、仮想マシン２１１のマイグレーション後のサーバ１００内のフローの合計値で外部リンクの帯域を除算した値よりも補正された帯域（上述の場合には３００Ｍｂｐｓ）が大きい場合には、仮想マシン２１１のフローをインディビジュアルキューに割り当てる。この場合には、仮想マシン２１１の帯域を確保しつつ、キューのスケジューリングにおいて仮想マシン２１１によるフロー及び他のフローが選択される割合の公平性が保たれる。
【００８５】
なお、キューコントローラ１３０によって、例えば、サーバ１００に含まれるレジスタ、メモリ又はＦＩＦＯにおいてキューとして準備された複数の格納領域の何れをユニバーサルキュー及びインディビジュアルキューとするかを指定し、指定された格納領域（例えばメモリのアドレス）及びフロー（例えば、送信元アドレス及び宛先アドレスの組み合わせ）が関連付けられる。キューコントローラ１３０は、ソータ１２１に対して、関連付けられた情報に従ってフローをソーティングするように命令する。
【００８６】
モニタ１２３によって、サーバ１００内で実行されている仮想マシン１１０、仮想マシン１１１及び仮想マシン２１１のデータ量が測定されてキューコントローラ１３０に通知するための処理１０８０が実行される。なお、処理１０８０の処理内容は上述した処理１０５０の処理内容と実質的に同様であるため説明を省略する。
【００８７】
キューコントローラ１３０によって、処理１０８０により測定されたデータ量に基づき仮想マシン１１０、仮想マシン１１１及び仮想マシン２１１の帯域を算出し、後述されるメモリ２１００に帯域プロファイルとして格納するための処理１１３０が実行される。なお、処理１１３０の処理内容は上述した処理１０６０の処理内容と実質的に同様であるため説明を省略する。
【００８８】
処理１１３０により帯域が算出されて帯域プロファイルが更新されると、キューコントローラ１３０によって、実測された帯域に基づいてキュー管理をする処理１１４０を実行される。処理１１４０が実行される時点では、仮想マシン２１１の帯域プロファイルが、処理１１３０により図９のように更新されている。つまり、３ＧＨｚのＣＰＵ速度及び１ＧｂｐｓのＮＩＣ速度が割り当てられた仮想マシン２１１の実測帯域が２９５Ｍｂｐｓであることが取得されている。処理１１４０では、キューコントローラ１３０によって、仮想マシン２１１のフローに対するキュー管理が、補正された帯域ではなく、測定された帯域に基づいて実行される。例えば、補正された帯域に基づいてユニバーサルキューに割り当てられていた仮想マシン２１１のフローを、測定された帯域に従ってインディビジュアルキューに割り当てるように変更してもよい。また、補正された帯域に基づいてインディビジュアルキューに割り当てられていた仮想マシン２１１のフローを、測定された帯域に従ってユニバーサルキューに割り当てるように変更してもよい。
【００８９】
以上に説明したように、仮想マシン２１１の帯域が測定されるまでの期間１５００であっても、移動元サーバで仮想マシン２１１の実測された帯域を利用したり補正したりすることによって、移動先サーバでの仮想マシン２１１の帯域が予測され、キュー管理が実行される。仮想マシン２１１の帯域が実測された後は、実測帯域によってキュー管理が実行される。
【００９０】
管理サーバ３００は、サーバ１００内で実行されている仮想マシン１１０をサーバ２００にマイグレーションさせる仮想マシン移動命令１１５０をサーバ１００及びサーバ２００に通知する。仮想マシン移動命令１１９０を受け取ったサーバ１００は、仮想マシン１１０の設定情報をサーバ２００に送信して、仮想マシン１１０を停止させる。仮想マシン１１０の設定情報を受け取ったサーバ２００は、仮想マシン１１０を実行する。なお、このマイグレーションに伴い、サーバ２００において実行される仮想マシン１１０の設定を、サーバ２００における物理リソースの使用状況に合わせて変更する場合には、割り当てるＣＰＵ速度、メモリ、仮想ＮＩＣ速度、及びディスクの情報を含む変更された設定情報が管理サーバ３００からサーバ２００に通知され、変更された設定情報に基づいてサーバ２００において仮想マシン１１０が実行される。
【００９１】
キューコントローラ１３０によって、仮想マシン１１０の帯域プロファイルをサーバ２００に送信する処理１１６０が実行される。なお、処理１１６０の処理内容は上述した処理１１００の処理内容と実質的に同様であるため説明を省略する。
【００９２】
キューコントローラ２３０によって、処理１１６０により送信された帯域プロファイル及びサーバ２００のメモリ２１００に格納されたサーバ２００の仮想マシンプロファイルに従って仮想マシン１１０の帯域を補正するための処理１１７０が実行される。なお、処理１１７０の処理内容は上述した処理１１１０の処理内容と実質的に同様であるため説明を省略する。
【００９３】
キューコントローラ２３０によって、仮想マシン１１０の補正された帯域に基づいてキュー管理をするための処理１１８０が実行される。なお、処理１１８０の処理内容は上述した処理１１２０の処理内容と実質的に同様であるため説明を省略する。
【００９４】
ところで、仮想マシン１１０がサーバ１００からサーバ２００にマイグレーションさせられた後、サーバ１００では仮想マシン１１１及び仮想マシン２１１が実行されている。仮想マシン１１１及び仮想マシン２１１の帯域は測定中であるが、仮想マシン１１０によるフローがサーバ１００からなくなったことによって、すでに取得済みの実測された帯域に基づいて仮想マシン１１１及び仮想マシン２１１のキュー管理を再判定する処理１１９０がキューコントローラ１３０によって実行されてもよい。
【００９５】
例えば、仮想マシン１１０のマイグレーションによりサーバ１００内のフローが少なくなったので、スケジューリングの処理負荷が通信のボトルネックにならない範囲であれば、それらのフローに割り当てるキューの数を増やしてもよい。この場合には、ユニバーサルキューに割り当てられていた複数のフロー各々がインディビジュアルキューに割り当てられることによって、ソータによってユニバーサルキューにソーティングされるタイミングによらずに、それぞれのフローが外部リンクに送信される割合がより均一化される。
【００９６】
図１１に、実施例が適用された情報処理システムにおいて仮想マシンのマイグレーションが実行された場合のキュー管理の例が示される。ここでは、マイグレーションさせられる仮想マシンの帯域が補正された結果、移動元サーバで実測された値よりも小さくなった例が説明される。なお、図２と同一符号の構成については説明を省略する。また、本例はサーバ２００からサーバ１００に仮想マシン２１１がマイグレーションされる例を示す。
【００９７】
図１１Ａには、サーバ２００からサーバ１００に仮想マシン２１１がマイグレーションされた後、仮想マシン２１１のフローにキューが割り当てられる前のサーバ１００が示される。ソータ１２１によって、仮想マシン１１０及び仮想マシン１１１のフローがともにユニバーサルキュー１４０にソートされている。
【００９８】
図１１Ｂには、仮想マシン２１１の補正された帯域に基づいてキュー管理が実行されたサーバ１００が示される。仮想マシン２１１の補正された帯域が、サーバ１００のフロー数で外部リンクの帯域を除算した値よりも小さかったため、仮想マシン２１１のフローがソータ１２１によってユニバーサルキュー１４０にソートされている。
【００９９】
図１１Ｃには、仮想マシン２１１の実測された帯域に基づいてキュー管理が実行されたサーバ１００が示される。サーバ１００において実測された仮想マシン２１１の帯域がサーバ１００のフロー数で外部リンクの帯域を除算した値よりも小さかったため、図１１Ｂに示されるキュー管理と変わらず、仮想マシン２１１のフローがソータ１２１によってユニバーサルキュー１４０にソートされている。なお、仮想マシン２１１の実測された帯域がサーバ１００のフロー数で外部リンクの帯域を除算した値よりも大きければ、仮想マシン２１１のフローがソータ１２１によってインディビジュアルキューにソートされるようにすればよい。
【０１００】
以上に説明したように、マイグレーションと併せて帯域プロファイルが送信され、帯域プロファイルに含まれる帯域が上述されるように補正され、補正された帯域により、仮想マシンが実行されるサーバでのより確からしい帯域に基づいてキュー管理が実行されるので、帯域の実測を待っている期間であっても、より実動作に合ったキュー管理が可能となる。従って、冗長に帯域が見積もられることなくキュー管理が実行されるので、帯域の実測が完了する前であっても、サーバ１００内のスケジューラ１２２の処理負荷を減らすことができる。
【０１０１】
仮想環境では、スケジューラ１２２の処理は、サーバ１００に含まれるＣＰＵ２０００やメモリ２１００などのリソースが使用されて実行されるため、キューが多くなるほど処理負荷が大きくなる。従って、仮想マシンのマイグレーション後にいち早く実動作に合った帯域に基づいてキュー管理をすることは格別の効果を奏する。
【０１０２】
図１２に、実施例が適用された情報処理システムにおいて仮想マシンのマイグレーションが実行された場合のキュー管理の他の例が示される。ここでは、マイグレーションさせられる仮想マシンの帯域が移動先サーバで補正された結果、移動元サーバで実測された値よりも大きくなった例が説明される。なお、図２と同一符号の構成については説明を省略する。
【０１０３】
図１２Ａには、サーバ２００からサーバ１００に仮想マシン２１１がマイグレーションされた後、仮想マシン２１１のフローにキューが割り当てられる前のサーバ１００が示される。ソータ１２１によって、仮想マシン１１０及び仮想マシン１１１のフローがともにユニバーサルキュー１４０にソートされている。
【０１０４】
図１２Ｂには、仮想マシン２１１の補正された帯域に基づいてキュー管理が実行されたサーバ１００が示される。仮想マシン２１１の補正された帯域が、サーバ１００のフロー数で外部リンクの帯域を除算した値よりも大きかったため、仮想マシン２１１のフローがソータ１２１によってインディビジュアルキュー１５０にソートされている。
【０１０５】
図１２Ｃには、仮想マシン２１１の実測された帯域に基づいてキュー管理が実行されたサーバ１００が示される。サーバ１００において実測された仮想マシン２１１の帯域がサーバ１００のフロー数で外部リンクの帯域を除算した値よりも大きかったため、図１２Ｂに示されるキュー管理と変わらず、仮想マシン２１１のフローがソータ１２１によってインディビジュアルキュー１５０にソートされている。なお、仮想マシン２１１の実測された帯域がサーバ１００のフロー数で外部リンクの帯域を除算した値よりも小さければ、仮想マシン２１１のフローがソータ１２１によってユニバーサルキュー１４０にソートされるようにしてもよい。
【０１０６】
以上に説明したように、マイグレーションと併せて帯域プロファイルが送信され、帯域プロファイルに含まれる帯域が上述されるように補正され、補正された帯域により、実行されるサーバでのより確からしい帯域に基づいてキュー管理が実行されるので、帯域の実測を待っている期間であっても、実動作に合ったキュー管理が実行される。
【０１０７】
仮想環境では、一つのサーバにおいて複数の仮想マシンが実行されることがあり、それらの仮想マシンが同じユーザ（事業者）によるものとは限らない。つまり、マイグレーションが実行された後にキュー管理が好ましく行われなかった場合には、もともと実行されていた他のユーザ（事業者）による仮想マシンの送信が選択される割合が圧迫され、送信が選択される割合に公平性が保てなくなる場合がある。従って、一つのサーバにおいて複数のユーザ（事業者）による仮想マシンが実行されるような仮想環境でマイグレーションが実行される場合では、帯域の実測が完了する前であっても、いち早く実動作に合った帯域に基づいてキュー管理がされることは、マイグレーション後の送信の公平性をいち早く保つ点で好ましい。
【０１０８】
図１３に、実施例が適用されたサーバ（１００、２００）のハードウェア構成が示される。サーバ１００及びサーバ２００の各々は、ＣＰＵ２０００、メモリ２１００、記憶装置２２００、送受信インターフェース（データ通信用）２３００、送受信インターフェース（管理用）２４００、送受信インターフェース（マイグレーション用）２５００及びそれらが接続されたバス２６００を有するコンピュータである。
【０１０９】
ＣＰＵ２０００は、処理を実行するための１以上のプロセッサを含んでいる。メモリ２１００は例えば、ＲＡＭである。記憶装置２２００は例えば、ＲＯＭやフラッシュメモリ等の不揮発性メモリ、又はＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等の磁気ディスク装置である。送受信インターフェース（データ通信用）２３００は、外部装置に対してデータの送受信をするためのインターフェースであり、インターフェース回路、通信回路、通信制御回路、又はネットワークインターフェースカードなどの回路である。送受信インターフェース（データ通信用）２３００は、図２に示されるネットワーク５００に接続される。送受信インターフェース（管理用）２４００は、管理用のデータを送受信するためのインターフェースであり、インターフェース回路、通信回路、通信制御回路、又はネットワークインターフェースカードなどの回路である。送受信インターフェース（管理用）２４００は、図２に示される管理サーバ３００に接続される。送受信インターフェース（マイグレーション用）２５００は、管理用のデータを送受信するためのインターフェースであり、インターフェース回路、通信回路、通信制御回路、又はネットワークインターフェースカードなどの回路である。送受信インターフェース（マイグレーション用）２５００は、図２に示されるスイッチ４００に接続される。
【０１１０】
メモリ２１００には、サーバ１００やサーバ２００の動作を制御するための処理が記述されたプログラム、及び図１５及び１６に示される処理が記述されたプログラムが格納される。ＣＰＵ２０００によってメモリ２１００に格納されたプログラムが実行されることによりサーバ１００やサーバ２００の動作が制御され、サーバ１００やサーバ２００は図１４及び１７に示される各機能ブロックとして機能する。
【０１１１】
図１４に、実施例が適用されたサーバ（１００、２００）におけるキューコントローラ（１３０、２３０）の機能ブロックが示される。キューコントローラ１３０及び２３０の各々は、メモリ２１００に格納されたプログラムがＣＰＵ２０００によって実行されることにより、帯域プロファイル取得部３０００、読み出し部３０１０、算出部３０２０、更新部３０３０、判定部３０４０、実行部３０５０、測定制御部３０６０、タイマ３０７０、データ量取得部３０８０、及び計算部３０９０として機能する。各機能ブロックにより実行される処理が、図１５及び１６に示される処理に対応して後述される。
【０１１２】
図１５に、実施例が適用されたサーバ（１００、２００）のキューコントローラ（１３０、２３０）で実行される処理が示される。管理サーバ３００から仮想マシンを移動させるための移動命令を受け取ったサーバ１００又はサーバ２００のうち、仮想マシンのマイグレーションの移動先となるサーバにおいて、図１５に示される処理が開始される。なお、管理サーバ３００から仮想マシンを移動させるための移動命令の例が、図１０に示された仮想マシン移動命令１０９０及び１１５０である。
【０１１３】
帯域プロファイル取得部３０００によって、帯域プロファイルを取得するための処理４０１０が実行される。処理４０１０により、管理サーバ３００から仮想マシンを移動させるための移動命令を受け取ったサーバ１００又はサーバ２００のうち、仮想マシンのマイグレーションの移動元となるサーバから送信された帯域プロファイル（例えば、図１０に示される処理１１００及び処理１１６０によって送信された帯域プロファイル）を受け取り、自サーバのメモリ２１００に格納することで、移動先サーバは、マイグレーションされられる仮想マシンの移動元サーバにおける実測帯域及び移動元サーバにおける物理リソースの割り当て状況に関する情報を含む帯域プロファイルを取得する。なお、移動元となるサーバから送信された帯域プロファイルの例が、図６に示される帯域プロファイルである。
【０１１４】
読み出し部３０１０によって、仮想マシンプロファイルを読み出すための処理４０２０が実行される。管理サーバ３００から仮想マシンを移動させるための移動命令と併せて送信された仮想マシンプロファイル（例えば、図７）が自サーバのメモリ２１００に格納されており、読み出し部３０１０によって、この仮想マシンプロファイルがメモリ２１００から読み出される。なお、処理４０１０及び処理４０２０については、処理順序が入れ替えられてもよい。
【０１１５】
算出部３０２０によって、仮想マシンプロファイルに基づき帯域を算出するための処理４０３０が実行される。処理４０１０により取得された帯域プロファイルにある移動元サーバにおける物理リソースの割り当て状況及び処理４０２０により読み出された仮想マシンプロファイルにある移動先サーバにおける物理リソースの割り当て状況に基づいて、算出部３０２０によって、処理４０１０により取得された帯域プロファイルにある仮想サーバの実測帯域が算出される。例えば、取得された帯域プロファイルが図６に示される例であって、読み出された仮想マシンプロファイルが図７に示される例であるとする。この場合、移動先サーバにおいて仮想マシンに割り当てられるＣＰＵ速度が３ＧＨｚであり、移動元サーバにおいて仮想マシンに割り当てられていたＣＰＵ速度が２ＧＨｚであるため、ＣＰＵ速度の比である１．５に従って、移動元サーバにおいて実測された２００Ｍｂｐｓの帯域が１．５倍の３００Ｍｂｐｓに補正される。なお、算出部３０２０による帯域の算出は、移動元サーバにおいて仮想マシンに割り当てられた物理リソース、及び移動先サーバにおいて仮想マシンに割り当てられた物理リソースの比率や、その比率に対して移動先サーバにおけるフローの数に依存した仮想スイッチのスケジューリング負荷を反映させるための係数を掛け算したり、移動先サーバにおいて仮想マシンに割り当てられた仮想ＮＩＣの速度や移動先サーバの物理ＮＩＣの速度を元に割り当てられた帯域の上限値により制限を加えたりすることによって実行される。以上をふまえて、例えば、以下の関係式により帯域を求めてもよい。
【０１１６】
（帯域）＝（移動元サーバでの実測帯域）×（（移動先サーバでの物理リソースの割り当て（例えばＣＰＵ速度））／（移動元サーバでの物理リソースの割当て（例えばＣＰＵ速度）））×（移動先サーバのフローの数に依存した１以下の係数）
なお、移動先サーバのフローの数に依存した１以下の係数とは、移動先サーバにおけるフローの数が多いほど、仮想スイッチにあるスケジューラの処理負荷が重くなり、この処理によって帯域が制限されることを反映する係数である。例えば、フローの数が多いほど値が小さくなる係数であり、テスト環境においてこの係数を求めておけばよい。
【０１１７】
上述の関係式により、求められた補正された帯域は、ＣＰＵ速度の比率で求めた３００Ｍｂｐｓよりも小さい値となる。また、割り当てられた仮想ＮＩＣの能力（上限値）や移動先サーバの物理ＮＩＣの能力に依存して割り当てられる帯域（上限値）よりも小さければ算出された帯域を用いてもよいが、算出された帯域が上限値よりも大きい場合には、その上限値を算出された帯域として置き換えればよい。なお、以上に説明した関係式にある項を全て考慮しなくても、その一部又は特定の組み合わせにより帯域を算出してもよい。
【０１１８】
処理４０３０により、移動元サーバで実測された帯域が算出されることで、移動先サーバにおける仮想マシンの帯域が予測されている。仮想マシンのマイグレーションは、サーバの負荷分散、メンテナンス、仮想マシンを特定のサーバに片寄せさせる電力管理などに利用され、これらの処理が実行される場合に仮想マシンの移動先サーバでの動作が保証されていたとしても、マイグレーション前後での物理リソースの割り当て状況に依存して、仮想マシンの帯域がマイグレーションの前後で変わることがある。そこで、処理４０３０による算出が実行されることで、移動先サーバにおける仮想マシンの帯域の実測値により近い予測値を得ることができ、移動先サーバにおける仮想マシンの帯域の実測が実行されている期間であっても精度の高い予測値が使用されることで、後述される処理４０６０が実行可能となる。なお、マイグレーション前後での仮想マシンの実行環境に実質的な差がない場合には、処理４０３０を実行することなく、移動元サーバで実測された帯域を予測値として利用して、後述される処理４０６０が実行されてもよい。なお、処理４０３０の例が、図１０に沿って上述された処理１１１０及び１１７０である。
【０１１９】
更新部３０３０によって、仮想マシンプロファイル及び補正された帯域に基づき、帯域プロファイルを更新するための処理４０４０が実行される。マイグレーションさせられた仮想マシンの帯域プロファイルが、処理４０２０によって読み出された仮想マシンプロファイルにある物理リソースの割り当て状況（ＣＰＵ速度及びＮＩＣ速度など）、及び処理４０３０によって補正された帯域で更新される。例えば、更新された帯域プロファイルの例が、図８に示される例である。帯域が補正された帯域であることを識別するために“Ｅ”という識別子に変更されている。処理４０４０により更新された帯域プロファイルがメモリ２１００に格納される。
【０１２０】
判定部３０４０によって、補正された帯域に基づき制御処理を判定するための処理４０５０が実行される。ここで、補正された帯域とは処理４０３０により補正された帯域である。処理４０５０では、例えば、補正された帯域が、仮想マシンによるフロー数で外部リンクの帯域を除算した値よりも大きければ、補正された帯域に対応するフローにインディビジュアルキューを割り当てる。一方で、補正された帯域が仮想マシンによるフロー数で外部リンクの帯域を除算した値よりも小さければ、補正された帯域に対応するフローにユニバーサルキューを割り当てる。なお、この割り当てに対してスケジューラがキューを選択する割合は、フローの総数に対して少なくとも１回の割合でインディビジュアルキュー各々を選択し、残りの割合でユニバーサルキューを選択するものとする。
【０１２１】
処理４０５０によって移動先サーバでの仮想マシンの帯域が実測されるのを待っている期間であっても、補正された帯域を予測値として制御処理が判定される。つまり、移動先サーバでの仮想マシンの帯域が実測されるのを待っている期間であっても、各フローが外部リンクに送信される公平性を担保させ、キューの数が削減されるためスケジューラによる処理負荷が極力抑制させる処理が実行可能となる。
【０１２２】
実行部３０５０によって、判定された制御処理を実行するための処理４０６０が実行される。処理４０６０においては、実行部３０５０によって、処理４０５０により判定された制御処理がサーバ内の仮想スイッチに含まれるソータ及びスケジューラに設定されることで、判定された制御処理（例えばキュー管理）がサーバ内で実行されることとなる。なお、処理４０６０の例が、図１０に沿って上述された処理１１２０及び処理１１８０である。なお、処理４０６０が完了すると処理を終える。
【０１２３】
図１６に、実施例が適用されたサーバ（１００、２００）のキューコントローラ（１３０、２３０）で実行される他の処理が示される。図１６に示される処理の例が、図１０に沿って上述された処理１０２０、処理１０６０、及び処理１１３０である。なお、図１６に示される処理は、サーバ内で複数の仮想マシンが実行される場合に、複数の仮想マシンに対して同時に実行されてもよいし、複数の仮想マシン毎に非同期に実行されてもよい。
【０１２４】
測定制御部３０６０によって、データ量測定の開始を命令するための処理４５１０が実行される。測定制御部３０６０は、データ量を測定する対象を識別し、自サーバ内のモニタに対して、識別された対象が送信するデータ量を測定させるための命令を実行する。例えば、データ量を測定する対象として仮想マシンを識別する場合には、管理サーバ３００によって割り当てられた仮想マシンのＭＡＣアドレスやＩＰアドレスにより、測定対象となる仮想マシンを識別すればよい。また、データ量を測定する対象としてフローを識別する場合には、フローの送信元ＭＡＣアドレス及び宛先ＭＡＣアドレスの組み合わせや、送信元ＩＰアドレス及び宛先ＩＰアドレスの組み合わせにより、測定対象となるフローを識別すればよい。後述されるモニタの測定部は、キャプチャされたパケットに測定制御部から命令されたこれらの識別情報があるか否かを判定することで測定対象を識別し、測定対象のパケットのデータ量を測定することとなる。
【０１２５】
タイマ３０７０によって、データ量の測定時間の計測を開始するための処理４５２０が実行される。なお、処理４５２０が処理４５１０と同時に実行されてもよい。
【０１２６】
測定制御部３０６０によって、タイマ３０７０の値が所定値であるか否かを判定するための処理４５３０が実行される。タイマ３０７０の値が所定値でないと判定された場合にはタイマ３０７０の計測を継続する。タイマ３０７０の値が所定値であると判定された場合には処理４５４０に移る。
【０１２７】
測定制御部３０６０によって、データ量測定の停止を命令するための処理４５４０が実行される。測定部制御部３０６０は、後述されるモニタに対して、測定対象のデータ量測定を停止させるための命令をする。後述するが、処理４５４０による停止命令を受信したモニタは、測定されたデータ量をキューコントローラに通知する。
【０１２８】
測定制御部３０６０によって、タイマを停止するための処理４５５０が実行される。処理４５５０により、帯域を算出するための測定時間の計測が停止する。なお、処理４５５０が処理４５４０と同時に実行されてもよい。
【０１２９】
データ量取得部３０８０によって、測定されたデータ量を取得するための処理４５６０が実行される。処理４５４０による停止命令を受信したモニタが、測定されたデータ量をキューコントローラに通知する。データ量取得部３０８０により、この通知されたデータ量が取得される。
【０１３０】
計算部３０９０によって、測定されたデータ量及びタイマ値に基づいて帯域を計算するための処理４５７０が実行される。処理４５７０において、処理４５６０により取得されたデータ量がタイマ３０７０により計測された測定時間で除算されることにより、測定対象の帯域が計算される。
【０１３１】
更新部３０３０によって、仮想マシンプロファイル及び実測された帯域に基づき、帯域プロファイルを更新するための処理４５８０が実行される。ここで、実測された帯域とは処理４５７０により計算された帯域である。例えば、処理４５８０により更新された帯域プロファイルの例が図９に示される例であるとすると、実測された帯域が２９５Ｍｂｐｓであり、帯域が実測された帯域であることを識別するために“Ｍ”という識別子に変更されている。処理４５８０により更新された帯域プロファイルがメモリ２１００に格納される。
【０１３２】
判定部３０４０によって、実測された帯域に基づき制御処理を判定するための処理４５９０が実行される。処理４５９０では、例えば、実測された帯域が、仮想マシンによるフロー数で外部リンクの帯域を除算した値よりも大きければ、実測された帯域に対応するフローにインディビジュアルキューを割り当てる。一方で、実測された帯域が仮想マシンによるフロー数で外部リンクの帯域を除算した値よりも小さければ、実測された帯域に対応するフローにユニバーサルキューを割り当てる。なお、この割り当てに対してスケジューラがキューを選択する割合は、フローの総数に対して少なくとも１回の割合でインディビジュアルキュー各々を選択し、残りの割合でユニバーサルキューを選択するものとする。
【０１３３】
実行部３０５０によって、実測された帯域に基づき制御処理を判定するための処理４６００実行される。処理４６００においては、実行部３０５０によって、処理４５９０により判定された制御処理がサーバ内の仮想スイッチに含まれるソータ及びスケジューラに設定されることで、判定された制御処理（例えばキュー管理）がサーバ内で実行されることとなる。なお、処理４６００の例が、図１０に沿って上述された処理１１４０及び処理１１９０である。処理４６００により、各フローが外部リンクに送信される公平性を担保させ、キューの数が削減されるためスケジューラによる処理負荷が極力抑制させる処理が実行される。
【０１３４】
データ量測定を継続するか否かを判定するための処理４６１０が実行される。処理４６１０において、データ量測定を継続すると判定されると処理４５１０に移る。データ量測定を継続しないと判定されると図１６に示される処理を終える。
【０１３５】
図１７に、実施例が適用されたサーバ（１００、２００）のモニタ（１２３、２２３）の機能ブロックが示される。モニタ１２３及び２２３の各々は、メモリ２１００に格納されたプログラムがＣＰＵ２０００によって実行されることにより、命令受信部５０００、測定部５１００、及び通知部５２００として機能する。各機能ブロックにより実行される処理が、図１８に示される処理に対応して後述される。
【０１３６】
図１８に実施例が適用されたサーバ（１００、２００）におけるモニタ（１２３、２２３）で実行される処理が示される。図１８に示される処理の例が、図１０に沿って上述された処理１０１０、処理１０４０、処理１０５０、及び処理１０８０である。
【０１３７】
命令受信部５０００によって、データ量測定の開始命令をキューコントローラから受信すると、モニタ（１２３、２２３）において図１８に示される処理が開始される。
【０１３８】
測定部５１００によって、識別情報に基づき、データ量を測定するための処理６０１０が実行される。測定部５１００は、上述された測定制御部３０６０の命令にある識別情報に基づいて測定対象を識別する。例えば、測定部５１００は、キャプチャされたパケットに含まれる情報と識別情報とを比較することにより、測定対象のデータか否かを識別する。測定部５１００により識別されたデータが測定対象である場合、測定対象のデータ量を測定する。
【０１３９】
命令受信部５０００によって、データ量測定の停止命令があるか否かを判定するための処理６０２０が実行される。データ量測定の停止命令がないと判定された場合には、処理６０１０に移る。データ量測定の停止命令をキューコントローラから受信した場合には、処理６０３０に移る。
【０１４０】
測定部５１００によって、データ量の測定を停止するための処理６０３０が実行され、データ量の測定を停止される。
【０１４１】
通知部５２００により、測定されたデータ量を通知するための処理６０４０が実行される。処理６０４０により、通知部５２００は、測定部５１００によって測定されたデータ量をキューコントローラに通知する。
【０１４２】
図１９に、実施例が適用された管理サーバ（３００）のハードウェア構成が示される。管理サーバ３００は、ＣＰＵ７０００、メモリ７１００、記憶装置７２００、送受信インターフェース（データ通信用）７３００、送受信インターフェース（管理用）７４００、及びそれらが接続されたバス７５００を有するコンピュータである。
【０１４３】
ＣＰＵ７０００は、処理を実行するための１以上のプロセッサを含んでいる。メモリ７１００は例えば、ＲＡＭである。記憶装置７２００は例えば、ＲＯＭやフラッシュメモリ等の不揮発性メモリ、又はＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）等の磁気ディスク装置である。送受信インターフェース（データ通信用）７３００は、外部装置に対してデータの送受信をするためのインターフェースであり、インターフェース回路、通信回路、通信制御回路、又はネットワークインターフェースカードなどの回路である。送受信インターフェース（管理用）７４００は、管理用のデータを送受信するためのインターフェースであり、インターフェース回路、通信回路、通信制御回路、又はネットワークインターフェースカードなどの回路である。
【０１４４】
メモリ７１００には、管理サーバ３００の動作を制御するための処理が記述されたプログラムが格納される。ＣＰＵ７０００によってメモリ７１００に格納されたプログラムが実行されることにより管理サーバ３００の動作が制御される。
【０１４５】
なお、上述するサーバ１００及びサーバ２００の機能が管理サーバ３００で実行されるようにしてもよい。例えば、仮想マシンのマイグレーションの命令に際して、管理サーバ３００がサーバ１００及びサーバ２００内で実行される仮想マシンの帯域プロファイル及びサーバ１００及びサーバ２００の仮想マシンプロファイルを取得し、帯域プロファイルにある帯域を補正し、補正された帯域に基づくキュー管理をサーバ１００及びサーバ２００に設定するようにしてもよい。
【０１４６】
上述した実施例によれば、サーバ間で仮想マシンを移動させる際に、リソースの割り当ての差に従って移動前の帯域から移動後の帯域を算出することで、リソースを共有する他の仮想マシンと協調させる実行状態を帯域の実測を待たずに決定できる。
【０１４７】
以上の実施例に関し、さらに以下の付記を開示する。
【０１４８】
（付記１）  コンピュータ間で仮想マシンの移動が実行される場合に、移動元コンピュータにおいて前記仮想マシンに割り当てられたリソース及び移動先コンピュータにおいて前記仮想マシンに割り当てられるリソースの差分に基づいて、前記移動元コンピュータにおける仮想マシンの帯域から前記移動先コンピュータにおける前記仮想マシンの帯域を算出することを特徴とする情報処理方法。
（付記２）  算出された帯域に基づいて、前記移動先コンピュータにおける前記仮想マシンの実行状態を決定することを特徴とする付記１に記載の情報処理方法。
（付記３）前記実行状態を決定することにより、前記移動先コンピュータにおいて前記仮想マシンのデータ送信に割り当てられるキューの種類を決定することを特徴とする付記２に記載の情報処理方法。
（付記４）前記キューの種類は、前記仮想マシンのデータ送信が割り当てられる第１キューと、前記仮想マシンのデータ送信及び他の仮想マシンのデータ送信の両方が割り当てられる第２キューとを含むことを特徴とする付記３に記載の情報処理方法。
（付記５）前記差分は、移動元コンピュータにおいて前記仮想マシンに割り当てられた処理能力、及び移動先コンピュータにおいて前記仮想マシンに割り当てられる処理能力の差分であることを特徴とする付記１〜４の何れか１項に記載の情報処理方法。
（付記６）前記算出された帯域が、前記移動先コンピュータで実行されている仮想マシンの数により補正されることを特徴とする付記１〜５の何れか１項に記載の情報処理方法。
（付記７）前記算出された帯域が移動先コンピュータにおいて前記仮想マシンに割り当てられる仮想インターフェースの処理速度よりも大きい場合に、前記仮想インターフェースの処理速度を前記算出された帯域とすることを特徴とする付記１〜６の何れか１つに記載の情報処理方法。
（付記８）前記移動先コンピュータにおける仮想マシンの帯域が測定された後、前記算出された帯域を前記測定された帯域により更新することを特徴とする付記１〜７の何れか１つに記載の情報処理方法。
（付記９）前記仮想マシンが移動された後、前記移動元コンピュータにおいて実行される仮想マシンの実行状態を決定することを特徴とする付記１〜８の何れか１つに記載の情報処理方法。
（付記１０）前記移動先コンピュータでは、異なるユーザの仮想マシンが実行されることを特徴とする付記１〜９の何れか１つに記載の情報処理方法。
（付記１１）前記移動先コンピュータにおいて前記仮想マシンに割り当てられるリソースと共有して前記仮想マシンのデータ送信をスケジューリングすることを特徴とする付記１〜１０の何れか１つに記載の情報処理方法。
（付記１２）  コンピュータ間で仮想マシンの移動が実行される場合に、移動元コンピュータにおいて前記仮想マシンに割り当てられたリソース及び移動先コンピュータにおいて前記仮想マシンに割り当てられるリソースの差分に基づいて前記移動元コンピュータにおける仮想マシンの帯域から算出された前記移動先コンピュータにおける前記仮想マシンの帯域に基づいて、前記移動先コンピュータにおける前記仮想マシンの実行状態を決定することを特徴とする情報処理方法。
（付記１３）  コンピュータ間で仮想マシンの移動が実行される場合に、移動元コンピュータにおいて前記仮想マシンに割り当てられたリソース及び移動先コンピュータにおいて前記仮想マシンに割り当てられるリソースの差分に基づいて、前記移動元コンピュータにおける仮想マシンの帯域から前記移動先コンピュータにおける前記仮想マシンの帯域を算出する制御部を有することを特徴とする情報処理装置。
（付記１４）  前記制御部は、算出された帯域に基づいて、前記移動先コンピュータにおける前記仮想マシンの実行状態を決定することを特徴とする付記１３に記載の情報処理装置。
（付記１５）  コンピュータ間で仮想マシンの移動が実行される場合に、移動元コンピュータにおいて前記仮想マシンに割り当てられたリソース及び移動先コンピュータにおいて前記仮想マシンに割り当てられるリソースの差分に基づいて前記移動元コンピュータにおける仮想マシンの帯域から算出された前記移動先コンピュータにおける前記仮想マシンの帯域に基づいて、前記移動先コンピュータにおける前記仮想マシンの実行状態を決定する制御部を有することを特徴とする情報処理装置。
（付記１６）  コンピュータ間で仮想マシンの移動が実行される場合に、移動元コンピュータにおいて前記仮想マシンに割り当てられたリソース及び移動先コンピュータにおいて前記仮想マシンに割り当てられるリソースの差分に基づいて前記移動元コンピュータにおける仮想マシンの帯域から算出された前記移動先コンピュータにおける前記仮想マシンの帯域に基づいて、前記移動先コンピュータにおける前記仮想マシンの実行状態を決定することをコンピュータに実行させるプログラム。
【符号の説明】
【０１４９】
１００、２００                    サーバ
１１０、１１１、２１０、２１１    仮想マシン
１２０、２２０                    仮想スイッチ
１２１、２２１                    ソータ
１２２、２２２                    スケジューラ
１２３、２２３                    モニタ
１３０、２３０                    キューコントローラ
１４０、２４０                    ユニバーサルキュー
１５０、２５０                    インディビジュアルキュー
３００                            管理サーバ
４００                            スイッチ
５００                            ネットワーク
６００                            他のネットワーク
【図１】
2014063324.tif 000003
【図２】
2014063324.tif 000004
【図３】
2014063324.tif 000005
【図４】
2014063324.tif 000006
【図５】
2014063324.tif 000007
【図６】
2014063324.tif 000008
【図７】
2014063324.tif 000009
【図８】
2014063324.tif 000010
【図９】
2014063324.tif 000011
【図１０】
2014063324.tif 000012
【図１１】
2014063324.tif 000013
【図１２】
2014063324.tif 000014
【図１３】
2014063324.tif 000015
【図１４】
2014063324.tif 000016
【図１５】
2014063324.tif 000017
【図１６】
2014063324.tif 000018
【図１７】
2014063324.tif 000019
【図１８】
2014063324.tif 000020
【図１９】
2014063324.tif 000021