(57)【要約】【課題】メモリ領域を有効に利用することを課題とする。【解決手段】ゲストＯＳ管理装置は、ゲストＯＳ管理装置上に構築された仮想マシン上で動作するＯＳを示すゲストＯＳの動作に関する状況を監視する。また、ゲストＯＳ管理装置は、監視した状況が所定条件を満たす場合に、ゲストＯＳをスリープさせる。また、ゲストＯＳ管理装置は、スリープさせたゲストＯＳのメモリページを退避させてから解放する。なお、ゲストＯＳ管理装置は、スリープ中のゲストＯＳにパケットが到着したことを検知した場合に、該当するゲストＯＳをレジュームし、解放したメモリページを読み込んで展開する。【選択図】図３
2012243096.tif 000002
【特許請求の範囲】
【請求項１】
自装置上に構築された仮想マシン上で動作するＯＳ（Operating  System）を示すゲストＯＳの動作に関する状況を監視する監視部と、
前記監視部によって監視した状況が所定条件を満たす場合に、前記ゲストＯＳをスリープさせるスリープ部と、
前記スリープ部によってスリープさせたゲストＯＳのメモリページを退避させてから解放するメモリ制御部と
を有することを特徴とするゲストＯＳ管理装置。
【請求項２】
前記監視部は、前記スリープ部によってスリープさせたゲストＯＳに対する特定イベントの発生を監視し、
前記監視部によって監視した、前記スリープ部によってスリープさせたゲストＯＳに対する特定イベントの発生を検知した場合に前記ゲストＯＳをレジュームし、前記メモリ制御部によって解放させたメモリページを読み込んで展開するレジューム部をさらに有することを特徴とする請求項１に記載のゲストＯＳ管理装置。
【請求項３】
前記監視部は、前記ゲストＯＳの所定コンピュータ資源の利用状況を監視し、
前記スリープ部は、前記監視部によって監視した所定コンピュータ資源の利用状況が所定条件以下である場合に、前記ゲストＯＳをスリープさせることを特徴とする請求項１又は２に記載のゲストＯＳ管理装置。
【請求項４】
前記監視部は、前記ゲストＯＳの所定イベントの発生状況を監視し、
前記スリープ部は、前記監視部によって監視した所定イベントの発生状況が所定条件以下である場合に、前記ゲストＯＳをスリープさせることを特徴とする請求項１又は２に記載のゲストＯＳ管理装置。
【請求項５】
前記スリープ部は、特定のコンピュータ資源の利用量が予め定めた基準値を超えた場合に、予め定められたゲストＯＳ間の優先順位、又は、１つ以上のゲストＯＳをグループ化したグループ間に定めた優先順位に基づいて、コンピュータ資源の利用量が一定値以下になるまでスリープさせることを特徴とする請求項１〜４のいずれか一つに記載のゲストＯＳ管理装置。
【請求項６】
ゲストＯＳ（Operating  System）管理装置で実行されるゲストＯＳ管理方法であって、
前記ゲストＯＳ管理装置上に構築された仮想マシン上で動作するＯＳを示すゲストＯＳの動作に関する状況を監視する監視工程と、
前記監視工程によって監視した状況が所定条件を満たす場合に、前記ゲストＯＳをスリープさせるスリープ工程と、
前記スリープ工程によってスリープさせたゲストＯＳのメモリページを退避させてから解放するメモリ制御工程と
を含んだことを特徴とするゲストＯＳ管理方法。
【請求項７】
コンピュータを請求項１〜５に記載のゲストＯＳ（Operating  System）管理装置として機能させるためのゲストＯＳ管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ゲストＯＳ管理装置、ゲストＯＳ管理方法及びゲストＯＳ管理プログラムに関する。
【背景技術】
【０００２】
従来、複数のＯＳ（Operating  System）を１台の物理マシン上で起動させる仮想化技術がある。ここで、上記複数のＯＳは、ゲストＯＳと呼ぶことがある。かかる仮想化技術において、複数台のゲストＯＳが起動された場合に、仮想マシンモニタは、実際には有限個であるコンピュータ資源を仮想的にゲストＯＳに占有されているように見せかける。これにより、仮想化技術では、特別な変更を加えることなく各ゲストＯＳを動作させることができる。
【０００３】
また、仮想マシンモニタは、各ゲストＯＳが占有していると見せかけているコンピュータ資源への利用要求を調整し、ゲストＯＳ間でコンピュータ資源の干渉が起こらないように該コンピュータ資源を共有させる。具体的に、コンピュータ資源の１つとして物理メモリを例に挙げると、仮想マシンモニタは、４ＧＢの物理メモリを１つのゲストＯＳに２５６ＭＢずつ割り当てる場合に、１６個のゲストＯＳを起動させることが可能となる。
【０００４】
但し、このようにして各ゲストＯＳに割り当てられたメモリ量は、起動時に各ゲストＯＳが占有することが保証されている反面、起動後にゲストＯＳがメモリ量を増減しようとすることは困難である。換言すると、各ゲストＯＳは、処理が多い場合でもメモリ量を増強することができず、処理が少ない場合でも起動時に割り当てられたメモリ量を占有しなければならない。
【０００５】
これらのことから、物理マシンのコンピュータ資源の利用を効率化し、より多くのゲストＯＳを１つの物理マシン上で動作させたいという要求がある。このため、最近では、物理マシンが実際に有する物理メモリ以上のメモリを各ゲストＯＳに利用させるオーバーコミットメント技術がある。かかるオーバーコミットメント技術は、一つの様態として、同一メモリページの共有、バルーニング又はスワッピング等の技術でも実現される。
【０００６】
同一メモリページを共有する技術は、例えば、各ゲストＯＳが利用しているメモリページをスキャンし、同一内容のメモリページを検出した場合に、同一内容のメモリページをマージして、空いたメモリページを解放する技術である。かかる技術では、マージしたメモリページに対して書き込み等が発生し、同一の内容ではなくなった場合には、メモリページを複製して、複製したメモリページに対して書き込みを行なわせる。
【０００７】
バルーニング技術は、例えば、バルーンドライバと呼ばれるソフトウェアをゲストＯＳの中で動作させ、ゲストＯＳのフリーリストにあるメモリページを仮想マシンモニタ側に返却する技術である。かかる技術では、メモリを逼迫している他のゲストＯＳのフリーリストに、返却されたメモリページが渡されることにより、メモリの利用量が少ないゲストＯＳからメモリ利用量が多いゲストＯＳへメモリページを融通する。
【０００８】
スワッピング技術は、例えば、メモリが逼迫してきた場合に、利用頻度の低いメモリページをＬＲＵ（Least  Recently  Used）アルゴリズム等に基づいて選択し、選択したメモリページをディスク領域等の２次記憶領域に退避させる技術である。かかる技術では、２次記憶領域に退避させたメモリページは、物理メモリ上からは削除され空きページとなる。
【先行技術文献】
【非特許文献】
【０００９】
【非特許文献１】“Understanding  Memory  Resource  Management  in  VMware  ESX  4．1”、［online］、［平成２３年５月９日検索］、インターネット＜http://www.vmware.com/files/pdf/techpaper/vsp_41_perf_memory_mgmt.pdf＞
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、従来技術では、メモリ領域を有効に利用することができないという問題がある。例えば、ゲストＯＳは、処理するプロセスがない場合にもアイドルプロセスを実行する。また、例えば、タイマ割り込み等の定期的なイベントを発生させ、ゲストＯＳ内の時間調整を行なうことがある。すなわち、処理中ではないゲストＯＳであっても、少なくとも一部のメモリページを常にメモリ上に保持させおくことが好ましい。これらのことは、オーバーコミットメントの各種技術を利用しても同様に起こり得る。
【００１１】
例えば、同一メモリページを共有する技術は、常に書き込みが行なわれているページや、同一のメモリページが存在しないメモリページの場合に、マージされずに単独のメモリページとしてメモリ上に存在するため、全てのメモリページをマージできるわけではない。また、例えば、バルーニングやスワッピングの技術は、頻繁にアクセスするメモリページを返却又は退避すると、ゲストＯＳ間での頻繁なメモリページのやり取りや、２次記憶領域とメモリとをメモリページが行き来するスラッシングが発生する。これらの結果、従来技術では、オーバーコミットメント技術により、より多くのゲストＯＳを１つの物理マシン上で動作させているものの、必ずしもメモリ領域を有効に利用できているわけではない。
【００１２】
そこで、本発明は、上記に鑑みてなされたものであって、メモリ領域を有効に利用することが可能であるゲストＯＳ管理装置、ゲストＯＳ管理方法及びゲストＯＳ管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１３】
上述した課題を解決し、目的を達成するため、本発明に係るゲストＯＳ管理装置は、自装置上に構築された仮想マシン上で動作するＯＳを示すゲストＯＳの動作に関する状況を監視する監視部と、前記監視部によって監視した状況が所定条件を満たす場合に、前記ゲストＯＳをスリープさせるスリープ部と、前記スリープ部によってスリープさせたゲストＯＳのメモリページを退避させてから解放するメモリ制御部とを有する。
【発明の効果】
【００１４】
本発明に係るゲストＯＳ管理装置、ゲストＯＳ管理方法及びゲストＯＳ管理プログラムの一つの様態によれば、メモリ領域を有効に利用することができるという効果を奏する。
【図面の簡単な説明】
【００１５】
【図１】図１は、実施例１に係る仮想化技術のシステム構成例を示す図である。
【図２】図２は、実施例１に係る物理マシンの構成例を示す図である。
【図３】図３は、実施例１に係るゲストＯＳ管理装置の機能ブロックの例を示す図である。
【図４】図４は、ゲストＯＳ管理装置の機能を含むシステム構成例を示す図である。
【図５】図５は、実施例１に係るスリープ処理の流れの例を示すフローチャートである。
【図６】図６は、実施例１に係るレジューム処理の流れの例を示すフローチャートである。
【図７】図７は、ゲストＯＳ管理プログラムによる処理がコンピュータを用いて具体的に実現されることを示す図である。
【発明を実施するための形態】
【００１６】
以下に添付図面を参照して、本発明に係るゲストＯＳ管理装置、ゲストＯＳ管理方法及びゲストＯＳ管理プログラムの実施例を説明する。なお、以下の実施例により本発明が限定されるものではない。
【実施例１】
【００１７】
［仮想化システム構成］
図１を用いて、実施例１に係る仮想化技術のシステム構成を説明する。図１は、実施例１に係る仮想化技術のシステム構成例を示す図である。
【００１８】
例えば、図１に示すように、仮想化技術のシステム構成は、複数のゲストＯＳを含む仮想マシンを構成する物理マシンと、ネットワークを介して物理マシンに接続可能なクライアントとを含む。上記構成において、各仮想マシンは、一つの様態として、クライアントからのサービス要求をトリガとして動作し、ネットワークを介して特定のサービスをクライアントに提供する。なお、物理マシンは、例えば、ＰＣ（Personal  Computer）やサーバ装置等の情報処理装置である。また、各装置の数は、図示の数に限られるものではない。
【００１９】
［物理マシンの構成］
次に、図２を用いて、実施例１に係る物理マシンの構成を説明する。図２は、実施例１に係る物理マシンの構成例を示す図である。
【００２０】
例えば、図２に示すように、物理マシンは、クライアントにサービス（サーバサービス）を提供するためのソフトウェアを動作させるゲストＯＳを含む仮想マシンを少なくとも１つ有する。また、物理マシン上では、仮想マシンモニタ、ハイパーバイザ又はホストＯＳを含む仮想マシン管理ソフトウェアが動作する。仮想マシンモニタは、例えば、複数のゲストＯＳを動作させるソフトウェアである。かかる仮想マシン上では、１つ以上のゲストＯＳが動作する。ハイパーバイザは、例えば、仮想化技術を実現するための制御プログラムである。ホストＯＳは、例えば、物理マシン上にインストールされたＯＳを指す。
【００２１】
また、物理マシンは、物理メモリ、ディスク、ネットワークカード（NIC：Network  Interface  Card）、ＣＰＵ（Central  Processing  Unit）等の実在するハードウェアを有する。物理メモリは、例えば、物理マシン内でメインメモリとして利用される記憶装置である。ディスクは、例えば、任意の記憶媒体にデータの記録を行なう記憶装置である。ネットワークカードは、例えば、ネットワークを介してクライアント等とパケットを送受信する。ＣＰＵは、例えば、物理マシン全体を制御する電子回路である。また、物理メモリやディスクは、２次記憶領域を有する。かかる２次記憶領域の利用については後述する。
【００２２】
［ゲストＯＳ管理装置の構成］
次に、図３を用いて、実施例１に係るゲストＯＳ管理装置の機能ブロックを説明する。図３は、実施例１に係るゲストＯＳ管理装置の機能ブロックの例を示す図である。
【００２３】
例えば、図３に示すように、ゲストＯＳ管理装置１００は、監視部１１０と、スリープ部１２０と、メモリ制御部１３０と、レジューム部１４０とを有する。かかるゲストＯＳ管理装置１００の各機能は、一つの様態として、図１又は図２に示した物理マシンに含まれる。または、図４に示すように、ゲストＯＳ管理装置１００の一部の機能を別の物理マシン（ネットワーク装置）上に持たせることも可能である。なお、図４は、ゲストＯＳ管理装置１００の機能を含むシステム構成例を示す図である。
【００２４】
さらに、図２に示すような構成で仮想マシン管理ソフトウェアを動作させた物理マシンを複数台動作させ、ネットワークで接続された別の物理マシンに仮想マシン管理ソフトウェアの動作する各物理マシン上で動作する各ゲストＯＳのコンピュータ資源の利用状況や各イベントの発生状況を送信させ、それらの情報を受け取った物理マシン上で各ゲストＯＳをスリープさせるか、レジュームさせるかの判定を行なわせ、スリープさせる、又はレジュームさせると判定した場合にはその指令を該仮想マシン管理ソフトウェアの動作する物理マシンに送信するような構成をとることも可能である。
【００２５】
監視部１１０は、ゲストＯＳ管理装置１００上に構築された仮想的な別のコンピュータ環境である仮想マシン上で動作するＯＳを示すゲストＯＳの動作に関する状況を監視する。かかるコンピュータ資源の一例としては、物理メモリ、ディスク、ネットワークカード、ＣＰＵ等が挙げられる。つまり、監視部１１０は、一つの様態として、メモリページへのアクセス等が実行される場合の、コンピュータ資源の利用状況を監視する。また、監視部１１０は、監視状況をスリープ部１２０に通知する。また、監視部１１０は、一つの様態として、ネットワークパケット等を監視する場合、ネットワークで接続された別物理マシン上（ネットワーク装置）に監視部１１０を配置し、それ以外の機能を物理マシンに持たせても良い。
【００２６】
また、例えば、監視部１１０は、ゲストＯＳの所定イベントの発生状況を監視しても良い。所定イベントの発生状況を監視する場合には、監視部１１０は、例えば、各ゲストＯＳ内に配置されても良い。かかる所定イベントの一例としては、プロセス又はスレッドの生成・消失、ファイルアクセス、パケットの送受信、例外の発生、オープン又はクローズしているソケット数、ゲストＯＳの状態を変化させる事象等が挙げられる。つまり、監視部１１０は、一つの様態として、メモリページへのアクセス等が実行される場合の、所定イベントの発生状況を監視する。このときも同様に、監視部１１０は、監視状況をスリープ部１２０に通知する。
【００２７】
スリープ部１２０は、監視部１１０によって監視した状況が所定条件を満たす場合に、ゲストＯＳをスリープさせる。かかる所定条件は、例えば、図示していない記憶部等に記憶されている。上記コンピュータ資源の利用状況を監視する例で具体的に説明すると、スリープ部１２０は、監視部１１０によって監視した所定コンピュータ資源の一定期間の利用状況が所定条件以下である場合に、該当するゲストＯＳをスリープさせる。つまり、スリープ部１２０は、コンピュータ資源が利用されていないことから、サービス要求の処理中ではないと判定し、アイドルプロセスの実行等の何らかの形でメモリ領域を利用することがあるゲストＯＳをスリープさせる。これにより、スリープさせたゲストＯＳによるメモリアクセス等を停止させることができる。また、スリープ部１２０は、スリープさせたゲストＯＳをメモリ制御部１３０に通知する。
【００２８】
詳細には、ゲストＯＳ管理装置１００は、サービスの利用要求に対する処理を実行していないときの任意のゲストＯＳにおける、ＣＰＵ利用率、メモリ利用率、ネットワーク利用率等を記憶しておき、各コンピュータ資源の何れか一つ又は一つ以上の値を基準値として設定する。そして、スリープ部１２０は、監視部１１０によるコンピュータ資源の監視に基づき、予め定められた一定期間に利用状況が基準値以下である場合に、該当するゲストＯＳにおいてはクライアントからのサービス要求に応じた処理を実行していないと判定し、該当するゲストＯＳをスリープさせる。
【００２９】
また、上記所定イベントの発生状況を監視する例で具体的に説明すると、スリープ部１２０は、監視部１１０によって監視した所定イベントの一定期間の発生状況が所定条件以下である場合に、該当するゲストＯＳをスリープさせる。つまり、スリープ部１２０は、イベントが発生していないことから、サービス要求の処理中ではないと判定し、アイドルプロセスの実行等の何らかの形でメモリ領域を利用することがあるゲストＯＳをスリープさせる。すなわち、図２に示す仮想マシン管理ソフトウェアは、監視部１１０からの監視結果に基づき、該当するゲストＯＳをスリープさせる。これにより、スリープさせたゲストＯＳによるメモリアクセス等を停止させることができる。このときも同様に、スリープ部１２０は、スリープさせたゲストＯＳをメモリ制御部１３０に通知する。
【００３０】
ここで、Ａｐａｃｈｅ（登録商標）等のＨＴＴＰ（HyperText  Transfer  Protocol）サーバ上でホームページが構築され、クライアントからのＨＴＴＰ要求に応じて、ホームページを返すＷｅｂサービスを提供するＯＳを例に挙げる。かかるＡｐａｃｈｅ（登録商標）は、クライアントからの要求に応じてスレッドを生成し、スレッドにクライアントからの要求を処理させるモデルを採用している。これにより、スレッドがゲストＯＳ上で実行されていない場合には、クライアントからの要求を処理していないと判定できる。
【００３１】
これらのことから、スリープ部１２０は、監視部１１０によるゲストＯＳ上で生成されるスレッドの監視に基づいて、一定期間にＡｐａｃｈｅ（登録商標）からのスレッド生成が観測されなかった場合に、該当するゲストＯＳはクライアントからの要求を処理していないと判定して、該当するゲストＯＳをスリープさせる。また、スレッドだけでなく、ゲストＯＳ内で生成されるプロセスやオープンしているソケット数等の、ゲストＯＳ内から取得可能な情報に基づいて、スリープさせることにしても良い。
【００３２】
メモリ制御部１３０は、スリープ部１２０によってスリープさせたゲストＯＳのメモリページを退避させてから解放する。例えば、メモリ制御部１３０は、スリープ部１２０によってスリープさせたゲストＯＳのメモリページを２次記憶領域に移動させ、ゲストＯＳのメモリページを解放する。かかる２次記憶領域は、例えば、物理メモリ、ディスク領域等を指す。また、物理メモリは、特定の領域を２次記憶領域とし、この領域を圧縮メモリ領域とすることも可能である。すなわち、２次記憶領域は、物理メモリ上に設けられた圧縮メモリ領域を指すこともある。
【００３３】
レジューム部１４０は、スリープ部１２０によってスリープさせたゲストＯＳに対する特定イベントの発生を監視部１１０によって検知された場合に、ゲストＯＳをレジュームし、メモリ制御部１３０によって解放させたメモリページを読み込んで展開する。かかる特定イベントの一例としては、パケットが到着したこと、一定時間が経過したこと等が挙げられる。
【００３４】
例えば、レジューム部１４０は、スリープ部１２０によってスリープさせたゲストＯＳに対するパケットが到着したことを監視部１１０によって検知された場合に、該当するゲストＯＳをレジュームすることで、スリープ状態からアクティブ状態へと遷移させる。ここで、ゲストＯＳ管理装置１００は、パケットの宛先ＩＰ（Internet  Protocol）アドレス及び／又はポート番号と、ゲストＯＳとを対応付けて図示していない記憶部等に記憶しているとともに、各ゲストＯＳの状態（スリープ状態或いはアクティブ状態）を管理している。これらの情報を利用して、レジューム部１４０は、ゲストＯＳに対するパケットが到着したことを監視部１１０によって検知された場合に、パケットの送信先であるゲストＯＳがスリープ状態であるか否かを判定している。そして、レジューム部１４０は、メモリ制御部１３０によって２次記憶領域に移動させたメモリページを読み込み、メモリ上に復元する。これらにより、到着したパケットは、レジューム後のゲストＯＳに渡され処理される。なお、パケットの送信先であるゲストＯＳがアクティブ状態である場合に、レジューム部１４０は、パケットをそのまま転送する。
【００３５】
また、別の例として、レジューム部１４０は、スリープ部１２０によってあるゲストＯＳをスリープさせる際にタイマをセットし、そのタイマがタイムアップして、予め定めていた一定時間が経過したと判定した場合に、該当するゲストＯＳをレジュームさせ、スリープ状態からアクティブ状態へと遷移させることもできる。
【００３６】
［スリープ処理の流れ］
次に、図５を用いて、実施例１に係るスリープ処理を説明する。図５は、実施例１に係るスリープ処理の流れの例を示すフローチャートである。なお、スリープ処理とは、主に、監視部１１０と、スリープ部１２０と、メモリ制御部１３０とによる処理を指す。
【００３７】
例えば、図５に示すように、ゲストＯＳ管理装置１００は、ゲストＯＳの動作に関する状況を監視する（ステップＳ１０１）。ゲストＯＳの動作に関する状況については、例えば、物理メモリ、ディスク、ネットワークカード、ＣＰＵ等のコンピュータ資源の利用状況と、プロセス又はスレッドの生成・消失、ファイルアクセス、パケットの送受信、例外の発生、オープン又はクローズしているソケット数、ゲストＯＳの状態を変化させる事象等の特定イベントの発生状況とが挙げられる。
【００３８】
そして、ゲストＯＳ管理装置１００は、監視した状況が所定条件を満たすか否かを判定する（ステップＳ１０２）。所定条件について、ゲストＯＳ管理装置１００は、コンピュータ資源の利用状況を監視した場合に、一定期間の利用状況が所定条件（一定値）以下であるか否かを判定し、特定イベントの発生状況を監視した場合に、一定期間の発生状況が所定条件（一定値）以下であるか否かを判定する。
【００３９】
このとき、ゲストＯＳ管理装置１００は、監視した状況が所定条件を満たすと判定した場合に（ステップＳ１０２肯定）、該当するゲストＯＳをスリープさせる（ステップＳ１０３）。一方、ゲストＯＳ管理装置１００は、監視した状況が所定条件を満たさないと判定した場合に（ステップＳ１０２否定）、該当するゲストＯＳがアクティブであるため、再度ステップＳ１０１の処理を実行する。その後、ゲストＯＳ管理装置１００は、スリープさせたゲストＯＳによって利用されていたメモリページを２次記憶領域に移動させ、メモリを解放する（ステップＳ１０４）。
【００４０】
［レジューム処理の流れ］
次に、図６を用いて、実施例１に係るレジューム処理を説明する。図６は、実施例１に係るレジューム処理の流れの例を示すフローチャートである。なお、レジューム処理とは、主に、レジューム部１４０による処理を指す。
【００４１】
例えば、図６に示すように、ゲストＯＳ管理装置１００は、ゲストＯＳに対するパケットが到着したことを検知した場合に（ステップＳ２０１肯定）、パケットの送信先のゲストＯＳがスリープ状態であるか否かを判定する（ステップＳ２０２）。このとき、ゲストＯＳ管理装置１００は、パケットの送信先のゲストＯＳがスリープ状態である場合に（ステップＳ２０２肯定）、該当するゲストＯＳをレジュームする（ステップＳ２０３）。
【００４２】
そして、ゲストＯＳ管理装置１００は、スリープ状態であったゲストＯＳのメモリページを読み込み、メモリ上に復元する（ステップＳ２０４）。その後、ゲストＯＳ管理装置１００は、レジュームさせたゲストＯＳにパケットを転送する（ステップＳ２０５）。また、ゲストＯＳ管理装置１００は、ゲストＯＳに対するパケットが到着したことを検知していない場合に（ステップＳ２０１否定）、パケットの到着待ちの状態となる。また、ゲストＯＳ管理装置１００は、パケットの送信先のゲストＯＳがスリープ状態でない場合に（ステップＳ２０２否定）、この動作中のゲストＯＳにパケットを転送する（ステップＳ２０６）。
【００４３】
［実施例１による効果］
ゲストＯＳ管理装置１００は、ゲストＯＳにおけるコンピュータ資源の利用状況やイベントの発生状況等に基づいて、利用されていないゲストＯＳをスリープさせ、スリープさせたゲストＯＳのメモリページを退避させ解放する。この結果、ゲストＯＳ管理装置１００は、利用していないゲストＯＳがメモリを占有する従来技術と比較して、メモリ領域を有効に利用することができる。
【実施例２】
【００４４】
さて、これまで本発明に係るゲストＯＳ管理１００の実施例について説明したが、上述した実施例以外にも種々の異なる形態にて実施されてよいものである。そこで、（１）監視対象、（２）スリープの優先順位、（３）スリープの条件、（４）メモリの解放、（５）構成、（６）プログラム、において異なる実施例を説明する。
【００４５】
（１）監視対象
上記実施例では、コンピュータの資源利用状況を監視してゲストＯＳをスリープさせる場合と、イベントの発生状況を監視してゲストＯＳをスリープさせる場合とを説明したが、これら両方を監視して、両方のスリープの条件又は少なくともいずれか一方のスリープの条件を満たしたときに、ゲストＯＳをスリープさせても良い。これにより、監視対象を増やしてゲストＯＳをスリープさせるので、メモリ領域をより有効に利用することができる。
【００４６】
（２）スリープの優先順位
また、上記実施例では、ゲストＯＳごとに独立してスリープの要否判定を実行する場合を説明した。本発明はこれに限られるものではなく、例えば、物理マシン全体のメモリを監視し、一定値以上のメモリが使用されるようになった場合、又は、所定期間に一定値以上のメモリが使用されている状況が続いた場合に、上記実施例を実行しても良い。具体的には、監視部１１０は、常にコンピュータ資源の利用状況を監視し、あるゲストＯＳの利用しているコンピュータ資源の監視状況が所定の条件を満たした場合も該ゲストＯＳをスリープさせずに、現在の状況を記憶しておき、該ゲストＯＳの実行を継続させる。また、物理マシンの物理メモリの利用状況が一定値以上になった場合に、スリープ部１２０は、記憶しておいたコンピュータ資源の利用状況に基づき、スリープさせる条件を満たすものをスリープさせていく。これにより、処理負荷を軽減できるとともに、必要以上にメモリを解放することなく、メモリ領域を有効に利用することができる。
【００４７】
さらに、例えば、特定のコンピュータ資源の利用量が予め定めた基準値を超えた場合に、予め定められたゲストＯＳ間の優先順位、又は、１つ以上のゲストＯＳをグループ化したグループ間に定めた優先順位に基づいて、コンピュータ資源の利用量が一定値以下になるまでスリープさせても良い。具体的には、物理メモリの利用状況が一定値以上になり、ゲストＯＳを順次スリープさせていく際に、ゲストＯＳ毎又は複数のゲストＯＳをまとめたグループ毎に優先度を予め設けておき、スリープ条件を満たしたゲストＯＳのうち、物理メモリの利用状況が一定値以下になるまで、この優先度に基づき優先度の低いものから順次スリープさせていく。これにより、より重要なサービスに対応するゲストＯＳを必要以上に停止することなく、メモリ領域を有効に利用することができる。
【００４８】
（３）スリープの条件
また、上記実施例では、ゲストＯＳをスリープさせる条件について特に個別に設定せずに、全てのゲストＯＳで共通である場合を説明したが、ゲストＯＳごとに異なる条件を設定しても良いし、ゲストＯＳをグループ化してグループごとに異なる条件を設定しても良い。これにより、サービスの利用度、関連度、重要度等に応じたゲストＯＳのスリープを実現することができる。
【００４９】
（４）メモリの解放
また、上記実施例では、スリープさせたゲストＯＳのメモリページをメモリ制御部１３０により２次記憶領域に移動する場合を説明したが、仮想マシン管理ソフトウェア（ホストＯＳや仮想マシンモニタ）の機能で２次記憶領域に移動させるようにしても良い。また、レジュームした後のメモリの展開についても仮想マシン管理ソフトウェア（ホストＯＳや仮想マシンモニタ）の機能で実行させるようにしても良い。つまり、ゲストＯＳがスリープした場合には、一つの様態として、ゲストＯＳの利用していたメモリ領域にメモリアクセスが発生しなくなり、非アクティブのメモリとしてホストＯＳ側が認識することになる。そして、ホストＯＳのメモリが逼迫してきた場合には、ホストＯＳのメモリ管理に係る機構が非アクティブのメモリをページアウトする。これらの結果、明示的にメモリページをレジュームと同時に全てページインさせることを要しない。これにより、本発明を適用する実施形態や要求されるパフォーマンスに応じて好適に処理させることができる。
【００５０】
（５）構成
また、上記文書中や図面中等で示した処理手順、制御手順、具体的名称、各種のデータやパラメタ等を含む情報（例えば、スリープ部１２０やレジューム部１４０の名称等）については、特記する場合を除いて任意に変更することができる。
【００５１】
また、図示したゲストＯＳ管理装置１００の各構成要素は、機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は、図示のものに限られず、その全部又は一部を各種の負担や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合することができる。例えば、スリープ部１２０とレジューム部１４０とを、物理マシン上で動作する各ゲストＯＳのスリープやレジュームを制御する「ゲストＯＳ制御部」として統合しても良い。
【００５２】
また、ゲストＯＳ管理装置１００にて行われる各処理機能は、その全部又は任意の一部が、ＣＰＵ（Central  Processing  Unit）および当該ＣＰＵにて解析実行されるプログラムにて実現され、或いは、ワイヤードロジックによるハードウェアとして実現され得る。
【００５３】
（６）プログラム
図７は、ゲストＯＳ管理プログラムによる処理がコンピュータを用いて具体的に実現されることを示す図である。図７に例示するように、コンピュータ１０００は、例えば、メモリ１００１と、ＣＰＵ１００２と、ハードディスクドライブインタフェース１００３と、ディスクドライブインタフェース１００４と、シリアルポートインタフェース１００５と、ビデオアダプタ１００６と、ネットワークインタフェース１００７とを有し、これらの各部はバス１００８によって接続される。
【００５４】
メモリ１００１は、図７に例示するように、ＲＯＭ（Read  Only  Memory）１００１ａ及びＲＡＭ（Random  Access  Memory）１００１ｂを含む。ＲＯＭ１００１ａは、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１００３は、図７に例示するように、ハードディスクドライブ１００９に接続される。ディスクドライブインタフェース１００４は、図７に例示するように、ディスクドライブ１０１０に接続される。例えば、磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ１０１０に挿入される。シリアルポートインタフェース１００５は、図７に例示するように、例えばマウス１０１１、キーボード１０１２に接続される。ビデオアダプタ１００６は、図７に例示するように、例えばディスプレイ１０１３に接続される。
【００５５】
ここで、図７に例示するように、ハードディスクドライブ１００９は、例えば、ＯＳ１００９ａ、アプリケーションプログラム１００９ｂ、プログラムモジュール１００９ｃ、プログラムデータ１００９ｄを記憶する。すなわち、ゲストＯＳ管理プログラムは、コンピュータ１０００によって実行される指令が記述されたプログラムモジュール１００９ｃとして、例えばハードディスクドライブ１００９に記憶される。具体的には、上記実施例で説明した監視部１１０と同様の処理を実行する監視手順と、スリープ部１２０と同様の処理を実行するスリープ手順と、メモリ制御部１３０と同様の処理を実行するメモリ制御手順と、レジューム部１４０と同様の処理を実行するレジューム手順とが記述されたプログラムモジュール１００９ｃが、ハードディスクドライブ１００９に記憶される。また、ゲストＯＳ管理プログラムによる処理に用いられるデータは、プログラムデータ１００９ｄとして、例えばハードディスクドライブ１００９に記憶される。そして、ＣＰＵ１００２が、ハードディスクドライブ１００９に記憶されたプログラムモジュール１００９ｃやプログラムデータ１００９ｄを必要に応じてＲＡＭ１００１ｂに読み出し、監視手順、スリープ手順、メモリ制御手順、レジューム手順を実行する。
【００５６】
なお、ゲストＯＳ管理プログラムに係るプログラムモジュール１００９ｃやプログラムデータ１００９ｄは、ハードディスクドライブ１００９に記憶される場合に限られず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ１０１０等を介してＣＰＵ１００２によって読み出されてもよい。あるいは、ゲストＯＳ管理プログラムに係るプログラムモジュール１００９ｃやプログラムデータ１００９ｄは、ネットワーク（ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶され、ネットワークインタフェース１００７を介してＣＰＵ１００２によって読み出されてもよい。
【符号の説明】
【００５７】
１００  ゲストＯＳ管理装置
１１０  監視部
１２０  スリープ部
１３０  メモリ制御部
１４０  レジューム部
【図１】
2012243096.tif 000003
【図２】
2012243096.tif 000004
【図３】
2012243096.tif 000005
【図４】
2012243096.tif 000006
【図５】
2012243096.tif 000007
【図６】
2012243096.tif 000008
【図７】
2012243096.tif 000009