(57)【要約】【課題】移動後の仮想マシンのレスポンス時間を推定する精度を向上させる。【解決手段】情報処理装置１０は、物理マシン２１上で動作する仮想マシン２３を移動する場合に、仮想マシン２３が物理マシン２２上で仮想マシン２４と共有せずに使用可能なリソース２５の量を算出する。情報処理装置１０は、物理マシン２１で動作していたときの仮想マシン２３のレスポンス時間とリソース２５の量とに基づいて、物理マシン２２に移動した場合の仮想マシン２３のレスポンス時間を推定する。このとき、仮想マシン２３の使用するリソースがリソース２５の範囲内である場合と、仮想マシン２３が仮想マシン２４と共有するリソース２６を使用する場合とで、異なるアルゴリズムを用いる。【選択図】図１
2015007942.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
第１の物理マシン上で動作する仮想マシンを移動する場合に、第２の物理マシンへの他の仮想マシンの配置状況に応じて、前記仮想マシンが前記第２の物理マシン上で他の仮想マシンと共有せずに使用可能な第１のリソースの量を算出し、
前記第１の物理マシンで動作していたときの前記仮想マシンの第１のレスポンス時間と前記第１のリソースの量とに基づいて、前記第２の物理マシンへ移動した場合の前記仮想マシンの第２のレスポンス時間を推定する、
処理を実行させ、
前記第２のレスポンス時間の推定では、前記仮想マシンの使用するリソースが前記第１のリソースの範囲内である場合と、前記仮想マシンが前記第２の物理マシン上で他の仮想マシンと共有する第２のリソースを使用する場合とで、異なるアルゴリズムを用いる、
プログラム。
【請求項２】
複数の第２の物理マシンのうち、前記第２のレスポンス時間が所定の条件を満たす第２の物理マシンを、前記仮想マシンの移動先として選択する、処理を更に実行させる、
請求項１記載のプログラム。
【請求項３】
前記所定の条件を満たす第２の物理マシンが２以上ある場合、当該２以上の物理マシンのうち前記第１のリソースの量が小さい第２の物理マシンを優先的に選択する、
請求項２記載のプログラム。
【請求項４】
前記仮想マシンが前記第１の物理マシン上で他の仮想マシンと共有せずに使用可能であった第３のリソースの量を算出する、処理を更に実行させ、
前記第２のレスポンス時間の推定では、リソース使用量が前記第３のリソースの量を超えたときの前記第１のレスポンス時間を用いて、前記仮想マシンが前記第２のリソースを使用する場合に対応するアルゴリズムのパラメータの値を決定する、
請求項１乃至３の何れか一項に記載のプログラム。
【請求項５】
前記仮想マシンが前記第１の物理マシン上で他の仮想マシンと共有せずに使用可能であった第３のリソースの量を算出する、処理を更に実行させ、
前記第２のレスポンス時間の推定では、リソース使用量が前記第３のリソースの量以下であったときの前記第１のレスポンス時間を用いて、使用するリソースが前記第１のリソースの範囲内である場合に対応するアルゴリズムのパラメータの値を決定する、
請求項１乃至３の何れか一項に記載のプログラム。
【請求項６】
コンピュータが実行する仮想マシン管理方法であって、
第１の物理マシン上で動作する仮想マシンを移動する場合に、第２の物理マシンへの他の仮想マシンの配置状況に応じて、前記仮想マシンが前記第２の物理マシン上で他の仮想マシンと共有せずに使用可能な第１のリソースの量を算出し、
前記第１の物理マシンで動作していたときの前記仮想マシンの第１のレスポンス時間と前記第１のリソースの量とに基づいて、前記第２の物理マシンに移動した場合の前記仮想マシンの第２のレスポンス時間を推定し、
前記第２のレスポンス時間の推定では、前記仮想マシンの使用するリソースが前記第１のリソースの範囲内である場合と、前記仮想マシンが前記第２の物理マシン上で他の仮想マシンと共有する第２のリソースを使用する場合とで、異なるアルゴリズムを用いる、
仮想マシン管理方法。
【請求項７】
第１の物理マシン上で動作する仮想マシンの第１のレスポンス時間を示す情報と、第２の物理マシンへの他の仮想マシンの配置状況を示す情報とを記憶する記憶部と、
前記配置状況に応じて、前記仮想マシンが前記第２の物理マシン上で他の仮想マシンと共有せずに使用可能な第１のリソースの量を算出し、前記第１のレスポンス時間と前記第１のリソースの量とに基づいて、前記第２の物理マシンに移動した場合の前記仮想マシンの第２のレスポンス時間を推定する演算部と、
を有し、前記演算部は、
前記仮想マシンの使用するリソースが前記第１のリソースの範囲内である場合と、前記仮想マシンが前記第２の物理マシン上で他の仮想マシンと共有する第２のリソースを使用する場合とで、異なるアルゴリズムを用いて前記第２のレスポンス時間を推定する、
情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はプログラム、仮想マシン管理方法および情報処理装置に関する。
【背景技術】
【０００２】
現在、物理的なコンピュータ（物理マシンと言うことがある）上で、１または２以上の仮想的なコンピュータ（仮想マシンと言うことがある）を動作させる、コンピュータの仮想化技術が利用されている。仮想化技術を用いることで、複数のユーザの仮想マシンを１台の物理マシン上で動作させることもできる。このとき、ユーザ間で情報処理が互いに干渉しないように分離することができる。また、物理マシンが有するＣＰＵ（Central Processing Unit）リソースやＲＡＭ（Random Access Memory）リソースなどのリソースを、柔軟にユーザに割り振ることができる。そのため、データセンタなど多数のユーザが利用する情報処理システムにおいて、仮想化技術が用いられることが多い。
【０００３】
物理マシン上では、複数の仮想マシンを制御するための制御ソフトウェア（例えば、ハイパーバイザや管理ＯＳ（Operating System）と呼ばれるもの）が実行される。制御ソフトウェアは、物理マシンが有するリソースを複数の仮想マシンに割り振る。各仮想マシン上では、他の仮想マシンとは独立してユーザＯＳが実行される。各仮想マシンのユーザＯＳは、制御ソフトウェアから割り当てられたリソースを管理し、割り当てられたリソースの範囲内でアプリケーションソフトウェアが実行されるように制御する。
【０００４】
複数の物理マシンを有する情報処理システムの中には、物理マシン間で仮想マシンを移動（マイグレーション）できるものがある。仮想マシンの移動は、当該仮想マシンを停止させずに行える場合もある（ライブマイグレーション）。リソースが不足している物理マシン上で動作する仮想マシンの一部を他の物理マシンに移動することで、移動した仮想マシンの処理速度が改善されることがある。なお、各仮想マシンが使用するリソースの将来の増加量を予測し、予測した将来の増加量の近い仮想マシンが同一の物理マシンに配置されるように、仮想マシンの移動先を決定する仮想マシン管理装置が提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−１９８３３２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、物理マシンのリソースを仮想マシンに割り当てるにあたり、リソースの使用効率を上げるため、割当量の合計が物理マシンの有するリソースの量を超えることを許容する場合がある。このようなリソースの割当方法は、「オーバーコミット」と呼ばれることがある。例えば、ある時間帯（昼間など）に負荷が高くなる傾向にある仮想マシンと、他の時間帯（夜間など）に負荷が高くなる傾向にある仮想マシンとを、組み合わせて同じ物理マシンに配置する。そして、この２つの仮想マシンに対して当該物理マシンの有するリソースをオーバーコミットすることで、オーバーコミットしない場合と比べて、各時間帯の未使用リソースを減らしてリソースの使用効率を上げることができる。
【０００７】
ただし、オーバーコミットが行われると、ある仮想マシンに割り当てられたリソースの中には、当該仮想マシンが他の仮想マシンと共有しない部分（非共有部分）と、他の仮想マシンと共有している部分（共有部分）とが含まれることになる。共有部分については、当該仮想マシンが使用できることは保証されていない。よって、同一の物理マシン上にある２以上の仮想マシンの負荷が、予想に反して同時期に高くなると、少なくとも一部の仮想マシンは割り当てられたリソースの全部は使用できなくなる。
【０００８】
オーバーコミットが行われる情報処理システムにおいても、ある仮想マシンのレスポンスが非常に遅くなったときには、当該仮想マシンを他の物理マシンに移動することを検討した方が好ましい。例えば、ユーザと情報処理システムの運営者との間で、レスポンス時間（例えば、リクエストを受けてからレスポンスを返すまでの時間）の許容レベルが合意されている場合には、レスポンス時間を当該許容レベル以下にすることが好ましい。
【０００９】
しかし、オーバーコミットが行われていると、オーバーコミットを前提としない従来の仮想マシン管理に関する技術では、仮想マシンの移動によってレスポンス時間が改善するか予測することが容易でないという問題がある。割り当てられたリソースのうち共有部分については、他の仮想マシンと競合するリスクがある。よって、単にリソースの割当量に基づいてレスポンス時間を推定すると、共有部分のリスクが評価されない。
【００１０】
１つの側面では、移動後の仮想マシンのレスポンス時間を推定する精度が向上するプログラム、仮想マシン管理方法および情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
１つの態様では、コンピュータに以下の処理を実行させるプログラムが提供される。コンピュータは、第１の物理マシン上で動作する仮想マシンを移動する場合に、第２の物理マシンへの他の仮想マシンの配置状況に応じて、仮想マシンが第２の物理マシン上で他の仮想マシンと共有せずに使用可能な第１のリソースの量を算出する。第１の物理マシンで動作していたときの仮想マシンの第１のレスポンス時間と第１のリソースの量とに基づいて、第２の物理マシンへ移動した場合の仮想マシンの第２のレスポンス時間を推定する。第２のレスポンス時間の推定では、仮想マシンの使用するリソースが第１のリソースの範囲内である場合と、仮想マシンが第２の物理マシン上で他の仮想マシンと共有する第２のリソースを使用する場合とで、異なるアルゴリズムを用いる。
【００１２】
また、１つの態様では、コンピュータが実行する仮想マシン管理方法が提供される。
また、１つの態様では、記憶部と演算部とを有する情報処理装置が提供される。記憶部は、第１の物理マシン上で動作する仮想マシンの第１のレスポンス時間を示す情報と、第２の物理マシンへの他の仮想マシンの配置状況を示す情報とを記憶する。演算部は、配置状況に応じて、仮想マシンが第２の物理マシン上で他の仮想マシンと共有せずに使用可能な第１のリソースの量を算出し、第１のレスポンス時間と第１のリソースの量とに基づいて、第２の物理マシンに移動した場合の仮想マシンの第２のレスポンス時間を推定する。演算部は、仮想マシンの使用するリソースが第１のリソースの範囲内である場合と、仮想マシンが第２の物理マシン上で他の仮想マシンと共有する第２のリソースを使用する場合とで、異なるアルゴリズムを用いて第２のレスポンス時間を推定する。
【発明の効果】
【００１３】
１つの側面では、移動後の仮想マシンのレスポンス時間を推定する精度が向上する。
【図面の簡単な説明】
【００１４】
【図１】第１の実施の形態の情報処理システムを示す図である。
【図２】第２の実施の形態の情報処理システムを示す図である。
【図３】管理サーバのハードウェア例を示すブロック図である。
【図４】仮想マシンの配置例を示すブロック図である。
【図５】ＣＰＵリソースのオーバーコミットの例を示す図である。
【図６】トランザクション数とレスポンス時間の関係例を示すグラフである。
【図７】管理サーバおよび物理マシンのソフトウェア例を示すブロック図である。
【図８】物理マシンテーブルの例を示す図である。
【図９】仮想マシンテーブルの例を示す図である。
【図１０】動作ログテーブルの例を示す図である。
【図１１】移動制御の手順例を示すフローチャートである。
【図１２】関数算出の手順例を示すフローチャートである。
【図１３】レスポンス時間テーブルの例を示す図である。
【図１４】移動先決定の手順例を示すフローチャートである。
【発明を実施するための形態】
【００１５】
以下、本実施の形態を図面を参照して説明する。
［第１の実施の形態］
図１は、第１の実施の形態の情報処理システムを示す図である。
【００１６】
第１の実施の形態の情報処理システムは、コンピュータの仮想化技術を用いて、同一または異なるユーザの複数の仮想マシンを動作させる。この情報処理システムは、例えば、複数のユーザから利用されるデータセンタに設けられる。
【００１７】
情報処理システムは、情報処理装置１０と、物理マシン２１，２２を含む複数の物理マシンとを有する。情報処理装置１０は、人が操作する端末装置などのクライアントコンピュータでもよいし、サーバコンピュータでもよい。物理マシン２１，２２は、複数の仮想マシンが動作可能なコンピュータであり、例えば、サーバコンピュータである。情報処理装置１０と物理マシン２１，２２とは、例えば、ネットワークで接続されている。
【００１８】
物理マシン２１上では、少なくとも仮想マシン２３（ＶＭ＃１）が動作している。仮想マシン２３では、Ｗｅｂアプリケーションなど、リクエストに応じてレスポンスを返すアプリケーションソフトウェアが実行され得る。物理マシン２２上では、少なくとも仮想マシン２４（ＶＭ＃２）が動作している。ただし、各仮想マシンは、情報処理装置１０の制御のもとで、ある物理マシンから他の物理マシンに移動（マイグレーション）することができる。仮想マシン２３が物理マシン２１から物理マシン２２に移動すると、仮想マシン２３には、物理マシン２２のリソースが割り当てられることになる。リソースの例としては、ＣＰＵリソースやＲＡＭリソースなどの計算リソースが挙げられる。
【００１９】
ここで、第１の実施の形態では、オーバーコミットが行われる。よって、物理マシン２２上で複数の仮想マシンが動作するとき、それら仮想マシンに割り当てられたリソースの合計量が、物理マシン２２の備えるリソースの量を超えることがある。仮想マシン２３が物理マシン２１から物理マシン２２に移動する場合、仮想マシン２３と仮想マシン２４とが、物理マシン２２の一部のリソースを共有する可能性がある。
【００２０】
情報処理装置１０は、仮想マシン２３，２４を含む複数の仮想マシンを管理する。情報処理装置１０は、記憶部１１および演算部１２を有する。記憶部１１は、ＲＡＭなどの揮発性の記憶装置でもよいし、ＨＤＤなどの不揮発性の記憶装置でもよい。演算部１２は、例えば、プロセッサである。プロセッサは、ＣＰＵやＤＳＰ（Digital Signal Processor）であってもよく、ＡＳＩＣ（Application Specific Integrated Circuit）やＦＰＧＡ（Field Programmable Gate Array）などの回路を含んでもよい。プロセッサは、例えば、メモリ（例えば、記憶部１１）に記憶されたプログラムを実行する。
【００２１】
記憶部１１は、動作情報１３および構成情報１４を記憶する。動作情報１３および構成情報１４は、物理マシン２１，２２から収集されたものでもよい。動作情報１３は、物理マシン２１上で動作しているときの仮想マシン２３のレスポンス時間を示す。レスポンス時間は、例えば、仮想マシン２３がリクエストを受信してから当該リクエストに対応するレスポンスを送信するまでに要する時間またはその平均値である。構成情報１４は、物理マシン２２への仮想マシンの配置状況を示す。構成情報１４は、物理マシン２２上で動作する各仮想マシンの割当リソース量の情報を含んでいてもよい。
【００２２】
演算部１２は、仮想マシン２３を物理マシン２１から他の物理マシンに移動することを検討する。移動を検討する契機としては、例えば、仮想マシン２３のレスポンス時間が許容レベルを超えたことなどが考えられる。演算部１２は、移動先の候補として物理マシン２２が挙げられる場合、仮想マシン２３を物理マシン２１から物理マシン２２に移動した後のレスポンス時間を推定する。移動後のレスポンス時間が所定の条件を満たす場合、演算部１２は、仮想マシン２３を物理マシン２２に移動することを決定してもよい。
【００２３】
ここで、「レスポンス時間を推定する」とは、移動後のレスポンス時間の予測値を算出することであってもよいし、レスポンス時間が移動前と比べて改善するか否かを判定することや改善量を算出することであってもよい。「レスポンス時間」は、処理中のリクエストの数などの負荷値を変数とする関数として表してもよいし、ある負荷状態（例えば、処理中のリクエストの数がある値のとき）に対応するレスポンス時間であってもよい。
【００２４】
具体的には、演算部１２は、構成情報１４が示す配置状況に応じて、仮想マシン２３が物理マシン２２上で仮想マシン２４などの他の仮想マシンと共有せずに使用可能なリソース２５（非共有リソース）の量を算出する。リソース２５は、例えば、仮想マシン２３に割り当てられるリソースのうち、他の仮想マシンが割り当てられたリソースを全て使用したとしても浸食されない、占有できるリソースである。そして、演算部１２は、動作情報１３が示す物理マシン２１上でのレスポンス時間と算出したリソース２５の量とに基づいて、物理マシン２２に移動した場合の仮想マシン２３のレスポンス時間を推定する。
【００２５】
このとき、演算部１２は、仮想マシン２３の使用するリソースがリソース２５の範囲内である場合（第１のケース）と、仮想マシン２３が他の仮想マシンと共有するリソース２６を使用する場合（第２のケース）とで、異なるアルゴリズムを用いる。リソース２６は、例えば、仮想マシン２３に割り当てられる物理マシン２２のリソースのうち、他の仮想マシンと競合しており使用できることが保証されないリソースである。
【００２６】
リソース使用量がリソース２５の量以下である場合、仮想マシン２３は割り当てられたリソースのうち非共有部分のみ使用すればよく、第１のケースに該当する。一方、リソース使用量がリソース２５の量を超えた場合、仮想マシン２３は割り当てられたリソースのうち共有部分に加えて非共有部分も使用することになり、第２のケースに該当する。
【００２７】
第１のケースでは、例えば、レスポンス時間がリクエスト数に対して線形関係にあると仮定したアルゴリズムを用いる。線形関係には、レスポンス時間が一次関数で表される関係が含まれる。一方、第２のケースでは、例えば、レスポンス時間がリクエスト数に対して非線形関係にあると仮定したアルゴリズムを用いる。非線形関係には、指数関数など、レスポンス時間が非一次関数で表される関係が含まれる。第１のケースより第２のケースの方が、リクエスト数の増加に対するレスポンス時間の増加が大きくなる可能性が高い。
【００２８】
第１の実施の形態の情報処理システムによれば、仮想マシン２３の移動先の候補となる物理マシンにおいて、仮想マシン２３が他の仮想マシンと共有せずに使用可能なリソース２５の量が算出される。そして、仮想マシン２３が非共有部分のリソース２５の範囲内で動作する場合と共有部分のリソース２６を使用する場合とで、異なるアルゴリズムを用いて、物理マシン２２におけるレスポンス時間が推定される。よって、共有部分のリソース２６について他の仮想マシンと競合するリスクを評価でき、オーバーコミットが行われる場合であっても、レスポンス時間の推定精度が向上する。また、レスポンス時間が改善される可能性の高い物理マシンに仮想マシン２３を移動することが可能となる。
【００２９】
［第２の実施の形態］
図２は、第２の実施の形態の情報処理システムを示す図である。
第２の実施の形態の情報処理システムは、クライアント３１，３２を含む複数のクライアント、ネットワーク３３，３４、管理サーバ１００、および、物理マシン２００，２００ａ，２００ｂを含む複数の物理マシンを有する。管理サーバ１００は、第１の実施の形態における情報処理装置１０の一例である。物理マシン２００，２００ａ，２００ｂは、第１の実施の形態における物理マシン２１，２２の一例である。
【００３０】
クライアント３１，３２は、ネットワーク３３に接続されている。ネットワーク３３は、例えば、インターネットなどの広域ネットワークである。管理サーバ１００および物理マシン２００，２００ａ，２００ｂは、ネットワーク３４に接続されている。ネットワーク３４は、例えば、データセンタなどの構内のＬＡＮ（Local Area Network）である。ネットワーク３３，３４は互いに接続されている。クライアント３１，３２は、ネットワーク３３，３４を介して物理マシン２００，２００ａ，２００ｂにアクセスできる。
【００３１】
クライアント３１，３２は、物理マシン２００，２００ａ，２００ｂにリクエストを送信し、リクエストに対するレスポンスを受信するクライアントコンピュータである。クライアント３１，３２は、人が操作する端末装置であってもよい。クライアント３１，３２と物理マシン２００，２００ａ，２００ｂとの間の通信は、例えば、ＨＴＴＰ（Hypertext Transfer Protocol）に従って行われる。その場合、クライアント３１，３２上では、クライアントアプリケーションとしてＷｅｂブラウザが実行されてもよい。
【００３２】
管理サーバ１００は、物理マシン２００，２００ａ，２００ｂおよび物理マシン２００，２００ａ，２００ｂ上で動作する仮想マシンを管理するサーバコンピュータである。ただし、管理サーバ１００は、管理者が操作する端末装置であってもよい。管理サーバ１００は、物理マシン２００，２００ａ，２００ｂから、物理マシンの備えるリソースおよび当該リソースの仮想マシンへの割当状況を示す構成情報や、仮想マシンの負荷を示す動作ログを収集する。そして、管理サーバ１００は、各仮想マシンの負荷に応じて、物理マシン間の仮想マシンの移動（マイグレーション）を制御する。仮想マシンの移動は、仮想マシンを停止して行ってもよいし、停止せずに行ってもよい（ライブマイグレーション）。
【００３３】
物理マシン２００，２００ａ，２００ｂは、複数の仮想マシンが動作し得るサーバコンピュータである。仮想マシンは、管理サーバ１００の制御のもとで物理マシン２００，２００ａ，２００ｂに配置され、また、物理マシン間で移動される。仮想マシンを移動する場合、例えば、当該仮想マシンに関するＲＡＭ上のデータやＨＤＤ上のデータが物理マシン間で移動される。同一の物理マシン上には、異なるユーザからの要求に応じて生成された仮想マシン（例えば、契約者の異なる仮想マシン）が混在していてもよい。各仮想マシンで独立にＯＳが実行されることで、ユーザ間で情報処理を明確に分離できる。
【００３４】
仮想マシン上では、リクエストに応じてレスポンスを返すアプリケーションソフトウェアが実行される。アプリケーションソフトウェアの例として、ＨＴＴＰリクエストに応じてＨＴＴＰレスポンスを返すＷｅｂアプリケーションが挙げられる。仮想マシンは、クライアント３１，３２からリクエストを受信すると、リクエストに応じた一連の処理（トランザクション）を実行し、トランザクションの実行結果を示すレスポンスを送信する。
【００３５】
ここで、仮想マシンは、あるリクエストに対応するトランザクションが未終了のときに他のリクエストを更に受信すると、複数のトランザクションを並行して実行することになる。並行して実行されるトランザクションの数（以下、単に「トランザクション数」と言うことがある）が増加すると、ＣＰＵリソースやＲＡＭリソースなどのリソースの使用量が増加する可能性がある。また、トランザクション数が増加すると、リクエスト１つ当たりのレスポンスを返すまでに要するレスポンス時間が大きくなる可能性がある。
【００３６】
図３は、管理サーバのハードウェア例を示すブロック図である。
管理サーバ１００は、ＣＰＵ１０１、ＲＡＭ１０２、ＨＤＤ１０３、画像信号処理部１０４、入力信号処理部１０５、媒体リーダ１０６および通信インタフェース１０７を有する。ＣＰＵ１０１は、第１の実施の形態の演算部１２の一例であり、ＲＡＭ１０２またはＨＤＤ１０３は、第１の実施の形態の記憶部１１の一例である。
【００３７】
ＣＰＵ１０１は、プログラムの命令を実行する演算回路を含むプロセッサである。ＣＰＵ１０１は、ＨＤＤ１０３に記憶されているプログラムやデータの少なくとも一部をＲＡＭ１０２にロードし、プログラムを実行する。なお、ＣＰＵ１０１は複数のプロセッサコアを備えてもよく、管理サーバ１００は複数のプロセッサを備えてもよく、以下で説明する処理を複数のプロセッサまたはプロセッサコアを用いて並列実行してもよい。また、複数のプロセッサの集合（マルチプロセッサ）を「プロセッサ」と呼んでもよい。
【００３８】
ＲＡＭ１０２は、ＣＰＵ１０１が実行するプログラムやＣＰＵ１０１が演算に用いるデータを一時的に記憶する揮発性メモリである。なお、管理サーバ１００は、ＲＡＭ以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
【００３９】
ＨＤＤ１０３は、ＯＳやミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、管理サーバ１００は、フラッシュメモリやＳＳＤ（Solid State Drive）などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
【００４０】
画像信号処理部１０４は、ＣＰＵ１０１からの命令に従って、管理サーバ１００に接続されたディスプレイ４１に画像を出力する。ディスプレイ４１としては、ＣＲＴ（Cathode Ray Tube）ディスプレイ、液晶ディスプレイ（ＬＣＤ：Liquid Crystal Display）、プラズマディスプレイ（ＰＤＰ：Plasma Display Panel）、有機ＥＬ（ＯＥＬ：Organic Electro-Luminescence）ディスプレイなどを用いることができる。
【００４１】
入力信号処理部１０５は、管理サーバ１００に接続された入力デバイス４２から入力信号を取得し、ＣＰＵ１０１に出力する。入力デバイス４２としては、マウスやタッチパネルやタッチパッドやトラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、管理サーバ１００に、複数の種類の入力デバイスが接続されていてもよい。
【００４２】
媒体リーダ１０６は、記録媒体４３に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体４３として、例えば、フレキシブルディスク（ＦＤ：Flexible Disk）やＨＤＤなどの磁気ディスク、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disc）などの光ディスク、光磁気ディスク（ＭＯ：Magneto-Optical disk）、半導体メモリなどを使用できる。媒体リーダ１０６は、例えば、記録媒体４３から読み取ったプログラムやデータをＲＡＭ１０２またはＨＤＤ１０３に格納する。
【００４３】
通信インタフェース１０７は、ネットワーク３４に接続され、ネットワーク３４を介して物理マシン２００，２００ａ，２００ｂと通信を行うインタフェースである。通信インタフェース１０７は、ケーブルで通信装置と接続される有線通信インタフェースでもよいし、基地局と無線リンクで接続される無線通信インタフェースでもよい。
【００４４】
なお、管理サーバ１００は、媒体リーダ１０６を備えていなくてもよい。また、管理サーバ１００は、端末装置からネットワーク３４経由で制御される場合には、画像信号処理部１０４や入力信号処理部１０５を備えていなくてもよい。また、ディスプレイ４１や入力デバイス４２が、管理サーバ１００の筐体と一体に形成されていてもよい。クライアント３１，３２および物理マシン２００，２００ａ，２００ｂも、管理サーバ１００と同様のハードウェアを用いて実現することが可能である。
【００４５】
図４は、仮想マシンの配置例を示すブロック図である。
物理マシン２００は、ハイパーバイザ２１０、仮想マシン２２０（ＶＭ１）および仮想マシン２３０（ＶＭ２）を有する。物理マシン２００ａは、ハイパーバイザ２１０ａ、仮想マシン２２０ａ（ＶＭａ１）および仮想マシン２３０ａ（ＶＭａ２）を有する。物理マシン２００ｂは、ハイパーバイザ２１０ｂ、仮想マシン２２０ｂ（ＶＭｂ１）および仮想マシン２３０ｂ（ＶＭｂ２）を有する。仮想マシン２２０，２２０ａ，２２０ｂ，２３０，２３０ａ，２３０ｂは、第１の実施の形態の仮想マシン２３，２４の一例である。
【００４６】
ハイパーバイザ２１０，２１０ａ，２１０ｂは、仮想マシンに物理マシンのハードウェアリソースを割り当て、同一の物理マシン上で複数の仮想マシンが並行して動作できるようにする制御ソフトウェアである。ハイパーバイザ２１０は、物理マシン２００に配置された仮想マシン２２０，２３０を制御する。ハイパーバイザ２１０ａは、物理マシン２００ａに配置された仮想マシン２２０ａ，２３０ａを制御する。ハイパーバイザ２１０ｂは、物理マシン２００ｂに配置された仮想マシン２２０ｂ，２３０ｂを制御する。ただし、ハイパーバイザ２１０，２１０ａ，２１０ｂは、仮想マシンを移動させることができる。
【００４７】
ここで、第２の実施の形態では、各仮想マシンに割り当てられるリソースとして、主にＣＰＵリソースとＲＡＭリソースを考える。ＣＰＵリソースの量は、ＣＰＵクロック数として表現できる。仮想マシンは、指定されたクロック数のＣＰＵを有していると認識し、最大で当該クロック数までＣＰＵを使用することができる。ＲＡＭリソースの量は、ＲＡＭ領域の大きさとして表現できる。仮想マシンは、指定された大きさのＲＡＭを有していると認識し、最大で当該大きさまでＲＡＭ領域を使用することができる。
【００４８】
図５は、ＣＰＵリソースのオーバーコミットの例を示す図である。
第２の実施の形態では、仮想マシンに対してＣＰＵリソースをオーバーコミットすることができるものとする。オーバーコミットが行われると、ある物理マシン上で動作する仮想マシンに割り当てられたＣＰＵリソースの合計が、当該物理マシンの有するＣＰＵリソースの量を超えることになる。受信するリクエストの数が時間帯によって大きく異なる傾向にある複数の仮想マシンを組み合わせて同一の物理マシンに配置し、ＣＰＵリソースをオーバーコミットすることで、ＣＰＵリソースの使用効率を上げることができる。
【００４９】
例えば、物理マシン２００が２ＧＨｚのＣＰＵリソースを有しているとする。ＣＰＵリソースの量としての２ＧＨｚは、１つのＣＰＵのクロック数であってもよいし、複数のＣＰＵのクロック数の合計であってもよい。また、オーバーコミットにより、仮想マシン２２０（ＶＭ１）に１．６ＧＨｚのＣＰＵリソースを割り当て、仮想マシン２３０（ＶＭ２）に０．８ＧＨｚのＣＰＵリソースを割り当てるものとする。
【００５０】
この場合、仮想マシン２２０は、仮想マシン２３０の負荷に関係なく少なくとも１．２ＧＨｚまでは使用できるため、１．２ＧＨｚの占有部分を有していると言える。また、仮想マシン２３０は、仮想マシン２２０の負荷に関係なく少なくとも０．４ＧＨｚまで使用はできるため、０．４ＧＨｚの占有部分を有していると言える。一方、残りの０．４ＧＨｚのＣＰＵリソースは、オーバーコミット部分であり、仮想マシン２２０，２３０が共有していると言える。仮想マシン２２０，２３０の負荷の高い時間帯が異なれば、このオーバーコミット部分（共有部分）を効率的に活用することができる。
【００５１】
しかし、偶発的に、仮想マシン２２０，２３０のトランザクション数が同時期に多くなり、仮想マシン２２０，２３０が共にオーバーコミット部分のＣＰＵリソースを使用しようとする可能性もある。以下では、主に、仮想マシン２２０が１．６ＧＨｚのＣＰＵリソースを全て使用しており、仮想マシン２３０が割り当てられた０．８ＧＨｚのＣＰＵリソースのうち０．４ＧＨｚまで（５０％）しか使用できない場合を考える。
【００５２】
この場合、仮想マシン２３０のＣＰＵ使用率は５０％であるため、ＣＰＵ使用率を見るだけでは、仮想マシン２３０がリソース不足であると判断することは難しい。一方、実質的に使用できるＣＰＵリソースが上限に達していることから、トランザクション数の増加に伴って仮想マシン２３０のレスポンス時間が急激に大きくなるおそれがある。そこで、管理サーバ１００は、仮想マシン２３０のレスポンス時間が大きくなったとき、仮想マシン２３０がリソース不足であると判断して、他の物理マシンへの移動を検討する。
【００５３】
図６は、トランザクション数とレスポンス時間の関係例を示すグラフである。
仮想マシン２３０は、ＣＰＵリソースの使用量が占有部分の上限（ＣＰＵリソース境界点）に達する前までは、トランザクション数が増加すると、使用するＣＰＵリソースを増やして対処できる。図５の例では、仮想マシン２３０のＣＰＵリソース境界点は、０．４ＧＨｚである。この間、トランザクション１つ当たりのレスポンス時間は、トランザクション数が増加しても緩やかに増加する程度に抑えられる。
【００５４】
一方、仮想マシン２３０は、ＣＰＵリソースの使用量がＣＰＵリソース境界点に達した以降は、トランザクション数が更に増加しても、使用するＣＰＵリソースを増やすことができないリスクがある。仮想マシン２３０がＣＰＵリソースの使用量を増やせるか否かやどの程度まで増やせるかは、同一物理マシン上で動作する仮想マシン２２０の動作状況に依存する。共有部分を全く使用できない最悪のケースにおいては、ＣＰＵリソースの使用量がＣＰＵリソース境界点に達した以降、レスポンス時間が急激に大きくなる。
【００５５】
このように、トランザクション数に対するレスポンス時間は、ＣＰＵリソースの割当量の全範囲について１つの方法でモデル化するのではなく、ＣＰＵリソースの使用量がＣＰＵリソース境界点に達したか否かに応じて異なる方法でモデル化されることが好ましい。ＣＰＵリソースの使用量がＣＰＵリソース境界点に達する前に相当する区間は、例えば、一次関数としてモデル化できる。この区間は、線形区間と言うこともできる。一方、ＣＰＵリソースの使用量がＣＰＵリソース境界点に達した以降に相当する区間は、例えば、指数関数としてモデル化できる。この区間は、非線形区間と言うこともできる。
【００５６】
線形区間における直線の傾き（例えば、一次項の係数）や非線形区間における曲線の勾配（例えば、指数項の係数）などのパラメータの値は、仮想マシン２３０上で動作するアプリケーションソフトウェアに依存する。仮想マシン２３０が物理マシン２００から他の仮想マシンに移動しても、直線の傾きや曲線の勾配は変わらない可能性が高い。一方、線形区間と非線形区間の境界は、仮想マシン２３０が動作する物理マシンや当該物理マシン上で動作する他の仮想マシンに依存するため、仮想マシン２３０が物理マシン２００から他の仮想マシンに移動することで変化し得る。このとき、モデル上における非線形区間の曲線は、例えば、線形区間に相当する直線に沿ってシフトする。
【００５７】
ここで、仮想マシン２２０ａ（ＶＭａ１）または仮想マシン２３０ａ（ＶＭａ２）への物理マシン２００ａのリソースの割当を解除し、代わりに仮想マシン２３０を物理マシン２００ａに移動することを考える。仮想マシン２３０ａを解除することで生じる利用可能なリソースの集合（ＶＭ（Virtual Machine）環境）におけるＣＰＵリソース境界点は、仮想マシン２３０より大きいとする。また、仮想マシン２２０ａのＶＭ環境のＣＰＵリソース境界点は、仮想マシン２３０ａより大きいとする。この場合、図６に示すように、仮想マシン２３０を物理マシン２００ａに移動することでレスポンス時間が改善する。
【００５８】
仮想マシン２３０について、想定する最大のトランザクション数（許容トランザクション数）と許容するレスポンス時間の上限（許容レスポンス時間）とが与えられたとする。この場合、許容トランザクション数に対応するレスポンス時間が許容レスポンス時間以下になると予測されるＶＭ環境が、仮想マシン２３０の移動先の候補となる。図６の例の場合、仮想マシン２２０ａ，２３０ａ両方のＶＭ環境がこの条件を満たす。ただし、ＣＰＵリソースの使用効率の観点からは、ＣＰＵリソース境界点のできる限り小さいＶＭ環境の方が、未使用のＣＰＵリソースが少なくなり好ましい。よって、仮想マシン２３０ａのＶＭ環境の方が、仮想マシン２２０ａのＶＭ環境よりも移動先として好ましい。
【００５９】
なお、仮想マシンの状態としては、実行状態、停止状態および終了状態がある。停止状態は、情報処理を一時的に停止した状態であり、後に実行状態に遷移する可能性がある。停止状態の仮想マシンは、物理マシン上から消去すべきでないが、配置する物理マシンを変更することは可能である。終了状態は、情報処理を永続的に停止した状態である。終了状態の仮想マシンは、リソースを解放して物理マシン上から消去することが可能である。実行状態の仮想マシンは、リソース不足と判断された場合を除き、レスポンス時間が悪化しないように他の物理マシンに移動しない方が好ましい。
【００６０】
以下では、仮想マシン２３０の移動先の候補として、主に停止状態または終了状態の仮想マシンのＶＭ環境を選択することを考える。停止状態の仮想マシンを移動させるか、終了状態の仮想マシンを消去することで、移動先の物理マシンにおいて仮想マシン２３０のためのＣＰＵリソースを確保できる。ただし、物理マシン２００ａ，２００ｂに何れの仮想マシンにも割り当てられていない未割当ＣＰＵリソースがある場合には、未割当リソースの集合からなるＶＭ環境を、仮想マシン２３０の移動先の候補に加えてもよい。
【００６１】
図７は、管理サーバおよび物理マシンのソフトウェア例を示すブロック図である。
管理サーバ１００は、マシン情報記憶部１１０、マシン情報収集部１２１、移動先決定部１２２および移動実行部１２３を有する。マシン情報記憶部１１０は、例えば、管理サーバ１００のＲＡＭ１０２またはＨＤＤ１０３に確保した記憶領域として実装される。マシン情報収集部１２１、移動先決定部１２２および移動実行部１２３は、例えば、管理サーバ１００のＣＰＵ１０１が実行するプログラムのモジュールとして実装される。
【００６２】
マシン情報記憶部１１０は、物理マシン２００，２００ａ，２００ｂに関するマシン情報を記憶する。マシン情報には、各物理マシンおよび各仮想マシンの構成を示す構成情報と、各仮想マシンの動作状況を示す動作ログとが含まれる。構成情報は、物理マシン２００，２００ａ，２００ｂが備えるリソースと、物理マシン２００，２００ａ，２００ｂに配置された仮想マシンと、各仮想マシンに割り当てられたリソースとを示す。マシン情報記憶部１１０には、最新の構成情報を記憶しておけばよい。動作ログは、ある時点におけるリソースの使用状況とトランザクションの実行状況を示す。マシン情報記憶部１１０には、少なくとも所定期間前までの動作ログを蓄積しておく。
【００６３】
マシン情報収集部１２１は、物理マシン２００，２００ａ，２００ｂから継続的（例えば、定期的）にマシン情報を収集し、マシン情報記憶部１１０にマシン情報を格納する。後述するように、マシン情報のうち、構成情報は各物理マシンのハイパーバイザから収集され、動作ログは各仮想マシンから収集される。収集された動作ログは、所定期間前までのものが蓄積されるようにマシン情報記憶部１１０に追記される。マシン情報を収集するにあたり、マシン情報収集部１２１が物理マシン２００，２００ａ，２００ｂに定期的にアクセスするようにしてもよい。また、物理マシン２００，２００ａ，２００ｂが定期的または不定期に管理サーバ１００にアクセスするようにしてもよい。
【００６４】
移動先決定部１２２は、マシン情報記憶部１１０に記憶された動作ログに基づいて、リソース不足の仮想マシンを検出する。リソース不足の仮想マシンとしては、例えば、レスポンス時間が閾値を超えたものや、前回からのレスポンス時間の増加量または増加率が閾値を超えたものなどが挙げられる。閾値は、仮想マシン毎に異なってもよい。リソース不足の仮想マシンが検出されると、移動先決定部１２２は、マシン情報記憶部１１０に記憶されたマシン情報に基づいて、移動先となり得る他の物理マシン上のＶＭ環境を探す。
【００６５】
このとき、移動先決定部１２２は、検出した仮想マシンが現在の物理マシン上で動作しているときのトランザクション数とレスポンス時間との関係を表す関数を、線形区間と非線形区間とに分けて算出する。また、移動先決定部１２２は、他の物理マシン上のＶＭ環境のＣＰＵリソース境界点を算出する。そして、移動先決定部１２２は、算出した関数および各ＶＭ環境のＣＰＵリソース境界点に基づいて、許容トランザクション数に対応するレスポンス時間が許容値以下になると推定されるＶＭ環境を選択する。
【００６６】
許容レスポンス時間は、例えば、ユーザと情報処理システムの運営者との間の契約に基づいて決まる。許容レスポンス時間は、仮想マシン毎に異なってもよい。許容レスポンス時間を示す情報は、管理者によって管理サーバ１００に入力されてもよく、マシン情報記憶部１１０に記憶されてもよい。そして、移動先決定部１２２は、選択したＶＭ環境の候補の中から、リソース不足の仮想マシンの移動先を決定する。
【００６７】
移動実行部１２３は、移動先決定部１２２が検出したリソース不足の仮想マシンを、移動先決定部１２２が決定したＶＭ環境に移動するよう制御する。例えば、移動実行部１２３は、決定されたＶＭ環境が停止状態または終了状態の仮想マシンに割り当てられている場合、当該ＶＭ環境をもつ物理マシンにＶＭ環境の解放を要求する。そして、移動実行部１２３は、移動元の物理マシンと移動先の物理マシンに、仮想マシンの移動を指示する。仮想マシンは、移動元と移動先の物理マシンのハイパーバイザが連携して移動される。
【００６８】
物理マシン２００は、前述のように、ハイパーバイザ２１０および仮想マシン２２０を有する。ハイパーバイザ２１０は、構成情報送信部２１１を有する。仮想マシン２２０は、ＯＳ２２１および動作ログ送信部２２２を有する。構成情報送信部２１１および動作ログ送信部２２２は、例えば、物理マシン２００のＣＰＵが実行するプログラムのモジュールとして実装される。なお、ハイパーバイザ２１０ａ，２１０ｂも、ハイパーバイザ２１０と同様のブロック構成によって実現できる。仮想マシン２２０ａ，２２０ｂ，２３０，２３０ａ，２３０ｂも、仮想マシン２２０と同様のブロック構成によって実現できる。
【００６９】
構成情報送信部２１１は、最新の構成として、物理マシン２００が備えるリソースと、物理マシン２００に配置された仮想マシン（仮想マシン２２０，２３０）と、各仮想マシンに割り当てられたリソースとを確認する。そして、構成情報送信部２１１は、確認した事項を示す構成情報を生成し、管理サーバ１００に送信する。構成情報は、管理サーバ１００からの要求に応じて送信してもよいし、自発的に送信してもよい。
【００７０】
動作ログ送信部２２２は、例えば、ＯＳ２２１上で動作するミドルウェアとして実装される。動作ログ送信部２２２は、現時点における仮想マシン２２０のリソースの使用状況とトランザクションの実行状況を確認する。そして、動作ログ送信部２２２は、確認した事項を示す動作ログを生成し、管理サーバ１００に送信する。動作ログは、管理サーバ１００からの要求に応じて送信してもよいし、自発的に送信してもよい。
【００７１】
図８は、物理マシンテーブルの例を示す図である。
物理マシンテーブル１１１は、管理サーバ１００のマシン情報記憶部１１０に格納される。物理マシンテーブル１１１には、物理マシン２００，２００ａ，２００ｂから収集された構成情報に含まれる情報が登録される。物理マシンテーブル１１１は、物理マシン名、ＣＰＵ、ＲＡＭ、仮想マシン数および仮想マシン名の項目を含む。
【００７２】
物理マシン名の項目には、物理マシンの識別情報が登録される。識別情報として、ネットワークアドレスを用いてもよい。ＣＰＵの項目には、物理マシンが備えるＣＰＵリソースの量としてＣＰＵクロック数が登録される。ＲＡＭの項目には、物理マシンが備えるＲＡＭリソースの量としてＲＡＭ領域のバイト数が登録される。仮想マシン数の項目には、物理マシンに配置されている仮想マシンの数が登録される。仮想マシン名の項目には、物理マシンに配置されている仮想マシンの識別情報が列挙される。
【００７３】
例えば、物理マシン２００（Ｍ１）のＣＰＵリソース量は２ＧＨｚであり、ＲＡＭリソース量は２ＧＢである。また、物理マシン２００ａ（Ｍａ）のＣＰＵリソース量は４ＧＨｚであり、ＲＡＭリソース量は４ＧＢである。前述のように、物理マシン２００には仮想マシン２２０，２３０（ＶＭ１，ＶＭ２）が配置され、物理マシン２００ａには仮想マシン２２０ａ，２３０ａ（ＶＭａ１，ＶＭａ２）が配置されている。
【００７４】
図９は、仮想マシンテーブルの例を示す図である。
仮想マシンテーブル１１２は、管理サーバ１００のマシン情報記憶部１１０に格納される。仮想マシンテーブル１１２には、物理マシン２００，２００ａ，２００ｂから収集された構成情報に含まれる情報が登録される。仮想マシンテーブル１１２は、仮想マシン名、割当ＣＰＵ、割当ＲＡＭおよび状態を示す項目を含む。
【００７５】
仮想マシン名の項目には、仮想マシンの識別情報が登録される。識別情報として、ネットワークアドレスを用いてもよい。割当ＣＰＵの項目には、仮想マシンに割り当てられたＣＰＵリソースの量としてＣＰＵクロック数が登録される。割当ＲＡＭの項目には、仮想マシンに割り当てられたＲＡＭリソースの量としてＲＡＭ領域のバイト数が登録される。状態の項目には、仮想マシンの状態を示す値が登録される。前述のように、仮想マシンの状態には、実行状態と停止状態と終了状態とが含まれる。
【００７６】
例えば、仮想マシン２２０（ＶＭ１）のＣＰＵリソース量は１．６ＧＨｚであり、仮想マシン２３０（ＶＭ２）のＣＰＵリソース量は０．８ＧＨｚである。物理マシン２００のＣＰＵリソース量は２ＧＨｚであるため、オーバーコミットが行われている。また、仮想マシン２２０ａ（ＶＭａ１）のＣＰＵリソース量は３．４ＧＨｚであり、仮想マシン２３０ａ（ＶＭａ２）のＣＰＵリソース量は１．２ＧＨｚである。物理マシン２００ａのＣＰＵリソース量は４ＧＨｚであるため、オーバーコミットが行われている。また、仮想マシン２２０，２３０は実行状態であり、仮想マシン２２０ａ，２３０ａは停止状態である。
【００７７】
図１０は、動作ログテーブルの例を示す図である。
動作ログテーブル１１３は、管理サーバ１００のマシン情報記憶部１１０に格納されている。動作ログテーブル１１３には、物理マシン２００，２００ａ，２００ｂから収集された動作ログに含まれる情報が登録される。図１０の例では、１０分間隔で管理サーバ１００が動作ログを収集している。動作ログテーブル１１３は、仮想マシン名、時刻、使用ＣＰＵ、使用ＲＡＭ、トランザクションおよびレスポンスの項目を含む。
【００７８】
仮想マシン名の項目には、動作ログを生成した仮想マシンの識別情報が登録される。時刻の項目には、動作ログが生成された時刻が登録される。使用ＣＰＵの項目には、動作ログが生成された時点における仮想マシンのＣＰＵ使用率が登録される。仮想マシンのＣＰＵ使用率は、当該仮想マシンに割り当てられたＣＰＵリソースのうち使用されている割合である。使用ＲＡＭの項目には、動作ログが生成された時点における仮想マシンが使用しているＲＡＭリソースの量として、ＲＡＭ領域のバイト数が登録される。
【００７９】
トランザクションの項目には、動作ログが生成された時点におけるトランザクション数が登録される。計測されるトランザクション数としては、一時点において仮想マシンに係属しているトランザクションの数、直近の一定時間のトランザクション数の平均、直近の一定時間に受信したリクエスト数などが考えられる。レスポンスの項目には、動作ログが生成された時点におけるトランザクション１つ当たりのレスポンス時間（リクエストを受信してからレスポンスを返すまでに要する時間）が登録される。計測されるレスポンス時間としては、サンプリングした１つのトランザクションのレスポンス時間、サンプリングした複数のトランザクションのレスポンス時間の平均、直近の一定時間の間に終了したトランザクションのレスポンス時間の平均などが考えられる。
【００８０】
次に、管理サーバ１００が仮想マシン２３０の移動を制御する手順例を説明する。
図１１は、移動制御の手順例を示すフローチャートである。
（Ｓ１）マシン情報収集部１２１は、物理マシン２００，２００ａ，２００ｂからマシン情報を収集し、マシン情報記憶部１１０に格納する。マシン情報のうち、物理マシンテーブル１１１および仮想マシンテーブル１１２に登録される構成情報は、各物理マシンのハイパーバイザから収集される。また、動作ログテーブル１１３に登録される動作ログは、物理マシン２００，２００ａ，２００ｂ上の各仮想マシンから収集される。
【００８１】
（Ｓ２）移動先決定部１２２は、マシン情報記憶部１１０に記憶された動作ログテーブル１１３を参照して、仮想マシン２２０，２２０ａ，２２０ｂ，２３０，２３０ａ，２３０ｂの中からレスポンス時間が大きく増加した仮想マシンを検出する。例えば、移動先決定部１２２は、最新のレスポンス時間が閾値以上である仮想マシンや、レスポンス時間の増加量または増加率が閾値以上である仮想マシンなどを検出する。この閾値は、ユーザとの契約に基づいて決定されてもよく、ユーザ毎に異なってもよい。
【００８２】
そして、移動先決定部１２２は、該当する仮想マシン（リソース不足であると考えられる仮想マシン）が存在するか判断する。存在する場合はステップＳ３に処理が進み、該当する仮想マシン毎に以下のステップＳ３〜Ｓ５の処理が行われる。存在しない場合は移動制御が終了し、次の動作ログが収集されるタイミングまで待機となる。なお、以下では仮想マシン２３０が上記の条件に該当するものとする。
【００８３】
（Ｓ３）移動先決定部１２２は、マシン情報記憶部１１０に記憶された物理マシンテーブル１１１から、仮想マシン２３０が配置されている物理マシン２００の構成情報を検索する。また、移動先決定部１２２は、マシン情報記憶部１１０に記憶された仮想マシンテーブル１１２から、物理マシン２００に配置されている仮想マシン２２０，２３０の構成情報を検索する。また、移動先決定部１２２は、動作ログテーブル１１３から、仮想マシン２３０の動作ログを検索する。そして、移動先決定部１２２は、上記の構成情報および動作ログから、仮想マシン２３０が物理マシン２００上で動作しているときのレスポンス時間の関数を算出する。関数の算出方法の詳細は後述する。
【００８４】
（Ｓ４）移動先決定部１２２は、仮想マシン２３０の許容トランザクション数と許容レスポンス時間を確認する。また、移動先決定部１２２は、物理マシンテーブル１１１および仮想マシンテーブル１１２から、物理マシン２００ａ，２００ｂ上のＶＭ環境を検索する。そして、移動先決定部１２２は、許容レスポンス時間の条件を満たすＶＭ環境（移動先の候補）を探し、移動先のＶＭ環境を決定する。移動先の決定方法の詳細は後述する。
【００８５】
（Ｓ５）移動実行部１２３は、物理マシン２００から移動先決定部１２２が決定したＶＭ環境をもつ物理マシンに、仮想マシン２３０を移動するよう制御する。例えば、移動実行部１２３は、移動先の物理マシンに、仮想マシン２３０にＶＭ環境を割り当てるよう指示する。当該ＶＭ環境が停止状態の仮想マシンに割り当てられている場合、当該停止状態の仮想マシンが更に他の物理マシンに移動され得る。当該ＶＭ環境が終了状態の仮想マシンに割り当てられている場合、当該終了状態の仮想マシンが削除され得る。
【００８６】
そして、移動実行部１２３は、物理マシン２００と移動先の物理マシンに、仮想マシン２３０の移動を指示する。物理マシン２００のハイパーバイザ２１０と移動先の物理マシンのハイパーバイザは、連携して仮想マシン２３０を移動させる。例えば、ハイパーバイザ２１０は、仮想マシン２３０に関するＲＡＭ上のデータやＨＤＤ上のデータなどを、移送先の物理マシンにコピーする。このとき、仮想マシン２３０のＯＳを一旦シャットダウンしてもよいし、シャットダウンしなくてもよい（ライブマイグレーション）。
【００８７】
図１２は、関数算出の手順例を示すフローチャートである。図１２に示すフローチャートの処理が、上記のステップＳ３において実行される。
（Ｓ３０）移動先決定部１２２は、仮想マシン２３０のオーバーコミット率ｒを算出する。オーバーコミット率ｒは、仮想マシン２３０に割り当てられたＣＰＵリソースのうち仮想マシン２２０と共有している部分の割合を表す。１−ｒは占有率を表す。
【００８８】
オーバーコミット率ｒ＝（仮想マシン２２０，２３０の割当ＣＰＵクロック数の合計−物理マシン２００のＣＰＵクロック数）÷仮想マシン２３０の割当ＣＰＵクロック数。例えば、図８，９の数値例の場合、オーバーコミット率ｒ＝（１．６ＧＨｚ＋０．８ＧＨｚ−２ＧＨｚ）÷０．８ＧＨｚ＝０．５（５０％）と算出される。
【００８９】
（Ｓ３１）移動先決定部１２２は、動作ログテーブル１１３から、ＣＰＵ使用率が占有率１−ｒ以下であるときの仮想マシン２３０の動作ログを抽出する。抽出された動作ログは、以下のステップＳ３２〜Ｓ３５で線形区間の関数を推定するために用いられる。なお、抽出する動作ログの範囲を、生成時刻が直近の一定時間以内のものに限定してもよい。
【００９０】
（Ｓ３２）移動先決定部１２２は、ステップＳ３１で抽出された動作ログに基づいて、平均値として線形区間のトランザクション当たりレスポンス時間ａ１を算出する。
トランザクション当たりレスポンス時間ａ１＝ｓｕｍ（レスポンス時間ｉ÷トランザクション数ｉ）÷ｎ。ｎはステップＳ３１で抽出された動作ログの数であり、ｉは１からｎまでの値をとる変数である。例えば、図１０の数値例の場合、トランザクション当たりレスポンス時間ａ１＝（０．４ｓ÷４００＋０．２５ｓ÷２５０＋０．１ｓ÷１００＋０．０２ｓ÷２０）÷４＝０．００１ｓと算出される。
【００９１】
（Ｓ３３）移動先決定部１２２は、ステップＳ３１で抽出された動作ログに基づいて、平均値として線形区間のＣＰＵクロック数当たりトランザクション数Δｍを算出する。これは、使用するＣＰＵリソースを増やせる状態において、仮想マシン２３０が単位ＣＰＵリソース当たりに実行できるトランザクションの数を表している。
【００９２】
ＣＰＵクロック数当たりトランザクション数Δｍ＝ｓｕｍ（トランザクション数ｉ÷（ＣＰＵ使用率ｉ×割当ＣＰＵクロック数））÷ｎ。ｎはステップＳ３１で抽出された動作ログの数であり、ｉは１からｎまでの値をとる変数である。例えば、図９，１０の数値例の場合、ＣＰＵクロック数当たりトランザクション数Δｍ＝（４００÷（５０％×０．８ＧＨｚ）＋２５０÷（３１．２％×０．８ＧＨｚ）＋１００÷（１２．５％×０．８ＧＨｚ）＋２０÷（２．５％×０．８ＧＨｚ））÷４＝１０００と算出される。
【００９３】
（Ｓ３４）移動先決定部１２２は、ステップＳ３０で算出したオーバーコミット率ｒに基づいて、仮想マシン２３０の現在のＣＰＵリソース境界点Ｔ０を算出する。現在のＣＰＵリソース境界点Ｔ０は、仮想マシン２３０が現在占有するＣＰＵリソースの量を表す。
【００９４】
現在のＣＰＵリソース境界点Ｔ０＝（１−ｒ）×仮想マシン２３０の割当ＣＰＵクロック数。例えば、図８，９の数値例の場合、現在のＣＰＵリソース境界点Ｔ０＝（１−０．５）×０．８ＧＨｚ＝０．４ＧＨｚと算出される。
【００９５】
（Ｓ３５）移動先決定部１２２は、線形区間の関数ｆ１（ｍ）を算出する。関数ｆ１（ｍ）は、ＣＰＵリソースの使用量がＣＰＵリソース境界点Ｔ０に達するまでの、仮想マシン２３０のトランザクション数とレスポンス時間との関係を表す。
【００９６】
線形区間の関数ｆ１（ｍ）＝ａ１×ｍ。トランザクション当たりレスポンス時間ａ１はステップＳ３２で算出したものであり、ｍはトランザクション数を表す変数である。トランザクション当たりレスポンス時間ａ１が、線形区間の直線の傾きに相当する。
【００９７】
ＣＰＵリソースの使用量がＣＰＵリソース境界点Ｔ０に丁度達したときのレスポンス時間（ＣＰＵリソース境界点Ｔ０に対応するレスポンス時間）は、ｆ１（Δｍ×Ｔ０）＝ａ１×Δｍ×Ｔ０と算出される。ＣＰＵクロック数当たりトランザクション数Δｍは、ステップＳ３３で算出したものである。例えば、図８〜１０の数値例の場合、ｆ１（Δｍ×Ｔ０）＝０．００１ｓ×１０００×０．４ＧＨｚ＝０．４ｓと算出される。
【００９８】
（Ｓ３６）移動先決定部１２２は、動作ログテーブル１１３から、ＣＰＵ使用率が最大であるときの仮想マシン２３０の動作ログを抽出する。抽出された動作ログは、以下のステップＳ３７で非線形区間の関数を推定するために用いられる。なお、抽出する動作ログの範囲を、生成時刻が直近の一定時間以内のものに限定してもよい。
【００９９】
（Ｓ３７）移動先決定部１２２は、ステップＳ３６で抽出した動作ログに基づいて、非線形区間の関数ｆ２（ｍ）を算出する。関数ｆ２（ｍ）は、ＣＰＵリソースの使用量がＣＰＵリソース境界点Ｔ０に達した以降の、仮想マシン２３０のトランザクション数とレスポンス時間との関係を表す。ここでは、関数ｆ２（ｍ）として指数関数を用いる。
【０１００】
非線形区間の関数ｆ２（ｍ）＝ａ２×（ｍ−Δｍ×Ｔ０）2＋ａ１×Δｍ×Ｔ０。ｍはトランザクション数を表す変数である。この関数ｆ２（ｍ）は、線形区間の直線上に基準点をもつ指数関数である。指数項の係数ａ２は、ステップＳ３６で抽出した動作ログが示すトランザクション数とレスポンス時間とを上記の式に代入することで算出できる。例えば、図８〜１０の数値例の場合、５０．４ｓ＝ａ２×（５００−１０００×０．４ＧＨｚ）2＋０．４ｓより、ａ２＝０．００５と算出される。よって、非線形区間の関数ｆ２（ｍ）＝０．００５×（ｍ−４００）2＋０．４ｓと決定される。
【０１０１】
ただし、非線形区間のレスポンス時間は、他の方法で推定することもできる。
図１３は、レスポンス時間テーブルの例を示す図である。
レスポンス時間テーブル１１４は、非線形区間の関数ｆ２（ｍ）に代えて、上記のステップＳ３７において移動先決定部１２２によって生成される。レスポンス時間テーブル１１４は、トランザクション、レスポンスおよび差分の項目を含む。
【０１０２】
トランザクションの項目には、トランザクション数の割合が登録される。この割合は、過去の最大のトランザクション数を基準としたときの割合である。割合は、例えば、１％刻みで設定される。レスポンスの項目には、トランザクション数の割合に対応するレスポンス時間が登録される。トランザクション数の割合が同じ動作ログが２以上ある場合は、当該２以上の動作ログのうちＣＰＵ使用率が最も高いときの動作ログのレスポンス時間を採用する。差分の項目には、レスポンスの項目に登録されたレスポンス時間とＣＰＵリソース境界点Ｔ０に対応するレスポンス時間（ａ１×Δｍ×Ｔ０）との差が登録される。
【０１０３】
レスポンス時間テーブル１１４を生成する場合、移動先決定部１２２は、動作ログテーブル１１３から、トランザクション数が最大である仮想マシン２３０の動作ログを検索する。移動先決定部１２２は、レスポンス時間テーブル１１４に、トランザクション数の割合＝１００％に対応付けて、検索した動作ログのレスポンス時間を登録する。その後、移動先決定部１２２は、動作ログテーブル１１３から、トランザクション数の大きい順に動作ログを抽出していく。移動先決定部１２２は、動作ログを抽出する毎に、トランザクション数の割合を算出し、当該動作ログに記載されたレスポンス時間と対応付けてレスポンス時間テーブル１１４に登録する。動作ログの抽出は、差分が０ｓになるまで行う。
【０１０４】
このようなレスポンス時間テーブル１１４を生成することで、非線形区間におけるトランザクション数とレスポンス時間との関係の推定精度が向上する。レスポンス時間テーブル１１４は、ＲＡＭ１０２またはＨＤＤ１０３に格納しておくことができる。移動先決定部１２２は、トランザクション数ｍ÷過去のトランザクション数の最大数を算出し、算出した割合を用いてレスポンス時間テーブル１１４を検索することで、非線形区間におけるトランザクション数ｍに対応するレスポンス時間を求めることができる。以下では、前述の関数ｆ２（ｍ）を用いて仮想マシン２３０の移動先を決定する場合について説明するが、レスポンス時間テーブル１１４を用いて移動先を決定することもできる。
【０１０５】
図１４は、移動先決定の手順例を示すフローチャートである。図１４に示すフローチャートの処理が、上記のステップＳ４において実行される。
（Ｓ４０）移動先決定部１２２は、仮想マシン２３０について、許容トランザクション数ｍａｘ＿ｍと許容レスポンス時間ｍａｘ＿ｔを確認する。
【０１０６】
許容トランザクション数ｍａｘ＿ｍは、想定する最大のトランザクション数である。許容トランザクション数ｍａｘ＿ｍとしては、例えば、仮想マシン２３０の動作ログが示す過去のトランザクション数の最大値を用いる。許容レスポンス時間ｍａｘ＿ｔは、許容されるレスポンス時間の上限である。許容レスポンス時間ｍａｘ＿ｔは、例えば、ユーザと情報処理システムの運営者との間の契約に応じて決まる。許容レスポンス時間ｍａｘ＿ｔは、ユーザ毎または仮想マシン毎に異なってもよい。許容レスポンス時間ｍａｘ＿ｔを示す情報は、例えば、管理者の操作に応じて管理サーバ１００に入力されて記憶される。
【０１０７】
（Ｓ４１）移動先決定部１２２は、線形区間の関数ｆ１（ｍ）および非線形区間の関数ｆ２（ｍ）と、許容トランザクション数ｍａｘ＿ｍおよび許容レスポンス時間ｍａｘ＿ｔに基づいて、理想のＣＰＵリソース境界点Ｔ１を算出する。ここでは、許容トランザクション数ｍａｘ＿ｍに対応するレスポンス時間が許容レスポンス時間ｍａｘ＿ｔ以下になるという条件を満たすように、非線形区間の曲線をシフトする場合を考える。理想のＣＰＵリソース境界点Ｔ１は、シフト後のＣＰＵリソース境界点の最小値である。
【０１０８】
理想のＣＰＵリソース境界点Ｔ１は、次の式を解くことで算出できる。ａ２×（ｍａｘ＿ｍ−Δｍ×Ｔ１）2＋ａ１×ｍａｘ＿ｍ＝ｍａｘ＿ｔ。例えば、図８〜１０の数値例の場合、０．００５×（５００−１０００×Ｔ１）2＋０．００１ｓ×５００＝５ｓより、Ｔ１＝０．６ＧＨｚと算出される。これは、占有できるＣＰＵリソースが０．６ＧＨｚ以上のＶＭ環境であれば、許容レスポンス時間ｍａｘ＿ｔの条件を満たすことを意味する。なお、現在のＣＰＵリソース境界点Ｔ０は、０．６ＧＨｚ未満である。
【０１０９】
（Ｓ４２）移動先決定部１２２は、物理マシン２００ａ，２００ｂ上にあるＶＭ環境のうち、仮想マシン２３０に現在割り当てられているもの以上の大きさのＲＡＭリソースを確保可能なＶＭ環境を抽出する。例えば、図９の数値例の場合、物理マシン２００ａ，２００ｂのＶＭ環境のうち１ＧＢ以上のＲＡＭ領域を確保可能なものを抽出する。
【０１１０】
ここでは、停止状態の仮想マシンを移動させるか、終了状態の仮想マシンを削除することで、移動先のＶＭ環境を確保する場合を考える。移動先決定部１２２は、ステップＳ４２の時点で抽出するＶＭ環境を、停止状態または終了状態の仮想マシンに割り当てられているものに限定してもよい。また、移動先決定部１２２は、移動先のＶＭ環境の候補を選択した後に、仮想マシン２３０が当該ＶＭ環境を利用可能であるか判断してもよい。
【０１１１】
以下に説明する数値例では、物理マシン２００ａ上の仮想マシン２２０ａ，２３０ａが停止状態であり、仮想マシン２３０は仮想マシン２２０ａ，２３０ａのＶＭ環境を利用可能であるとする。物理マシン２００ｂ上の仮想マシン２２０ｂ，２３０ｂが停止状態または終了状態であれば、仮想マシン２３０は物理マシン２００ｂにも移動し得る。
【０１１２】
（Ｓ４３）移動先決定部１２２は、ステップＳ４２で抽出したＶＭ環境それぞれについて、当該ＶＭ環境のＣＰＵリソース境界点Ｔ２を算出する。ＶＭ環境のＣＰＵリソース境界点Ｔ２は、当該ＶＭ環境において占有できるＣＰＵリソースの量を表す。
【０１１３】
ＶＭ環境のＣＰＵリソース境界点Ｔ２は、現在のＣＰＵリソース境界点Ｔ０と同様の方法で算出できる。すなわち、あるＶＭ環境のオーバーコミット率＝（同一物理マシン上のＶＭ環境の割当ＣＰＵクロック数の合計−物理マシンのＣＰＵクロック数）÷当該ＶＭ環境の割当ＣＰＵクロック数。あるＶＭ環境のＣＰＵリソース境界点Ｔ２＝（１−当該ＶＭ環境のオーバーコミット率）×当該ＶＭ環境の割当ＣＰＵクロック数。
【０１１４】
例えば、図８，９の数値例の場合、仮想マシン２２０ａのオーバーコミット率＝（３．４ＧＨｚ＋１．２ＧＨｚ−４ＧＨｚ）÷３．４ＧＨｚ＝０．１７６（１７．６％）であり、そのＣＰＵリソース境界点Ｔ２＝（１−０．１７６）×３．４ＧＨｚ＝２．８ＧＨｚと算出される。また、仮想マシン２２０ｂのオーバーコミット率＝（３．４ＧＨｚ＋１．２ＧＨｚ−４ＧＨｚ）÷１．２ＧＨｚ＝０．５（５０％）であり、そのＣＰＵリソース境界点Ｔ２＝（１−０．５）×１．２ＧＨｚ＝０．６ＧＨｚと算出される。
【０１１５】
（Ｓ４４）移動先決定部１２２は、ステップＳ４３で算出したＣＰＵリソース境界点Ｔ２がステップＳ４１で算出した理想のＣＰＵリソース境界点Ｔ１以上であるＶＭ環境が、複数あるか判断する。すなわち、移動先決定部１２２は、許容レスポンス時間ｍａｘ＿ｔの条件を満たすＶＭ環境が複数あるか判断する。例えば、図８〜１０の数値例の場合、Ｔ１＝０．６ＧＨｚ、仮想マシン２２０ａのＴ２＝２．８ＧＨｚ、仮想マシン２３０ａのＴ２＝０．６ＧＨｚであるため、仮想マシン２２０ａ，２３０ａの両方が条件を満たす。複数のＶＭ環境がある場合、ステップＳ４５に処理が進む。１つのＶＭ環境しかない場合、移動先決定部１２２は、仮想マシン２３０の移動先を当該ＶＭ環境に決定する。
【０１１６】
（Ｓ４５）移動先決定部１２２は、ＣＰＵリソース境界点Ｔ２が理想のＣＰＵリソース境界点Ｔ１以上であるＶＭ環境のうち、ＣＰＵリソース境界点Ｔ２が小さいものを選ぶ。例えば、図８〜１０の数値例の場合、仮想マシン２２０ａのＴ２＝２．８ＧＨｚ、仮想マシン２３０ａのＴ２＝０．６ＧＨｚであるため、仮想マシン２３０ａを選択する。
【０１１７】
（Ｓ４６）移動先決定部１２２は、ステップＳ４５で複数のＶＭ環境を選択したか、すなわち、ＣＰＵリソース境界点Ｔ２が最小であるＶＭ環境が複数あるか判断する。複数のＶＭ環境がある場合、ステップＳ４７に処理が進む。１つのＶＭ環境しかない場合、移動先決定部１２２は、仮想マシン２３０の移動先を当該ＶＭ環境に決定する。例えば、図８〜１０の数値例の場合、仮想マシン２３０の移動先が仮想マシン２３０ａのＶＭ環境に決定される。この場合、仮想マシン２３０ａが別の物理マシンに移動することになる。
【０１１８】
（Ｓ４７）移動先決定部１２２は、ステップＳ４５で選択した複数のＶＭ環境のうち、割当ＲＡＭリソースの少ない方を選択し、仮想マシン２３０の移動先に決定する。
第２の実施の形態の情報処理システムによれば、使用するＣＰＵリソースが占有部分の範囲内か否かで区分して、仮想マシン２３０のトランザクション数とレスポンス時間との関係が算出される。そして、算出した関係と他のＶＭ環境の占有できるＣＰＵリソースの量に応じて、当該他のＶＭ環境に仮想マシン２３０を移動した場合にレスポンス時間が所定の条件を満たすか判定される。よって、共有部分のＣＰＵリソースについて他の仮想マシンと競合するリスクを適切に評価でき、オーバーコミットが行われる場合であっても、適切なＶＭ環境を仮想マシン２３０の移動先として選択できるようになる。
【０１１９】
なお、第１の実施の形態の情報処理は、情報処理装置１０や物理マシン２１，２２にプログラムを実行させることで実現することができる。また、第２の実施の形態の情報処理は、クライアント３１，３２や管理サーバ１００や物理マシン２００，２００ａ，２００ｂにプログラムを実行させることで実現することができる。
【０１２０】
プログラムは、コンピュータ読み取り可能な記録媒体（例えば、記録媒体４３）に記録しておくことができる。記録媒体としては、例えば、磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどを使用できる。磁気ディスクには、ＦＤおよびＨＤＤが含まれる。光ディスクには、ＣＤ、ＣＤ−Ｒ（Recordable）／ＲＷ（Rewritable）、ＤＶＤおよびＤＶＤ−Ｒ／ＲＷが含まれる。プログラムは、可搬型の記録媒体に記録されて配布されることがある。その場合、可搬型の記録媒体からＨＤＤなどの他の記録媒体（例えば、ＨＤＤ１０３）にプログラムを複製して（インストールして）実行してもよい。
【符号の説明】
【０１２１】
１０  情報処理装置
１１  記憶部
１２  演算部
１３  構成情報
１４  動作情報
２１，２２  物理マシン
２３，２４  仮想マシン
２５，２６  リソース
【図１】
2015007942.tif 000003
【図２】
2015007942.tif 000004
【図３】
2015007942.tif 000005
【図４】
2015007942.tif 000006
【図５】
2015007942.tif 000007
【図６】
2015007942.tif 000008
【図７】
2015007942.tif 000009
【図８】
2015007942.tif 000010
【図９】
2015007942.tif 000011
【図１０】
2015007942.tif 000012
【図１１】
2015007942.tif 000013
【図１２】
2015007942.tif 000014
【図１３】
2015007942.tif 000015
【図１４】
2015007942.tif 000016