(57)【特許請求の範囲】
【請求項１】
コンピュータに、
少なくとも仮想計算機に割り当てられた物理計算機の物理資源の割当量を増減する増減単位が設定値として設定されている設定ファイルから前記設定値を読み込む設定ファイル読込手順と、
前記仮想計算機に割り当てられた前記物理計算機の物理資源の割当量のうち前記仮想計算機が使用する前記物理資源の使用量を測定する物理資源使用量測定手順と、
前記物理資源使用量測定手順によって測定された前記物理資源の使用量を前記仮想計算機に割り当てられた前記物理資源の割当量で除した前記物理資源の使用率を算出する使用率算出手順と、
前記使用率算出手順によって算出された前記物理資源の使用率を所定閾値と比較し、前記仮想計算機のうち前記使用率が所定閾値を下回る仮想計算機に割り当てられた前記物理資源の割当量を前記増減単位に相当する量だけ減少させた後、前記仮想計算機のうち前記使用率が所定閾値を上回る仮想計算機に割り当てられた前記物理資源の割当量を、該減少させた前記増減単位に相当する量を含む前記物理資源の未割当総量のうちの前記増減単位に相当する量だけ増加させる物理資源割当量増減手順と、
前記物理資源割当量増減手順によって前記仮想計算機に割り当てられた前記物理資源の割当量が前記増減単位に相当する量だけ増減された後に、前記物理資源使用量測定手順と、前記使用率算出手順と、物理資源割当量増減手順とを順次実行する制御手順と
を実行させることを特徴とする仮想計算機割当資源管理プログラム。
【請求項２】
前記物理資源使用量測定手順は、前記設定ファイルに設定されている測定期間にわたって、前記仮想計算機ごとに前記物理資源の使用量を繰り返し測定して前記測定期間における前記物理資源の使用量の平均を算出し、
前記使用率算出手順は、前記物理資源使用量測定手順によって算出された前記測定期間における前記物理資源の使用量の平均を前記仮想計算機に割り当てられた前記物理資源の割当量で除して前記仮想計算機ごとに前記物理資源の使用率を算出する
ことを特徴とする請求項１記載の仮想計算機割当資源管理プログラム。
【請求項３】
前記物理資源使用量測定手順は、前記設定ファイルに設定されているアプリケーションを特定する情報に基づいて、前記仮想計算機において稼働中の前記アプリケーションの組み合わせを取得し、前記仮想計算機ごと、かつ、前記アプリケーションの組み合わせごとに前記物理資源の使用量を繰り返し測定して前記物理資源の使用量の平均を算出し、
前記使用率算出手順は、前記物理資源使用量測定手順によって算出された前記物理資源の使用量の平均を前記仮想計算機に割り当てられた前記物理資源の割当量で除して前記仮想計算機ごと、かつ、前記アプリケーションの組み合わせごとに前記物理資源の使用率を算出する
ことを特徴とする請求項１記載の仮想計算機割当資源管理プログラム。
【請求項４】
前記設定ファイルには、前記物理資源の使用率の上限値および下限値が設定されており、
前記物理資源割当量増減手順は、前記物理資源の使用率を上限値および下限値と比較し、前記仮想計算機のうち前記使用率が下限値を下回る仮想計算機に割り当てられた前記物理資源の割当量を前記増減単位に相当する量だけ減少させた後、前記仮想計算機のうち前記使用率が上限値を上回る仮想計算機に割り当てられた前記物理資源の割当量を、該減少させた前記増減単位に相当する量を含む前記物理資源の未割当総量のうちの前記増減単位に相当する量だけ増加させる
ことを特徴とする請求項１、２または３記載の仮想計算機割当資源管理プログラム。
【請求項５】
前記物理資源割当量増減手順は、前記物理資源の使用率が前記物理資源の使用率の上限値を上回る前記仮想計算機の数に前記増減単位を乗じた必要物理資源量が、いずれの前記仮想計算機にも割り当てられていない前記物理資源の未割当量を上回る場合には、前記物理資源の未割当量を前記物理資源の使用率が前記物理資源の使用率の上限値を上回る前記仮想計算機の数で除した値へ前記増減単位を変更した後に、前記仮想計算機への前記物理資源の割当量を前記増減単位に相当する量だけ増加させる
ことを特徴とする請求項４記載の仮想計算機割当資源管理プログラム。
【請求項６】
少なくとも仮想計算機に割り当てられた物理計算機の物理資源の割当量を増減する増減単位が設定値として設定されている設定ファイルから前記設定値を読み込む設定ファイル読込部と、
前記仮想計算機に割り当てられた前記物理計算機の物理資源の割当量のうち前記仮想計算機が使用する前記物理資源の使用量を測定する測定処理をおこなう物理資源使用量測定部と、
前記物理資源使用量測定部によって測定された前記物理資源の使用量を前記仮想計算機に割り当てられた前記物理資源の割当量で除した前記物理資源の使用率を算出する算出処理をおこなう使用率算出部と、
前記使用率算出部によって算出された前記物理資源の使用率を所定閾値と比較し、前記仮想計算機のうち前記使用率が所定閾値を下回る仮想計算機に割り当てられた前記物理資源の割当量を前記増減単位に相当する量だけ減少させた後、前記仮想計算機のうち前記使用率が所定閾値を上回る仮想計算機に割り当てられた前記物理資源の割当量を、該減少させた前記増減単位に相当する量を含む前記物理資源の未割当総量のうちの前記増減単位に相当する量だけ増加させる物理資源割当量増減部と、
前記物理資源割当量増減部によって前記仮想計算機に割り当てられた前記物理資源の割当量が前記増減単位に相当する量だけ増減された後に、前記物理資源使用量測定部に前記測定処理を、前記使用率算出部に前記算出処理を、前記物理資源割当量増減部に前記増減処理を順次実行させる制御部と
を備えたことを特徴とする仮想計算機割当資源管理装置。
【請求項７】
前記物理資源使用量測定部は、前記設定ファイルに設定されているアプリケーションを特定する情報に基づいて、前記仮想計算機において稼働中の前記アプリケーションの組み合わせを取得し、前記仮想計算機ごと、かつ、前記アプリケーションの組み合わせごとに前記物理資源の使用量を繰り返し測定して前記物理資源の使用量の平均を算出し、
前記使用率算出部は、前記物理資源使用量測定部によって算出された前記物理資源の使用量の平均を前記仮想計算機に割り当てられた前記物理資源の割当量で除して前記仮想計算機ごと、かつ、前記アプリケーションの組み合わせごとに前記物理資源の使用率を算出する
ことを特徴とする請求項６記載の仮想計算機割当資源管理装置。
【請求項８】
仮想計算機割当資源管理装置が実行する仮想計算機割当資源管理方法であって、
少なくとも仮想計算機に割り当てられた物理計算機の物理資源の割当量を増減する増減単位が設定値として設定されている設定ファイルから前記設定値を読み込む設定ファイル読込ステップと、
前記仮想計算機に割り当てられた前記物理計算機の物理資源の割当量のうち前記仮想計算機が使用する前記物理資源の使用量を測定する物理資源使用量測定ステップと、
前記物理資源使用量測定ステップによって測定された前記物理資源の使用量を前記仮想計算機に割り当てられた前記物理資源の割当量で除した前記物理資源の使用率を算出する使用率算出ステップと、
前記使用率算出ステップによって算出された前記物理資源の使用率を所定閾値と比較し、前記仮想計算機のうち前記使用率が所定閾値を下回る仮想計算機に割り当てられた前記物理資源の割当量を前記増減単位に相当する量だけ減少させた後、前記仮想計算機のうち前記使用率が所定閾値を上回る仮想計算機に割り当てられた前記物理資源の割当量を、該減少させた前記増減単位に相当する量を含む前記物理資源の未割当総量のうちの前記増減単位に相当する量だけ増加させる物理資源割当量増減ステップと、
前記物理資源割当量増減ステップによって前記仮想計算機に割り当てられた前記物理資源の割当量が前記増減単位に相当する量だけ増減された後に、前記物理資源使用量測定ステップと、前記使用率算出ステップと、物理資源割当量増減ステップとを順次実行する制御ステップと
を含むことを特徴とする仮想計算機割当資源管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想計算機割当資源管理プログラム、仮想計算機割当資源管理装置および仮想計算機割当資源管理方法に関する。
【背景技術】
【０００２】
従来から、ソフトウェア制御によって物理計算機を論理的に分割した各々が独立した仮想計算機として機能する仮想計算機システムと呼ばれる技術が知られている。仮想計算機システムでは、物理計算機が有する記憶資源である物理メモリを論理的に分割して各仮想計算機に割り当てる。各仮想計算機は、それぞれ割り当てられた容量の範囲内で物理メモリを使用することができる。
【０００３】
ここで、物理計算機上で稼働する各仮想計算機は、割り当てられた容量の範囲内でのみ物理メモリを使用可能であることから、負荷状況によって、割り当てられた容量の物理メモリに過不足が生じる場合がある。そこで、各仮想計算機の物理メモリの使用状況に応じて、ある仮想計算機における物理メモリの余剰分を物理メモリが不足する他の仮想計算機に変更して割り当てる従来技術が考案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−３０９６４４号公報
【特許文献２】特開平１−２１４５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した従来技術のように、ある仮想計算機における物理メモリの余剰分を物理メモリが不足する他の仮想計算機に変更して割り当てるだけでは、仮想計算機における物理メモリの割り当てが十分に最適化されない場合があった。
【０００６】
すなわち、該当仮想計算機において物理メモリの不足が解消する物理メモリの必要容量が不明であるため、物理メモリの追加容量が必要容量と乖離する場合には、追加容量が過剰となったり、逆に不足したりする場合があった。
【０００７】
また、仮想計算機が使用する物理メモリの容量は時々刻々と変化するので、例えばある時刻に余剰とされた物理メモリの相当量が以降も余剰であるとは限らない。すなわち、一時的にある仮想計算機において余剰とされて他の仮想計算機に変更して割り当てられた物理メモリの相当量を、再び元の仮想計算機に割り当て直すことが求められる場合があった。
【０００８】
そこで一つの側面では、仮想計算機における物理メモリの割り当てを最適化する仮想計算機割当資源管理プログラム、仮想計算機割当資源管理装置および仮想計算機割当資源管理方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
開示技術の仮想計算機割当資源管理プログラム、仮想計算機割当資源管理装置および仮想計算機割当資源管理方法は、一つの態様において、先ず、設定値が設定されている設定ファイルから設定値を読み込む。そして、仮想計算機に割り当てられた物理計算機の物理資源の割当量のうち仮想計算機が使用する物理資源の使用量を測定する。そして、物理資源の使用量と、仮想計算機に割り当てられた物理資源の割当量との比較結果を設定値に含まれる判定閾値と比較する。そして、仮想計算機に割り当てられた物理計算機の物理資源にかかる負荷を判定する。そして、負荷の判定結果に応じて、仮想計算機に割り当てられた物理資源の割当量を設定値に含まれる増減単位だけ増減する。
【発明の効果】
【００１０】
開示技術の一つの態様によれば、時々刻々と変化する仮想計算機が使用する物理資源の使用量に追従して仮想計算機に割り当てる物理資源の割当量を最適化できるという効果を奏する。
【図面の簡単な説明】
【００１１】
【図１】図１は、実施例１にかかる仮想計算機システムの構成を示す機能ブロック図である。
【図２】図２は、実施例２にかかる仮想コンピュータシステムの概要を示す図である。
【図３】図３は、実施例２にかかるメモリ割当量増減処理およびメモリ使用量測定処理の概要を示すフローチャートである。
【図４】図４は、実施例２にかかる仮想コンピュータシステムの構成を示す機能ブロック図である。
【図５】図５は、実施例２にかかる設定ファイルを示す図である。
【図６】図６は、実施例２にかかる使用メモリ測定テーブルを示す図である。
【図７】図７は、実施例２にかかるメモリ負荷判定テーブルを示す図である。
【図８】図８は、実施例２にかかるメモリ使用量測定処理を示すフローチャートである。
【図９】図９は、実施例２にかかるメモリ割当量増減処理を示すフローチャートである。
【図１０】図１０は、実施例３にかかる仮想コンピュータシステムの構成を示す機能ブロック図である。
【図１１】図１１は、実施例３にかかる設定ファイルを示す図である。
【図１２】図１２は、実施例３にかかる使用メモリ測定テーブルを示す図である。
【図１３】図１３は、実施例３にかかるアプリケーションテーブルを示す図である。
【図１４】図１４は、実施例３にかかるプロセス情報を示す図である。
【図１５】図１５は、実施例３にかかるメモリ使用量測定処理を示すフローチャートである。
【図１６】図１６は、実施例３にかかる業務パターン情報取得処理を示すフローチャートである。
【図１７】図１７は、実施例３にかかるメモリ割当量増減処理を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下に、開示技術にかかる仮想計算機割当資源管理プログラム、仮想計算機割当資源管理装置および仮想計算機割当資源管理方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により開示技術が限定されるものではない。
【実施例１】
【００１３】
［実施例１にかかる仮想計算機システムの構成］
図１は、実施例１にかかる仮想計算機システムの構成を示す機能ブロック図である。実施例１にかかる仮想計算機システム１００は、物理計算機の各物理資源を論理的に分割した仮想計算機が物理計算機上でそれぞれ独立したコンピュータとして動作するシステムである。なお、物理計算機とは、一つのコンピュータを一つのハードウェアとして捉えた概念であり、物理マシンとも呼ばれる。
【００１４】
実施例１にかかる仮想計算機システム１００は、一つの物理計算機である。仮想計算機システム１００は、仮想計算機システム１００において稼働する管理ＯＳ（Operating  System）の制御の下で機能する物理資源割当管理部１０１を有する。
【００１５】
また、仮想計算機システム１００は、物理計算機を論理的に分割してそれぞれが独立に動作する仮想計算機１２１−１〜１２１−ｎを管理する仮想計算機管理部１１１を有する。仮想計算機１２１−１〜１２１−ｎは、管理ＯＳによって制御される。なお、仮想計算機１２１−１〜１２１−ｎは、管理ＯＳの代わりに、後述する仮想マシンモニタによって制御されてもよい。また、仮想計算機管理部１１１は、物理計算機の物理資源１１２を管理する。
【００１６】
ここで、物理資源１１２は、物理計算機が有する各種ハードウェアを指す。各種ハードウェアは、ＣＰＵ（Central  Processing  Unit）、ＭＰＵ（Micro  Processing  Unit）、ＭＣＵ（Micro  Control  Unit）などの制御装置を含む。また、各種ハードウェアは、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）、フラッシュ・メモリ（Flash  Memory）などの半導体メモリ素子を含む。また、各種ハードウェアは、磁気ディスク、光ディスク、光磁気ディスクなどの記憶装置を含む。なお、実施例１において、物理資源１１２は、ＲＡＭである。従って、以下では、物理資源１１２の量を示す単位は、［Ｂｙｔｅ］である。
【００１７】
仮想計算機管理部１１１は、仮想計算機システム１００において動作する、例えば仮想マシンモニタと呼ばれるソフトウェアである。仮想計算機管理部１１１は、物理資源１１２を予め定められた値に従って仮想計算機１２１−１〜１２１−ｎそれぞれに割り当てる。仮想計算機１２１−１〜１２１−ｎは、仮想計算機管理部１１１によって物理資源１１２が割り当てられることによって、物理計算機からそれぞれ分離されて独立した論理的な計算機として動作する。
【００１８】
なお、仮想計算機管理部１１１は、仮想計算機１２１−１〜１２１−ｎそれぞれに割当てた物理資源１１２の割当量（以下、「物理資源割当量」という）を常に監視している。また、仮想計算機管理部１１１は、仮想計算機１２１−１〜１２１−ｎそれぞれが実際に使用している物理資源１１２の使用量（以下、「物理資源使用量」という）を常に監視している。
【００１９】
物理資源割当管理部１０１は、物理資源使用量測定部１０２と、物理資源使用率算出部１０３と、物理資源割当量増減部１０４と、設定ファイル１０６が格納される記憶部１０５とを有する。物理資源割当管理部１０１は、物理資源使用量測定部１０２、物理資源使用率算出部１０３、物理資源割当量増減部１０４の順序で、各機能部が担う処理を繰り返し実行させる制御部として機能する。
【００２０】
なお、設定ファイル１０６には、後述するように、少なくとも、仮想計算機１２１−１〜１２１−ｎがそれぞれ使用する物理資源１１２の使用率（以下、「物理資源使用率」という）と比較する比較閾値［％］が設定されている。物理資源使用率は、仮想計算機１２１−１〜１２１−ｎの物理資源使用量を物理資源割当容量でそれぞれ除した値の百分率である。
【００２１】
また、設定ファイル１０６には、後述するように、少なくとも、仮想計算機１２１−１〜１２１−ｎへの物理資源割当量を増減するときの単位量を示す増減単位［Ｂｙｔｅ］が設定されている。なお、物理資源割当管理部１０１は、仮想計算機を制御する全ての処理に先立ち、設定ファイル１０６から、前述の比較閾値および増減単位を読み込む。
【００２２】
物理資源使用量測定部１０２は、仮想計算機１２１−１〜１２１−ｎの物理資源割当量のうちの、仮想計算機１２１−１〜１２１−ｎの物理資源使用量を仮想計算機ごとに測定する。具体的には、物理資源使用量測定部１０２は、仮想計算機管理部１１１から仮想計算機１２１−１〜１２１−ｎの物理資源使用量を取得する。
【００２３】
物理資源使用率算出部１０３は、仮想計算機１２１−１〜１２１−ｎの物理資源使用量を仮想計算機１２１−１〜１２１−ｎの物理資源割当量で除した百分率を仮想計算機ごとに算出する。
【００２４】
具体的には、物理資源使用率算出部１０３は、仮想計算機管理部１１１から仮想計算機１２１−１〜１２１−ｎ物理資源割当量を取得する。また、物理資源使用率算出部１０３は、物理資源使用量測定部１０２から仮想計算機１２１−１〜１２１−ｎの物理資源使用量を取得する。そして、物理資源使用率算出部１０３は、仮想計算機ごとに物理資源使用量を物理資源割当量で除した百分率を物理資源使用率として算出する。
【００２５】
物理資源割当量増減部１０４は、物理資源使用率算出部１０３が算出した仮想計算機ごとの物理資源使用率と、設定ファイル１０６から読出した比較閾値とを比較する。そして、物理資源割当量増減部１０４は、物理資源使用率と比較閾値との比較結果に応じて、設定ファイル１０６から読出した増減単位だけ、該当する仮想計算機への物理資源割当量を増減する。
【００２６】
なお、物理資源割当量増減部１０４は、例えば前述の比較閾値が上限値および下限値の組み合わせである場合に、物理資源１１２の使用率が下限値を下回るとき、該当仮想計算機への物理資源１１２の割当量を前述の増減単位だけ減少させる。また、物理資源割当量増減部１０４は、例えば物理資源１１２の使用率が上限値を上回るとき、該当仮想計算機への物理資源１１２の割当量を前述の増減単位だけ増加させる。
【００２７】
上述してきたように、実施例１では、仮想計算機に割当てられた物理資源１１２のそれぞれの物理資源使用率に応じて該当する仮想計算機への物理資源の割当量を増減単位だけ増減することを繰り返す。よって、時々刻々と変化する仮想計算機の物理資源使用量に追従して割当量を最適化できる。また、有限である物理資源１１２を各仮想計算機に効率的に割り当てることができる。また、各仮想計算機への物理資源割当量を常に最適化するので、各仮想計算機を効率的に動作させることができる。
【実施例２】
【００２８】
［実施例２にかかる仮想コンピュータシステムの概略構成］
図２は、実施例２にかかる仮想コンピュータシステムの概要を示す図である。実施例２にかかる仮想コンピュータシステム１００ａは、仮想コンピュータシステム１００ａ上で動作する管理ＯＳ１２１ａ、仮想計算機（以下、「ＶＭ（Virtual  Machine）」と略記する）１２１ａ１、ＶＭ１２１ａ２、および、仮想マシンモニタ１１１ａを含む。また、仮想コンピュータシステム１００ａは、ＲＡＭである１Ｇ［Ｂｙｔｅ］の物理メモリ１１２ａを備える。なお、仮想マシンとは、仮想計算機を指す。
【００２９】
管理ＯＳ１２１ａは、管理ＯＳ１２１ａ上で動作するソフトウェアである仮想マシン管理デーモン１０１ａ１と、設定ファイル１０６ａとを含む。仮想マシン管理デーモン１０１ａ１は、ＶＭ１２１ａ１およびＶＭ１２１ａ２を制御する全ての処理に先立ち、設定ファイル１０６ａに設定されている各種設定値を読み込む。
【００３０】
各種設定値は、管理ＯＳ１２１ａ、ＶＭ１２１ａ１、ＶＭ１２１ａ２がそれぞれ使用する物理メモリ１１２ａの使用率（以下、「メモリ使用率」という）と比較する「比較閾値［％］」が含まれる。メモリ使用率は、管理ＯＳ１２１ａ、ＶＭ１２１ａ１、ＶＭ１２１ａ２が使用している物理メモリ１１２ａの使用量（以下、「メモリ使用量」という）を各々に割当てられている物理メモリ１１２ａの割当量（以下、「メモリ割当量」という）で除した百分率である。
【００３１】
なお、「比較閾値」は、メモリ使用率の「上限値」および「下限値」の組み合わせである。また、各種設定値は、管理ＯＳ１２１ａ、ＶＭ１２１ａ１、ＶＭ１２１ａ２へのメモリ割当量を増減するときの単位量を示す「増減単位［Ｂｙｔｅ］」を含む。
【００３２】
仮想マシン管理デーモン１０１ａ１は、仮想マシンモニタ１１１ａから、管理ＯＳ１２１ａ１、ＶＭ１２１ａ１、ＶＭ１２１ａ２のメモリ使用量を取得する。図２示す例では、管理ＯＳ１２１ａ１、ＶＭ１２１ａ１、ＶＭ１２１ａ２のメモリ使用量は、それぞれ１９２Ｍ［Ｂｙｔｅ］、１９２Ｍ［Ｂｙｔｅ］、２５６Ｍ［Ｂｙｔｅ］である。
【００３３】
また、仮想マシン管理デーモン１０１ａ１は、仮想マシンモニタ１１１ａから、管理ＯＳ１２１ａ１、ＶＭ１２１ａ１、ＶＭ１２１ａ２に割当てられているメモリ割当量を取得する。図２示す例では、１Ｇ［Ｂｙｔｅ］の物理メモリ１１２ａが論理的に分割され、管理ＯＳ１２１ａ１、ＶＭ１２１ａ１、ＶＭ１２１ａ２にそれぞれ２５６Ｍ［Ｂｙｔｅ］、５１２Ｍ［Ｂｙｔｅ］、２５６Ｍ［Ｂｙｔｅ］だけ割当てられている。
【００３４】
なお、仮想マシンモニタ１１１ａは、管理ＯＳ１２１ａ１、ＶＭ１２１ａ１、ＶＭ１２１ａ２への物理メモリ１１２ａの割当てを管理し、かつ、管理ＯＳ１２１ａ１、ＶＭ１２１ａ１、ＶＭ１２１ａ２のメモリ使用量を管理する。よって、仮想マシン管理デーモン１０１ａ１は、仮想マシンモニタ１１１ａから、管理ＯＳ１２１ａ１、ＶＭ１２１ａ１、ＶＭ１２１ａ２へのメモリ割当量を取得できる。また、同様に、仮想マシン管理デーモン１０１ａ１は、仮想マシンモニタ１１１ａから、管理ＯＳ１２１ａ１、ＶＭ１２１ａ１、ＶＭ１２１ａ２のメモリ使用量を取得できる。
【００３５】
仮想マシン管理デーモン１０１ａ１は、仮想マシンモニタ１１１ａから、管理ＯＳ１２１ａ１、ＶＭ１２１ａ１、ＶＭ１２１ａ２へのメモリ割当量を取得する。また、仮想マシン管理デーモン１０１ａ１は、仮想マシンモニタ１１１ａから、管理ＯＳ１２１ａ１、ＶＭ１２１ａ１、ＶＭ１２１ａ２のメモリ使用量を定期的に繰り返して取得し、後述のメモリ測定テーブル１０７ａに格納する。そして、仮想マシン管理デーモン１０１ａ１は、定期的に取得してメモリ測定テーブル１０７ａに格納したメモリ使用量の平均を算出する。実施例２では、メモリ使用率を算出する際に用いるメモリ使用量は、メモリ使用量の測定回数にわたるメモリ使用量の平均である。
【００３６】
そして、仮想マシン管理デーモン１０１ａ１は、管理ＯＳ１２１ａ１、ＶＭ１２１ａ１、ＶＭ１２１ａ２それぞれのメモリ使用率を算出する。さらに、仮想マシン管理デーモン１０１ａ１は、前述のメモリ使用率と、前述の比較閾値の「上限値」および「下限値」との比較結果に応じて、「増減単位」だけ管理ＯＳ１２１ａ１、ＶＭ１２１ａ１、ＶＭ１２１ａ２へのメモリ割当量を増減する。
【００３７】
ＶＭ１２１ａ１上で動作するアプリケーション監視プロセス１２２ａ１、ＶＭ１２１ａ２上で動作するアプリケーション監視プロセス１２２ａ２は、ＶＭ１２１ａ１、ＶＭ１２１ａ２それぞれにおいて実行されるソフトウェア・プロセスをプロセス情報で管理する。
【００３８】
［実施例２にかかるメモリ割当量増減処理およびメモリ使用量測定処理の概要］
図３は、実施例２にかかるメモリ割当量増減処理およびメモリ使用量測定処理の概要を示すフローチャートである。同図に示すように、先ず、仮想マシン管理デーモン１０１ａ１は、設定ファイル１０６ａから各種設定値を読み込む（ステップＳ１１）。各種設定値は、少なくとも、メモリ使用率の「上限値」および「下限値」、「メモリ割当量」を増減するときの単位量を示す「増減単位」、後述のメモリ割当量増減処理および後述の使用量測定処理における処理待ち時間を含む。
【００３９】
続いて、仮想マシン管理デーモン１０１ａ１は、メモリ割当量増減処理に移り、一定時間処理を待ち合わせる（ステップＳ１２）。続いて、仮想マシン管理デーモン１０１ａ１は、ＶＭごとのメモリ情報を取得し、メモリ負荷判定テーブル１０８ａに格納する（ステップＳ１３）。ＶＭのメモリ情報は、各ＶＭに割当てられているメモリ割当量およびメモリ使用率である。メモリ使用率は、仮想マシン管理デーモン１０１ａ１によって、メモリ測定テーブル１０７ａに格納されているＶＭごとのメモリ使用量の平均をメモリ割当量で除した百分率として算出される。
【００４０】
続いて、仮想マシン管理デーモン１０１ａ１は、メモリ負荷の判定をおこなう（ステップＳ１４）。具体的には、仮想マシン管理デーモン１０１ａ１は、メモリ負荷判定テーブル１０８ａに格納されているＶＭごとのメモリ使用率をメモリ使用率の「上限値」および「下限値」と比較する。
【００４１】
続いて、仮想マシン管理デーモン１０１ａ１は、メモリ負荷の判定結果に応じて、各ＶＭへのメモリ割当量を「増減単位」だけ増減する。具体的には、仮想マシン管理デーモン１０１ａ１は、メモリ使用率がメモリ使用率の「下限値」を下回る場合には、該当ＶＭへのメモリ割当量を「増減単位」だけ減少させる。また、仮想マシン管理デーモン１０１ａ１は、メモリ使用率がメモリ使用率の「上限値」を上回る場合には、該当ＶＭへのメモリ割当量を「増減単位」だけ増加させる。
【００４２】
続いて、仮想マシン管理デーモン１０１ａ１は、処理を終了するか否かを判定する（ステップＳ１６）。仮想マシン管理デーモン１０１ａ１の終了や仮想コンピュータシステム１００ａの電源断や管理ＯＳ１２１ａの終了などがあった場合には（ステップＳ１６肯定）、メモリ割当量増減処理およびメモリ使用量測定処理は終了する。ステップＳ１６が否定の場合には、ステップＳ１２へ移り、ステップＳ１２〜ステップＳ１６の処理を繰り返す。
【００４３】
ステップＳ１２〜ステップＳ１６の一方で、仮想マシン管理デーモン１０１ａ１は、メモリ使用量測定処理に移り、一定時間処理を待ち合わせる（ステップＳ１７）。続いて、仮想マシン管理デーモン１０１ａ１は、ＶＭごとのメモリ使用量を取得する（ステップＳ１８）。
【００４４】
続いて、仮想マシン管理デーモン１０１ａ１は、メモリ測定テーブル１０７ａに格納される前回測定までのＶＭごとのメモリ使用量の平均と、ステップＳ１８で今回測定したメモリ使用量とに基づき、ＶＭごとのメモリ使用量の平均を算出する（ステップＳ１９）。続いて、仮想マシン管理デーモン１０１ａ１は、ステップＳ１９で算出した今回測定のＶＭごとのメモリ使用量の平均でメモリ測定テーブル１０７ａに格納される前回測定までのメモリ使用量の平均を更新する（ステップＳ２０）。
【００４５】
続いて、仮想マシン管理デーモン１０１ａ１は、処理を終了するか否かを判定する（ステップＳ２１）。仮想マシン管理デーモン１０１ａ１の終了や仮想コンピュータシステム１００ａの電源断や管理ＯＳ１２１ａの終了などがあった場合には（ステップＳ２１肯定）、メモリ割当量増減処理およびメモリ使用量測定処理は終了する。ステップＳ２１が否定の場合には、ステップＳ１７へ移り、ステップＳ１７〜ステップＳ２１の処理を繰り返す。
【００４６】
上述したように、仮想マシン管理デーモン１０１ａ１は、ステップＳ１２〜ステップＳ１６のメモリ割当量増減処理およびステップＳ１７〜ステップＳ２１のメモリ使用量測定処理をそれぞれ無限ループによって繰り返す。よって、仮想マシン管理デーモン１０１ａ１は、時々刻々と変化する各ＶＭのメモリ使用量に追従してメモリ割当量を最適化できる。
【００４７】
［実施例２にかかる仮想コンピュータシステムの構成］
図４は、実施例２にかかる仮想コンピュータシステムの構成を示す機能ブロック図である。実施例２にかかる仮想コンピュータシステム１００ａは、仮想コンピュータシステム１００ａにおいて稼働する管理ＯＳの制御の下で機能するメモリ割当管理部１０１ａを有する。
【００４８】
また、仮想コンピュータシステム１００ａは、仮想コンピュータシステム１００ａを論理的に分割してそれぞれが独立に動作するＶＭ１２１ａ１、ＶＭ１２１ａ２を管理する仮想マシンモニタ１１１ａを有する。また、仮想マシンモニタ１１１ａは、仮想コンピュータシステム１００ａの物理メモリ１１２ａを管理する。実施例２では、ＶＭ１２１ａ１の名称を「ＶＭ１」、ＶＭ１２１ａ２の名称を「ＶＭ２」とする。
【００４９】
メモリ割当管理部１０１ａは、メモリ使用量測定部１０２ａと、メモリ使用率算出部１０３ａと、メモリ割当量増減部１０４ａと、記憶部１０５ａとを有する。メモリ割当管理部１０１ａは、メモリ使用量測定部１０２ａ、メモリ使用率算出部１０３ａ、メモリ割当量増減部１０４ａの順序で、各機能部が担う処理を繰り返し実行させる制御部として機能する。記憶部１０５ａには、設定ファイル１０６ａと、メモリ測定テーブル１０７ａと、メモリ負荷判定テーブル１０８ａとが格納されている。
【００５０】
メモリ割当管理部１０１ａは、ＶＭを制御する全ての処理に先立ち、設定ファイル１０６ａから、設定値がされている各項目と対応する設定値とを読み込む。メモリ使用量測定部１０２ａは、仮想マシンモニタ１１１ａからＶＭ１２１ａ１、１２１ａ２のメモリ使用量を取得することによってメモリ使用量を測定する。
【００５１】
メモリ使用量測定部１０２ａは、設定ファイル１０６ａに設定されている後述する「統計情報計測期間」の設定値に従ったスケジュールで、各ＶＭのメモリ使用量を測定する。そして、メモリ使用量測定部１０２ａは、測定した各ＶＭのメモリ使用量を「統計情報計測期間」の設定値ごとにテーブルが分けられた、後述するメモリ測定テーブル１０７ａに格納する。
【００５２】
具体的には、メモリ使用量測定部１０２ａは、「統計情報計測期間」の設定値ごとのメモリ測定テーブル１０７ａに、管理ＯＳおよびＶＭごとに測定回数とともにメモリ使用量の平均を記録する。メモリ使用量測定部１０２ａは、次の様にして管理ＯＳおよびＶＭごとのメモリ使用量の平均を算出する。
【００５３】
メモリ使用量測定部１０２ａは、更新前のメモリ測定テーブル１０７ａに記録されるメモリ使用量の平均に測定回数を乗じたものに今回測定したメモリ使用量を加え、（測定回数＋１）で除することによってメモリ使用量の平均を新たに算出する。そして、メモリ使用量測定部１０２ａは、新たに算出したＶＭごとのメモリ使用量の平均でメモリ測定テーブル１０７ａのメモリ使用量を更新するとともに測定回数をインクリメント（１を加算）する。
【００５４】
メモリ使用率算出部１０３ａは、管理ＯＳおよび各ＶＭのメモリ使用量の平均をそれぞれのメモリ割当量で除した百分率を算出する。この百分率がメモリ使用率である。そして、メモリ使用率算出部１０３ａは、管理ＯＳおよびＶＭごとのメモリ使用率をメモリ割当量とともにメモリ負荷判定テーブル１０８ａに記録する。
【００５５】
メモリ割当量増減部１０４ａは、メモリ使用率算出部１０３ａが算出してメモリ負荷判定テーブル１０８ａに格納したＶＭごとのメモリ使用率と、設定ファイル１０６ａから読出した「上限値」および「下限値」とを比較する。そして、メモリ割当量増減部１０４ａは、メモリ使用率と「上限値」および「下限値」との比較結果に応じて、設定ファイル１０６ａから読出した「増減単位」だけ、該当するＶＭへのメモリ割当量を増減する。
【００５６】
メモリ割当量増減部１０４ａは、例えばメモリ使用率が「下限値」を下回るとき、該当ＶＭへのメモリ割当量を「増減単位」の「５Ｍ［Ｂｙｔｅ］」だけ減少させる。また、メモリ割当量増減部１０４ａは、例えばメモリ使用率が「上限値」を上回るとき、該当ＶＭへのメモリ割当量を「増減単位」の「５Ｍ［Ｂｙｔｅ］」だけ増加させる。
【００５７】
また、メモリ割当量増減部１０４ａは、メモリ使用率が「下限値」を下回る全ＶＭへのメモリ割当量を「増減単位」だけ減少させた後に、メモリ使用率が「上限値」を上回る全ＶＭへのメモリ割当量を「増減単位」だけ増加させる。これによって、あるＶＭで余剰とされたメモリ割当量をメモリ割当量が不足する他のＶＭへ効率的に追加して割り当てることができる。
【００５８】
さらに、メモリ割当量増減部１０４ａは、該当ＶＭへのメモリ割当量を減少させた後、該当ＶＭへのメモリ割当量を増加させる前に、メモリ使用率が「上限値」を上回るＶＭの数に増減単位を乗じたメモリ必要量を算出する。また、物理メモリ１１２ａの領域のうち、いずれの管理ＯＳまたはＶＭにも割当てられていない物理メモリ１１２ａのメモリ未割当量を仮想マシンモニタ１１１ａから取得する。
【００５９】
そして、メモリ未割当量がメモリ必要量を下回る場合には、メモリ割当量増減部１０４ａは、メモリ未割当量をメモリ使用率が「上限値」を上回るＶＭの数で除した値へ、「増減単位」を変更する。これによって、メモリ割当量が不足する全てのＶＭに対して設定ファイル１０６ａに設定される「増減単位」だけ追加して割り当てることができない場合でも、メモリ割当量が不足する全てのＶＭへメモリ割当量を追加して割り当てることができる。
【００６０】
［実施例２にかかる設定ファイルについて］
図５は、実施例２にかかる設定ファイルを示す図である。実施例２にかかる設定ファイル１０６ａは、「増減単位」、「測定時間間隔」、「変更時間間隔」、「上限値」、「下限値」の各項目を含む。そして、設定ファイル１０６ａにおいて、各項目に対して、例えば「５Ｍ［Ｂｙｔｅ］」、「１０秒」、「１０秒」、「８０％」、「４０％」の設定値がそれぞれ対応付けられている。
【００６１】
また、設定ファイル１０６ａは、統計情報計測期間の項目をさらに含む。そして、設定ファイル１０６ａにおいて、「統計情報計測期間」に対して、例えば「mon.00:00:00／mon.11:59:59」、「mon.12:00:00／mon.23:59:59」〜「sun.00:00:00／sun.11:59:59」、「sun.12:00:00／sun.23:59:59」の設定値が対応付けられている。「mon.00:00:00／mon.11:59:59」とは、月曜日の時刻「00:00:00」から月曜日の時刻「11:59:59」までの期間を示す。
【００６２】
「mon.」、「tue.」、「wed.」、「thu.」、「fri.」、「sat.」、「sun.」は、それぞれ「月曜日」、「火曜日」、「水曜日」、「木曜日」、「金曜日」、「土曜日」、「日曜日」を示す。すなわち、設定ファイル１０６ａには、月曜日から日曜日までの毎日の、「00:00:00」から「11:59:59」まで、および、「12:00:00」から「23:59:59」までが統計情報計測期間として設定されている。なお、設定ファイル１０６ａに設定される各設定値は、仮想コンピュータシステム１００ａの管理者によって任意に設定される。
【００６３】
［実施例２にかかる使用メモリ測定テーブルについて］
図６は、実施例２にかかる使用メモリ測定テーブルを示す図である。実施例２にかかるメモリ測定テーブル１０７ａは、「統計情報計測期間」ごとにテーブルが分けられている。また、「統計情報計測期間」ごとの各メモリ測定テーブル１０７ａは、管理ＯＳおよびＶＭごとに「測定回数」および「メモリ使用量」が記録されている。
【００６４】
実施例２にかかるメモリ測定テーブル１０７ａにおいて、「測定回数」は、メモリ割当管理部１０１ａによって各ＶＭが使用するメモリ使用量が測定されるごとにインクリメントされる。また、メモリ測定テーブル１０７ａにおいて、「メモリ使用量」は、「測定回数」分だけ測定された各ＶＭが使用するメモリ使用量の平均である。
【００６５】
すなわち、メモリ使用量は、前回測定までのＶＭごとのメモリ使用量の平均である「メモリ使用量」および「測定回数」と、今回測定されたメモリ使用量とに基づき算出される。具体的には、メモリ使用量は、更新前のメモリ測定テーブル１０７ａに記録される「メモリ使用量」に「測定回数」を乗じたものに今回測定したメモリ使用量を加え、（測定回数＋１）で除することによって算出される。そして、新たに算出されたＶＭごとのメモリ使用量の平均でメモリ測定テーブル１０７ａの「メモリ使用量」が更新されるとともに「測定回数」がインクリメントされる。
【００６６】
例えば図６の（６Ａ）に示すように、「統計情報計測期間」が「mon.00:00:00/mon.11:59:59」、すなわち「月曜日ＡＭ」である場合には、ＶＭ１の「測定回数」は「２０」であり、「メモリ使用量」、すなわち「２０」回の測定回にわたるメモリ使用量の平均は「２５６Ｍ［Ｂｙｔｅ］」である。
【００６７】
例えば、「月曜日ＡＭ」にＶＭ１のメモリ使用量を新たに測定した結果が１９２Ｍ［Ｂｙｔｅ］である場合には、「（２５６Ｍ［Ｂｙｔｅ］×２０［回］＋１９２［Ｂｙｔｅ］）÷２１［回］」の計算をおこなう。この計算結果によって、新たなメモリ使用量の平均は、小数点以下四捨五入により「２５３［Ｂｙｔｅ］」になる。そして、メモリ測定テーブル１０７ａの「メモリ使用量」を「２５３［Ｂｙｔｅ］」で更新し、「測定回数」をインクリメントして「２１」とする。
【００６８】
［メモリ負荷判定テーブルについて］
図７は、実施例２にかかるメモリ負荷判定テーブルを示す図である。実施例２にかかるメモリ負荷判定テーブル１０８ａは、管理ＯＳおよびＶＭの名称にメモリ割当量と、メモリ使用率とを対応付けて記録する。同図によれば、例えばＶＭ１は、メモリ割当量が「５１２Ｍ［Ｂｙｔｅ］」であり、メモリ使用率が「５０．０％」である。
【００６９】
［実施例２にかかるメモリ使用量測定処理］
図８は、実施例２にかかるメモリ使用量測定処理を示すフローチャートである。なお、メモリ使用量測定処理に先立って、メモリ割当管理部１０１ａは、設定ファイル１０６ａから各設定値を読み込んでおく。
【００７０】
先ず、メモリ使用量測定部１０２ａは、仮想マシンモニタ１１１ａより起動中の全てのＶＭを特定する情報を取得する（ステップＳ１０１）。続いて、メモリ使用量測定部１０２ａは、現在日時として仮想コンピュータシステム１００ａのシステム日時を取得し、該当する日時を「統計情報計測期間」に含むメモリ測定テーブル１０７ａを特定する（ステップＳ１０２）。
【００７１】
続いて、メモリ使用量測定部１０２ａは、ステップＳ１０２で特定されたメモリ測定テーブル１０７ａに未起動のＶＭのレコードが存在するか否かを判定する（ステップＳ１０３）。メモリ測定テーブル１０７ａに未起動のＶＭのレコードが存在すると判定された場合には（ステップＳ１０３肯定）、ステップＳ１０４に移り、未起動のＶＭのレコードが存在すると判定されなかった場合には（ステップＳ１０３否定）、ステップＳ１０５へ移る。
【００７２】
ステップＳ１０４では、メモリ使用量測定部１０２ａは、該当するメモリ測定テーブル１０７ａから未起動のＶＭのレコードを削除する。続いて、メモリ使用量測定部１０２ａは、仮想コンピュータシステム１００ａ上で稼働中の各ＶＭのメモリ使用量を仮想マシンモニタ１１１ａより取得する（ステップＳ１０５）。
【００７３】
続いて、メモリ使用量測定部１０２ａは、該当するメモリ測定テーブル１０７ａにステップＳ１０５でメモリ使用量を測定したＶＭに対応するレコードが存在するか否かを判定する（ステップＳ１０６）。メモリ使用量を測定したＶＭに対応するレコードが存在すると判定された場合には（ステップＳ１０６肯定）、ステップＳ１０７へ移り、対応するレコードが存在すると判定されなかった場合には（ステップＳ１０６否定）、ステップＳ１１０へ移る。
【００７４】
ステップＳ１０７では、メモリ使用量測定部１０２ａは、該当するメモリ測定テーブル１０７ａの該当するＶＭに対応付けられた「測定回数」および「メモリ使用量」を読み込む。続いて、メモリ使用量測定部１０２ａは、ステップＳ１０７で読み込んだ測定回数およびメモリ使用量の積と、ステップＳ１０５で取得した該当ＶＭのメモリ使用量との和を測定回数に１を加えた値で除してメモリ使用量の平均を算出する（ステップＳ１０８）。
【００７５】
続いて、メモリ使用量測定部１０２ａは、ステップＳ１０８で算出したメモリ使用量の平均で、該当するメモリ測定テーブル１０７ａの該当するＶＭに対応付けられた「メモリ使用量」を更新する。そして、メモリ使用量測定部１０２ａは、該当するメモリ測定テーブル１０７ａの該当するＶＭに対応付けられた「測定回数」をインクリメントして更新する（以上、ステップＳ１０９）。ステップＳ１０９が終了すると、ステップＳ１１１へ移る。
【００７６】
一方、ステップＳ１１０では、メモリ使用量測定部１０２ａは、該当するメモリ測定テーブル１０７ａに該当するＶＭのレコードを追加する。ステップＳ１１０が終了すると、ステップＳ１０７へ移る。
【００７７】
ステップＳ１１１では、メモリ使用量測定部１０２ａは、起動中の全てのＶＭについてメモリ使用量を測定したか否かを判定する。起動中の全てのＶＭについてメモリ使用量を測定したと判定された場合には（ステップＳ１１１肯定）、ステップＳ１１２へ移り、全てのＶＭについてメモリ使用量を測定したと判定されなかった場合には（ステップＳ１１１否定）、ステップＳ１０５へ移る。
【００７８】
ステップＳ１１２では、メモリ使用量測定部１０２ａは、設定ファイル１０６ａから読み込んだ「測定時間間隔」の設定値の時間だけ処理を待ち合わせる。続いて、メモリ使用量測定部１０２ａは、メモリ使用量測定処理を終了するか否かを判定する（ステップＳ１１３）。メモリ使用量測定処理を終了すると判定された場合には（ステップＳ１１３肯定）、メモリ使用量測定部１０２ａは、メモリ使用量測定処理を終了する。また、メモリ使用量測定処理を終了すると判定されなかった合には（ステップＳ１１３否定）、ステップＳ１０１へ移る。
【００７９】
［実施例２にかかるメモリ割当量増減処理］
図９は、実施例２にかかるメモリ割当量増減処理を示すフローチャートである。なお、メモリ割当量増減処理に先立って、メモリ割当管理部１０１ａは、設定ファイル１０６ａから各設定値を読み込んでおく。
【００８０】
先ず、メモリ使用率算出部１０３ａは、設定ファイル１０６ａから読み込んだ「変更時間間隔」だけ処理を待ち合わせる（ステップＳ１２１）。続いて、メモリ使用率算出部１０３ａは、メモリ負荷判定テーブル１０８ａを初期化する（ステップＳ１２２）。続いて、メモリ使用率算出部１０３ａは、現在日時として仮想コンピュータシステム１００ａのシステム日時を取得し、該当する日時を「統計情報計測期間」に含むメモリ測定テーブル１０７ａを特定する（ステップＳ１２２）。
【００８１】
続いて、メモリ使用率算出部１０３ａは、仮想マシンモニタ１１１ａより起動中のＶＭのメモリ割当量を取得する（ステップＳ１２４）。続いて、メモリ使用率算出部１０３ａは、メモリ測定テーブル１０７ａよりステップＳ１２４でメモリ割当量を取得したＶＭのメモリ使用量を取得する（ステップＳ１２５）。
【００８２】
続いて、メモリ使用率算出部１０３ａは、ステップＳ１２５で取得したＶＭのメモリ使用量をステップＳ１２４で取得したメモリ割当量で除することよって算出されるメモリ使用率をＶＭ名とともにメモリ負荷判定テーブル１０８ａに記録する（ステップＳ１２６）。続いて、メモリ使用率算出部１０３ａは、メモリ測定テーブル１０７ｂの全てのＶＭに対して、メモリ使用率をＶＭ名とともにメモリ負荷判定テーブル１０８ａに記録したか否かを判定する（ステップＳ１２７）。
【００８３】
メモリ測定テーブル１０７ｂの全てのＶＭに対して、メモリ使用率をメモリ負荷判定テーブル１０８ａに記録したと判定された場合には（ステップＳ１２７肯定）、ステップＳ１２８へ移る。また、メモリ測定テーブル１０７ｂの全てのＶＭに対して、メモリ使用率をメモリ負荷判定テーブル１０８ａに記録したと判定されなかった場合には（ステップＳ１２７否定）、ステップＳ１２４へ移る。
【００８４】
ステップＳ１２８では、メモリ割当量増減部１０４ａは、メモリ負荷判定テーブル１０８ａに記録されているＶＭのメモリ使用率が、設定ファイル１０６ａから読み込んだ「下限値」を下回るか否かを判定する。該当ＶＭのメモリ使用率が「下限値」を下回ると判定された場合には（ステップＳ１２８肯定）、ステップＳ１２９へ移り、該当ＶＭのメモリ使用率が「下限値」を下回ると判定されなかった場合には（ステップＳ１２８否定）、ステップＳ１３０へ移る。
【００８５】
ステップＳ１２９では、メモリ割当量増減部１０４ａは、該当ＶＭのメモリ割当量を設定ファイル１０６ａから読み込んだ「増減単位」だけ減少させる。続いて、メモリ割当量増減部１０４ａは、起動中の全てのＶＭについて、ステップＳ１２８のメモリ使用率の下限値判定をおこなったか否かを判定する（ステップＳ１３０）。
【００８６】
起動中の全てのＶＭについて、ステップＳ１２８のメモリ使用率の下限値判定をおこなったと判定された場合には（ステップＳ１３０肯定）、ステップＳ１３１へ移る。また、起動中の全てのＶＭについて、ステップＳ１２８のメモリ使用率の下限値判定をおこなったと判定されなかった場合には（ステップＳ１３０否定）、ステップＳ１２８へ移る。
【００８７】
ステップＳ１３１では、メモリ割当量増減部１０４ａは、仮想マシンモニタ１１１ａより、物理メモリ１１２ａの全容量のうち、いずれの管理ＯＳまたはＶＭにも割当てられていないメモリ容量をメモリ未割当量として取得する。続いて、メモリ使用率算出部１０３ａは、メモリ負荷判定テーブル１０８ａを参照し、メモリ使用率が「上限値」を超えるＶＭの数を取得する（ステップＳ１３２）。
【００８８】
続いて、メモリ割当量増減部１０４ａは、設定ファイル１０６ａから読み込んだ「増減単位」にステップＳ１３２で取得したＶＭの数を乗じてメモリ必要量を算出する（ステップＳ１３３）。続いて、メモリ割当量増減部１０４ａは、ステップＳ１３１で取得したメモリ未割当量がステップＳ１３３で算出したメモリ必要量を下回るか否かを判定する（ステップＳ１３４）。
【００８９】
メモリ未割当量がメモリ必要量を下回ると判定された場合には（ステップＳ１３４肯定）、ステップＳ１３５へ移り、メモリ未割当量がメモリ必要量を下回ると判定されなかった場合には（ステップＳ１３４否定）、ステップＳ１３６へ移る。
【００９０】
ステップＳ１３５では、メモリ割当量増減部１０４ａは、設定ファイル１０６ａから読み込んだ「増減単位」をステップＳ１３１で取得したメモリ未割当量をステップＳ１３２で取得したＶＭの数で除した値へ変更する。
【００９１】
続いて、メモリ割当量増減部１０４ａは、メモリ負荷判定テーブル１０８ａに記録されているＶＭのメモリ使用率が、設定ファイル１０６ａから読み込んだ「上限値」を上回るか否かを判定する。該当ＶＭのメモリ使用率が「上限値」を上回ると判定された場合には（ステップＳ１３６肯定）、ステップＳ１３７へ移り、該当ＶＭのメモリ使用率が「上限値」を上回ると判定されなかった場合には（ステップＳ１３６否定）、ステップＳ１３８へ移る。
【００９２】
ステップＳ１３７では、メモリ割当量増減部１０４ａは、該当ＶＭのメモリ割当量を設定ファイル１０６ａから読み込んだ「増減単位」またはステップＳ１３５で変更された「増減単位」だけ増加させる。続いて、メモリ割当量増減部１０４ａは、起動中の全てのＶＭについて、ステップＳ１３６のメモリ使用率の上限値判定をおこなったか否かを判定する（ステップＳ１３８）。
【００９３】
起動中の全てのＶＭについて、ステップＳ１３６のメモリ使用率の上限値判定をおこなったと判定された場合には（ステップＳ１３８肯定）、ステップＳ１３９へ移る。また、起動中の全てのＶＭについて、ステップＳ１３６のメモリ使用率の上限値判定をおこなったと判定されなかった場合には（ステップＳ１３８否定）、ステップＳ１３６へ移る。
【００９４】
続いて、メモリ割当量増減部１０４ａは、メモリ割当量増減処理を終了するか否かを判定する（ステップＳ１３９）。メモリ割当量増減処理を終了すると判定された場合には（ステップＳ１３９肯定）、メモリ割当量増減部１０４ａは、メモリ割当量増減処理を終了する。また、メモリ割当量増減処理を終了すると判定されなかった合には（ステップＳ１３９否定）、ステップＳ１２１へ移る。
【００９５】
［実施例２による効果］
実施例２では、メモリ使用量測定部１０２ａがメモリ使用量測定処理を繰り返し、メモリ使用率算出部１０３ａおよびメモリ割当量増減部１０４ａがメモリ割当量増減処理を繰り返す。メモリ割当量増減処理では、メモリ使用率に応じて「増減単位」だけメモリ割当量を増減させる。「増減単位」は、物理メモリ１１２ａの全容量（例えば１Ｇ［Ｂｙｔｅ］）と比較して小さい（例えば５Ｍ［Ｂｙｔｅ］）。よって、メモリ割当管理部１０１ａは、時々刻々と変化する各ＶＭの物理メモリ１１２ａの使用量にきめ細かく追従してメモリ割当量を最適化できる。
【００９６】
また、有限である物理メモリ１１２ａを各ＶＭに効率的に割り当てることができる。また、各ＶＭへのメモリ割当量を常に最適化するので、各ＶＭを効率的に動作させることができる。また、メモリ負荷の判定に用いるメモリ使用率の算出の際に、継続して測定したメモリ使用量の平均を用いるので、事前にメモリ使用量の傾向を与えずとも各ＶＭへのメモリ割当量を最適化できる。
【００９７】
また、メモリ使用率の算出の際に、メモリ使用量の平均などの統計情報を用いることで、例外的に異常なメモリ使用量の影響が極力抑制されるので、算出されたメモリ使用率の信頼性を高めることができる。
【００９８】
また、業務アプリケーションの負荷状態により絶えずメモリ使用率が変化する仮想コンピュータシステムにおいて、仮想コンピュータシステムの管理者の監視や指示を必要とせず、自動的に各ＶＭへのメモリ割当量を最適化することができる。
【実施例３】
【００９９】
［実施例３にかかる仮想コンピュータシステムの構成］
図１０は、実施例３にかかる仮想コンピュータシステムの構成を示す機能ブロック図である。なお、実施例３では、実施例２との差異部分について説明する。実施例２および実施例３で同一の符号およびステップ番号を付与した機能部およびステップは、同一の機能部およびステップである。
【０１００】
実施例３にかかる仮想コンピュータシステム１００ｂは、仮想コンピュータシステム１００ｂにおいて稼働する管理ＯＳの制御の下で機能するメモリ割当管理部１０１ｂを有する。
【０１０１】
また、仮想コンピュータシステム１００ｂは、仮想コンピュータシステム１００ｂを論理的に分割してそれぞれが独立に動作するＶＭ１２１ｂ１、１２１ｂ２を管理する仮想マシンモニタ１１１ａを有する。また、仮想マシンモニタ１１１ａは、仮想コンピュータシステム１００ａの物理メモリ１１２ａを管理する。実施例３では、ＶＭ１２１ｂ１の名称を「ＶＭ１」、ＶＭ１２１ｂ２の名称を「ＶＭ２」とする。
【０１０２】
メモリ割当管理部１０１ｂは、メモリ使用量測定部１０２ｂと、メモリ使用率算出部１０３ｂと、メモリ割当量増減部１０４ｂと、記憶部１０５ｂとを有する。メモリ割当管理部１０１ｂは、メモリ使用量測定部１０２ｂ、メモリ使用率算出部１０３ｂ、メモリ割当量増減部１０４ｂの順序で、各機能部が担う処理を繰り返し実行させる制御部として機能する。記憶部１０５ｂには、設定ファイル１０６ｂと、メモリ測定テーブル１０７ｂと、メモリ負荷判定テーブル１０８ｂと、アプリケーションテーブル１０９ｂとが格納されている。
【０１０３】
メモリ割当管理部１０１ｂは、ＶＭを制御する全ての処理に先立ち、設定ファイル１０６ｂから、設定値がされている各項目と対応する設定値とを読み込む。メモリ使用量測定部１０２ｂは、仮想マシンモニタ１１１ａによってＶＭ１２１ｂ１、１２１ｂ２のメモリ使用量をＶＭごとに測定する。
【０１０４】
メモリ使用量測定部１０２ｂは、設定ファイル１０６ｂに設定されている後述する「業務アプリ名」の業務アプリケーションうち、各ＶＭ上で実行中の「業務アプリケーションの組み合わせ」ごとに各ＶＭが使用するメモリ使用量を測定する。そして、メモリ使用量測定部１０２ｂは、測定した各ＶＭのメモリ使用量を管理ＯＳおよびＶＭごとにテーブルが分けられた、後述するメモリ測定テーブル１０７ｂに格納する。
【０１０５】
具体的には、メモリ使用量測定部１０２ｂは、管理ＯＳおよびＶＭごとのメモリ測定テーブル１０７ｂに、「業務アプリケーションの組み合わせ」ごとに測定回数とともにメモリ使用量の平均を記録する。なお、メモリ使用量測定部１０２ｂは、実施例２のメモリ使用量測定部１０２ａと同様にして、ＶＭごと、かつ、「業務アプリケーションの組み合わせ」ごとのメモリ使用量の平均を算出する。そして、メモリ使用量測定部１０２ｂは、新たに算出したＶＭごと、かつ、「業務アプリケーションの組み合わせ」ごとのメモリ使用量の平均でメモリ測定テーブル１０７ｂのメモリ使用量を更新するとともに測定回数をインクリメントする。
【０１０６】
メモリ使用率算出部１０３ｂは、ＶＭごと、かつ、「業務アプリケーションの組み合わせ」ごとのメモリ使用量の平均を管理ＯＳおよび各ＶＭのメモリ割当量で除した百分率を算出する。この百分率がメモリ使用率である。そして、メモリ使用率算出部１０３ｂは、ＶＭごと、かつ、「業務アプリケーションの組み合わせ」ごとのメモリ使用率を各メモリ割当量とともにメモリ負荷判定テーブル１０８ａに記録する。
【０１０７】
メモリ割当量増減部１０４ｂは、ＶＭごと、かつ、「業務アプリケーションの組み合わせ」ごとのメモリ使用率と、設定ファイル１０６ｂから読出した「上限値」および「下限値」とを比較する。そして、メモリ割当量増減部１０４ｂは、メモリ使用率と「上限値」および「下限値」との比較結果に応じて、設定ファイル１０６ｂから読出した「増減単位」だけ、該当するＶＭへのメモリ割当量を増減する。
【０１０８】
メモリ割当量増減部１０４ｂは、例えばメモリ使用率が「下限値」を下回るとき、該当ＶＭへのメモリ割当量を「増減単位」の「５Ｍ［Ｂｙｔｅ］」だけ減少させる。また、メモリ割当量増減部１０４ａは、例えばメモリ使用率が「上限値」を上回るとき、該当ＶＭへのメモリ割当量を「増減単位」の「５Ｍ［Ｂｙｔｅ］」だけ増加させる。
【０１０９】
また、メモリ割当量増減部１０４ｂは、メモリ使用率が「下限値」を下回る全てのＶＭへのメモリ割当量を「増減単位」だけ減少させた後に、メモリ使用率が「上限値」を上回る全てのＶＭへのメモリ割当量を「増減単位」だけ増加させる。これによって、あるＶＭで、ある業務アプリケーションが実行中であるときに余剰とされたメモリ割当量をメモリ割当量が不足する他のＶＭへ効率的に追加して割り当てることができる。
【０１１０】
さらに、メモリ割当量増減部１０４ｂは、該当ＶＭへのメモリ割当量を減少させた後、該当ＶＭへのメモリ割当量を増加させる前に、メモリ使用率が「上限値」を上回るＶＭの数に「増減単位」を乗じてメモリ必要量を算出する。また、物理メモリ１１２ａの領域のうち、いずれの管理ＯＳまたはＶＭにも割当てられていない物理メモリ１１２ａのメモリ未割当量を仮想マシンモニタ１１１ａから取得する。
【０１１１】
そして、メモリ未割当量がメモリ必要量を下回る場合には、メモリ割当量増減部１０４ｂは、メモリ未割当量をメモリ使用率が「上限値」を上回るＶＭの数で除した値へ「増減単位」を変更する。これによって、メモリ割当量が不足する全てのＶＭに対して設定ファイル１０６ｂに設定される「増減単位」だけ追加して割り当てることができない場合でも、メモリ割当量が不足するＶＭへメモリ割当量を追加して割り当てることができる。
【０１１２】
また、仮想コンピュータシステム１００ｂにおいて稼働中のＶＭ１２１ｂ１、ＶＭ１２１ｂ２は、それぞれアプリケーション監視部１２３ｂ１、アプリケーション監視部１２３ｂ２を含む。アプリケーション監視部１２３ｂ１、アプリケーション監視部１２３ｂ２は、ＶＭ１２１ｂ１、ＶＭ１２１ｂ２それぞれで実行中の業務アプリケーションのプロセスを特定するプロセス情報１２４ｂ１、プロセス情報１２４ｂ２を管理している。
【０１１３】
［実施例３にかかる設定ファイルについて］
図１１は、実施例３にかかる設定ファイルを示す図である。実施例３にかかる設定ファイル１０６ｂは、「増減単位」、「測定時間間隔」、「変更時間間隔」、「上限値」、「下限値」の各項目を含む。そして、設定ファイル１０６ｂにおいて、各項目に対して、例えば「５Ｍ［Ｂｙｔｅ］」、「１０秒」、「１０秒」、「８０％」、「４０％」の設定値がそれぞれ対応付けられている。
【０１１４】
また、設定ファイル１０６ｂは、「業務アプリ名」の項目をさらに含む。なお、「アプリ」とは、アプリケーションの省略形である。「業務アプリ名」の項目値は、各ＶＭで実行されうる業務アプリケーションを特定する情報である。そして、設定ファイル１０６ｂにおいて、「業務アプリ名」に対して、例えば「アプリＡ」、「アプリＢ」、「アプリＣ」の設定値、および、業務アプリを特定するプロセス情報が設定されている。なお、設定ファイル１０６ｂに設定される各設定値は、仮想コンピュータシステム１００ｂの管理者によって任意に設定される。
【０１１５】
［実施例３にかかる使用メモリ測定テーブルについて］
図１２は、実施例３にかかる使用メモリ測定テーブルを示す図である。実施例３にかかるメモリ測定テーブル１０７ｂは、仮想コンピュータシステム１００ｂ上で稼働するＶＭごとにテーブルが分けられている。また、ＶＭごとの各メモリ測定テーブル１０７ｂは、「業務アプリケーションの組み合わせ」ごとに「測定回数」および「メモリ使用量」が記録されている。
【０１１６】
メモリ測定テーブル１０７ｂにおいて、「測定回数」は、メモリ割当管理部１０１ｂによって、「実行中の業務アプリケーションの組み合わせ」で各ＶＭが使用するメモリ使用量が測定されるごとにインクリメントされる。また、メモリ測定テーブル１０７ｂにおいて、「メモリ使用量」は、「測定回数」分だけ測定された各ＶＭにおいて、「実行中の業務アプリケーションの組み合わせ」で各ＶＭが使用するメモリ使用量の平均である。
【０１１７】
例えば図１２の（１２Ａ）に示すように、ＶＭ１のメモリ測定テーブル１０７ｂにおいて、「実行中の業務アプリケーションの組み合わせ」である「業務アプリ名」が「アプリＡ」である場合には、ＶＭ１の「測定回数」は「２０」であり、「メモリ使用量」、すなわち「２０」回の測定回にわたるメモリ使用量の平均は「２５６Ｍ［Ｂｙｔｅ］」である。
【０１１８】
例えば、「アプリＡ」を実行中のＶＭ１のメモリ使用量を新たに測定した結果が１９２Ｍ［Ｂｙｔｅ］である場合には、「（２５６Ｍ［Ｂｙｔｅ］×２０［回］＋１９２［Ｂｙｔｅ］）÷２１［回］」の計算をおこなう。この計算結果によって、新たなメモリ使用量の平均は、小数点以下四捨五入により「２５３［Ｂｙｔｅ］」になる。そして、メモリ測定テーブル１０７ｂの「メモリ使用量」を「２５３［Ｂｙｔｅ］」で更新し、「測定回数」をインクリメントして「２１」とする。
【０１１９】
［実施例３にかかるアプリケーションテーブルについて］
図１３は、実施例３にかかるアプリケーションテーブルを示す図である。実施例３にかかるアプリケーションテーブル１０９ｂは、「業務アプリ名」に「プロセス情報」を対応付けるテーブルである。そして、該当する業務アプリケーションが実行中であるか否かを示す「フラグ」を記録する。
【０１２０】
「業務アプリ名」は、仮想コンピュータシステム１００ｂの管理者が認識可能な業務アプリケーションの特定情報である。一方、各ＶＭでは、「業務アプリ名」ではなく「プロセス情報」で業務アプリケーションを特定する。このため、「業務アプリ名」および「プロセス情報」の双方を認識可能なメモリ割当管理部１０１ｂが、「業務アプリ名」と「プロセス情報」との対応付けを予め作成してアプリケーションテーブル１０９ｂに記録しておく。
【０１２１】
「フラグ」は、仮想コンピュータシステム１００ｂの管理者が入力した「業務アプリ名」に対応する「プロセス情報」に基づき、各ＶＭで該当する「プロセス情報」で特定される業務アプリケーションのプロセスが実行中であるか否かを示す情報である。「フラグ」が「ＦＡＬＳＥ」であれば、該当する「業務アプリ名」で特定される業務アプリケーションのプロセスは該当ＶＭにおいても実行されていない。「フラグ」が「ＴＲＵＥ」であれば、該当する「業務アプリ名」で特定される業務アプリケーションのプロセスが該当ＶＭにおいて実行されている。
【０１２２】
［実施例３にかかるプロセス情報について］
図１４は、実施例３にかかるプロセス情報を示す図である。実施例３にかかるプロセス情報１２４ｂ１、１２４ｂ２は、ＶＭ１２１ｂ１のアプリケーション監視部１２３ｂ１、ＶＭ１２１ｂ２のアプリケーション監視部１２３ｂ２によってそれぞれ管理される。プロセス情報１２４ｂ１、１２４ｂ２は、ＶＭ１２１ｂ１、ＶＭ１２１ｂ２それぞれにおいて実行中の業務アプリケーションのプロセスを特定する情報である。プロセス情報１２４ｂ１、１２４ｂ２を参照することによって、ＶＭ１２１ｂ１、ＶＭ１２１ｂ２それぞれにおいて実行中の業務アプリケーションのプロセス情報を取得することができる。
【０１２３】
［実施例３にかかるメモリ使用量測定処理］
図１５は、実施例３にかかるメモリ使用量測定処理を示すフローチャートである。なお、メモリ使用量測定処理に先立って、メモリ割当管理部１０１ｂは、設定ファイル１０６ｂから各設定値を読み込んでおく。
【０１２４】
先ず、メモリ使用量測定部１０２ｂは、仮想マシンモニタ１１１ａより起動中の全てのＶＭを特定する情報を取得する（ステップＳ２０１）。続いて、メモリ使用量測定部１０２ｂは、業務パターン情報取得処理をおこなう（ステップＳ２０２）。業務パターン情報取得処理は、設定ファイル１０６ｂに設定されている「業務アプリ名」を入力とし、入力された「業務アプリ名」のうち各ＶＭで実行されている業務アプリケーションの「業務アプリ名」を出力する処理である。業務パターン情報取得処理によって出力された「業務アプリ名」の組み合わせを「業務パターン」という。業務パターン情報取得処理の詳細は、図１６を参照して後述する。
【０１２５】
続いて、メモリ使用量測定部１０２ｂは、仮想マシンモニタ１１１ａより起動中のＶＭのメモリ使用量を取得する（ステップＳ２０３）。続いて、メモリ使用量測定部１０２ｂは、ステップＳ２０３でメモリ使用量を取得したＶＭに対応するメモリ測定テーブル１０７ｂが存在するか否かを判定する（ステップＳ２０４）。メモリ使用量を取得したＶＭに対応するメモリ測定テーブル１０７ｂが存在すると判定された場合には（ステップＳ２０４肯定）、ステップＳ２０６へ移る。また、メモリ使用量を取得したＶＭに対応するメモリ測定テーブル１０７ｂが存在すると判定されなかった場合には（ステップＳ２０４否定）、ステップＳ２０５へ移る。
【０１２６】
ステップＳ２０５では、メモリ使用量測定部１０２ｂは、ステップＳ２０３でメモリ使用量を取得したＶＭに対応するメモリ測定テーブル１０７ｂを作成する。ステップＳ２０５が終了すると、ステップＳ２０６へ移る。
【０１２７】
ステップＳ２０６では、メモリ使用量測定部１０２ｂは、ステップＳ２０２で取得した「業務パターン」に該当するレコードがメモリ測定テーブル１０７ｂに存在するか否かを判定する。「業務パターン」に該当するレコードがメモリ測定テーブル１０７ｂに存在すると判定された場合には（ステップＳ２０６肯定）、ステップＳ２０７へ移る。また、「業務パターン」に該当するレコードがメモリ測定テーブル１０７ｂに存在すると判定されなかった場合には（ステップＳ２０６否定）、ステップＳ２１０へ移る。
【０１２８】
ステップＳ２０７では、メモリ使用量測定部１０２ｂは、該当するメモリ測定テーブル１０７ｂの該当する「業務パターン」に対応付けられた「測定回数」および「メモリ使用量」を読み込む。続いて、メモリ使用量測定部１０２ｂは、ステップＳ２０７で読み込んだ測定回数およびメモリ使用量の積と、ステップＳ２０３で取得したメモリ使用量との和を測定回数に１を加えた値で除してメモリ使用量の平均を算出する（ステップＳ２０８）。
【０１２９】
続いて、メモリ使用量測定部１０２ｂは、ステップＳ２０８で算出したメモリ使用量の平均で該当するメモリ測定テーブル１０７ｂの該当する「業務パターン」に対応付けられた「メモリ使用量」を更新する。そして、メモリ使用量測定部１０２ｂは、該当するメモリ測定テーブル１０７ｂの該当する「業務パターン」に対応付けられた「測定回数」をインクリメントして更新する（以上、ステップＳ２０９）。ステップＳ２０９が終了すると、ステップＳ２１１へ移る。
【０１３０】
一方、ステップＳ２１０では、メモリ使用量測定部１０２ｂは、該当するメモリ測定テーブル１０７ｂに該当する「業務パターン」のレコードを追加する。ステップＳ２１０が終了すると、ステップＳ２０７へ移る。
【０１３１】
ステップＳ２１１では、メモリ使用量測定部１０２ｂは、起動中の全てのＶＭについてメモリ使用量を測定したか否かを判定する。起動中の全てのＶＭについてメモリ使用量を測定したと判定された場合には（ステップＳ２１１肯定）、ステップＳ２１２へ移り、全てのＶＭについてメモリ使用量を測定したと判定されなかった場合には（ステップＳ２１１否定）、ステップＳ２０２へ移る。
【０１３２】
ステップＳ２１２では、メモリ使用量測定部１０２ｂは、設定ファイル１０６ｂから読み込んだ「測定時間間隔」の設定値の時間だけ処理を待ち合わせる。続いて、メモリ使用量測定部１０２ｂは、メモリ使用量測定処理を終了するか否かを判定する（ステップＳ２１３）。メモリ使用量測定処理を終了すると判定された場合には（ステップＳ２１３肯定）、メモリ使用量測定部１０２ｂは、メモリ使用量測定処理を終了する。また、メモリ使用量測定処理を終了すると判定されなかった合には（ステップＳ２１３否定）、ステップＳ２０１へ移る。
【０１３３】
［実施例３にかかる業務パターン情報取得処理］
図１６は、実施例３にかかる業務パターン情報取得処理を示すフローチャートである。同図に示すように、先ず、メモリ使用量測定部１０２ｂは、アプリケーションテーブル１０９ｂの全ての「フラグ」を「ＦＡＬＳＥ（オフ）」に初期化する（ステップＳ２０２ａ）。
【０１３４】
続いて、メモリ使用量測定部１０２ｂは、該当するＶＭのアプリケーション監視部１２３ｂｎより「プロセス情報」を取得する（ステップＳ２０２ｂ）。続いて、メモリ使用量測定部１０２ｂは、入力された「業務アプリ名」に対応する「プロセス情報」がステップＳ２０２ｂで取得した「プロセス情報」に含まれるか否かを判定して、業務アプリケーションが実行中であるか否かを判定する（ステップＳ２０２ｃ）。
【０１３５】
入力された「業務アプリ名」に対応する業務アプリケーションが実行中であると判定された場合には（ステップＳ２０２ｃ肯定）、ステップＳ２０２ｄへ移る。また、入力された「業務アプリ名」に対応する業務アプリケーションが実行中であると判定されなかった場合には（ステップＳ２０２ｃ否定）、ステップＳ２０２ｅへ移る。
【０１３６】
ステップＳ２０２ｄでは、メモリ使用量測定部１０２ｂは、アプリケーションテーブル１０９ｂにおいて、実行中であると判定された業務アプリケーションの「プロセス情報」に対応する「フラグ」を「ＴＲＵＥ（オン）」にする。
【０１３７】
続いて、メモリ使用量測定部１０２ｂは、入力された「業務アプリ名」で特定される全ての業務アプリケーションのプロセスの実行を確認したか否かを判定する（ステップＳ２０２ｅ）。全ての業務アプリケーションのプロセスの実行を確認したと判定された場合には（ステップＳ２０２ｅ肯定）、ステップＳ２０２ｆへ移る。また、全ての業務アプリケーションのプロセスの実行を確認したと判定されなかった場合には（ステップＳ２０２ｅ否定）、ステップＳ２０２ｃへ移る。
【０１３８】
ステップＳ２０２ｆでは、メモリ使用量測定部１０２ｂは、アプリケーションテーブル１０９ｂにおいて「フラグ」が「ＴＲＵＥ」となっている全ての「業務アプリ名」を出力する。この処理が終了すると、呼び出し元の処理へ復帰する。
【０１３９】
［実施例３にかかるメモリ割当量増減処理］
図１７は、実施例３にかかるメモリ割当量増減処理を示すフローチャートである。なお、メモリ割当量増減処理に先立って、メモリ割当管理部１０１ｂは、設定ファイル１０６ｂから各設定値を読み込んでおく。
【０１４０】
実施例３にかかるメモリ割当量増減処理では、メモリ割当量増減部１０４ｂが実施例２にかかるメモリ割当量増減処理と概ね同一順序で同一の処理をおこなう。実施例３にかかるメモリ割当量増減処理は、実施例２にかかるメモリ割当量増減処理と比較して、ステップＳ１２２の次に、ステップＳ１２３に代えてステップＳ２２３をおこなう。また、ステップＳ１２４の次にステップＳ１２５に代えてステップＳ２２５をおこなう。これら以外は、実施例２にかかるメモリ割当量増減処理と、実施例３にかかるメモリ割当量増減処理とは、同一の順序で同一の処理をおこなう。
【０１４１】
なお、実施例３にかかるメモリ割当量増減処理では、メモリ測定テーテーブル１０７ａ、メモリ負荷判定テーブル１０８ａに代えてメモリ測定テーテーブル１０７ｂ、メモリ負荷判定テーブル１０８ｂを用いる。
【０１４２】
ステップＳ２２３では、メモリ割当量増減部１０４ｂは、仮想マシンモニタ１１１ａより起動中の全ＶＭを特定する情報を取得する。また、ステップＳ２２５では、メモリ割当量増減部１０４ｂは、業務パターン情報取得処理をおこなう（ステップＳ２０２）。業務パターン情報取得処理の詳細は、図１６を参照して前述した通りである。
【０１４３】
［実施例３による効果］
実施例３は、実施例２の効果に加え、次の効果を奏する。すなわち、メモリ使用量測定部１０２ｂは、ＶＭごと、かつ、「業務パターン」ごとにメモリ使用量を測定するので、よりきめ細かく各ＶＭのメモリ使用量の傾向を把握することができる。この各ＶＭのメモリ使用量の傾向に応じてメモリ割当量をよりきめ細かく最適化できる。
【０１４４】
［その他の実施例］
ＶＭごと、かつ、日時または「業務パターン」ごとに測定したメモリ使用量の統計情報により、仮想計算機システム全体の物理メモリの容量が不足することが予想される場合には、その旨を管理者に通知する機能を備えてもよい。これによって、仮想コンピュータシステムの管理者は、メモリ容量が不足する以前に、物理メモリの増設などの対策を講じることができ、メモリ容量の不足を未然に防止することができる。
【０１４５】
仮想コンピュータシステム上の各ＶＭに割り当てられたメモリの負荷をメモリ使用率と「上限値」および「下限値」とを比較判定する方法に代えて、メモリ使用量と、メモリ使用量の「上限値」および「下限値」とを比較判定する方法を採用してもよい。
【０１４６】
以上、実施例を説明したが、開示技術は、これらに限られるものではなく、特許請求の範囲に記載した技術的思想の範囲内で、さらに種々の異なる実施例で実施されてもよい。特に、各実施例は、矛盾しない範囲で適宜組み合わせて実施可能である。また、実施例に記載した効果は、これに限定されるものではない。
【０１４７】
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示のように構成されていることを要しない。すなわち、各装置の分散または統合の具体的形態は図示のものに限られず、その全部または一部を各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散または統合して構成することができる。
【０１４８】
また、図示した各処理の各ステップは必ずしも図示のように実行されることを要しない。すなわち、各処理の各ステップの実行順序は図示のものに限られず、所期の目的を達成する範囲内でその全部または一部を任意の単位で前後させて実行する実行順序でもよい。
【０１４９】
以上の各実施例を含む実施形態に関し、さらに以下の付記を開示する。
【０１５０】
（付記１）コンピュータに、
少なくとも仮想計算機に割り当てられた物理計算機の物理資源の割当量を増減する増減単位が設定値として設定されている設定ファイルから前記設定値を読み込む設定ファイル読込手順と、
前記仮想計算機に割り当てられた前記物理計算機の物理資源の割当量のうち前記仮想計算機が使用する前記物理資源の使用量を測定する物理資源使用量測定手順と、
前記物理資源使用量測定手順によって測定された前記物理資源の使用量を前記仮想計算機に割り当てられた前記物理資源の割当量で除した前記物理資源の使用率を算出する使用率算出手順と、
前記使用率算出手順によって算出された前記物理資源の使用率に応じて、前記仮想計算機に割り当てられた前記物理資源の割当量を前記増減単位だけ増減する物理資源割当量増減手順と、
前記物理資源割当量増減手順によって前記仮想計算機に割り当てられた前記物理資源の割当量が前記増減単位だけ増減された後に、前記物理資源使用量測定手順と、前記使用率算出手順と、物理資源割当量増減手順とを順次実行する制御手順と
を実行させることを特徴とする仮想計算機割当資源管理プログラム。
【０１５１】
（付記２）前記物理資源使用量測定手順は、前記設定ファイルに設定されている測定期間にわたって、前記仮想計算機ごとに前記物理資源の使用量を繰り返し測定して前記測定期間における前記物理資源の使用量の平均を算出し、
前記使用率算出手順は、前記物理資源使用量測定手順によって算出された前記測定期間における前記物理資源の使用量の平均を前記仮想計算機に割り当てられた前記物理資源の割当量で除して前記仮想計算機ごとに前記物理資源の使用率を算出する
ことを特徴とする付記１記載の仮想計算機割当資源管理プログラム。
【０１５２】
（付記３）前記物理資源使用量測定手順は、前記設定ファイルに設定されているアプリケーションを特定する情報に基づいて、前記仮想計算機において稼働中の前記アプリケーションの組み合わせを取得し、前記仮想計算機ごと、かつ、前記アプリケーションの組み合わせごとに前記物理資源の使用量を繰り返し測定して前記物理資源の使用量の平均を算出し、
前記使用率算出手順は、前記物理資源使用量測定手順によって算出された前記物理資源の使用量の平均を前記仮想計算機に割り当てられた前記物理資源の割当量で除して前記仮想計算機ごと、かつ、前記アプリケーションの組み合わせごとに前記物理資源の使用率を算出する
ことを特徴とする付記１記載の仮想計算機割当資源管理プログラム。
【０１５３】
（付記４）前記設定ファイルには、前記物理資源の使用率の上限値および下限値が設定されており、
前記物理資源割当量増減手順は、前記物理資源の使用率と、前記物理資源の使用率の上限値および下限値とを比較した比較結果に応じて、前記仮想計算機に割り当てられた前記物理資源の割当量を前記増減単位だけ増減する
ことを特徴とする付記１、２または３記載の仮想計算機割当資源管理プログラム。
【０１５４】
（付記５）前記物理資源割当量増減手順は、前記物理資源の使用率が前記物理資源の使用率の下限値を下回る場合には前記仮想計算機への前記物理資源の割当量を前記増減単位だけ減少させ、前記物理資源使用率が前記物理資源の使用率の上限値を上回る場合には前記仮想計算機への前記物理資源の割当量を前記増減単位だけ増加させる
ことを特徴とする付記４記載の仮想計算機割当資源管理プログラム。
【０１５５】
（付記６）前記物理資源割当量増減手順は、前記物理資源の使用率が前記物理資源の使用率の上限値を上回る前記仮想計算機の数に前記増減単位を乗じた必要物理資源量が、いずれの前記仮想計算機にも割り当てられていない前記物理資源の未割当量を上回る場合には、前記物理資源の未割当量を前記物理資源の使用率が前記物理資源の使用率の上限値を上回る前記仮想計算機の数で除した値へ前記増減単位を変更した後に、前記仮想計算機への前記物理資源の割当量を前記増減単位だけ増加させる
ことを特徴とする付記５記載の仮想計算機割当資源管理プログラム。
【０１５６】
（付記７）少なくとも仮想計算機に割り当てられた物理計算機の物理資源の割当量を増減する増減単位が設定値として設定されている設定ファイルから前記設定値を読み込む設定ファイル読込部と、
前記仮想計算機に割り当てられた前記物理計算機の物理資源の割当量のうち前記仮想計算機が使用する前記物理資源の使用量を測定する測定処理をおこなう物理資源使用量測定部と、
前記物理資源使用量測定部によって測定された前記物理資源の使用量を前記仮想計算機に割り当てられた前記物理資源の割当量で除した前記物理資源の使用率を算出する算出処理をおこなう使用率算出部と、
前記使用率算出部によって算出された前記物理資源の使用率に応じて、前記仮想計算機に割り当てられた前記物理資源の割当量を前記増減単位だけ増減する増減処理をおこなう物理資源割当量増減部と、
前記物理資源割当量増減部によって前記仮想計算機に割り当てられた前記物理資源の割当量が前記増減単位だけ増減された後に、前記物理資源使用量測定部に前記測定処理を、前記使用率算出部に前記算出処理を、前記物理資源割当量増減部に前記増減処理を順次実行させる制御部と
を備えたことを特徴とする仮想計算機割当資源管理装置。
【０１５７】
（付記８）前記物理資源使用量測定部は、前記設定ファイルに設定されている測定期間にわたって、前記仮想計算機ごとに前記物理資源の使用量を繰り返し測定して前記測定期間における前記物理資源の使用量の平均を算出し、
前記使用率算出部は、前記物理資源使用量測定手順によって算出された前記測定期間における前記物理資源の使用量の平均を前記仮想計算機に割り当てられた前記物理資源の割当量で除して前記仮想計算機ごとに前記物理資源の使用率を算出する
ことを特徴とする付記７記載の仮想計算機割当資源管理装置。
【０１５８】
（付記９）前記物理資源使用量測定部は、前記設定ファイルに設定されているアプリケーションを特定する情報に基づいて、前記仮想計算機において稼働中の前記アプリケーションの組み合わせを取得し、前記仮想計算機ごと、かつ、前記アプリケーションの組み合わせごとに前記物理資源の使用量を繰り返し測定して前記物理資源の使用量の平均を算出し、
前記使用率算出部は、前記物理資源使用量測定部によって算出された前記物理資源の使用量の平均を前記仮想計算機に割り当てられた前記物理資源の割当量で除して前記仮想計算機ごと、かつ、前記アプリケーションの組み合わせごとに前記物理資源の使用率を算出する
ことを特徴とする付記７記載の仮想計算機割当資源管理装置。
【０１５９】
（付記１０）前記設定ファイルには、前記物理資源の使用率の上限値および下限値が設定されており、
前記物理資源割当量増減部は、前記物理資源の使用率と、前記物理資源の使用率の上限値および下限値とを比較した比較結果に応じて、前記仮想計算機に割り当てられた前記物理資源の割当量を前記増減単位だけ増減する
ことを特徴とする付記７、８または９記載の仮想計算機割当資源管理装置。
【０１６０】
（付記１１）前記物理資源割当量増減部は、前記物理資源の使用率が前記物理資源の使用率の下限値を下回る場合には前記仮想計算機への前記物理資源の割当量を前記増減単位だけ減少させ、前記物理資源使用率が前記物理資源の使用率の上限値を上回る場合には前記仮想計算機への前記物理資源の割当量を前記増減単位だけ増加させる
ことを特徴とする付記１０記載の仮想計算機割当資源管理装置。
【０１６１】
（付記１２）前記物理資源割当量増減部は、前記物理資源の使用率が前記物理資源の使用率の上限値を上回る前記仮想計算機の数に前記増減単位を乗じた必要物理資源量が、いずれの前記仮想計算機にも割り当てられていない前記物理資源の未割当量を上回る場合には、前記物理資源の未割当量を前記物理資源の使用率が前記物理資源の使用率の上限値を上回る前記仮想計算機の数で除した値へ前記増減単位を変更した後に、前記仮想計算機への前記物理資源の割当量を前記増減単位だけ増加させる
ことを特徴とする付記１１記載の仮想計算機割当資源管理装置。
【０１６２】
（付記１３）仮想計算機割当資源管理装置が実行する仮想計算機割当資源管理方法であって、
少なくとも仮想計算機に割り当てられた物理計算機の物理資源の割当量を増減する増減単位が設定値として設定されている設定ファイルから前記設定値を読み込む設定ファイル読込ステップと、
前記仮想計算機に割り当てられた前記物理計算機の物理資源の割当量のうち前記仮想計算機が使用する前記物理資源の使用量を測定する物理資源使用量測定ステップと、
前記物理資源使用量測定ステップによって測定された前記物理資源の使用量を前記仮想計算機に割り当てられた前記物理資源の割当量で除した前記物理資源の使用率を算出する使用率算出ステップと、
前記使用率算出ステップによって算出された前記物理資源の使用率に応じて、前記仮想計算機に割り当てられた前記物理資源の割当量を前記増減単位だけ増減する物理資源割当量増減ステップと、
前記物理資源割当量増減ステップによって前記仮想計算機に割り当てられた前記物理資源の割当量が前記増減単位だけ増減された後に、前記物理資源使用量測定ステップと、前記使用率算出ステップと、物理資源割当量増減ステップとを順次実行する制御ステップと
を含むことを特徴とする仮想計算機割当資源管理方法。
【０１６３】
（付記１４）前記物理資源使用量測定ステップは、前記設定ファイルに設定されている測定期間にわたって、前記仮想計算機ごとに前記物理資源の使用量を繰り返し測定して前記測定期間における前記物理資源の使用量の平均を算出し、
前記使用率算出ステップは、前記物理資源使用量測定ステップによって算出された前記測定期間における前記物理資源の使用量の平均を前記仮想計算機に割り当てられた前記物理資源の割当量で除して前記仮想計算機ごとに前記物理資源の使用率を算出する
ことを特徴とする付記１３記載の仮想計算機割当資源管理方法。
【０１６４】
（付記１５）前記物理資源使用量測定ステップは、前記設定ファイルに設定されているアプリケーションを特定する情報に基づいて、前記仮想計算機において稼働中の前記アプリケーションの組み合わせを取得し、前記仮想計算機ごと、かつ、前記アプリケーションの組み合わせごとに前記物理資源の使用量を繰り返し測定して前記物理資源の使用量の平均を算出し、
前記使用率算出ステップは、前記物理資源使用量測定ステップによって算出された前記物理資源の使用量の平均を前記仮想計算機に割り当てられた前記物理資源の割当量で除して前記仮想計算機ごと、かつ、前記アプリケーションの組み合わせごとに前記物理資源の使用率を算出する
ことを特徴とする付記１３記載の仮想計算機割当資源管理方法。
【０１６５】
（付記１６）前記設定ファイルには、前記物理資源の使用率の上限値および下限値が設定されており、
前記物理資源割当量増減ステップは、前記物理資源の使用率と、前記物理資源の使用率の上限値および下限値とを比較した比較結果に応じて、前記仮想計算機に割り当てられた前記物理資源の割当量を前記増減単位だけ増減する
ことを特徴とする付記１３、１４または１５記載の仮想計算機割当資源管理方法。
【０１６６】
（付記１７）前記物理資源割当量増減ステップは、前記物理資源の使用率が前記物理資源の使用率の下限値を下回る場合には前記仮想計算機への前記物理資源の割当量を前記増減単位だけ減少させ、前記物理資源使用率が前記物理資源の使用率の上限値を上回る場合には前記仮想計算機への前記物理資源の割当量を前記増減単位だけ増加させる
ことを特徴とする付記１６記載の仮想計算機割当資源管理方法。
【０１６７】
（付記１８）前記物理資源割当量増減ステップは、前記物理資源の使用率が前記物理資源の使用率の上限値を上回る前記仮想計算機の数に前記増減単位を乗じた必要物理資源量が、いずれの前記仮想計算機にも割り当てられていない前記物理資源の未割当量を上回る場合には、前記物理資源の未割当量を前記物理資源の使用率が前記物理資源の使用率の上限値を上回る前記仮想計算機の数で除した値へ前記増減単位を変更した後に、前記仮想計算機への前記物理資源の割当量を前記増減単位だけ増加させる
ことを特徴とする付記１７記載の仮想計算機割当資源管理方法。
【符号の説明】
【０１６８】
１００、１００ａ、１００ｂ  仮想コンピュータシステム
１０１  物理資源割当管理部
１０１ａ、１０１ｂ  メモリ割当管理部
１０１ａ１  仮想マシン管理デーモン
１０２  物理資源使用量測定部
１０３  物理資源使用率算出部
１０２ａ、１０２ｂ  メモリ使用量測定部
１０３ａ、１０３ｂ  メモリ使用率算出部
１０４  物理資源割当量増減部
１０４ａ、１０４ｂ  メモリ割当量増減部
１０５、１０５ａ、１０５ｂ  記憶部
１０６、１０６ａ、１０６ｂ  設定ファイル
１０７ａ、１０７ｂ  メモリ測定テーテーブル
１０８ａ、１０８ｂ  メモリ負荷判定テーブル
１０９ｂ  アプリケーションテーブル
１１１  仮想計算機管理部
１１１ａ  仮想マシンモニタ
１１２  物理資源
１１２ａ  物理メモリ
１２１ａ  管理ＯＳ
１２１ａ１、１２１ａ２、１２１ｂ１、１２１ｂ２、１２１−１〜１２１−ｎ  仮想計算機
１２２ａ１、１２２ａ２  アプリケーション監視プロセス
１２３ａ１、１２３ａ２、１２３ｂ１、１２３ｂ２  アプリケーション監視部
１２４ｂ１、１２４ｂ２  プロセス情報
【図１】
0005560690.tif 000002
【図２】
0005560690.tif 000003
【図３】
0005560690.tif 000004
【図４】
0005560690.tif 000005
【図５】
0005560690.tif 000006
【図６】
0005560690.tif 000007
【図７】
0005560690.tif 000008
【図８】
0005560690.tif 000009
【図９】
0005560690.tif 000010
【図１０】
0005560690.tif 000011
【図１１】
0005560690.tif 000012
【図１２】
0005560690.tif 000013
【図１３】
0005560690.tif 000014
【図１４】
0005560690.tif 000015
【図１５】
0005560690.tif 000016
【図１６】
0005560690.tif 000017
【図１７】
0005560690.tif 000018