(57)【要約】【課題】仮想マシンに割り当てるリソース量の最適化の遅延を抑止する。【解決手段】情報処理装置１０は、サーバ３が実行している仮想マシン３ｃに送信された単位期間当たりのリクエストの量を監視する。次に情報処理装置１０は、リクエストの量の時系列での変化度合いに基づいて、仮想マシン３ｃの実行に使用可能なハードウェアリソースの量を変更するか否かを決定する。変更すると決定した場合、情報処理装置１０は、仮想マシン３ｃの実行に使用可能なハードウェアリソースの量の変更を、サーバ３に指示する。【選択図】図１
2019046163.tif 000002
【特許請求の範囲】
【請求項１】
サーバが実行している仮想マシンに送信された単位期間当たりのリクエストの量を監視し、前記リクエストの量の時系列での変化度合いに基づいて、前記仮想マシンの実行に使用可能なハードウェアリソースの量を変更するか否かを決定し、変更すると決定した場合、前記仮想マシンの実行に使用可能な前記ハードウェアリソースの量の変更を、前記サーバに指示する処理部、
を有する情報処理装置。
【請求項２】
前記処理部は、
変更するか否かの決定では、直近の第１の単位期間での前記リクエストの量を、前記第１の単位期間の直前の第２の単位期間での前記リクエストの量と比較したときの変化度合いが閾値を超えている場合、前記仮想マシンの実行に使用可能な前記ハードウェアリソースの量を変更すると決定する、
請求項１記載の情報処理装置。
【請求項３】
前記処理部は、
変更するか否かの決定では、前記第１の単位期間での前記リクエストの量が、前記第２の単位期間での前記リクエストの量よりも減少しており、減少の度合いが第１の閾値を超えている場合、前記仮想マシンの実行に使用可能な前記ハードウェアリソースの量を減少させることを決定し、
前記サーバへの指示では、前記仮想マシンの実行に使用可能な前記ハードウェアリソースの量を減少させることを、前記サーバに指示する、
請求項２記載の情報処理装置。
【請求項４】
前記処理部は、
変更するか否かの決定では、前記第１の単位期間での前記リクエストの量が、前記第２の単位期間での前記リクエストの量よりも増加しており、増加の度合いが第２の閾値を超えている場合、前記仮想マシンの実行に使用可能な前記ハードウェアリソースの量を増加させることを決定し、
前記サーバへの指示では、前記仮想マシンの実行に使用可能な前記ハードウェアリソースの量を増加させることを、前記サーバに指示する、
請求項２または３記載の情報処理装置。
【請求項５】
前記処理部は、
前記仮想マシンの実行に使用可能な前記ハードウェアリソースの量を増加させると決定した場合、前記ハードウェアリソースの種別ごとに、前記仮想マシンの実行に使用可能とする量の変更の優先度、前記仮想マシンの実行に使用可能とする量の最小値、および前記仮想マシンの実行に使用可能とする量の最大値が示されたリソース管理情報に基づいて、優先度が最も高い種別の前記ハードウェアリソースを、最大値を超えない範囲で増加させることを決定し、
前記仮想マシンの実行に使用可能な前記ハードウェアリソースの量を減少させると決定した場合、前記リソース管理情報に基づいて、優先度が最も高い種別の前記ハードウェアリソースを、最小値を下回らない範囲で減少させることを決定する、
請求項１ないし４のいずれかに記載の情報処理装置。
【請求項６】
前記処理部は、
前記サーバから前記ハードウェアリソースの種別ごとの前記仮想マシンの使用率を取得し、使用率が高い種別の前記ハードウェアリソースほど高い優先度を、前記リソース管理情報に設定する、
請求項５記載の情報処理装置。
【請求項７】
コンピュータに、
サーバが実行している仮想マシンに送信された単位期間当たりのリクエストの量を監視し、
前記リクエストの量の時系列での変化度合いに基づいて、前記仮想マシンの実行に使用可能なハードウェアリソースの量を変更するか否かを決定し、
変更すると決定した場合、前記仮想マシンの実行に使用可能な前記ハードウェアリソースの量の変更を、前記サーバに指示する、
処理を実行させる仮想マシン監視プログラム。
【請求項８】
仮想マシンを実行しているサーバと、
端末装置から送信されたリクエストを前記仮想マシンに転送し、前記仮想マシンに転送した単位期間当たりのリクエストの量を計数する中継装置と、
前記仮想マシンに転送した単位期間当たりのリクエストの量を前記中継装置から取得し、前記リクエストの量の時系列での変化度合いに基づいて、前記仮想マシンの実行に使用可能なハードウェアリソースの量を変更するか否かを決定し、変更すると決定した場合、前記仮想マシンの実行に使用可能な前記ハードウェアリソースの量の変更を、前記サーバに指示する情報処理装置と、
を有する情報処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、仮想マシン監視プログラム、および情報処理システムに関する。
【背景技術】
【０００２】
クラウドコンピューティングシステムでは、例えば、サーバ上に構築された仮想マシンを用いてサービスが提供される。クラウドコンピューティングシステムにおいて新たなサービスの提供を開始する場合、そのサービスの負荷に応じた性能の仮想マシンが、サーバ上に構築される。仮想マシンの性能は、その仮想マシンの実行のために使用可能なハードウェアリソース（以下、単にリソースと呼んだ場合もハードウェアリソースを指す）の量に依存する。仮想マシンの実行のために使用可能なリソースを設定することを、仮想マシンにリソースを割り当てると呼ぶこともある。仮想マシンに割り当てられるリソースは、ＣＰＵ（Central Processing Unit）、メモリ、ストレージ装置などである。これらのリソースの量が多いほど、仮想マシンの性能が高くなる。
【０００３】
ここで、仮想マシンに割り当てるリソースの量が少なすぎると、仮想マシンを用いて提供されるサービスに求められる品質でのサービス提供ができない。他方、仮想マシンに割り当てるリソースの量が多すぎると、システム内のリソースが無駄に消費されてしまう。
【０００４】
そこで、例えばクラウド・システムにおいて、性能の低下を抑制して、適切な計算機リソースを提供するための計算器リソース割り当て方法が考えられている。この計算器リソース割り当て方法では、管理計算機が、サービスを提供する仮想計算機群の性能を取得して、取得した仮想計算機群の性能と、予め設定されたサービスの性能条件とを比較する。そして管理計算機は、比較結果に応じて、仮想計算機群で変更する計算機リソースを決定する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１６−１０３１７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、仮想マシンの性能が悪化したことを確認してから仮想マシンのリソース量を変更したのでは、仮想マシンの性能が悪化してから、割り当てるリソース量が変更されるまでに遅延が生じる。その結果、リソース量の変更処理が完了するまでの一定期間、サービスの品質が低下してしまう。
【０００７】
１つの側面では、本件は、仮想マシンに割り当てるリソース量の最適化の遅延を抑止することを目的とする。
【課題を解決するための手段】
【０００８】
１つの案では、以下の処理部を有する情報処理装置が提供される。
処理部は、サーバが実行している仮想マシンに送信された単位期間当たりのリクエストの量を監視する。次に処理部は、リクエストの量の時系列での変化度合いに基づいて、仮想マシンの実行に使用可能なハードウェアリソースの量を変更するか否かを決定する。変更すると決定した場合、処理部は、仮想マシンの実行に使用可能なハードウェアリソースの量の変更を、サーバに指示する。
【発明の効果】
【０００９】
１態様によれば、仮想マシンに割り当てるリソース量の最適化の遅延を抑止する。
【図面の簡単な説明】
【００１０】
【図１】第１の実施の形態に係る仮想マシン監視システムの構成の一例を示す図である。
【図２】第２の実施の形態のシステム構成例を示す図である。
【図３】第２の実施の形態に用いる仮想マシン監視装置のハードウェアの一構成例を示す図である。
【図４】仮想マシンへ割り当て資源量を変更するために各装置が有する機能を示すブロック図である。
【図５】リクエスト監視テーブルの一例を示す図である。
【図６】リソース管理テーブルの一例を示す図である。
【図７】仮想マシン管理テーブルの一例を示す図である。
【図８】リソース優先度テーブルの一例を示す図である。
【図９】ロードバランサが記憶するリクエスト管理テーブルの一例を示す図である。
【図１０】リクエスト監視処理の手順の一例を示すシーケンス図である。
【図１１】最適化処理の手順の一例を示すシーケンス図である。
【図１２】仮想マシン監視装置におけるリクエスト監視処理の手順の一例を示すフローチャートの前半である。
【図１３】仮想マシン監視装置におけるリクエスト監視処理の手順の一例を示すフローチャートの後半である。
【図１４】リクエスト量・レスポンスタイム計測処理の手順の一例を示すフローチャートである。
【図１５】コスト改善処理の手順の一例を示すフローチャートの前半である。
【図１６】コスト改善処理の手順の一例を示すフローチャートの後半である。
【図１７】レスポンス改善処理の手順の一例を示すフローチャートの前半である。
【図１８】レスポンス改善処理の手順の一例を示すフローチャートの後半である。
【発明を実施するための形態】
【００１１】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第１の実施の形態〕
まず、第１の実施の形態について説明する。
【００１２】
図１は、第１の実施の形態に係る仮想マシン監視システムの構成の一例を示す図である。複数の端末装置１ａ，１ｂが、ネットワーク２を介してサーバ３に接続されている。サーバ３は、ハードウェアリソースとしてＣＰＵ３ａ−１，３ａ−２，・・・、メモリ３ｂ−１，３ｂ−２，・・・などを有している。サーバ３は、ハードウェアリソースの少なくとも一部を用いて仮想マシン３ｃを実行する。サーバ３は、仮想マシン３ｃの実行に使用可能なハードウェアリソースの量を、自動で変更可能である。サーバ３により実現される仮想マシン３ｃは、端末装置１ａ，１ｂからのリクエストに応じて処理を実行し、処理結果をレスポンスとして端末装置１ａ，１ｂに送信する。
【００１３】
情報処理装置１０は、サーバ３が実行している仮想マシン３ｃに対して送信されるリクエストを監視して、リクエスト量の変化が過大な場合に、仮想マシン３ｃの実行に使用可能なハードウェアリソースの量の変更を、サーバ３に指示する。そのために、情報処理装置１０は、記憶部１１と処理部１２とを有する。記憶部１１は、例えば情報処理装置１０が有するメモリ、またはストレージ装置である。処理部１２は、例えば情報処理装置１０が有するプロセッサ、または演算回路である。
【００１４】
記憶部１１は、単位期間当たりのリクエストの量を記憶する。例えば記憶部１１は、直近の単位期間（第１の単位期間）内のリクエスト量と、直近の単位期間の直前（第２の単位期間）内のリクエスト量とを記憶する。
【００１５】
処理部１２は、監視結果により得られた単位期間当たりのリクエスト量に基づいて、仮想マシン３ｃの実行に使用可能なリソースの量を変更させるか否かを決定し、変更させる場合には、変更の指示をサーバ３に送信する。そのために処理部１２は、サーバ３が実行している仮想マシン３ｃに送信された単位期間当たりのリクエストの量を監視する。例えば処理部１２は、ネットワーク２内で端末装置１ａ，１ｂからサーバ３に送信されるリクエストを中継する装置に、単位期間当たりのリクエスト量を計数させ、処理部１２はその装置から単位期間当たりのリクエスト量を示す情報を取得する。リクエストを中継する装置は、例えばロードバランサである。また処理部１２は、ネットワーク２を介して通信されるパケットをキャプチャし、キャプチャしたパケットを解析して、仮想マシン３ｃに送信されたリクエスト量を計測することもできる。処理部１２は、単位期間当たりに仮想マシン３ｃに送信されたリクエスト量を、記憶部１１に格納する。
【００１６】
処理部１２は、仮想マシン３ｃに送信された単位期間当たりのリクエストの量の時系列での変化度合いに基づいて、仮想マシンの実行に使用可能なハードウェアリソースの量を変更するか否かを決定する。単位期間当たりのリクエストの量の時系列での変化度合いは、例えば変動率で表される。変動率は、第１の単位期間内のリクエスト量を第２の単位期間内のリクエスト量で除算した値である。
【００１７】
例えば、処理部１２は、直近の第１の単位期間でのリクエストの量を、第１の単位期間の直前の第２の単位期間でのリクエストの量と比較したときの変化度合いが閾値を超えているか否かを判定する。変化の度合いが閾値を超えている場合、処理部１２は、仮想マシン３ｃの実行に使用可能なハードウェアリソースの量を変更すると決定する。
【００１８】
なお、ハードウェアリソースの量を変更するか否かの判定に用いる閾値として、複数の閾値を用いることができる。第１の閾値は１未満の正の実数（例えば「０．５」）であり、第２の閾値は１より大きい実数（例えば「１．５」）である。処理部１２は、第１の単位期間でのリクエストの量が、第２の単位期間でのリクエストの量よりも減少しており、減少の度合いが第１の閾値を超えている場合、仮想マシン３ｃの実行に使用可能なハードウェアリソースの量を減少させることを決定する。減少の度合いが第１の閾値を超えているとは、例えば変動率が第１の閾値未満になっていることである。また処理部１２は、第１の単位期間でのリクエストの量が、第２の単位期間でのリクエストの量よりも増加しており、増加の度合いが第２の閾値を超えている場合、仮想マシン３ｃの実行に使用可能なハードウェアリソースの量を増加させることを決定する。増加の度合いが第２の閾値を超えているとは、例えば変動率が第２の閾値より大きいことである。
【００１９】
処理部１２は、仮想マシン３ｃの実行に使用可能なハードウェアリソースの量を変更すると決定した場合、仮想マシン３ｃの実行に使用可能なハードウェアリソースの量の変更を、サーバ３に指示する。例えば処理部１２は、ハードウェアリソースの量を減少させることを決定した場合、仮想マシン３ｃの実行に使用可能なハードウェアリソースの量を減少させることを、サーバ３に指示する。また処理部１２は、ハードウェアリソースの量を増加させることを決定した場合、仮想マシン３ｃの実行に使用可能なハードウェアリソースの量を増加させることを、サーバ３に指示する。
【００２０】
このような仮想マシン監視システムによれば、仮想マシン３ｃに対する単位期間当たりのリクエストの量が、ある程度以上減少傾向または増加傾向にある場合、仮想マシン３ｃの実行に使用可能なハードウェアリソースを減少または増加させることができる。すなわちリクエストの量に基づいて、仮想マシン３ｃの実行に使用可能なハードウェアリソースの量を最適化することができる。これにより、仮想マシン３ｃの性能が悪化したことを確認してからハードウェアリソースの量を変更する場合に比べ、仮想マシン３ｃに割り当てるリソースの量の最適化の遅延が抑止される。
【００２１】
例えば、仮想マシンの性能は、リクエストに対するレスポンスタイム（リクストを送信してからレスポンスを受信するまでの時間）によって計測できる。仮想マシンなどの計算機の性質として、所定の負荷までは、十分に短いレスポンスタイムでサービスを提供できるが、負荷が所定量を超えると、急激にレスポンスタイムが悪化する場合がある。このような場合、レスポンスタイムの悪化を確認してから仮想マシンのリソース量を増加させたのでは、仮想マシンのリソース量を増加させる処理が完了するまで、レスポンスタイムが悪化したままとなり、サービスの品質の低下を招く。しかもレスポンスタイムが悪化した後に、レスポンスタイムの要件を満たす最適なハードウェアリソース構成を探索すると、探索に時間を要し、サービスの品質の低下期間が長期化する。なお、レスポンスタイムの要件は、例えばレスポンスタイムが所定の閾値未満であることである。
【００２２】
それに対し、図１に示す仮想マシン監視システムでは、単位期間当たりのリクエスト量の増加傾向が検知できた段階で、仮想マシン３ｃの実行に使用可能なハードウェアリソースが自動で追加される。すなわち、リクエスト量の増加傾向が継続しても、それに応じて仮想マシン３ｃの実行に使用可能なハードウェアリソースの量も増加し、レスポンスタイムが悪化することを抑止できる。
【００２３】
しかも図１に示す仮想マシン監視システムでは、単位期間当たりのリクエスト量が減少傾向に転じた場合、仮想マシン３ｃの実行に使用可能なハードウェアリソースの量は自動で削減される。その結果、仮想マシン３ｃの実行のために、無駄に多くのハードウェアリソースが使用されることが抑止される。その結果、サーバ３のハードウェアリソースの効率的な利用が可能となる。
【００２４】
なお、処理部１２は、ハードウェアリソースの種別（ＣＰＵ、メモリなど）ごとに、仮想マシン３ｃの実行に使用可能とする量の変更の優先度を決定しておいてもよい。例えば、処理部１２は、サーバ３からハードウェアリソースの種別ごとの仮想マシン３ｃの使用率を取得し、使用率が高い種別のハードウェアリソースほど、優先度を高くする。この際、情報処理装置１０では、ハードウェアリソースの種別ごとの、仮想マシン３ｃの実行に使用可能とする最大値と最小値とを定めておく。例えば情報処理装置１０は、記憶部１１に予めリソース管理情報を記憶しておく。リソース管理情報には、ハードウェアリソースの種別ごとに、仮想マシン３ｃの実行に使用可能とする量の変更の優先度、仮想マシン３ｃの実行に使用可能とする量の最小値、および仮想マシンの実行に使用可能とする量の最大値が示される。
【００２５】
処理部１２は、仮想マシンの実行に使用可能なハードウェアリソースの量を増加させると決定した場合、リソース管理情報に基づいて、最大値を超えない範囲で、優先度が最も高い種別のハードウェアリソースを増加させることを決定する。優先度が最も高い種別のハードウェアリソースの量がすでに最大値になっている場合、処理部１２は、次に優先度が高い種別のハードウェアリソースを、最大値を超えない範囲で増加させることを決定する。
【００２６】
また処理部１２は、仮想マシンの実行に使用可能なハードウェアリソースの量を減少させると決定した場合、リソース管理情報に基づいて、最小値を下回らない範囲で、優先度が最も高い種別のハードウェアリソースを減少させることを決定する。優先度が最も高い種別のハードウェアリソースの量がすでに最小値になっている場合、処理部１２は、次に優先度が高い種別のハードウェアリソースを、最小値を下回らない範囲で減少させることを決定する。
【００２７】
このように、ハードウェアリソースの種別ごとの使用率に基づいて、リソースの量を変更させる優先度を決定しておくことで、仮想マシン３ｃのレスポンスタイムの悪化原因となる可能性の高いハードウェアリソースを、優先的に増加させることができる。その結果、仮想マシン３ｃの実行に使用可能なハードウェアリソースの量の変更を効率的に行うことができる。
【００２８】
すなわち、ハードウェアリソースの種別ごとの使用率を用いずにハードウェアリソースの量の変更を行うと、仮想マシン３ｃのレスポンスタイムの悪化原因にはならない種別のハードウェアリソースを増強してしまう可能性がある。この場合、仮想マシン３ｃの実行に使用可能なハードウェアリソースを増強したにも関わらず、リクエストの量の増加に伴いレスポンスタイムの悪化を抑止することができない。それに対して、ハードウェアリソースの種別ごとの使用率に基づいてリソースの量を変更させる優先度を決定することで、レスポンスタイムの悪化原因となる可能性の高い種別のハードウェアリソースの量を優先的に増加させることができる。
【００２９】
なお、仮想マシン３ｃとは別に、仮想マシン３ｃの実行に使用可能とするハードウェアリソースと同じ量のハードウェアリソースを使用可能な検証用の仮想マシンを立ち上げ、検証用の仮想マシンで適切なハードウェアリソース量を探索することもできる。しかし、ハードウェアリソースの種別ごとの使用率を考慮せずに、検証用の仮想マシンを用いた探索を行うと、ハードウェアリソース構成の異なる多数の仮想マシンのなかから、要件を満足する仮想マシンを特定することとなる。例えば、仮想マシンのＣＰＵ使用率が高く、ＣＰＵ不足がレスポンスタイムの悪化要因となる可能性がある場合でも、メモリリソースの量を拡張した検証用の仮想マシンについても探索の対象となる。その結果、最適なハードウェアリソース構成の特定に時間がかかる。それに対して、ハードウェアリソースの種別ごとの使用率に基づいて、ハードウェアリソースの量を変更させる優先度を決定することで、レスポンスタイムの悪化要因となる種別のハードウェアリソースを変更した場合について優先的に探索できる。これによりレスポンスタイムの要件を満たすハードウェアリソース構成を早期に特定できる。すなわち、仮想マシンの実行に使用可能とする最適なハードウェアリソース構成の探索を効率的に行うことができる。
【００３０】
〔第２の実施の形態〕
次に第２の実施の形態について説明する。第２の実施の形態は、運用中の仮想マシンに対するリクエスト量に応じて、その仮想マシンの実行に使用可能なハードウェアリソースの量を変更する。また第２の実施の形態では、運用中の仮想マシンの実行に使用可能なハードウェアリソースの量を変更する前に、検証用の仮想マシンを用いて、レスポンスタイムの要件が満たされるかどうかを検証する。
【００３１】
なお、以下の説明では、ハードウェアリソースを単にリソースと呼ぶ。また仮想マシンの実行に使用可能なリソースを設定することを、仮想マシンへのリソースの割り当てと呼ぶ。
【００３２】
図２は、第２の実施の形態のシステム構成例を示す図である。クラウドコンピューティングシステムには、仮想マシン監視装置１００、ロードバランサ２００、およびサーバ３００が含まれる。仮想マシン監視装置１００、ロードバランサ２００、およびサーバ３００は、管理ネットワーク２０で接続されている。管理ネットワーク２０は、クラウドコンピューティングシステムの運用管理用のネットワークである。またロードバランサ２００とサーバ３００とは、業務ネットワーク４１で接続されている。業務ネットワーク４１は、ロードバランサ２００が端末装置３１，３２，・・・から受信したリクエストのサーバ３００への転送、およびリクエストに対するサーバ３００からのレスポンスの送信に使用するネットワークである。
【００３３】
仮想マシン監視装置１００は、サーバ３００内の仮想マシンに送信されたリクエストの量に基づいて、その仮想マシンに割り当てるリソース量を管理する。例えば仮想マシン監視装置１００は、仮想マシンに送信された単位期間当たりのリクエスト量の増加率が、増加率の閾値を超えている場合、その仮想マシンへの資源の追加をサーバ３００に指示する。また仮想マシン監視装置１００は、仮想マシンに送信された単位期間当たりのリクエスト量の減少率が、減少率の閾値を超えている場合、その仮想マシンの資源の削減をサーバ３００に指示する。
【００３４】
ロードバランサ２００は、ネットワーク４２を介して複数の端末装置３１，３２，・・・に接続されている。複数の端末装置３１，３２，・・・それぞれは、サービスを利用するユーザが使用するコンピュータである。ロードバランサ２００は、複数の端末装置３１，３２，・・・のいずれかから送られたリクエストを、サーバ３００内の複数の仮想マシンのいずれかに転送する。またロードバランサ２００は、リクエストに対するレスポンスをサーバ３００内の複数の仮想マシンのいずれかから受信すると、そのレスポンスを、対応するリクエストの送信元の端末装置に転送する。ロードバランサ２００は、さらに、仮想マシン監視装置１００からの依頼に基づいて、仮想マシンに転送した単位期間当たりのリクエストの量と、リクエストに対するレスポンスタイムを計測する。ロードバランサ２００は、計測結果を、仮想マシン監視装置１００に送信する。
【００３５】
サーバ３００は、サービスを提供するコンピュータである。サーバ３００は、内部で複数の仮想マシンを生成する。複数の仮想マシンそれぞれには、サーバ３００が有するリソース（ＣＰＵ、メモリ、ストレージ装置など）の少なくとも一部が割り当てられる。サーバ３００内の複数の仮想マシンそれぞれが、割り当てられたリソースを用いて、端末装置３１，３２，・・・に対するサービスを提供する。
【００３６】
図３は、第２の実施の形態に用いる仮想マシン監視装置のハードウェアの一構成例を示す図である。仮想マシン監視装置１００は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１には、バス１０９を介してメモリ１０２と複数の周辺機器が接続されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ、ＭＰＵ（Micro Processing Unit）、またはＤＳＰ（Digital Signal Processor）である。プロセッサ１０１がプログラムを実行することで実現する機能の少なくとも一部を、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現してもよい。
【００３７】
メモリ１０２は、仮想マシン監視装置１００の主記憶装置として使用される。メモリ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ１０２には、プロセッサ１０１による処理に利用する各種データが格納される。メモリ１０２としては、例えばＲＡＭ（Random Access Memory）などの揮発性の半導体記憶装置が使用される。
【００３８】
バス１０９に接続されている周辺機器としては、ストレージ装置１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、機器接続インタフェース１０７およびネットワークインタフェース１０８がある。
【００３９】
ストレージ装置１０３は、内蔵した記録媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ装置１０３は、コンピュータの補助記憶装置として使用される。ストレージ装置１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ストレージ装置１０３としては、例えばＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）を使用することができる。
【００４０】
グラフィック処理装置１０４には、モニタ２１が接続されている。グラフィック処理装置１０４は、プロセッサ１０１からの命令に従って、画像をモニタ２１の画面に表示させる。モニタ２１としては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００４１】
入力インタフェース１０５には、キーボード２２とマウス２３とが接続されている。入力インタフェース１０５は、キーボード２２やマウス２３から送られてくる信号をプロセッサ１０１に送信する。なお、マウス２３は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００４２】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク２４に記録されたデータの読み取りを行う。光ディスク２４は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク２４には、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００４３】
機器接続インタフェース１０７は、仮想マシン監視装置１００に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース１０７には、メモリ装置２５やメモリリーダライタ２６を接続することができる。メモリ装置２５は、機器接続インタフェース１０７との通信機能を搭載した記録媒体である。メモリリーダライタ２６は、メモリカード２７へのデータの書き込み、またはメモリカード２７からのデータの読み出しを行う装置である。メモリカード２７は、カード型の記録媒体である。
【００４４】
ネットワークインタフェース１０８は、管理ネットワーク２０に接続されている。ネットワークインタフェース１０８は、管理ネットワーク２０を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【００４５】
以上のようなハードウェア構成によって、第２の実施の形態の仮想マシン監視装置１００の処理機能を実現することができる。なお仮想マシン監視装置１００に対しては、機器接続インタフェース１０７、またはネットワークインタフェース１０８を介してデータの入出力を行うことができる。そのため仮想マシン監視装置１００には、モニタ２１、キーボード２２、マウス２３などの入出力装置を接続しなくてもよい。また仮想マシン監視装置１００は、光学ドライブ装置１０６を有していなくてもよい。
【００４６】
ロードバランサ２００とサーバ３００も、図３に示した仮想マシン監視装置１００と同様のハードウェアにより実現することができる。また、第１の実施の形態に示した情報処理装置１０も、図３に示した仮想マシン監視装置１００と同様のハードウェアにより実現することができる。
【００４７】
仮想マシン監視装置１００は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第２の実施の形態の処理機能を実現する。仮想マシン監視装置１００に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、仮想マシン監視装置１００に実行させるプログラムをストレージ装置１０３に格納しておくことができる。プロセッサ１０１は、ストレージ装置１０３内のプログラムの少なくとも一部をメモリ１０２にロードし、プログラムを実行する。また仮想マシン監視装置１００に実行させるプログラムを、光ディスク２４、メモリ装置２５、メモリカード２７などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ１０１からの制御により、ストレージ装置１０３にインストールされた後、実行可能となる。またプロセッサ１０１が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００４８】
以上のような構成のシステムにおいて、仮想マシン監視装置１００、ロードバランサ２００、およびサーバ３００が連携して動作することで、運用中の仮想マシンに割り当てるリソース量を動的に変更することができる。なお、第２の実施の形態では、運用中の仮想マシンに割り当てるリソース量を変更する前に、運用中の仮想マシンのクローンを用いて、リソース量を変更してもよいかどうかが検証される。そして検証の結果問題がない場合に、運用中の仮想マシンに割り当てるリソース量が変更される。
【００４９】
以下の説明では、運用中の仮想マシンを、単に運用マシンと呼ぶこともある。また運用マシンのクローンとして生成される検証用の仮想マシンを、改善マシンと呼ぶこともある。
【００５０】
図４は、仮想マシンへ割り当て資源量を変更するために各装置が有する機能を示すブロック図である。仮想マシン監視装置１００は、記憶部１１０と監視部１２０とを有する。
記憶部１１０は、リクエスト監視テーブル１１１、リソース管理テーブル１１２、仮想マシン管理テーブル１１３、およびリソース優先度テーブル１１４を記憶する。リクエスト監視テーブル１１１は、運用中の仮想マシンに送信されたリクエストの量と、リクエストに対するレスポンスタイムを管理するためのデータテーブルである。リソース管理テーブル１１２は、仮想マシンに割り当てるリソースを管理するためのデータテーブルである。仮想マシン管理テーブル１１３は、仮想マシンの使用目的、現在のリソース構成、レスポンスタイムなどを管理するためのデータテーブルである。記憶部１１０は、例えば仮想マシン監視装置１００が有するメモリまたはストレージ装置の記憶領域の一部を用いて実現される。
【００５１】
監視部１２０は、仮想マシン３３１，３３２，・・・へのリクエストの量に基づいて、仮想マシン３３１，３３２，・・・へ割り当てるリソースの増減を決定する。そして監視部１２０は、決定に従って、サーバ３００に対して、仮想マシン３３１，３３２，・・・のリソースの追加、または仮想マシン３３１，３３２，・・・からのリソースの削除を指示する。監視部１２０は、このような仮想マシン３３１，３３２，・・・のリソースの管理を、オペレータによって予め設定された情報に基づき自動で実行する。
【００５２】
ロードバランサ２００は、記憶部２１０、負荷分散制御部２２０、および負荷計測部２３０を有する。
記憶部２１０は、ロードバランサ２００において仮想マシン３３１，３３２，・・・に転送したリクエストに関する情報（リクエスト情報）を蓄積したリクエスト管理テーブル２１１を記憶する。記憶部２１０は、例えばロードバランサ２００が有するメモリまたはストレージ装置の記憶領域の一部を用いて実現される。
【００５３】
負荷分散制御部２２０は、複数の端末装置３１，３２，・・・から受信したリクエストを、サーバ３００内の仮想マシン３３１，３３２，・・・のうちの運用中の仮想マシンに転送する。例えば負荷分散制御部２２０は、運用中の仮想マシンが複数ある場合、それらの仮想マシンの負荷が均等になるように、リクエストの転送先を決定する。また負荷分散制御部２２０は、サーバ３００内の運用中の仮想マシンからリクエストに対するレスポンスを受信すると、そのリクエストの送信元の端末装置へ、受信したレスポンスを送信する。
【００５４】
負荷計測部２３０は、運用中の仮想マシンへ転送したリクエスト量と、リクエストに対するレスポンスタイムとを計測する。例えば負荷計測部２３０は、監視部１２０からのリクエスト量とレスポンスタイムとの監視指示に応じて、監視指示で指定された仮想マシンのリクエスト量とレスポンスタイムとを計測する。
【００５５】
また負荷計測部２３０は、複数の仮想マシン３３１，３３２，・・・それぞれへ転送したリクエストに関する情報を、リクエスト情報として記憶部２１０内のリクエスト管理テーブル２１１に格納する。そして負荷計測部２３０は、仮想マシン監視装置１００からの改善マシンとして生成された仮想マシンのレスポンスタイム特定指示に応じて、リクエスト情報に基づくリクエストを該当する仮想マシンに送信する。負荷計測部２３０は、改善マシンである仮想マシンからのリクエストに対するレスポンスタイムを計測する。負荷計測部２３０は、計測したレスポンスタイムを、仮想マシン監視装置１００に送信する。
【００５６】
サーバ３００は、記憶部３１０とハイパーバイザ３２０とを有している。
記憶部３１０は、複数の仮想マシン３２１，３２２，・・・のいずれかのスナップショット３１１を記憶する。スナップショットは、特定の時点における運用中の仮想マシンの状態を再現可能な情報である。例えばスナップショットには、運用中の仮想マシンのメモリ内の情報、ストレージ装置内容の情報、ＣＰＵのレジスタ内の情報が含まれる。
【００５７】
ハイパーバイザ３２０は、複数の仮想マシン３３１，３３２，・・・を管理する。具体的には、ハイパーバイザ３２０は、複数の仮想マシン３３１，３３２，・・・それぞれに割り当てるリソースを決定し、割り当てたリソースを用いて複数の仮想マシン３３１，３３２，・・・を稼働させる。例えばハイパーバイザ３２０は、仮想マシン３３１を生成する場合、サーバ３００のリソースのなかから、仮想マシン３３１に割り当てるリソースの量を決定する。次にハイパーバイザ３２０は、決定した量のリソースにより、仮想ＣＰＵ３３１ａ、仮想メモリ３３１ｂ、および仮想ストレージ装置３３１ｃを生成する。ハイパーバイザ３２０は、これらの仮想的なリソースを有する仮想マシン３３１を生成する。仮想マシン３３１では、例えば業務アプリケーションソフトウェア３３１ｄを実行する。仮想マシン３３１は、業務アプリケーションソフトウェア３３１ｄを実行することで、例えばアプリケーションサーバとして機能する。そして仮想マシン３３１は、業務アプリケーションソフトウェア３３１ｄに基づいて、受信したリクエストに対する処理を実行し、処理結果を示すレスポンスを送信する。
【００５８】
複数の仮想マシン３３１，３３２，・・・には、運用中のものと、改善マシンとして利用されるものがある。例えば運用中の仮想マシンは、複数の端末装置３１，３２，・・・からのリクエストに応じてサービスを提供する。改善マシンには、割り当てリソースの量を変更予定の運用中の仮想マシンの、変更後のリソースと同じ量のリソースが割り当てられる。そして改善マシンは、変更後のリソース量で、サービスの要求品質が満たせるかどうかの検証に利用される。
【００５９】
このようなシステムにおいて、監視部１２０により、複数の仮想マシン３３１，３３２，・・・のリソース量の追加または削除が管理される。例えば監視部１２０は、ロードバランサ２００から、リクエスト量とレスポンスタイムの計測結果を取得し、取得した計測結果をリクエスト監視テーブル１１１に記録する。そして監視部１２０は、過去に取得した計測結果と直近の計測結果とから、仮想マシンに対するリクエスト量の変動率を算出する。
【００６０】
さらに監視部１２０は、サーバ３００上で作動するハイパーバイザ３２０から、仮想マシンのリソースの種別ごとのリソース使用率を示す使用リソース情報を取得する。監視部１２０は、取得した使用リソース情報を、リソース優先度テーブル１１４に記録する。そして監視部１２０は、リソース種別間のリソース使用率の比較結果から、リソース種別ごとに、リソース変更の優先度を決定する。
【００６１】
監視部１２０は、リクエスト量の変動率を元に、仮想マシンへの割り当てリソースの削減（コスト改善）、または、割り当てリソースの追加（レスポンス改善）処理を行う。監視部１２０は、コスト改善またはレスポンス改善の各処理を行う場合、ハイパーバイザ３２０から、仮想マシンのリソース構成情報を取得する。監視部１２０は、取得したリソース構成情報を、仮想マシン管理テーブル１１３に記録する。監視部１２０は、リソース構成情報を利用して、変更する仮想マシンへの割り当てリソースと変更量とを選定する。変更するリソースの選定は、リソース変更の優先度（順位）に基づき決定される。監視部１２０は、決定に基づいて、サーバ３００内のハイパーバイザ３２０へ、仮想マシンに割り当てるリソース量の変更を指示する。
【００６２】
なお、図４に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
以下、図５〜図９を参照し、各装置に記憶される情報について詳細に説明する。
【００６３】
図５は、リクエスト監視テーブルの一例を示す図である。リクエスト監視テーブル１１１には、インターバル期間、リクエスト量、レスポンスタイム、変動率、コスト改善、およびレスポンス改善の欄が設けられている。
【００６４】
インターバル期間の欄には、リクエスト量計測の単位間隔であるインターバル期間が設定される。図５の例では、インターバル期間は「２４時間」であり、２４時間ごとのリクエスト量が計測される。リクエスト量の欄は、前回と新規との欄に分かれている。リクエスト量の前回の欄には、前回のリクエスト量の計測時に計測されたリクエストの数が設定される。リクエスト量の新規の欄には、リクエスト量の最後の計測時に計測されたリクエストの数が設定される。レスポンスタイムの欄には、新規のリクエスト量の計測期間内でのレスポンスタイムの代表値（例えば平均値）が設定される。変動率の欄には、リクエスト量の変動率Ｒが設定される。変動率Ｒは、新規のリクエスト量を前回のリクエスト量で除算した値である。コスト改善の欄には、コスト改善処理を実行するか否かが設定される。例えば変動率がコスト改善の閾値（図５の例では「０．５」）未満の場合、コスト改善処理が実行される。レスポンス改善の欄には、レスポンス改善処理を実行するか否かが設定される。例えば変動率がレスポンス改善の閾値（図５の例では「１．５」）より大きい場合、レスポンス改善処理が実行される。
【００６５】
図６は、リソース管理テーブルの一例を示す図である。リソース管理テーブル１１２には、リソース、Ｍｉｎ、Ｍａｘ、増減単位、リソース単価、および優先度の欄が設けられている。
【００６６】
リソースの欄には、リソースの種別が設定される。Ｍｉｎの欄には、仮想マシンに割り当て可能なリソースの量の最小値が設置される。Ｍａｘの欄には、仮想マシンに割り当て可能なリソースの量の最大値が設定される。なお、ストレージ装置の場合、リソースの量に代えて、ストレージ装置のタイプ別のランクが設定される。ストレージのタイプとして、例えば「タイプ１」〜「タイプ５」の５つのタイプが設けられる。タイプの右の数値がランクを示し、ランクを示す数値が小さいほどリソース量が少ないものとみなされる。例えば「タイプ１」のストレージ装置は、ハードディスクにより、ＲＡＩＤ（Redundant Arrays of Inexpensive Disks）５のニアラインのストレージシステムである。「タイプ２」のストレージ装置は、ディスクの回転数が１万回転のハードティスクによる、ＲＡＩＤ５のストレージシステムである。「タイプ３」のストレージ装置は、ディスクの回転数が１万回転のハードティスクによる、ＲＡＩＤ１のストレージシステムである。「タイプ４」のストレージ装置は、ＳＳＤによる、ＲＡＩＤ５のストレージシステムである。「タイプ５」のストレージ装置は、ＳＳＤによる、ＲＡＩＤ１のストレージシステムである。
【００６７】
増減単位の欄には、リソースの量を増減させる際の、増減可能な最小の単位が設置される。例えばメモリであれば、２ＧＢ単位で増減させることができる。またＣＰＵであれば、２つのＣＰＵコア（２コア）単位で増減させることができる。ストレージ装置であれば、ランクを１段階ずつ変更することができる。
【００６８】
リソース単価の欄には、増減単位分のリソースの１ヶ月の使用量が設定される。例えば仮想マシンに割り当てるメモリを２ＧＢ増加させた場合、その仮想マシンを使用しているユーザが余分に支払う使用料は、＄８０である。また仮想マシンに割り当てるＣＰＵコア数を２つ増加させた場合、その仮想マシンを使用しているユーザが余分に支払う使用料は、＄１００である。さらに、仮想マシンに割り当てるストレージ装置のランクを１だけ高くした場合、その仮想マシンを使用しているユーザが余分に支払う使用料は、＄４０である。
【００６９】
優先度の欄には、仮想マシンにリソースを追加または削除する際の、追加または削除の対象となるリソースの優先度である。最も優先度が高いリソースの優先度の欄には「Ｈｉｇｈ（高）」と設定され、次に優先度が高いリソースの優先度の欄には「Ｍｉｄ（中）」と設定され、最も優先度が低いリソースの優先度の欄には「Ｌｏｗ（低）」と設定される。図６の例では、メモリが最も優先度が高く、次にＣＰＵの優先度が高く、ストレージ装置の優先度が最も低い。
【００７０】
図７は、仮想マシン管理テーブルの一例を示す図である。仮想マシン管理テーブル１１３には、仮想マシン、目的、リソース構成、利用コスト、およびレスポンスタイムの欄が設けられている。
【００７１】
仮想マシンの欄には、サーバ３００内で動作している仮想マシンの名称が設定される。目的の欄には、仮想マシンの使用の目的が設定される。目的としては、「運用」、「コスト改善」、「レスポンス改善」がある。目的「運用」は、サービスの運用に利用する仮想マシンであることを示している。目的「コスト改善」は、コスト改善のための性能評価に用いる改善マシンとして仮想マシンを利用することを示している。目的「レスポンス改善」は、レスポンス改善のための性能評価に用いる改善マシンとして仮想マシンを利用することを示している。
【００７２】
リソース構成の欄には、仮想マシンに割り当てられているリソースの量が設定される。例えばリソース構成の欄には、ＣＰＵ、メモリ、ストレージ装置それぞれのリソース量が設定される。
【００７３】
利用コストの欄には、仮想マシンの１月当たりの利用料が設定される。利用コストは、仮想マシンに割り当てられたリソースの量に基づいて算出される。
レスポンスタイムの欄には、仮想マシンのレスポンスタイムに関する情報が設定される。レスポンスタイムに関する情報としては、基準値、安全係数、計測値、および判定結果が含まれる。基準値（Ｃｒ）は、仮想マシンに要求されるレスポンスタイムである。安全係数（ｋ）は、レスポンスタイムが基準値を超えないようにするためのレスポンスタイムの閾値の算出に使用する１以下の定数である。基準値に安全係数を乗算した値が、レスポンスタイムの閾値（ｋ×Ｃｒ）となる。図７の例では、基準値（Ｃｒ）が「５ｍｓ」であり、安全係数が「０．８５」であるため、「４．２５ｍｓ（＝０．８５×５）」が閾値となる。
【００７４】
計測値（ＲＴ）の欄には、仮想マシンのレスポンスタイムの計測結果（例えば所定期間内に計測したレスポンスタイムの平均値）が設定される。判定結果の欄には、仮想マシンのレスポンスタイムと閾値との比較結果が設定される。図７の例では、仮想マシン「ＶＭ  Ａ」は、計測値が閾値より小さいため、判定結果は「ＯＫ」となっている。仮想マシン「ＶＭ  Ｂ」は、計測値が閾値以上であるため、判定結果は「ＮＧ」となっている。仮想マシン「ＶＭ  Ｃ」は、計測値が閾値より小さいため、判定結果は「ＯＫ」となっている。
【００７５】
図８は、リソース優先度テーブルの一例を示す図である。リソース優先度テーブル１１４には、リソース、リソース使用率：平均値、リソース使用率：最大値、およびリソース変更の優先度判定値の欄が設けられている。
【００７６】
リソースの欄には、リソースの種別が設定される。
リソース使用率：平均値の欄内には、さらに使用率、順位（ＰＡ）、および係数（ｋＡ）の欄が設けられている。リソース使用率：平均値の使用率の欄には、対応するリソースの仮想マシンでの所定期間内の使用率の平均値が設定される。リソース使用率：平均値の順位の欄には、複数のリソースを使用率の平均値が高い順に並べたときの、対応するリソースの順位（ＰＡ）が設定される。リソース使用率：平均値の係数の欄には、対応するリソースの変更の優先度判定値を計算する際の、使用率の平均値の順位に対する重みを示す係数（ｋＡ）が設定される。
【００７７】
リソース使用率：最大値の欄内には、さらに使用率、順位（ＰＭ）、および係数（ｋＭ）の欄が設けられている。リソース使用率：最大値の使用率の欄には、対応するリソースの仮想マシンでの所定期間内の使用率の最大値が設定される。リソース使用率：最大値の順位の欄には、複数のリソースを使用率の最大値が高い順に並べたときの、対応するリソースの順位（ＰＭ）が設定される。リソース使用率：最大値の係数の欄には、対応するリソースの変更の優先度判定値を計算する際の、使用率の最大値の順位に対する重みを示す係数（ｋＭ）が設定される。
【００７８】
リソース変更の優先度判定値の欄には、対応するリソースの量の変更の優先度判定値が設定される。優先度判定値は、例えば「ＰＡ×ｋＡ＋ＰＭ×ｋＭ」で計算される値である。優先度判定値の値が小さいリソースほど、リソース量を変更する優先度が高くなる。例えばリソースの種別が３つの場合、優先度判定値が小さい順にリソースを並べたとき、最初のリソースの優先度は「Ｈｉｇｈ（高）」となり、２番目のリソースの優先度は「Ｍｉｄ（中）」、３番目のリソースの優先度は「Ｌｏｗ（低）」となる。
【００７９】
なお、各リソースの平均値または最大値の係数は、リソースの性質に基づいて、ユーザにより予め決定されている。例えばメモリは、メモリに格納するデータがメモリ容量を超えても、スワップなどの技術で対処可能であるため、メモリは最大限利用されることが多い。すなわち、メモリの使用率の最大値は、１００％近いことが多く、そのような状態であっても、仮想マシンが過負荷であるとは判断できない。そのため図８の例では、メモリの使用率の最大値に対する係数は、他のリソースよりも高く設定されている。これにより、リソース使用率の最大値に関するメモリの使用率の順位が高くても、優先度判定値が多めに見積もられる。
【００８０】
またストレージ装置は、コスト改善またはレスポンス改善を実現するには、ストレージの種別を変えることとなる。例えば仮想マシンに割り当てるストレージ装置が、ＲＡＩＤ５のストレージ装置からＲＡＩＤ１のストレージ装置に変更される。このようなストレージの種別の変更処理は、データの移動を伴い、時間がかかる。そのため図８の例では、ストレージ装置についてのリソース使用率の平均値に対数する係数は、他のリソースよりも高く設定されている。これにより、リソース使用率の平均値に関するストレージ装置の使用率の順位が高くても、優先度判定値が多めに見積もられる。
【００８１】
図９は、ロードバランサが記憶するリクエスト管理テーブルの一例を示す図である。リクエスト管理テーブル２１１には、受信時刻、リクエスト、転送先仮想マシン、およびレスポンスタイムの欄が設けられている。
【００８２】
受信時刻の欄には、端末装置３１，３２，・・・から受信したリクエストの受信時刻が設定される。リクエストの欄には、受信したリクエストの内容が設定される。転送先仮想マシンの欄には、リクエストの転送先の仮想マシンの名称が設定される。レスポンスタイムの欄には、リクエストを仮想マシンに転送してから、その仮想マシンからレスポンスが返されるまでの時間（レスポンスタイム）が設定される。
【００８３】
次に、リソース量の自動変更処理について詳細に説明する。リソース量の自動変更処理は、大別するとリクエスト監視処理と最適化処理（コスト改善またはレスポンス改善処理）とに分けられる。以下、図１０と図１１とを参照して、リクエスト監視処理と最適化処理との概略を説明する。
【００８４】
図１０は、リクエスト監視処理の手順の一例を示すシーケンス図である。リクエスト監視処理では、まず仮想マシン監視装置１００は、サーバ３００へ、運用中の仮想マシンのスナップショット生成指示を送信する（ステップＳ１０１）。スナップショット生成指示を受信したサーバ３００は、仮想マシンのスナップショットを生成する（ステップＳ１０２）。
【００８５】
次に仮想マシン監視装置１００は、リクエスト量・レスポンスタイム計測指示を、ロードバランサ２００に送信する（ステップＳ１０３）。ロードバランサ２００は、リクエスト量・レスポンスタイム計測指示に応じて、サーバ３００内の運用中の仮想マシンに転送したリクエスト量を計数し、各リクエストに対するレスポンスタイムの平均値を計算する（ステップＳ１０４）。そしてロードバランサ２００は、リクエスト量とレスポンスタイムの平均値とを、計測結果として仮想マシン監視装置１００に送信する（ステップＳ１０５）。
【００８６】
次に仮想マシン監視装置１００は、運用中の仮想マシンのリソース使用率の要求を、サーバ３００に送信する（ステップＳ１０６）。サーバ３００は、仮想マシン監視装置１００からの要求に応じて、仮想マシンのリソース利用率の情報を応答する（ステップＳ１０７）。例えばサーバ３００では、仮想マシン３３１，３３２，・・・それぞれのＯＳが、リソース使用率を計測している。そしてハイパーバイザ３２０が、仮想マシン監視装置１００からの要求に応じて、仮想マシン３３１，３３２，・・・それぞれのＯＳからリソース使用率の情報を取得し、仮想マシン監視装置１００に送信する。
【００８７】
仮想マシン監視装置１００は、仮想マシンのリソース使用率の情報に基づいて、リソースごとに優先度判定値を算出し、リソース変更の優先度を決定する（ステップＳ１０８）。次に仮想マシン監視装置１００は、リクエスト量に基づいて、リクエスト量の変動率を算出する（ステップＳ１０９）。そして仮想マシン監視装置１００は、取得した情報を解析し、最適化処理（コスト改善処理またはレスポンス改善処理）を選択する。
【００８８】
図１１は、最適化処理の手順の一例を示すシーケンス図である。最適化処理では、仮想マシン監視装置１００は、運用中の仮想マシン（運用マシン）に割り当てられたリソースの構成の情報を、サーバ３００に要求する（ステップＳ１２１）。するとサーバ３００は、運用マシンに割り当てたリソースの構成を示す情報を、仮想マシン監視装置１００に送信する（ステップＳ１２２）。
【００８９】
仮想マシン監視装置１００は、運用マシンに割り当てられたリソース量を格納する（ステップＳ１２３）。次に仮想マシン監視装置１００は、運用マシンの最適なリソース量を決定する（ステップＳ１２４）。そして仮想マシン監視装置１００は、サーバ３００に対して改善マシンの生成を指示する（ステップＳ１２５）。サーバ３００は、指示に従って改善マシンとして使用する仮想マシンを生成する（ステップＳ１２６）。
【００９０】
次に仮想マシン監視装置１００は、サーバ３００へ、改善マシンへのスナップショット適用指示を送信する（ステップＳ１２７）。サーバ３００は、指示に従って、運用マシンのスナップショットを改善マシンで復元する（ステップＳ１２８）。続けて、仮想マシン監視装置１００は、サーバ３００へ、ステップＳ１２４で決定した最適なリソース量を改善マシンに割り当てるように、改善マシンのリソース量変更指示を送信する（ステップＳ１２９）。サーバ３００は、指示に従って改善マシンに割り当てるリソースの量を変更する（ステップＳ１３０）。
【００９１】
仮想マシン監視装置１００は、ロードバランサ２００に対して、改善マシンのレスポンスタイム計測指示を送信する（ステップＳ１３１）。ロードバランサ２００は、過去に運用サーバに送信したリクエストのログを記録しており、仮想マシン監視装置１００からのレスポンスタイム計測指示に応じて、記録しておいたリクエストを改善マシン宛てに送信する（ステップＳ１３２）。サーバ３００では、改善マシンにより、リクエストに応じた処理が実行される。そしてサーバ３００内の改善マシンは、ロードバランサ２００にリクエストに対する応答を送信する（ステップＳ１３３）。ロードバランサ２００は、リクエストの送信から応答までの時間を計測し、計測結果をレスポンスタイムとする。ロードバランサ２００は、レスポンスタイムの計測結果を、仮想マシン監視装置１００に送信する（ステップＳ１３４）。
【００９２】
仮想マシン監視装置１００は、改善マシンのレスポンスタイムが、運用マシンに求められるレスポンスタイムの要件を満たしているか否かを判定する（ステップＳ１３５）。仮想マシン監視装置１００は、レスポンスタイムの要件が満たされると判定した場合、サーバ３００に対して、運用マシンのリソース量を、ステップＳ１２４で決定した最適なリソース量に変更するように指示する（ステップＳ１３６）。サーバ３００は、指示に従って運用マシンのリソース量を変更する（ステップＳ１３７）。
【００９３】
このようにして、運用マシンのリソース量が自動で変更される。
次に、各装置が実行する処理を詳細に説明する。
図１２は、仮想マシン監視装置におけるリクエスト監視処理の手順の一例を示すフローチャートの前半である。以下、図１２に示す処理をステップ番号に沿って説明する。
【００９４】
［ステップＳ２０１］監視部１２０は、各種データテーブルを生成する。具体的には、監視部１２０は、リクエスト監視テーブル１１１、リソース管理テーブル１１２、およびリソース優先度テーブル１１４を新たに生成する。この時点では、リクエスト監視テーブル１１１には、インターバル期間のみが設定されている。インターバル期間は、リクエスト量を計数する期間である。インターバル期間は、ユーザにより予め指定されている。
【００９５】
なお、過去に実行したリクエスト監視処理により、リクエスト監視テーブル１１１とリソース管理テーブル１１２とリソース優先度テーブル１１４とが生成済みの場合、ステップＳ２０１の処理は省略される。
【００９６】
［ステップＳ２０２］監視部１２０は、各種データテーブルに設定するデータの入力を受け付ける。例えば監視部１２０は、リソース管理テーブル１１２の各欄（図６参照）のうち、リソース、Ｍｉｎ、Ｍａｘ、増減単位、リソース単価の欄に設定するデータの入力を受け付ける。そして監視部１２０は、ユーザにより入力されたデータを、リソース管理テーブル１１２に設定する。また監視部１２０は、リソース優先度テーブル１１４の各欄（図８参照）のうち、リソース使用率：平均値の係数の欄とリソース使用率：最大値の係数の欄とに設定する値の入力を受け付ける。そして監視部１２０は、ユーザにより入力されたデータを、リソース優先度テーブル１１４に設定する。
【００９７】
［ステップＳ２０３］監視部１２０は、ロードバランサ２００内の負荷計測部２３０およびサーバ３００内のハイパーバイザ３２０それぞれとの間で、管理ネットワーク２０を介して通信を接続する。
【００９８】
［ステップＳ２０４］監視部１２０は、サーバ３００内のハイパーバイザ３２０に対して、運用中の仮想マシンのスナップショット作成を指示する。
［ステップＳ２０５］監視部１２０は、ロードバランサ２００内の負荷計測部２３０に対して、リクエスト量とレスポンスタイムとの計測指示を送信する。この計測指示に応じて、負荷計測部２３０において運用中の仮想マシンへのリクエストが監視され、リクエスト量とレスポンスタイムとの計測が開始される。
【００９９】
［ステップＳ２０６］監視部１２０は、所定時間待機する。待機する所定時間は、ユーザにより予め設定されている。
［ステップＳ２０７］監視部１２０は、ロードバランサ２００内の負荷計測部２３０に対して、リクエスト量の監視終了と同時にリクエスト情報の計測終了を指示する。計測終了指示に応じて、負荷計測部２３０から、計測結果が応答される。計測結果には、例えば仮想マシンに所定期間内に送信したリクエスト量と、その期間の平均のレスポンスタイムとが含まれる。
【０１００】
［ステップＳ２０８］監視部１２０は、応答された計測結果に基づいて、リクエスト監視テーブル１１１を更新する。例えば監視部１２０は、最新の計測結果に含まれるリクエスト量を、リクエスト監視テーブル１１１のリクエスト量の新規の欄に設定する。この際、新規の欄に、前回の計測結果に示されていたリクエスト量が設定されている場合、そのリクエスト量を、リクエスト量の前回の欄にコピーした後に、新規の欄に最新のリクエスト量を書き込む。また監視部１２０は、最新の計測結果に含まれるレスポンスタイムを、リクエスト監視テーブル１１１のレスポンスタイムの欄に設定する。また監視部１２０は、新規のリクエスト量を前回のリクエスト量で除算することで、変動率を算出し、リクエスト監視テーブル１１１の変動率の欄に設定する。
【０１０１】
［ステップＳ２０９］監視部１２０は、リクエスト監視テーブル１１１に前回のリクエスト量が設定されているか否かを判断する。監視部１２０は、前回のリクエスト量が設定されている場合、処理をステップＳ２１０に進める。また監視部１２０は、前回のリクエスト量が設定されていない場合、処理をステップＳ２０５に進める。
【０１０２】
［ステップＳ２１０］監視部１２０は、仮想マシンのリソース使用率に関する情報を、サーバ３００内のハイパーバイザ３２０に要求する。この要求に応じて、ハイパーバイザ３２０から、リソース使用率に関する情報が応答される。リソース使用率に関する情報には、ＣＰＵ、メモリ、ストレージ装置それぞれの使用率の平均値と最大値とが含まれる。
【０１０３】
［ステップＳ２１１］監視部１２０は、リソース使用率に関する情報に基づいて、リソース優先度テーブル１１４を更新する。例えば、監視部１２０は、リソース優先度テーブル１１４のリソース使用率：平均値の使用率の欄に、各リソースの使用率の平均値を設定し、リソース優先度テーブル１１４のリソース使用率：最大値の使用率の欄に、各リソースの使用率の最大値を設定する。監視部１２０は、その後、処理をステップＳ２２１（図１３参照）に進める。
【０１０４】
図１３は、仮想マシン監視装置におけるリクエスト監視処理の手順の一例を示すフローチャートの後半である。以下、図１３に示す処理をステップ番号に沿って説明する。
［ステップＳ２２１］監視部１２０は、各リソースのリソース使用率の順位を決定する。例えば監視部１２０は、リソース優先度テーブル１１４を参照し、まず、リソース使用率：平均値の使用率の欄に設定されている各リソースの使用率を比較し、使用率の高い順に順位を決定する。そして監視部１２０は、リソース使用率の平均値の順位を、リソース優先度テーブル１１４のリソース使用率：平均値の順位の欄に、各リソースに対応付けて設定する。次に監視部１２０は、リソース優先度テーブル１１４のリソース使用率：最大値の欄に設定されている各リソースの使用率を比較し、使用率の高い順に順位を決定する。そして監視部１２０は、リソース使用率の最大値の順位を、リソース優先度テーブル１１４のリソース使用率：最大値の順位の欄に、各リソースに対応付けて設定する。
【０１０５】
［ステップＳ２２２］監視部１２０は、リソースごとに、リソース変更の優先度を決定する。例えば監視部１２０は、使用率の平均値の順位（ＰＡ）に係数（ｋＡ）を乗算した値と、使用率の最大値の順位（ＰＭ）に係数（ｋＭ）を乗算した値との加算結果を、リソース変更の優先度判定値とする。監視部１２０は、各リソースについて算出したリソース変更の優先度判定値を、リソース優先度テーブル１１４のリソース変更の優先度判定値の欄に設定する。
【０１０６】
さらに監視部１２０は、各リソースのリソース変更の優先度判定値に基づいて、各リソースの優先度を決定し、リソース管理テーブル１１２の優先度の欄に設定する。例えば監視部１２０は、リソース変更の優先度判定値が最も高いリソースの優先度を「Ｈｉｇｈ」、リソース変更の優先度判定値が２番目に高いリソースの優先度を「Ｍｉｄ」、リソース変更の優先度判定値が最も低いリソースの優先度を「Ｌｏｗ」とする。
【０１０７】
［ステップＳ２２３］監視部１２０は、レスポンスタイムが閾値以上か否かを判断する。閾値は、仮想マシン管理テーブル１１３に設定されている基準値×安全係数である。監視部１２０は、レスポンスタイムが閾値以上の場合、処理をステップＳ２２８に進める。また監視部１２０は、レスポンスタイムが閾値未満の場合、処理をステップＳ２２４に進める。
【０１０８】
［ステップＳ２２４］監視部１２０は、リクエスト監視テーブル１１１に設定されている変動率に基づいて、リクエスト量の増減の傾向を判定する。例えば監視部１２０は、変動率が、コスト改善の閾値（例えば「０．５」）未満の場合、リクエスト量が減少傾向にあると判定し、リクエスト監視テーブル１１１の”コスト改善の欄に「Ｙｅｓ」を書き込む。また監視部１２０は、変動率が、コスト改善の閾値以上の場合、リクエスト量が減少傾向にはないと判定し、リクエスト監視テーブル１１１のコスト改善の欄に「Ｎｏ」を書き込む。さらに監視部１２０は、変動率が、レスポンス改善の閾値（例えば「１．５」）より大きい場合、リクエスト量が増加傾向にあると判定し、リクエスト監視テーブル１１１のレスポンス改善の欄に「Ｙｅｓ」を書き込む。また監視部１２０は、変動率が、レスポンス改善の閾値以下の場合、リクエスト量が増加傾向にはないと判定し、リクエスト監視テーブル１１１のレスポンス改善の欄に「Ｎｏ」を書き込む。
【０１０９】
［ステップＳ２２５］監視部１２０は、リクエスト監視テーブル１１１のコスト改善のステータスを照会する。例えば監視部１２０は、コスト改善の欄に「Ｙｅｓ」が設定されている場合、処理をステップＳ２２７に進める。監視部１２０は、コスト改善の欄に「Ｎｏ」が設定されている場合、処理をステップＳ２２６に進める。
【０１１０】
［ステップＳ２２６］監視部１２０は、リクエスト監視テーブル１１１のレスポンス改善のステータスを照会する。監視部１２０は、レスポンス改善の欄に「Ｙｅｓ」が設定されている場合、処理をステップＳ２２８に進める。監視部１２０は、レスポンス改善の欄に「Ｎｏ」が設定されている場合、処理をステップＳ２０５（図１２参照）に進める。
【０１１１】
［ステップＳ２２７］監視部１２０は、コスト改善処理を行う。コスト改善処理の詳細は後述する（図１５、図１６参照）。監視部１２０は、コスト改善処理が終了すると、リクエスト監視処理を終了する。
【０１１２】
［ステップＳ２２８］監視部１２０は、レスポンス改善処理を行う。レスポンス改善処理の詳細は後述する（図１７、図１８参照）。監視部１２０は、コスト改善処理が終了すると、リクエスト監視処理を終了する。
【０１１３】
このようにして、リクエストを監視して、リクエスト量が急増していればレスポンス改善処理が行われ、リクエスト量が急減していればコスト改善処理が行われる。
ここで、コスト改善処理とレスポンス改善処理の詳細を説明する前に、ロードバランサ２００によるリクエスト量・レスポンスタイム計測処理について詳細に説明する。
【０１１４】
図１４は、リクエスト量・レスポンスタイム計測処理の手順の一例を示すフローチャートである。なおリクエスト量の監視処理は、仮想マシン監視装置１００内の監視部１２０からリクエスト量・レスポンスタイム計測指示を受信したときに実行される。以下、図１４に示す処理をステップ番号に沿って説明する。
【０１１５】
［ステップＳ３０１］ロードバランサ２００の負荷計測部２３０は、負荷分散制御部２２０による負荷分散処理を監視し、端末装置３１，３２，・・・からのリクエストを仮想マシン３３１，３３２，・・・に転送したか否かを判断する。負荷計測部２３０は、リクエストの転送があった場合、処理をステップＳ３０２に進める。また負荷計測部２３０は、リクエストの転送がなければ、処理をステップＳ３０４に進める。
【０１１６】
［ステップＳ３０２］負荷計測部２３０は、転送したリクエストに関するリクエスト情報を、リクエスト管理テーブル２１１に登録する。
［ステップＳ３０３］負荷計測部２３０は、転送したリクエストに対応する仮想マシンからの応答を待ち、そのリクエストに対するレスポンスタイムを計測する。そして負荷計測部２３０は、計測したレスポンスタイムを、ステップＳ３０２で登録したリクエスト情報に関連付けて、リクエスト管理テーブル２１１のレスポンスタイムの欄に設定する。
【０１１７】
［ステップＳ３０４］負荷計測部２３０は、仮想マシン監視装置１００内の監視部１２０から、計測終了指示を受信したか否かを判断する。負荷計測部２３０は、計測終了指示を受信した場合、処理をステップＳ３０５に進める。また負荷計測部２３０は、計測終了指示を受信していなければ、処理をステップＳ３０１に進める。
【０１１８】
［ステップＳ３０５］負荷計測部２３０は、リクエスト管理テーブル２１１に格納したリクエスト情報に基づいて、リクエスト量を計数する。例えば負荷計測部２３０は、リクエスト量・レスポンスタイム計測指示を受信後、計測終了指示を受信するまでの期間内の時刻が受信時刻に設定されており、転送先仮想マシンが運用中の仮想マシンであるリクエストのリクエスト情報を特定する。そして負荷計測部２３０は特定したリクエスト情報の数を計数し、運用中の仮想マシンへのリクエスト量とする。
【０１１９】
［ステップＳ３０６］負荷計測部２３０は、レスポンスタイムの平均値を計算する。例えばステップＳ３０５で特定したリクエスト情報それぞれのレスポンスタイムを合計し、合計をリクエスト量で除算した結果を、レスポンスタイムの平均値とする。
【０１２０】
［ステップＳ３０７］負荷計測部２３０は、リクエスト量とレスポンスタイムの平均値とを、計測結果として仮想マシン監視装置１００の監視部１２０に送信する。
このように、ロードバランサ２００において計測されたリクエスト量とレスポンスタイム（平均値）とに基づいて、仮想マシン監視装置１００においてコスト改善処理またはレスポンス改善処理を実行するか否かが決定され、決定された処理が実行される。
【０１２１】
図１５は、コスト改善処理の手順の一例を示すフローチャートの前半である。運用中の仮想マシン３３１のコスト改善処理を実行するものとして、以下、図１５に示す処理をステップ番号に沿って説明する。
【０１２２】
［ステップＳ４０１］仮想マシン監視装置１００の監視部１２０は、仮想マシン３３１の情報を管理する仮想マシン管理テーブル１１３を生成する。なお、既に仮想マシン管理テーブル１１３が生成済みの場合、監視部１２０は、新たな仮想マシン管理テーブル１１３の生成は行わない。
【０１２３】
例えば監視部１２０は、仮想マシン管理テーブル１１３に仮想マシン３３１のレコードを登録する。この時点では、登録されたレコードには、仮想マシン３３１の名称「ＶＭ  Ａ」に対応付けて、目的、利用コスト、レスポンスタイムの基準値・安全係数・判定結果が設定される。このとき設定される目的は「運用」である。レスポンスタイムの基準値・安全係数は、予めユーザにより指定されている値である。レスポンスタイムの計測値は、ロードバランサ２００がステップＳ３０６（図１４参照）で計算したレスポンスタイムの平均値である。レスポンスタイムの平均値は、リクエスト監視テーブル１１１のレスポンスタイムの欄から取得できる。運用マシンである仮想マシン３３１のレスポンスタイムの判定は、ステップＳ２２３（図１３参照）において行われている。監視部１２０は、ステップＳ２２３の判定結果を、仮想マシン管理テーブル１１３のレスポンスタイムの判定結果の欄に設定する。
【０１２４】
なお、過去に実行したリクエスト監視処理により、仮想マシン管理テーブル１１３が生成済みの場合、ステップＳ４０１の処理は省略される。
［ステップＳ４０２］監視部１２０は、ハイパーバイザ３２０から、仮想マシン３３１のリソース構成（各リソースの割り当て量）を取得する。そして監視部１２０は、取得したリソース構成を、仮想マシン管理テーブル１１３に設定する。
【０１２５】
［ステップＳ４０３］監視部１２０は、仮想マシン管理テーブル１１３に登録されている仮想マシン３３１のレコードのコピーを、改善マシンとして用いる仮想マシンのレコードとして、仮想マシン管理テーブル１１３に追加する。そして監視部１２０は、新たに追加したレコードにおける仮想マシンの名称を変更し、目的の欄に「コスト改善」と設定する。
【０１２６】
次に、監視部１２０は、ステップＳ４０４〜Ｓ４０６の処理により、運用中の仮想マシン３３１に比べてロースペックのリソース構成を、改善マシンとして用いる仮想マシンに設定する。
【０１２７】
［ステップＳ４０４］監視部１２０は、仮想マシン管理テーブル１１３の改善マシンのレコードについて、リソース構成に示される各リソースの割り当て量のうち、優先度の高いリソースの割り当て量から、１単位分だけ減算する。なおリソースの優先度は、リソース管理テーブル１１２の優先度の欄を参照して判別できる。監視部１２０は、優先度の高いリソースの減算後の割り当て量を、仮想マシン管理テーブル１１３の改善マシンのレコードのリソース構成の欄に設定する。なお監視部１２０は、改善マシンに割り当てられた優先度の高いリソースが、そのリソースの利用可能な最小値の場合、次に優先度の高いリソースの割り当て量から、１単位分だけ減算する。各リソースの利用可能な最小値は、リソース管理テーブル１１２のＭｉｎの欄に設定されている。
【０１２８】
図７の仮想マシン管理テーブル１１３の例では、仮想マシン「ＶＭ  Ａ」が運用中の仮想マシンである。図６に示したリソース管理テーブル１１２では、最も優先度が高いのはメモリである。仮想マシン「ＶＭ  Ａ」に割り当てられたメモリ量は４ＧＢである。そこで監視部１２０は、仮想マシン管理テーブル１１３の目的が「コスト改善」の仮想マシン「ＶＭ  Ｂ」のレコードのリソース構成のメモリの欄に、４ＧＢから１単位分（２ＧＢ）減算した値「２ＧＢ」を書き込む。
【０１２９】
ここで、仮に運用中の仮想マシン「ＶＭ  Ａ」に割り当てられたメモリ容量が２ＧＢ（最小値）の場合、次に優先度の高いＣＰＵの割り当て量が１単位分（２コア）だけ減算される。この際、監視部１２０は、割り当てられたリソース量が最小値で減算できないリソース（メモリ）について、１単位分だけ加算してもよい。
【０１３０】
［ステップＳ４０５］監視部１２０は、運用中の仮想マシンの利用コストと、改善マシンの利用コストとを計算する。例えば、監視部１２０は、リソースごとの増減単価をリソース管理テーブル１１２から取得する。次に監視部１２０は、仮想マシン管理テーブル１１３に示される、仮想マシンへのリソースの割り当て量に増減単価を乗算し、その仮想マシンのリソースごとの利用コストを得る。そして監視部１２０は、リソースごとの利用コストを合計し、該当仮想マシンの利用コストとする。監視部１２０は、運用中の仮想マシンの利用コストと、改善マシンの利用コストとのそれぞれについて算出した利用コストを、仮想マシン管理テーブル１１３の利用コストの欄に設定する。
【０１３１】
［ステップＳ４０６］監視部１２０は、改善マシンの方が利用コストが低いかどうかを判定する。監視部１２０は、改善マシンの方が利用コストが低い場合、処理をステップＳ４１１に進める。また監視部１２０は、運用中のマシンの方が利用コストが低いか、または利用コストが変わらない場合、処理をステップＳ４０４に進め、改善マシンのリソース量をさらに削減する。なお図１５のフローチャートには示していないが、削減可能なリソースがない場合は、コスト改善処理は終了する。
【０１３２】
図１６は、コスト改善処理の手順の一例を示すフローチャートの後半である。以下、図１６に示す処理をステップ番号に沿って説明する。
［ステップＳ４１１］監視部１２０は、サーバ３００のハイパーバイザ３２０に対し、運用中の仮想マシン３３１のクローン生成を指示する。ハイパーバイザ３２０は、指示に従って仮想マシン３３１のクローンの仮想マシンを生成する。以下、クローンとして仮想マシン３３２が生成されたものとする。
【０１３３】
［ステップＳ４１２］監視部１２０は、ハイパーバイザ３２０に対し、生成した仮想マシン３３２へのスナップショットの適用を指示する。この指示に応じて、ハイパーバイザ３２０は、仮想マシン３３１のスナップショットを、仮想マシン３３２に適用する。これにより、仮想マシン３３１の動作状態が、仮想マシン３３２で再現される。
【０１３４】
［ステップＳ４１３］監視部１２０は、ハイパーバイザ３２０に対し、運用中の仮想マシン３３１のクローンである仮想マシン３３２に割り当てるリソース量の削減を指示する。例えば監視部１２０は、仮想マシン管理テーブル１１３の目的「コスト改善」の仮想マシンのリソース構成をハイパーバイザ３２０に通知し、仮想マシン３３２のリソース構成を、通知したリソース構成とするようにハイパーバイザ３２０に指示する。
【０１３５】
［ステップＳ４１４］監視部１２０は、ハイパーバイザ３２０に対し、運用中の仮想マシン３３１のクローンである仮想マシン３３２の名称（例えば「ＶＭ  Ｂ」）を指定し、仮想マシン３３２の起動を指示する。ハイパーバイザ３２０は、指示に従って、仮想マシン３３２を起動する。
【０１３６】
［ステップＳ４１５］監視部１２０は、ロードバランサ２００の負荷計測部２３０に対し、仮想マシン３３２の名称「ＶＭ  Ｂ」を指定して、仮想マシン３３２のレスポンスタイムの計測を指示する。負荷計測部２３０は、計測指示に応じて、記憶部２１０に蓄積してあるリクエスト情報に基づいて、リクエストを仮想マシン３３２に送信し、そのリクエストに対するレスポンスタイムを計測する。例えば負荷計測部２３０は、複数のリクエストを仮想マシン３３２に送信し、各リクエストに対するレスポンスタイムの平均値を、仮想マシン３３２のレスポンスタイムとする。
【０１３７】
［ステップＳ４１６］監視部１２０は、負荷計測部２３０から、仮想マシン３３２のレスポンスタイムの計測結果を取得する。監視部１２０は、取得したレスポンスタイムを、仮想マシン管理テーブル１１３内の目的「コスト改善」のレコードのレスポンスタイムの計測値の欄に設定する。
【０１３８】
［ステップＳ４１７］監視部１２０は、仮想マシン３３２のレスポンスタイムが、運用中の仮想マシン３３１に求められるレスポンスタイムの閾値（基準値×安全係数）未満か否かを判定する。監視部１２０は、レスポンスタイムが閾値未満の場合、仮想マシン管理テーブル１１３内の目的「コスト改善」のレコードのレスポンスタイムの判定結果の欄に「ＯＫ」と設定し、処理をステップＳ４１８に進める。また監視部１２０は、レスポンスタイムが閾値以上の場合、仮想マシン管理テーブル１１３内の目的「コスト改善」のレコードのレスポンスタイムの判定結果の欄に「ＮＧ」と設定し、コスト改善処理を終了する。
【０１３９】
［ステップＳ４１８］監視部１２０は、サーバ３００内のハイパーバイザ３２０に対し、運用中の仮想マシン３３１への割り当てリソース量の削減を指示する。例えば監視部１２０は、仮想マシン管理テーブル１１３の目的「コスト改善」の仮想マシンのリソース構成をハイパーバイザ３２０に通知し、運用中の仮想マシン３３１のリソース構成を、通知したリソース構成とするようにハイパーバイザ３２０に指示する。
【０１４０】
［ステップＳ４１９］監視部１２０は、仮想マシン管理テーブル１１３における運用中の仮想マシン３３１のリソース構成を更新する。例えば監視部１２０は、目的「コスト改善」のレコードのリソース構成のコピーを、目的「運用」のレコードのリソース構成に上書きで書き込む。監視部１２０は、その後、処理をステップＳ４０２に進め、さらにリソース量の削減が可能かどうかを探索する。
【０１４１】
このようにして、優先度の高いリソースから順に、運用中の仮想マシン３３１への割り当てリソース量が削減される。最終的には、運用中の仮想マシン３３１への割り当てリソース量は、レスポンスタイムの条件が満たされる最小限のリソース量となる。
【０１４２】
次に、レスポンス改善処理について詳細に説明する。
図１７は、レスポンス改善処理の手順の一例を示すフローチャートの前半である。運用中の仮想マシン３３１のコスト改善処理を実行するものとして、以下、図１７に示す処理をステップ番号に沿って説明する。
【０１４３】
［ステップＳ５０１］仮想マシン監視装置１００の監視部１２０は、仮想マシン３３１の情報を管理する仮想マシン管理テーブル１１３を生成する。なお、過去に実行したリクエスト監視処理により、仮想マシン管理テーブル１１３が生成済みの場合、ステップＳ５０１の処理は省略される。仮想マシン管理テーブル１１３の生成処理の詳細は、図１５のステップＳ４０１と同様である。
【０１４４】
［ステップＳ５０２］ハイパーバイザ３２０から、仮想マシン３３１のリソース構成（各リソースの割り当て量）を取得する。そして監視部１２０は、取得したリソース構成を、仮想マシン管理テーブル１１３に設定する。
【０１４５】
［ステップＳ５０３］監視部１２０は、仮想マシン管理テーブル１１３に登録されている仮想マシン３３１のレコードのコピーを、改善マシンとして用いる仮想マシンのレコードとして、仮想マシン管理テーブル１１３に追加する。そして監視部１２０は、新たに追加したレコードにおける仮想マシンの名称を変更し、目的の欄に「レスポンス改善」と設定する。
【０１４６】
［ステップＳ５０４］監視部１２０は、仮想マシン管理テーブル１１３の改善マシンのレコードについて、リソース構成に示される各リソースの割り当て量のうち、優先度の高いリソースの割り当て量に、１単位分だけ加算する。監視部１２０は、優先度の高いリソースの加算後の割り当て量を、仮想マシン管理テーブル１１３の改善マシンのレコードのリソース構成の欄に設定する。なお監視部１２０は、改善マシンに割り当てられた優先度の高いリソースが、そのリソースの利用可能な最大値の場合、次に優先度の高いリソースの割り当て量に、１単位分だけ加算する。各リソースの利用可能な最大値は、リソース管理テーブル１１２のＭａｘの欄に設定されている。
【０１４７】
例えば、優先度が最も高いリソースがメモリであり、運用中の仮想マシンに割り当てられたメモリ量が２ＧＢの場合、目的「レスポンス改善」の仮想マシンのメモリ量には、１単位（２ＧＢ）分加算した、４ＧＢとなる。
【０１４８】
また、運用中の仮想マシンに割り当てられたメモリの量が６４ＧＢ（最大値）の場合、次に優先度の高いリソースであるＣＰＵの割り当て量が１単位（２コア）分を加算される。この際、リソース使用量が最大値となっているリソース（メモリ）についての割り当て量を、１単位分だけ減算してもよい。
【０１４９】
リソース量の増加処理後、監視部１２０は、処理をステップＳ５１１（図１８参照）に進める。
図１８は、レスポンス改善処理の手順の一例を示すフローチャートの後半である。以下、図１８に示す処理をステップ番号に沿って説明する。
【０１５０】
［ステップＳ５１１］監視部１２０は、サーバ３００のハイパーバイザ３２０に対し、運用中の仮想マシン３３１のクローン生成を指示する。ハイパーバイザ３２０は、指示に従って仮想マシン３３１のクローンの仮想マシンを生成する。以下、クローンとして仮想マシン３３２が生成されたものとする。
【０１５１】
［ステップＳ５１２］監視部１２０は、ハイパーバイザ３２０に対し、生成した仮想マシン３３２へのスナップショットの適用を指示する。この指示に応じて、ハイパーバイザ３２０は、仮想マシン３３１のスナップショットを、仮想マシン３３２に適用する。これにより、仮想マシン３３１の動作状態が、仮想マシン３３２で再現される。
【０１５２】
［ステップＳ５１３］監視部１２０は、ハイパーバイザ３２０に対し、運用中の仮想マシン３３１のクローンである仮想マシン３３２に割り当てるリソース量の増強を指示する。例えば監視部１２０は、仮想マシン管理テーブル１１３の目的「レスポンス改善」の仮想マシンのリソース構成をハイパーバイザ３２０に通知し、仮想マシン３３２のリソース構成を、通知したリソース構成とするようにハイパーバイザ３２０に指示する。
【０１５３】
［ステップＳ５１４］監視部１２０は、ハイパーバイザ３２０に対し、運用中の仮想マシン３３１のクローンである仮想マシン３３２の名称（例えば「ＶＭ  Ｃ」）を指定し、仮想マシン３３２の起動を指示する。ハイパーバイザ３２０は、指示に従って、仮想マシン３３２を起動する。
【０１５４】
［ステップＳ５１５］監視部１２０は、ロードバランサ２００の負荷計測部２３０に対し、仮想マシン３３２の名称「ＶＭ  Ｃ」を指定して、仮想マシン３３２のレスポンスタイムの計測を指示する。負荷計測部２３０は、計測指示に応じて、記憶部２１０に蓄積してあるリクエスト情報に基づいて、リクエストを仮想マシン３３２に送信し、そのリクエストに対するレスポンスタイムを計測する。例えば負荷計測部２３０は、複数のリクエストを仮想マシン３３２に送信し、各リクエストに対するレスポンスタイムの平均値を、仮想マシン３３２のレスポンスタイムとする。
【０１５５】
［ステップＳ５１６］監視部１２０は、負荷計測部２３０から、仮想マシン３３２のレスポンスタイムの計測結果を取得する。監視部１２０は、取得したレスポンスタイムを、仮想マシン管理テーブル１１３内の目的「レスポンス改善」のレコードのレスポンスタイムの計測値の欄に設定する。
【０１５６】
［ステップＳ５１７］監視部１２０は、仮想マシン３３２のレスポンスタイムが、運用中の仮想マシン３３１に求められるレスポンスタイムの閾値（基準値×安全係数）未満か否かを判定する。監視部１２０は、レスポンスタイムが閾値未満の場合、仮想マシン管理テーブル１１３内の目的「レスポンス改善」のレコードのレスポンスタイムの判定結果の欄に「ＯＫ」と設定し、処理をステップＳ５１８に進める。また監視部１２０は、レスポンスタイムが閾値以上の場合、仮想マシン管理テーブル１１３内の目的「レスポンス改善」のレコードのレスポンスタイムの判定結果の欄に「ＮＧ」と設定し、処理をステップＳ５０４（図１７参照）に進める。
【０１５７】
［ステップＳ５１８］監視部１２０は、サーバ３００内のハイパーバイザ３２０に対し、運用中の仮想マシン３３１への割り当てリソース量の増強を指示する。例えば監視部１２０は、仮想マシン管理テーブル１１３の目的「レスポンス改善」の仮想マシンのリソース構成をハイパーバイザ３２０に通知し、運用中の仮想マシン３３１のリソース構成を、通知したリソース構成とするようにハイパーバイザ３２０に指示する。
【０１５８】
［ステップＳ５１９］監視部１２０は、仮想マシン管理テーブル１１３における運用中の仮想マシン３３１のリソース構成を更新する。例えば監視部１２０は、目的「レスポンス改善」のレコードのリソース構成のコピーを、目的「運用」のレコードのリソース構成に上書きで書き込む。
【０１５９】
このようにして、仮想マシンに対するリクエストの量の変化に応じて、仮想マシンに割り当てるリソースの量を変更することができる。例えば仮想マシンに対するリクエストの量が増加傾向にあれば、レスポンスタイムが悪化するのを待たずに、仮想マシンに割り当てるリソースの量を増加させることができる。その結果、仮想マシンのリソースの量の変更の遅延を抑止することができる。すなわち仮想マシンのレスポンスタイムが悪化したことを検知してから、その仮想マシンに割り当てるリソースの量を変更する場合に比べ、迅速にリソースの量を変更できる。その結果、仮想マシンの過負荷によりレスポンスタイムが悪化することが抑止される。
【０１６０】
また仮想マシンに対するリクエストの量が減少傾向にあれば、仮想マシンに割り当てるリソースの量を減少させることができる。その結果、仮想マシンに過大にリソースを割り当ててしまうことを抑止し、システム全体のリソースの有効活用が可能となる。しかも、仮想マシンを使用しているユーザが、仮想マシンに割り当てられたリソース量に応じて費用を支払っている場合、リソースの量を最小限に抑えることで、仮想マシンの使用コストを低減させることができる。
【０１６１】
また第２の実施の形態では、運用中の仮想マシンに割り当てるリソースの量を変更する前に、改善マシンによって、レスポンスタイムに関する条件が満たされることを確認している。これにより、割り当てるリソースの量が過剰に削減されることが抑止されている。
【０１６２】
さらに第２の実施の形態では、リソースの種別ごとに、そのリソースの使用率に応じて、リソースの量を変更する際の優先度が定められている。そして優先度が高い種別のリソースから優先的にリソースの量の変更が決定され、改善マシンを用いてレスポンスタイムの条件が検証される。これにより、性能悪化の原因となる可能性の高い種別のリソースから順に、そのリソースを変更した場合のレスポンスタイムを検証でき、検証処理を効率的に行うことができる。
【０１６３】
〔その他の実施の形態〕
第２の実施の形態では、リクエストとレスポンスとを中継するロードバランサが、リクエスト量とレスポンスタイムとを計測しているが、他の方法でリクエスト量とレスポンスタイムとを計測することもできる。例えば仮想マシン監視装置１００が、業務ネットワーク４１を介して通信されるパケットをキャプチャし、キャプチャしたパケットを解析して、特定の仮想マシンに関するリクエスト量とレスポンスタイムとを計測することもできる。
【０１６４】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【符号の説明】
【０１６５】
１ａ，１ｂ  端末装置
２  ネットワーク
３  サーバ
３ａ−１，３ａ−２，・・・  ＣＰＵ
３ｂ−１，３ｂ−２，・・・  メモリ
３ｃ  仮想マシン
１０  情報処理装置
１１  記憶部
１２  処理部
【図１】
2019046163.tif 000003
【図２】
2019046163.tif 000004
【図３】
2019046163.tif 000005
【図４】
2019046163.tif 000006
【図５】
2019046163.tif 000007
【図６】
2019046163.tif 000008
【図７】
2019046163.tif 000009
【図８】
2019046163.tif 000010
【図９】
2019046163.tif 000011
【図１０】
2019046163.tif 000012
【図１１】
2019046163.tif 000013
【図１２】
2019046163.tif 000014
【図１３】
2019046163.tif 000015
【図１４】
2019046163.tif 000016
【図１５】
2019046163.tif 000017
【図１６】
2019046163.tif 000018
【図１７】
2019046163.tif 000019
【図１８】
2019046163.tif 000020