(57)【要約】【課題】  仮想マシン制御プログラムによって複数の仮想マシンに割り振られた仮想メモリを管理するシステム、方法、及びコンピュータ・プログラムを提供する。【解決手段】  仮想マシンの各々は、作業メモリ、キャッシュ・メモリ、及びスワップ・メモリに分割された仮想プライベートの割り振り分を有する。仮想マシン制御プログラムは、それが追加の仮想メモリ割り振り分を必要とするということを決定し、それに応答して、それらのそれぞれの作業メモリ及び／又はキャッシュ・メモリの一部をスワップ・メモリに変換するためのそれぞれの要求を仮想マシンに対して行う。別の時点で、仮想マシン制御プログラムは、それがより少ない仮想メモリ割り振り分を必要とするということを決定し、それに応答して、それらのそれぞれの作業メモリ及び／又はキャッシュ・メモリの一部をスワップ・メモリに変換するためのそれぞれの要求を仮想マシンに対して行う。【選択図】  図１
2010532034.tif 000002
【特許請求の範囲】
【請求項１】
仮想マシン制御プログラムによって複数の仮想マシンに割り振られた仮想メモリを管理するための方法であって、前記仮想マシンの各々は、作業メモリ、キャッシュ・メモリ、及びスワップ・メモリに分割された仮想プライベート・メモリの割り振り分を有し、
前記仮想マシン制御プログラムが、それが追加の仮想メモリ割り振り分を必要とするということを決定し、それに応答して、前記仮想マシン制御プログラムが、前記仮想マシンのそれぞれの作業メモリ及び／又はキャッシュ・メモリの一部をスワップ・メモリに変換するためのそれぞれの要求を前記仮想マシンに対して行うステップと、
前記仮想マシンが、それらのそれぞれの作業メモリ及び／又はキャッシュ・メモリの一部をスワップ・メモリに変換するための前記それぞれの要求に応じるステップと
を含む方法。
【請求項２】
前記要求の各々は、スワップ・メモリに変換するべき作業メモリ及び／又はキャッシュ・メモリの量を指定する、請求項１に記載の方法。
【請求項３】
前記複数の仮想マシンは、それらのそれぞれの仮想マシンに割り振られた作業メモリ及び／又はキャッシュ・メモリを、それらのそれぞれの仮想マシンに割り振られたスワップ・メモリよりも十分に利用するようにプログラムされたそれぞれの複数のゲスト・オペレーティング・システムを含む、請求項１又は請求項２に記載の方法。
【請求項４】
前記仮想マシンの各々は、キャッシュ・メモリをスワップ・メモリに変換することによって、それらのそれぞれの作業メモリ及び／又はキャッシュ・メモリの一部をスワップ・メモリに変換するための前記要求に応じる、請求項１、請求項２、又は請求項３に記載の方法。
【請求項５】
仮想メモリを仮想マシン制御プログラム及び複数の仮想マシンに割り振るための仮想マシン制御プログラムであって、前記仮想マシンの各々は、作業メモリ、キャッシュ・メモリ、及びスワップ・メモリに分割された仮想プライベート・メモリの割り振り分を有し、
前記仮想マシン制御プログラムが追加の仮想メモリ割り振り分を必要とするということを決定し、それに応答して、それらのそれぞれの作業メモリ及び／又はキャッシュ・メモリの一部をスワップ・メモリに変換するための要求を前記仮想マシンの各々に対して行う第１のプログラム命令を含み、
前記第１のプログラム命令はコンピュータ可読媒体に機能的形式で格納される、仮想マシン制御プログラム。
【請求項６】
前記要求の各々は、スワップ・メモリに変換するべき作業メモリ及び／又はキャッシュ・メモリの量を指定する、請求項５に記載の仮想マシン制御プログラム。
【請求項７】
前記複数の仮想マシンは、それらのそれぞれの仮想マシンに割り振られた作業メモリ及び／又はキャッシュ・メモリを、それらのそれぞれの仮想マシンに割り振られたスワップ・メモリよりも十分に利用するようにプログラムされたそれぞれの複数のゲスト・オペレーティング・システムを含む、請求項５に記載の仮想マシン制御プログラム。
【請求項８】
仮想メモリを仮想マシン制御プログラム及び複数の仮想マシンに割り振るためのコンピュータ・システムであって、前記仮想マシンの各々は、作業メモリ、キャッシュ・メモリ、及びスワップ・メモリに分割された仮想プライベート・メモリの割り振り分を有し、
前記仮想マシン制御プログラムが追加の仮想メモリ割り振り分を必要とするということを決定し、それに応答して、それらのそれぞれの作業メモリ及び／又はキャッシュ・メモリの一部をスワップ・メモリに変換するための要求を前記仮想マシンに対して行うための手段を含み、
前記仮想マシンは、それらのそれぞれの作業メモリ及び／又はキャッシュ・メモリの一部をスワップ・メモリに変換するための前記それぞれの要求に応じるための手段を含む、コンピュータ・システム。
【請求項９】
前記要求の各々は、スワップ・メモリに変換するべき作業メモリ及び／又はキャッシュ・メモリの量を指定する、請求項８に記載のコンピュータ・システム。
【請求項１０】
前記複数の仮想マシンは、それらのそれぞれの仮想マシンに割り振られた作業メモリ及び／又はキャッシュ・メモリを、それらのそれぞれの仮想マシンに割り振られたスワップ・メモリよりも十分に利用するようにプログラムされたそれぞれの複数のゲスト・オペレーティング・システムを含む、請求項８又は請求項９に記載のコンピュータ・システム。
【請求項１１】
仮想マシン制御プログラムによって複数の仮想マシンに割り振られた仮想メモリを管理するための方法であって、前記仮想マシンの各々は、作業メモリ、キャッシュ・メモリ、及びスワップ・メモリに分割された仮想プライベート・メモリの割り振り分を有し、
前記仮想マシン制御プログラムが、それが前記仮想マシン制御プログラムに現在割り振られている割り振り分よりも少ない仮想メモリ割り振り分を必要とするということを決定し、それに応答して、前記仮想マシン制御プログラムが、前記仮想マシンのそれぞれのスワップ・メモリの一部を作業メモリ及び／又はキャッシュ・メモリに変換するためのそれぞれの要求を前記仮想マシンに対して行うステップ、を含む方法。
【請求項１２】
前記要求の各々は、作業メモリ及び／又はキャッシュ・メモリに変換するべきスワップ・メモリの量を指定する、請求項１１に記載の方法。
【請求項１３】
前記複数の仮想マシンは、それらのそれぞれの仮想マシンに割り振られた作業メモリ及び／又はキャッシュ・メモリを、それらのそれぞれの仮想マシンに割り振られたスワップ・メモリよりも十分に利用するようにプログラムされたそれぞれの複数のゲスト・オペレーティング・システムを含む、請求項１１又は請求項１２に記載の方法。
【請求項１４】
前記仮想マシンが、それらのそれぞれのスワップ・メモリの一部を作業メモリ及び／又はキャッシュ・メモリに変換するための前記それぞれ要求に応じるステップを更に含む、請求項１１、請求項１２、又は請求項１３に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的にはコンピュータ・システムに関し、特に、仮想マシンのメモリの管理に関する。
【背景技術】
【０００２】
現在、仮想マシンとして構成されたコンピュータがよく知られている。この構成では、ハイパーバイザ・プログラムが、実コンピュータの物理資源（ＣＰＵ、メモリ、記憶装置、及びＩ／Ｏ装置を含む）を個々の仮想マシンに論理的に分割する。例えば、ハイパーバイザは、１つ又はそれ以上の実プロセッサのタイムシェアを、及び実ＲＡＭにマップされた一連の仮想プライベート・メモリを、各仮想マシンに割り振る。仮想マシンがそれ自身の仮想プライベート・メモリをアドレスするとき、ハイパーバイザは仮想プライベート・メモリ・アドレスを実メモリの実アドレスに変換する。ハイパーバイザは、それの制御構造を含むハイパーバイザ・プログラム及びそのハイパーバイザ・プログラムによって使用されるデータを格納するために、仮想プライベート・メモリを自身にも割り振る。既知のＩＢＭ  ｚ／ＶＭオペレーティング・システムでは、ハイパーバイザ・プログラムは制御プログラム（ＣＰ）と呼ばれ、各仮想マシンは「ユーザ部分」又は「ゲスト」と呼ばれることもある。
【０００３】
更に、論理区分化プログラムが実コンピュータの物理資源（ＣＰＵ、メモリ、記憶装置、及びＩ／Ｏ装置を含む）を論理区分（ＬＰＡＲ）に論理的に分割し、しかる後、ハイパーバイザ・プログラムが各ＬＰＡＲにおいて実行されて各ＬＰＡＲの資源を仮想マシンに分割するということも知られている。既知のＩＢＭ  ｚＳｅｒｉｅｓコンピュータでは、既知の「IBMProcessor Resource/Resource Manager - ＰＲ／ＳＭ（商標）」プログラムが、実コンピュータをＬＰＡＲに分割又は区分化する。典型的には、アドミニストレータが、各ＬＰＡＲに対するＣＰＵ、メモリ、及び記憶装置の量を論理区分化プログラムに対して指定することによって各ＬＰＡＲを定義するのを支援する。論理区分化プログラムは、特定の実コンピュータ資源を、又は全コンピュータ資源の論理シェアを、各ＬＰＡＲに割り振ることができる。各ＬＰＡＲにおける仮想マシンは、それらが、如何なる論理分化も行うことなく実コンピュータから直接に形成された場合と同じように動作する。
【０００４】
従来のＩＢＭ  ｚ／ＶＭバージョン５.１仮想マシンのオペレーティング・システムは、ＬＰＡＲから、又は未分割の実コンピュータから仮想マシンを形成する既知のハイパーバイザ・プログラムを含む。既存のｚ／ＶＭ５.１オペレーティング・システムの詳細は、ＩＢＭ社の出版物「z/VMVersion 5 Release 1.0 General Information」（文書番号: ＧＣ２４−６０９５−００）において「z/VM Version5 Release 1 Updated Edition」（文書番号：ＧＣ２４−６０９５−０１）と共に開示され、それらは、米国２７６２６−０５７０  ノース・カロライナ州ローリー  私書箱２９５７０  ＩＢＭ出版部門  において、インターナショナル・ビジネス・マシーンズ社から入手可能であり、ＷＷＷ上のサフィックス「/shop/publications/order」を持つホームページにおいても入手可能である。
【０００５】
ゲスト・オペレーティング・システムが各仮想マシンにおいて（ＣＰＵ、メモリ等の仮想マシンのシェアを使用して）実行される。１つ又はそれ以上のアプリケーション及びミドルウェア・プログラム（ファイル・マネージャーのような）が、各ゲスト・オペレーティング・システムにおいて実行される。たとえ各アプリケーション、ミドルウェア・プログラム、及びゲスト・オペレーティング・システムが仮想マシンにおいて実行されていても、それらは、それらがそれら自身のプライベート実コンピュータにおいて実行されるように動作する。各仮想マシンにおけるゲスト・オペレーティング・システムは、Ｌｉｎｕｘ（LinusTorvaldsの商標）オペレーティング・システム、ＩＢＭ  ＣＭＳオペレーティング・システム、又は他のオペレーティング・システムであってもよい。各仮想マシン上の各ゲスト・オペレーティング・システムにおいて実行されるアプリケーション及びミドルウェアは、ＩＢＭ  ＤＢ２データ・ベース管理アプリケーション、ＩＢＭ Websphereアプリケーション、又は種々の他のプログラムであってもよい。
【０００６】
各仮想マシンのためのゲスト・オペレーティング・システム、ミドルウェア、アプリケーション、及びデータは、仮想マシンに割り振られた仮想プライベート・メモリの作業メモリ部分に格納される。各仮想マシンは、その仮想マシンに割り振られた仮想プライベート・メモリのキャッシュ・メモリ部分も含む。そのキャッシュ・メモリは、（ディスク）記憶装置からアクセスされたデータ及び関連するメタデータを含む。メタデータは、データ・ファイルへのディレクトリ及びサブ・ディレクトリ・パス、現在書き込まれている又は読み取られているファイルにおけるレコードの識別子、そのファイルのサイズ、そのファイル内のレコードのサイズ、そのファイル内のデータのタイプ（ＡＳＣＩＩ、ＥＢＣＤＩＣ、又はＢＩＮＡＲＹ）を含む。なお、ファイルは、ディスク等に格納されている。ほとんどのゲスト・オペレーティング・システムは、キャッシュ・メモリが満杯であるときにどのデータ・ページがキャッシュ・メモリに残るべきか、及び作業メモリが満杯であるときにどのデータ・ページが作業メモリに残るべきかを決定のためのアルゴリズムを含む。例えば、ほとんどのゲスト・オペレーティング・システムは、仮想マシンが必要とする新しいデータにとって十分な空きがキャッシュ・メモリに存在しないとき、最低使用頻度のデータをキャッシュ・メモリから外部記憶装置にアウトページするために最低使用頻度アルゴリズムを使用し、仮想マシンが必要とする新しいデータにとって十分な空きが作業メモリに存在しないとき、最低使用頻度のデータを作業メモリから外部記憶装置にアウトページするために同様のアルゴリズムを使用する。
【０００７】
仮想マシンは、ＲＡＭから仮想マシンに割り振られた仮想プライベート・メモリのスワップ・メモリ部分も含み得る。仮想マシンのスワップ・メモリは、キャッシュ・メモリ及び作業メモリからページ・アウトされたデータをディスク記憶装置にページ・アウトする代わりに、そのデータを受け取り及び格納するためのメモリ・ロケーションとして使用される。典型的な例では、仮想マシンが必要とするデータ（情報又はプログラム）を格納するに十分なキャッシュ・メモリ又は作業メモリが存在しないとき、仮想マシンにおけるゲスト・オペレーティング・システムは、仮想マシンのキャッシュ・メモリ又は作業メモリにおける最低使用頻度のメモリ・データ（４キロバイトのページのような）を識別する。次に、ゲスト・オペレーティング・システムは、最低使用頻度のメモリ・データを仮想マシンにおけるスワップ・メモリ又はディスク記憶装置にコピーし得る。ゲスト・オペレーティング・システムは、仮想マシンのアドミニストレータ定義の構成をベースに、スワップ・メモリ又は（ディスク）記憶装置のどちらにページ・アウトするべきかを決定する。アドミニストレータは、スワップ・メモリ又はディスクのどちらかにページ・アウトするように、又は満杯になるまではスワップ・メモリにページ・アウトし、しかる後、ディスクにページ・アウトするように、仮想マシンを構成し得る。ページ・アウトすることは、ゲスト・オペレーティング・システムが他の必要性の高いデータ・ページをスワップ・メモリ又は記憶装置からキャッシュ・メモリ又は作業メモリにインページすることを可能にするために、キャッシュ・メモリ及び作業メモリを解放する。
【０００８】
ゲスト・オペレーティング・システムのようなＬｉｎｕｘオペレーティング・システム（及び他のオペレーティング・システム）は、ハイパーバイザがそれに割り振る仮想プライベート・メモリを仮想化する。Ｌｉｎｕｘオペレーティング・システムは、それ自身の仮想化プロセスにおいて、ハイパーバイザがそれに割り振った仮想プライベート・メモリをオーバコミットする。例えば、Ｌｉｎｕｘ（又は他の）ゲスト・オペレーティング・システムを有する仮想マシンにハイパーバイザが３ギガバイトの仮想プライベート・メモリを割り振った、と仮定する。これに応答して、Ｌｉｎｕｘゲスト・オペレーティング・システムは、そのＬｉｎｕｘオペレーティング・システム上で実行されるプロセスに６ギガバイトを自身で仮想的に割り振り得る。これは、一般に、プロセスが平均的にはそれらに割り振られたメモリよりもずっと少ないメモリしか使用しないので、現実的である。それにもかかわらず、Ｌｉｎｕｘオペレーティング・システム（及びMicrosoftWindowsオペレーティング・システム）は陳腐化したデータを作業メモリ及びキャッシュ・メモリに保存する傾向がある。これは、それが今後必要とされる可能性があるためであり、これがアウトページング及びインページングを減らすためである。このために、Ｌｉｎｕｘオペレーティング・システムはスワップ・メモリを利用しないし、或いは、そのＬｉｎｕｘオペレーティング・システムがページ・アウトのためにスワップ・メモリを使用するように構成されているときでも、通常の動作中にそれのスワップ・メモリを実質的に十分に活用しない。
【０００９】
ハイパーバイザは、各仮想マシンが前の期間中に使用したメモリの量（作業セットと呼ばれる）を追跡する。ハイパーバイザは、全仮想マシンの「作業セット」の結合したサイズを使用して、それ自身にとって及びそれが実質的に創出し得る他の仮想マシンにとって使用可能なメモリの量を決定する。ハイパーバイザは、一般にはハイパーバイザ及びすべての仮想マシンがそれぞれのメモリ割り振り分すべてを使用するとは限らないので、それ自身に対して、及びそれが実質的に創出し得る他の仮想マシンに対して、使用可能な仮想プライベート・メモリをオーバコミットする。
【００１０】
時には、ハイパーバイザは、別の仮想マシンを形成するために、又はメモリが不足している既存のクリティカルな仮想マシンに割り振るために、それ自身のオペレーションのための追加のメモリを必要とすることがある。いずれのそのような場合でも、（ＩＢＭ  ｚ／ＶＭ ５.１オペレーティング・システムにおいて見られるような）ハイパーバイザは、仮想プライベート・メモリの既存の割り振り分の一部を自主的に放棄するように、過剰の仮想プライベート・メモリを有する仮想マシンに要求を行い得る。一般的には、その要求に応答して、仮想マシンが、それらの全仮想プライベート・メモリの割り振り分のうちの一部を放棄し、しかる後、仮想プライベート・メモリの残りの割り振り分に基づいて作業メモリ及びキャッシュ・メモリの量を再平衡化するであろう。或るゲスト・オペレーティング・システムは、それらのキャッシュ・メモリから仮想プライベート・メモリだけを、それが存在する場合、放棄するであろう。スワップ・メモリ割り振り分は、それが存在しても、影響を受けない。しかし、これは、それらの作業アイテムを効果的に遂行するには十分な量の仮想プライベート・メモリを持たない一部の又はすべての仮想マシンを見捨てることになり得る。
【先行技術文献】
【非特許文献】
【００１１】
【非特許文献１】ＩＢＭ社の出版物「z/VM Version 5 Release 1.0 General Information」（文書番号: ＧＣ２４−６０９５−００）
【非特許文献２】ＩＢＭ社の出版物「z/VM Version 5 Release 1 Updated Edition」（文書番号：ＧＣ２４−６０９５−０１）
【発明の概要】
【発明が解決しようとする課題】
【００１２】
本発明の目的は、メモリの割り振りをより良く管理する方法、仮想マシン制御プログラム、及びコンピュータ・システムを提供することにある。
【００１３】
本発明の別の目的は、仮想マシンへのメモリの割り振りをより良く管理する方法、仮想マシン制御プログラム、及びコンピュータ・システムを提供することことにある。
【課題を解決するための手段】
【００１４】
本発明は、仮想マシン制御プログラムによって複数の仮想マシンに割り振られた仮想メモリを管理するためのシステム、コンピュータ・プログラム、及び方法に関する。仮想マシンの各々は、仮想プライベート・メモリの割り振り分を作業メモリ、キャッシュ・メモリ、及びスワップ・メモリに分割させる。仮想マシン制御プログラムは、それが追加の仮想メモリ割り振り分を必要とするということを決定し、それに応答して、仮想マシン制御プログラムは、それら仮想マシンのそれぞれの作業メモリ及び／又はキャッシュ・メモリの一部をスワップ・メモリに変換するためのそれぞれの要求を仮想マシンに対して行う。
【００１５】
本発明の特徴によれば、各要求は、スワップ・メモリに変換するべき作業メモリ及び／又はキャッシュ・メモリの量を指定する。複数の仮想マシンは、それらのそれぞれの仮想マシンに割り振られた作業メモリ及び／又はキャッシュ・メモリを、それらのそれぞれの仮想マシンに割り振られたスワップ・メモリよりも十分に利用するようにプログラムされたそれぞれの複数のゲスト・オペレーティング・システムを含む。
【００１６】
更に、本発明は、仮想マシン制御プログラムによって複数の仮想マシンに割り振られた仮想メモリを管理するためのシステム、コンピュータ・プログラム、及び方法に関する。各仮想マシンは、作業メモリ、キャッシュ・メモリ、及びスワップ・メモリに分割された仮想プライベート・メモリの割り振り分を有する。仮想マシン制御プログラムは、それが、その仮想マシン制御プログラムに現在割り振られている割り振り分よりも少ない仮想メモリ割り振り分を必要とするということを決定し、それを応答して、仮想マシン制御プログラムは、仮想マシンのそれぞれのスワップ・メモリの一部を作業メモリ及び／又はキャッシュ・メモリに変換するための要求を仮想マシンに対して行う。
【００１７】
本発明の特徴によれば、各要求は、作業メモリ及び／又はキャッシュ・メモリに変換するべきスワップ・メモリの量を指定する。複数の仮想マシンが、それらのそれぞれの仮想マシンに割り振られた作業メモリ及び／又はキャッシュ・メモリを、それらのそれぞれの仮想マシンに割り振られたスワップ・メモリよりも十分に利用するようにプログラムされたそれぞれの複数のゲスト・オペレーティング・システムを含む。
【図面の簡単な説明】
【００１８】
【図１】本発明に従ってゲスト・オペレーティング・システム及びハイパーバイザ・プログラムを含む実コンピュータのブロック図である。
【図２】図１のハイパーバイザ・プログラムの機能及び動作を表すフローチャートである。
【図３】図１のゲスト・オペレーティング・システムの機能及び動作を表すフローチャートである。
【発明を実施するための形態】
【００１９】
図面を参照して本発明を詳細に説明する。図１は、本発明の一実施例に従って、概略的に表されたコンピュータ・システム１０を示す。コンピュータ・システム１０は、実ＣＰＵ２３、実メモリ（ＲＡＭ）２４、実Ｉ／Ｏ装置２５、実外部記憶装置２６、及び実外部オペレータ・コンソール２７を備えた実／物理コンピュータ２０を含む。本発明の１つの実施例では、コンピュータ２０は論理区分（ＬＰＡＲ）に分割されていない。しかし、本発明の別の実施例では、既知の論理区分化プログラム（図示されない）が、コンピュータ２０をＬＰＡＲに分割し、１つのそのようなＬＰＡＲが図１に示される。ＬＰＡＲは、コンピュータ２０の実コンピュータ資源の実又は論理区分化である。例えば、コンピュータ２０が８個のプロセッサを含む場合、論理区分化プログラムは、２個の実プロセッサを４個のＬＰＡＲの各々に割り振ることができるし、又は、論理区分化プログラムは、８個のプロセッサすべてを４個のＬＰＡＲの間でタイムシェアすることができる。論理区分化プログラムは、コンピュータ２０の全メモリを異なるＬＰＡＲの間で分割し、各ＬＰＡＲによって使用される論理アドレスを、実データが格納される実メモリのアドレスに変換する。例えば、実コンピュータ２０はＩＢＭ  ｚＳｅｒｉｅｓサーバであってもよいが、本発明は、他のサーバ・コンピュータ、又はパーソナル・コンピュータにおいても具現化されてもよい。コンピュータ２０がＬＰＡＲに分割される実施例では、論理区分化プログラムは、既知の「IBM Processor Resource/Resource Manager - ＰＲ／ＳＭ（商標）」プログラムであってもよい。
【００２０】
ハイパーバイザ・プログラム４０がコンピュータ２０において実行され、コンピュータ２０の実資源を仮想マシン３３、３４、及び３５（並びに図示されない他の仮想マシン）に分割する。言い換えれば、ハイパーバイザ・プログラム４０が、仮想マシン３３、３４、及び３５の各々に対する資源プラットフォームを形成するようにコンピュータ２０のＣＰＵ２３、メモリ２４、Ｉ／Ｏ装置２５、及びディスク記憶装置２６を含むコンピュータ資源を論理的に分割し、仮想化する。（コンピュータ２０が異なるＬＰＡＲに分割される場合、ハイパーバイザ・プログラム４０と同様の個別のハイパーバイザ・プログラムが各ＬＰＡＲにおいて実行され、各ＬＰＡＲを仮想マシンに論理的に分割する）。例えば、ハイパーバイザ４０は、実プロセッサ２３のタイムシェアと実ＲＡＭ ２４にマップされた一連の仮想プライベート・メモリとを各仮想マシン３３、３４、及び３５に割り振る。例えば、ハイパーバイザ４０は、仮想プライベート・メモリ１３３を仮想マシン３３に、仮想プライベート・メモリ１３４を仮想マシン３４に、及び仮想プライベート・メモリ１３５を仮想マシン３５に割り振る。仮想マシン３３、３４、又は３５がそれの仮想プライベート・メモリをアドレスするとき、ハイパーバイザ４０は仮想メモリ・アドレスを実メモリ２４の実アドレスに変換する。ハイパーバイザ４０は、それ自身又は他の仮想マシンに関して、多くの又は少ない仮想プライベート・メモリを求めるそのハイパーバイザ４０による要求を満たすために、それぞれのスワップ・メモリを増加又は減少させるようそれぞれの仮想マシンにおけるゲスト・オペレーティング・システムに要求し得る。
【００２１】
ゲスト・オペレーティング・システム４３、４４、及び４５はそれぞれの仮想マシン３３、３４、及び３５において実行され、アプリケーション５３、５４、及び５５、並びにミドルウェア６３、６４、及び６５がそれぞれのゲスト・オペレーティング・システム４３、４４、及び４５において実行される。しかし、各ゲスト・オペレーティング・システムにおいて実行される複数のアプリケーションが存在してもよい。例えば、ゲスト・オペレーティング・システムは、各仮想マシンにおける仮想プライベート・メモリ割り振り分の総量がほぼ同じままとなるように作業メモリ及びキャッシュ・メモリの同時増加又は減少を償うべく、スワップ・メモリを同時に増加又は減少させるためのハイパーバイザからの要求に応じるよう本発明に従って修正されたＬｉｎｕｘオペレーティング・システム又はＩＢＭ  ＣＭＳオペレーティング・システムであってもよい。更に、本発明によって修正されたMicrosoft Windowsオペレーティング・システム、Ｕｎｉｘオペレーティング・システム、SunMicrosystems Solaris（商標）オペレーティング・システム、又はHewlett Packard HP UXオペレーティング・システムのような他のゲスト・オペレーティング・システムも使用可能である。例えば、アプリケーション５３、５４、及び５５はＩＢＭ  ＤＢ２データ・ベース管理アプリケーションであってもよく、ミドルウェア６３、６４、及び６５はＩＢＭ  Websphereプログラムであってもよい。アプリケーション５３、５４、及び５５、並びにミドルウェア６３、６４、及び６５の性質は、それらが仮想プライベート・メモリを利用するという点を除けば、本発明の一部を形成しない。それぞれの仮想マシン３３、３４、及び３５内のゲスト・オペレーティング・システム４３、４４、及び４５は、仮想プライベート・メモリ１３３、１３４、及び１３５のそれぞれの割り振り分を、それぞれの（仮想・仮想）作業メモリ２３３、２３４、及び２３５、キャッシュ・メモリ３３３、３３４、及び３３５、並びにスワップ・メモリ４３３、４３４、及び４４５に分割する。ゲスト・オペレーティング・システム、ミドルウェア、及びアプリケーション、並びにコンピュータ１０における各仮想マシンに対するそれらのデータは、仮想マシンに割り振られたそれぞれの作業メモリに格納される。キャッシュ・メモリは、（ディスク）記憶装置又はスワップ・メモリからアクセスされたデータ、及び関連するメタデータを含む。メタデータは、データ・ファイルに対するディレクトリ及びサブ・ディレクトリ・パス、ファイル内のレコードのアイデンティティ、現在書き込まれている又は読み取られているファイル内のレコードの識別子、ファイルのサイズ、ファイルにおけるレコードのサイズ、ファイルにおけるデータのタイプ（ＡＳＣＩＩ、ＥＢＣＤＩＣ、又はＢＩＮＡＲＹ）を含み、この場合のファイルはディスク等に格納されている。ほとんどのゲスト・オペレーティング・システムは、キャッシュが満杯であるときにどのデータ・ページがキャッシュ・メモリに残るべきか、及び作業メモリが満杯であるときにどのデータ・ページが作業メモリに残るべきかを決定するための或るアルゴリズムを含む。例えば、ほとんどのゲスト・オペレーティング・システムは、��想マシンが必要とする新しいデータのための十分な空きがキャッシュ・メモリにないとき、キャッシュ・メモリから外部記憶装置又はスワップ・メモリに最小使用頻度のデータをアウトページするために最小使用頻度アルゴリズムを使用し、仮想マシンが必要とする新しいデータのための十分な空きが作業メモリにないとき、作業メモリから外部記憶装置又はスワップ・メモリに最小使用頻度のデータをアウトページするために同様のアルゴリズムを使用する。各スワップ・メモリは、ディスク記憶装置にデータをページ・アウトする代わりに、キャッシュ・メモリ及び作業メモリからページ・アウトされたデータを受け取って格納するために使用される。スワップ・メモリに存在するデータは必要に応じてページ・インされる。各ゲスト・オペレーティング・システムは、仮想マシンのユーザ構成に基づいてスワップ・メモリ又はディスク記憶装置のどちらにデータをページ・アウトするべきかを決定する。本発明では、ゲスト・オペレーティング・システムは、スワップ・メモリにデータをページ・アウトするように、及びスワップ・メモリからデータをページ・インするように構成される。典型的な例では、仮想マシンが必要とするデータ（情報又はプログラム）を格納するに十分なキャッシュ・メモリ又は作業メモリがないとき、仮想マシンにおけるゲスト・オペレーティング・システムは、その仮想マシンのキャッシュ・メモリ又は作業メモリにおける最小使用頻度のメモリ・データ（４キロバイト・ページのような）を識別する。しかる後、ゲスト・オペレーティング・システムは、仮想マシンのスワップ・メモリにその最小使用頻度のメモリ・ページをコピーする。これは、それぞれのゲスト・オペレーティング・システムがスワップ・メモリからキャッシュ・メモリ又は作業メモリに他の更なる必要なデータ・ページをインページすることを可能にするために、仮想マシンのキャッシュ・メモリ及び作業メモリを解放する。
【００２２】
ハイパーバイザ４０は、それ自体にも仮想プライベート・メモリ１４０を割り振り、それが所有する仮想プライベート・メモリ１４０を作業メモリ２４０、キャッシュ・メモリ３４０、及びスワップ・メモリ４４０に分割する。ハイパーバイザ４０は、共用メモリ（アクセス可能であり、仮想マシン３３、３４、及び３５のすべてによって共用される）も割り振る。
【００２３】
Ｌｉｎｕｘオペレーティング・システム（及びMicrosoftWindowsオペレーティング・システム及び他のオペレーティング・システム）は、ゲスト・オペレーティング・システムのように、ハイパーバイザ４０がそれに割り振る仮想プライベート・メモリを仮想化し得る。それ自身の仮想化プロセスにおいて、Ｌｉｎｕｘオペレーティング・システムは、ハイパーバイザ４０がそれに割り振られた仮想プライベート・メモリをオーバコミットする。例えば、３ギガバイトの仮想プライベート・メモリを仮想マシンに割り振られたハイパーバイザがＬｉｎｕｘ（又は他の）ゲスト・オペレーティング・システムを有するものと仮定する。これに応答して、Ｌｉｎｕｘゲスト・オペレーティング・システム自体が、事実上Ｌｉｎｕｘオペレーティング・システム上で実行されるプロセスに６ギガバイトを仮想的に割り振り得る。一般に、プロセスは、それらに割り振られたメモリよりも遥かに少量のメモリしか使用しないので、これは現実的である。
【００２４】
Ｌｉｎｕｘオペレーティング・システム（及びMicrosoftWindowsオペレーティング・システム）は、最近使用されてないデータをその作業メモリ及びキャッシュ・メモリに保持する傾向がある。これは、そのデータが今後必要とされる機会があり、これがその後のアウトページング及びインページングを減らすと思われるからである。このため、ページ・アウト（及びページ・イン）のためにスワップ・メモリを使用するように構成されるときでも、一般には、Ｌｉｎｕｘオペレーティング・システム（及びMicrosoftWindowsオペレーティング・システム）はスワップ・メモリを使用せず、又は、正規の動作中、実質的にスワップ・メモリを十分に活用しない。
【００２５】
下記の表１は、スワップ・メモリを使用するように構成されたとき、通常の動作中における或る瞬間のハイパーバイザ４０及びゲスト・オペレーティング・システム４３、４４、及び４５によるメモリ割り振りの一例である。
【表１】
2010532034.tif 000003
【００２６】
この例では、コンピュータ１０における全実メモリ１０（１５ギガバイト）がハイパーバイザ４０による結合されたすべての仮想メモリ割り振り分（４１.５ギガバイト）よりもかなり少ないということに留意されたい。この例では、それらのプロセスに対するすべてのゲスト・オペレーティング・システムによる全仮想・仮想メモリ割り振り分が遥かに大きい（８３ギガバイト）。これは、ハイパーバイザ４０及び仮想マシン３３〜３５が一般にはそれぞれの仮想メモリ割り振り分より遥かに少ない仮想メモリを使用するので、現実的である。この例では、コンピュータ１０におけるすべてのプロセスによる実メモリの消費量が、通常は、８ギガバイト及び１３ギガバイトの間で変わるということを仮定している。
【００２７】
この例では、その後の或る時点で、ハイパーバイザ４０は、自身のために追加の仮想プライベート・メモリ（例えば、更に約５ギガバイト）を必要とするものと仮定する。従って、ハイパーバイザ４０は、作業メモリ及び／又はキャッシュ・メモリを追加のスワップ・メモリに変換することによってそれぞれのスワップ・メモリを特定の量だけ増加させるように、それぞれの仮想マシン３３、３４、及び３５におけるゲスト・オペレーティング・システム４３、４４、及び４５に要求を行う。例えば、自身のための実メモリの約５ギガバイトを解放するために、ハイパーバイザ４０は、ゲスト・オペレーティング・システム４３が仮想プライベート・メモリ（即ち、作業メモリ及び／又はキャッシュ・メモリ）のうちの追加の２ギガバイトをスワップ・メモリに変換することを要求するであろうし、ハイパーバイザ４０は、ゲスト・オペレーティング・システム４４が仮想プライベート・メモリ（即ち、作業メモリ及び／又はキャッシュ・メモリ）のうちの追加の２ギガバイトをスワップ・メモリに変換することを要求するであろうし、ハイパーバイザ４０は、ゲスト・オペレーティング・システム４５が仮想プライベート・メモリ（即ち、作業メモリ及び／又はキャッシュ・メモリ）のうちの追加の１ギガバイトをスワップ・メモリに変換することを要求するであろう。これは合計５ギガバイトのスワップ・メモリの増加である。要求に応答して、各ゲスト・オペレーティング・システムは、その作業メモリ及び／又はキャッシュ・メモリの指定された量をスワップ・メモリに変換する。（いずれかのゲスト・オペレーティング・システムが要求に応えるに十分な使用可能な作業メモリ又はキャッシュ・メモリを持っていない場合、ゲスト・オペレーティング・システムは可能な程度にしか応えることができないであろう）。各ゲスト・オペレーティング・システムは、スワップ・メモリに変換するべき現在の作業メモリの量、及びハイパーバイザの要求に適合するようにスワップ・メモリを変換するべき現在のキャッシュ・メモリの量を決定するためにそれ自身のアルゴリズムを使用する。例えば、各ゲスト・オペレーティング・システムは、ハイパーバイザの要求に適合するように、それらの現在の割り振り分に基づいて、既存の作業メモリ及び既存のキャッシュ・メモリをスワップ・メモリに比例的に変換することができる。下記の表２は、先の例において、ハイパーバイザがその仮想プライベート・メモリ（即ち、作業メモリ及び／又はキャッシュ・メモリ）の指定された量をスワップ・メモリに変換するように各仮想メモリに要求し、各仮想マシンがその作業メモリ及びキャッシュ・メモリの比例的な減少に応じた後のメモリ割り振り分である。
【表２】
2010532034.tif 000004
【００２８】
この例では、ハイパーバイザ４０がその全仮想プライベート・メモリ割り振り分を５ギガバイトだけ増加させ、仮想マシン３３が結合した作業メモリ及びキャッシュ・メモリの２ギガバイトをスワップ・メモリに比例的に変換し、仮想マシン３４が、結合した作業メモリ及びキャッシュ・メモリの２ギガバイトをスワップ・メモリに比例的に変換し、仮想マシン３５が、結合した作業メモリ及びキャッシュ・メモリの１ギガバイトをスワップ・メモリに比例的に変換した。この例では、たとえハイパーバイザ４０への全メモリ割り振り分が５ギガバイトだけ増加しても、各仮想マシン３３、３４、及び３５への全仮想プライベート・メモリ割り振り分は変わらない。これは、各仮想マシンが平均的にはそれぞれのスワップ・メモリを実質的に十分に活用しないであろうが、アウトページングを容易にする必要があるとき、スワップ・メモリがそれぞれの仮想マシンにとって使用可能になるであろう、ということで実現可能である。（本発明の別の実施例では、各仮想マシンは、そのスワップ・メモリの量を増加させるであろうが、その作業メモリ及び／又はキャッシュ・メモリの量をもっと大きな量だけ減少させるであろう。）
【００２９】
各仮想マシンにおいて作業メモリ及びキャッシュ・メモリをスワップ・メモリに変換することによって、仮想マシンによる仮想プライベート・メモリの実際の全利用率はより小さくなるであろう。それは、一般にキャッシュ・メモリ及び作業メモリが実質的には必要性に関係なく利用されるが、スワップ・メモリは必要なときしか使用されないためである。これは、ハイパーバイザに余分な利用可能なメモリを提供する。各仮想マシンにおける余分なスワップ・メモリは、減少した作業メモリ及びキャッシュ・メモリを用いた多くのページ・アウト及びページ・インがあるので、各仮想マシンにおいてその減少した作業メモリ及びキャッシュ・メモリを補う傾向があり、追加のスワップ・メモリは、必要なときにページ・アウト及びページ・インを容易にする。
【００３０】
この例では、或るその後の時点で、ハイパーバイザ４０が自身のための更に少ない仮想プライベート・メモリ（例えば、約５ギガバイト以下）を必要とするものと仮定する。従って、ハイパーバイザ４０は、それぞれのスワップ・メモリの特定の量を作業メモリ及び／又はキャッシュ・メモリに変換するように、それぞれの仮想マシン３３、３４、及び３５におけるゲスト・オペレーティング・システム４３、４４、及び４５に要求し、それによって、各仮想マシンにおけるスワップ・メモリの量を減少させる。これに応答して、各ゲスト・オペレーティング・システムは、スワップ・メモリの特定の量を作業メモリ及び／又はキャッシュ・メモリに変換する。各ゲスト・オペレーティング・システムは、作業メモリに変換するべきスワップ・メモリの指定された量の大きさ、及びをキャッシュ・メモリに変換するべきスワップ・メモリの指定された量の大きさを決定するために、それ自身のアルゴリズムを使用する。前述の例では、各ゲスト・オペレーティング・システムは、それらの現在の割り振り分に基づいて、スワップ・メモリの指定された量を作業メモリ及びキャッシュ・メモリに比例的に変換し得る。例えば、ハイパーバイザ４０は、それ自身の使用のための約５ギガバイトの実メモリを放棄するために、ゲスト・オペレーティング・システム４３がスワップ・メモリの２ギガバイトを作業メモリ及び／又はキャッシュ・メモリに変換することを要求するであろうし、ハイパーバイザ４０は、ゲスト・オペレーティング・システム４４がスワップ・メモリの２ギガバイトを作業メモリ及び／又はキャッシュ・メモリに変換することを要求するであろうし、ハイパーバイザ４０は、ゲスト・オペレーティング・システム４５がスワップ・メモリの１ギガバイトを作業メモリ及び／又はキャッシュ・メモリに変換することを要求するであろう。これは、５ギガバイトのスワップ・メモリの全減少量である。それらの要求に応答して、各ゲスト・オペレーティング・システムは、その減少したスワップ・メモリの指定された量を作業メモリ及び／又はキャッシュ・メモリに変換する。各ゲスト・オペレーティング・システムは、ハイパーバイザの要求に適合するようにそれの現在の作業メモリ及び現在のキャッシュ・メモリを増加させるべき量を決定するためにそれ自身のアルゴリズムを使用する。例えば、各ゲスト・オペレーティング・システムは、作業メモリ及びキャッシュ・メモリの現在の割り振り分に基づいて、ハイパーバイザの要求に適合するように過剰のスワップ・メモリを作業メモリ及びキャッシュ・メモリに比例的に変換し得る。代替方法として、各ゲスト・オペレーティング・システムは、作業メモリ及びキャッシュ・メモリの現在の使用率に基づいて、過剰のスワップ・メモリを作業メモリ及びキャッシュ・メモリに変換し得る。更なる代替方法として、各ゲスト・オペレーティング・システムは、過剰のスワップ・メモリすべてをキャッシュ・メモリに変換し得る。前述の例の場合、下記の表３は、ハイパーバイザがそのスワップ・メモリの指定された量を作業メモリ及び／又はキャッシュ・メモリに変換することを各仮想メモリに要求した後のメモリ割り振り分であり、各仮想マシンは作業メモリ及びキャッシュ・メモリにおける比例的な増加に適合する。
【表３】
2010532034.tif 000005
【００３１】
この例では、ハイパーバイザ４０がその全仮想プライベート・メモリ割り振り分を５ギガバイトだけ減少させ、仮想マシン３３がスワップ・メモリの２ギガバイトを作業メモリ及びキャッシュ・メモリに変換し、仮想マシン３４がスワップ・メモリの２ギガバイトを作業メモリ及びキャッシュ・メモリに変換し、仮想マシン３５がスワップ・メモリの１ギガバイトを作業メモリ及びキャッシュ・メモリに変換した。この例では、たとえハイパーバイザ４０への全メモリ割り振り分が５ギガバイトだけ減少したとしても、各仮想マシンへの全仮想プライベート・メモリ割り振り分は変わらない。これは、平均して、各仮想マシンがその作業メモリ及びキャッシュ・メモリをスワップ・メモリよりも十分に利用するので、現実的である。
【００３２】
図２は、ハイパーバイザ４０のオペレーション及び機能を更に詳細に示す。ステップ６００において、ハイパーバイザ４０は、それ自身の仮想プライベート・メモリ１５０の現在の全使用率をモニタする。ハイパーバイザ４０は、それ自身の仮想プライベート・メモリからのアウトページング及びインページングの量をモニタすることによって仮想プライベート・メモリの現在の使用率をモニタする。ハイパーバイザの仮想プライベート・メモリが完全に又はほぼ完全に利用される場合、十分な使用可能の作業メモリ及びキャッシュ・メモリが存在しないので、大量のアウトページング及びインページングが存在するであろうし、その逆もあるであろう。例えば、不十分な作業メモリ及びキャッシュ・メモリの場合、所定期間中のページ・アウト及びページ・インの数は所定の上部閾値より大きいであろう。次に、ハイパーバイザ４０は、それ自身の仮想プライベート・メモリ１５０のそれの現在の総使用率が閾値よりも大きいかどうか、例えば、所定の上部閾値よりも大きい量のアウトページング及びインページングが存在するかどうかを決定する（判断ステップ６０４）。ハイパーバイザ４０の仮想プライベート・メモリ１５０の現在の総使用率が所定の閾値を越える場合（判断ステップ６０４の「イエス」分岐）、ハイパーバイザ４０は、そのハイパーバイザ４０が必要とする追加の仮想プライベート・メモリの総量を決定する（ステップ６０８）。ステップ６０８において、ハイパーバイザ４０は、ページ・アウト及びページ・インの数に基づいて、それが必要とする仮想プライベート・メモリの総量を決定する。ハイパーバイザ４０が経験したページ・アウト及びページ・インが多いほど、ハイパーバイザ４０が必要とする仮想プライベート・メモリが多くなる。次に、ハイパーバイザ４０は、そのハイパーバイザ４０が必要とする仮想プライベート・メモリの追加量を合算するために、各仮想マシンが追加するべきスワップ・メモリの量を決定する。例えば、ハイパーバイザ４０は、そのハイパーバイザ４０が必要とする量を合算するために、等量の仮想プライベート・メモリをスワップ・メモリに変換するように各仮想マシンに要請し得る。従って、ハイパーバイザが仮想プライベート・メモリの５ギガバイトを必要とし且つ５個の仮想マシンが存在する場合、ハイパーバイザ４０は、それ自身の作業メモリ及び／又はキャッシュ・メモリの１ギガバイトをスワップ・メモリに変換するように各仮想マシンに要求し得る。別の例として、仮想マシンが優先順位付けられ、ハイパーバイザ４０は、そのハイパーバイザ４０がスワップ・メモリに変換するよう高い優先順位の仮想マシンに要求する量よりも大きい量の作業メモリ及び／又はキャッシュ・メモリをスワップ・メモリに変換するように低い優先順位の仮想マシンに要求する。次に、ハイパーバイザ４０は、作業メモリ及び／又はキャッシュ・メモリのそれぞれの指定された量をスワップ・メモリに変換するための要求を仮想マシン３３、３４、及び３５の各々に送る（ステップ６３０）。上記の例では、ハイパーバイザ４０は、作業メモリ及び／又はキャッシュ・メモリの２ギガバイトをスワップ・メモリに変換するように仮想マシン３３に要求し、ハイパーバイザ４０は、作業メモリ及び／又はキャッシュ・メモリの２ギガバイトをスワップ・メモリに変換するように仮想マシン３４に要求し、そして、ハイパーバイザ４０は、作業メモリ及び／又はキャッシュ・メモリの１ギガバイトをスワップ・メモリに変換するように仮想マシン３５に要求する。
【００３３】
判断ステップ６０４を再び参照すると、ハイパーバイザ４０が追加の仮想プライベート・メモリを必要としない場合にはノー（ＮＯ）にブランチする。そのような場合、ハイパーバイザ４０は、それの現在のページ・アウト及びページ・インに基づいて、それが仮想プライベート・メモリのそれの現在の割り振りの一部を放棄し得るかどうかを決定する。ページ・アウト及びページ・インの数が非常に少ない場合、ハイパーバイザ４０は、ページ・アウト及びページ・インの現在の数がより高い（決定６２０）場合よりも多くの、仮想プライベート・メモリのそれの現在の割り振り分を放棄し得る。ハイパーバイザ４０が仮想プライベート・メモリのそれの現在の割り振り分の一部を放棄しないことを決定する場合、ハイパーバイザ４０は所定期間の後にステップ６００に戻り、再び仮想プライベート・メモリのそれの現在の使用率を再びモニタする。しかし、ハイパーバイザ４０が仮想プライベート・メモリのその現在の割り振りの一部を放棄することを決定する場合（決定ステップ６２０の「イエス」ブランチ）、ハイパーバイザ４０は、そのハイパーバイザ４０が放棄しようとする追加の仮想プライベート・メモリの全量を決定する（ステップ６２２）。ステップ６２２では、ハイパーバイザ４０は、上述のように、ページ・アウト及びページ・インの現在の数に基づいて、それが必要としない仮想プライベート・メモリの全量を決定する。次に、ハイパーバイザ４０は、そのハイパーバイザ４０によって放棄されるべき仮想プライベート・メモリの量を合算するために、各仮想マシンが作業メモリ及び／又はキャッシュ・メモリに変換するべきスワップ・メモリの量を決定する。例えば、ハイパーバイザ４０は、ハイパーバイザが必要としない等量の仮想プライベート・メモリを各仮想マシンに対して放棄し得る。代替方法として、ハイパーバイザ４０は、低い優先順位の仮想マシンに放棄されるシェアよりも大きいシェアの不必要な仮想プライベート・メモリを、高い優先順位の仮想マシンに放棄し得る。次に、ハイパーバイザ４０は、スワップ・メモリのそれぞれの指定された量を作業メモリ及び／又はキャッシュ・メモリに変換するための要求を仮想マシン３３、３４、及び３５の各々に送る（ステップ６１０）。上記の例では、ハイパーバイザ４０は、スワップ・メモリの２ギガバイトを作業メモリ及び／又はキャッシュ・メモリに変換するように仮想マシン３３に要求し、ハイパーバイザ４０は、スワップ・メモリの２ギガバイトを作業メモリ及び／又はキャッシュ・メモリに変換するように仮想マシン３４に要求し、ハイパーバイザ４０は、スワップ・メモリの１ギガバイトを作業メモリ及び／又はキャッシュ・メモリに変換するように仮想マシン３５に要求する。
【００３４】
図３は、仮想マシンの１つにおけるゲスト・オペレーティング・システムの機能及びオペレーションを示す。（他の仮想マシンにおける他のゲスト・オペレーティング・システムも同様に機能し、動作する）。ステップ７００において、ゲスト・オペレーティング・システムが開始する。次に、ゲスト・オペレーティング・システムは、ハイパーバイザ４０から、仮想プライベート・メモリの初期割り振り分を表す構成ファイルを読み取り、そしてその内部アルゴリズムを使用して仮想プライベート・メモリの初期割り振り分を作業メモリ、キャッシュ・メモリ、及びスワップ・メモリに分割して仮想プライベート・メモリの初期割り振り分を仮想化する（ステップ７０２）。例えば、内部アルゴリズムは、システム・アドミニストレータによって定義された初期設定に基づいて、仮想プライベート・メモリの初期割り振り分を作業メモリ、キャッシュ・メモリ、及びスワップ・メモリに分割し得る。次に、ゲスト・オペレーティング・システムは、例えば、それのアプリケーション及びミドルウェアを実行するために既知のオペレーティング・システム機能を遂行する（ステップ７０４）。次に、ゲスト・システム・オペレーティング・システムは、それのスワップ・メモリの量を変更するための要求をハイパーバイザ４０から受け取り（決定７０６）、その要求がスワップ・メモリの量を増加させるためのものか又は減少させるためのものかを、及びスワップ・メモリの要求された増加量又は減少量を決定する（判断ステップ７１０）。ハイパーバイザからの要求がスワップ・メモリを増加させるものである場合（判断ステップの「イエス」ブランチ）、ゲスト・オペレーティング・システムは、作業メモリ及び／又はキャッシュ・メモリの全仮想プライベート・メモリの割り振り分をその指定された量だけ減少させ、スワップ・メモリのその仮想プライベート・メモリ割り振り分をその指定された量だけ増加させる（ステップ７２０）。ステップ７２０では、ゲスト・オペレーティング・システムが、それ自身のアルゴリズム又はユーザ定義の構成に基づいて、それの作業メモリを減少させるべき量を決定する。更に、ステップ７２０では、ゲスト・オペレーティング・システムが、それ自身のアルゴリズムあるいはユーザ定義の構成に基づいて、それのキャッシュ・メモリを減少させるべき量も決定する。例えば、ゲスト・オペレーティング・システムは、それがそれ自身のスワップ・メモリを増加させる十分な量だけそれ自身のキャッシュ・メモリを減少させ得る。別の例では、ゲスト・オペレーティング・システムは、それの作業メモリ及びキャッシュ・メモリにおけるそれぞれの十分に活用しない量に対応するそれぞれの量だけその作業メモリ及びキャッシュ・メモリを減少させ得る。従って、大量の作業メモリが十分に活用されず、一方、少量のキャッシュ・メモリも十分に活用されない場合、ゲスト・オペレーティング・システムは、多量の作業メモリ及び少量のキャッシュ・メモリ（しかし、それぞれの一部）をスワップ・メモリに変換するであろう。再び判断ステップ７１０を再び参照すると、ハイパーバイザからの要求がスワップ・メモリを減少させるためのものである場合（判断ステップ７１０の「ノー」ブランチ）、ゲスト・オペレーティング・システムは、それの作業メモリ及び／又はキャッシュ・メモリをその指定された量だけ増加させ、それのスワップ・メモリをその指定された量だけ減少させる（ステップ７３０）。ステップ７３０では、ゲスト・オペレーティング・システムは、それ自身のアルゴリズム又はユーザ定義の構成に基づいてそれの作業メモリを増加させるべき量を決定する。更に、ステップ７３０では、ゲスト・オペレーティング・システムが、それ自身のアルゴリズム又はユーザ定義の構成に基づいて、それのキャッシュ・メモリを増加させるべき量も決定する。例えば、ゲスト・オペレーティング・システムは、それがそれ自身のスワップ・メモリを減少させる十分な量だけそれ自身のキャッシュ・メモリを増加させ得る。別の例として、ゲスト・オペレーティング・システムは、それの作業メモリ及び作業メモリのそれぞれの利用量に対応するそれぞれの量だけその作業メモリ及びキャッシュ・メモリを増加させ得る。従って、大量の作業メモリが利用され、一方、少量のキャッシュ・メモリが利用される場合、ゲスト・オペレーティング・システムは多量のスワップ・メモリを作業メモリに変換し、少量のスワップ・メモリをキャッシュ・メモリに（しかし、一部を各々に）変換するであろう。
【００３５】
ゲスト・オペレーティング・システム４３、４４及び４５は、磁気テープ又はディスク、光学的媒体、ＤＶＤ、半導体メモリ、メモリ・スティック等のようなコンピュータ読取り可能媒体８０からコンピュータ２０にロードされるか、又はインターネット８２からＴＣＰ／ＩＰアダプタ・カード８４を介してダウンロードされ得る。
【００３６】
ハイパーバイザ・プログラム４０は、磁気テープ又はディスク、光学的媒体、ＤＶＤ、半導体メモリ、メモリ・スティック等のようなコンピュータ読取り可能媒体９０からコンピュータ２０にロードされるか、又はインターネット８２からＴＣＰ／ＩＰアダプタ・カード８４を介してダウンロードされ得る。
【００３７】
上記説明に基づいて、仮想マシンのメモリを管理するためのコンピュータ・システム、方法、及びコンピュータ・プログラムが開示された。しかし、本発明の範囲から逸脱することなく多くの修正及び代用することが可能である。例えば、ハイパーバイザ４０は、自己のための追加の又は少量の仮想プライベート・メモリの必要性に直面するとき、それらのスワップ・メモリの量を変更することに加えて、１個又はそれ以上の仮想マシンに対する仮想プライベート・メモリの割り振り分の総量を変更し得る。従って、本発明は、限定を意味しない実例によって開示されたが、本発明の範囲を決定するためには「特許請求の範囲」の参照が行われるべきである。
【図１】
2010532034.tif 000006
【図２】
2010532034.tif 000007
【図３】
2010532034.tif 000008
【国際調査報告】
2010532034.tif 000009
2010532034.tif 000010