仮想マシンデバイスの動的割り当て
【課題】仮想マシンデバイスの動的割り当てに関する方法及びシステムを提供する。
【解決手段】特定のメモリ量をイジェクトする要求が、ハイパーバイザ200からvACPI318によって受信された場合、集約された単一のイジェクト通知が、vACPI318によって仮想メモリ資源オブジェクト330へ送信される。仮想メモリ資源オブジェクト330は、次に、要求を仮想メモリ資源ドライバ315へ送信する。仮想メモリ資源ドライバ315は、要求を満たすのに十分な仮想メモリデバイスが使用中でないか否かを判断する。仮想メモリ資源ドライバ315が、要求を満たすのに十分な仮想メモリデバイスを特定した場合、各仮想メモリデバイスに対する個別のイジェクト要求が、仮想メモリ資源ドライバ315によって内部で生成され、イジェクトされるメモリデバイスに対応する各仮想メモリオブジェクトへ送信される。
【解決手段】特定のメモリ量をイジェクトする要求が、ハイパーバイザ200からvACPI318によって受信された場合、集約された単一のイジェクト通知が、vACPI318によって仮想メモリ資源オブジェクト330へ送信される。仮想メモリ資源オブジェクト330は、次に、要求を仮想メモリ資源ドライバ315へ送信する。仮想メモリ資源ドライバ315は、要求を満たすのに十分な仮想メモリデバイスが使用中でないか否かを判断する。仮想メモリ資源ドライバ315が、要求を満たすのに十分な仮想メモリデバイスを特定した場合、各仮想メモリデバイスに対する個別のイジェクト要求が、仮想メモリ資源ドライバ315によって内部で生成され、イジェクトされるメモリデバイスに対応する各仮想メモリオブジェクトへ送信される。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、仮想マシンデバイスの動的割り当てに関する。
【背景技術】
【0002】
仮想マシンソフトウェアの使用は、近年、前例のない成長を経験している。仮想マシンソフトウェアは、当初、ソフトウェア試験プラットフォームとして設計されたが、実コンピュータシステムのハードウェアをエミュレート及び/又はシミュレートして、実マシン上で実行されるソフトウェアを、エミュレート/シミュレートされた環境内において変更なしで実行することを可能にする。仮想化ソフトウェアによって提供される仮想化されたマシンは、このような仮想マシン上で実行されているソフトウェアには、実コンピュータシステムに見える。
【0003】
実コンピュータシステムのホットスワップ可能なデバイスの出現によって、今や、実マシンと同じデバイスのホットスワップをエミュレート/シミュレートすることができる仮想マシンが利用可能である。この仮想ホットスワップ能力によって、単一の実コンピュータシステム上で実行される複数の仮想マシンは、仮想化されたハードウェア資源を必要に応じて仮想マシンの構成に動的に追加及び除去することが可能になる。さらに、仮想マシンは、実コンピュータシステムをエミュレート/シミュレートするため、Intel(登録商標)による拡張可能ファームウェアインターフェース(Extensible Firmware Interface: EFI)、及びオープン工業規格(open industry standard)であるアドバンストコンフィギュレーションアンドパワーインターフェース(Advanced Configuration and Power Interface: ACPI)のような、仮想化されたハードウェアに対する業界標準ファームウェアインターフェースを含む、実コンピュータシステムのファームウェアもエミュレート/シミュレートする。
【0004】
このようなファームウェアインターフェースを使用すると、ハードウェアは、実コンピュータシステム/仮想化されたコンピュータシステム内の組み込みファームウェアによって一連のオブジェクトとして表される。これらのオブジェクトのそれぞれは、コンピュータシステム内のプロセッサ上で実行されているソフトウェア(たとえば、オペレーティングシステム)によってファームウェアインターフェースを介して管理することができる。これらのオブジェクトによって、特に、デバイスを、「ホットスワップ可能」なデバイス、すなわち、コンピュータシステムを電源切断もリブートもすることなく、コンピュータシステムにプラグ接続するか又はコンピュータシステムからプラグ接続解除することができるデバイスとして、動作させることが可能になる。たとえば、デバイスがプラグ接続されたとき、ファームウェアは、そのデバイスハードウェアが初期化されると、そのデバイスが利用可能であることをオペレーティングシステムに通知する。この通知は、コンピュータシステムによって使用されるファームウェアインターフェースを介して(たとえば、1つ又は2つ以上のACPI通知メッセージを介して)提供される。同様に、デバイスがプラグ接続解除される場合、ファームウェアは、そのデバイスをイジェクト(eject)する要求が受信されたことをオペレーティングシステムに通知する。オペレーティングシステムは、デバイスが使用中でないことを検証し、次いで、(たとえば、1つ又は2つ以上のACPI要求を介して)ハードウェアを「イジェクト」する要求を、ファームウェアインターフェースを介して、ファームウェアへ発行する。
【0005】
ハードウェア資源を仮想化することができることによって、実マシンの実ハードウェア資源のサブセットを、サイズ又は容量が削減された個別の仮想ハードウェア資源として表すことが可能になり、さらに、これらの仮想化された資源を、1つ又は2つ以上の仮想マシンへのホットスワップイン及び仮想マシンからのホットスワップアウトが可能になる。したがって、たとえば、実コンピュータシステム内の1GBメモリを、その実コンピュータシステム上で実行される1つ又は2つ以上の仮想マシン間で動的に割り当てられる8つの128MBの仮想メモリとして表すことができる。仮想マシンに割り当てられた各資源は、そのマシンの仮想ファームウェアによってオブジェクト(たとえば、ACPIオブジェクト)として表される。このオブジェクトは、ファームウェアインターフェースによって、仮想マシン上で実行されるオペレーティングシステムに対してアクセス可能とされる。各仮想メモリは、必要に応じて、実コンピュータシステム上で実行される仮想マシンのいずれにも仮想的にホットスワップインすることができるし、そのような仮想マシンのいずれからも仮想的にホットスワップアウトすることもできる。
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかしながら、所与の資源のサブセットの割り当てにおいてより大きな柔軟性を達成するために、より多くのオブジェクトが使用されることがある。多くの仮想化された資源を使用することによって、実資源をよりきめ細かく割り当てることが可能になり、仮想資源が使用中であり再割り当てに利用可能でないとの理由で、仮想資源をイジェクトする要求が拒否される可能性が低減される。しかし、仮想化された資源の個数が増加するにつれて、多数の仮想化された資源を再割り当てすることに関連付けられるオーバーヘッド(overhead)が、システム、特に、多数のこのような再割り当てを行うシステム(たとえば、仮想マシン間で動的な負荷バランシングを行うシステム)の性能に悪影響を与える可能性がある。
【課題を解決するための手段】
【0007】
本発明にかかる方法は、実コンピュータシステム(100)上で仮想マシンソフトウェア(300)を実行することであって、該仮想マシンソフトウェアはハイパーバイザ(200)を含み、1つの仮想マシンが複数の仮想デバイス(220、221)を備える、仮想マシンソフトウェア(300)を実行することと、前記複数の仮想デバイスのそれぞれを、前記実コンピュータシステム内の実デバイス(110)の一意のサブセットに関連付けることと、前記ハイパーバイザが、前記仮想マシン内の仮想ファームウェア(316)へ、前記複数の仮想デバイスの1つ又は2つ以上の仮想デバイスを前記仮想マシンからイジェクト(eject)することを要求するイジェクト要求を送信することと、前記仮想ファームウェア内の仮想デバイス資源オブジェクトが、前記仮想マシン上で実行される仮想デバイス資源ドライバ(315)へ前記イジェクト要求を転送することと、前記仮想デバイス資源ドライバが、前記転送された要求に応答して、前記1つ又は2つ以上の仮想デバイスのそれぞれの前記仮想マシンからの個別のイジェクトを引き起こすこととを含む。
【0008】
ここで、この発明の例示的な実施形態の詳細な説明のために、添付図面を参照する。
【発明を実施するための最良の形態】
【0009】
表記及び用語
以下の説明及び特許請求の範囲の全体にわたって、特定のシステムコンポーネントを指すために、特定の用語が使用される。当業者には理解されるように、コンピュータ会社によって、1つのコンポーネントを異なる名前で指す場合がある。
本明細書は、名前は異なるが、機能は異ならないコンポーネントを区別することは意図していない。
以下の解説及び特許請求の範囲において、「含む(including)」及び「備える(comprising)」という用語は、限定のない様式で使用され、したがって、「〜を含むが、これらに限定されるものではない」ことを意味するように解釈されるべきである。
また、「結合する("couple" or "couples")」という用語は、間接的な電気接続、直接的な電気接続、光電気接続、又は無線電気接続のいずれをも意味するように意図されている。
したがって、第1のデバイスが第2のデバイスに結合する場合、その接続は、直接的な電気接続を通じている場合もあるし、他のデバイス及び接続を介して間接的な電気接続を通じている場合もあるし、光電気接続を通じている場合もあるし、無線電気接続を通じている場合もある。加えて、「システム」という用語は、2つ以上のハードウェアコンポーネント及びソフトウェアコンポーネント又はこれらのいずれか(ハードウェアコンポーネント及び/又はソフトウェアコンポーネント)の集まりを指し、コンピュータ、コンピュータの一部、コンピュータの組み合わせ等の電子デバイスを指すのに使用される場合がある。
さらに、「ソフトウェア」という用語は、ソフトウェアを記憶するのに使用される媒体にかかわらず、プロセッサ上で実行することができる任意の実行可能コードを含む。
したがって、不揮発性メモリに記憶されて、「組み込みファームウェア」と呼ばれることもあるコードは、ソフトウェアの定義内に含まれる。
また、「実コンピュータシステム」という用語は、たとえば、図2A及び図2Bに示すコンピュータシステム等、実際の物理的なコンピュータシステムを指す。
「仮想マシン」という用語は、コンピュータシステムのシミュレーション、エミュレーション、又は他の同様の機能表現を指し、それによって、仮想マシンは、1つ又は2つ以上の実コンピュータシステム又は物理コンピュータシステムを画定する物理的境界によって制約されない1つ又は2つ以上の機能コンポーネントを含む。
これらの機能コンポーネントには、実デバイス又は物理デバイス、相互接続バス、及びネットワーク、並びに、1つ又は2つ以上のCPU上で実行されるソフトウェアプログラムが含まれ得る。
仮想マシンは、たとえば、1つの実コンピュータシステム内又は物理コンピュータシステム内の一部の機能コンポーネントを含むが、すべての機能コンポーネントを含むとは限らない機能コンポーネントのサブセットを含む場合もあるし、複数の実コンピュータシステム又は物理コンピュータシステムの一部の機能コンポーネントを含む場合もあるし、或る実コンピュータシステム又は物理コンピュータシステムのすべての機能コンポーネントを含むが、別の実コンピュータシステム又は物理コンピュータシステムの一部のコンポーネントしか含まない場合もあるし、複数の実コンピュータシステム又は物理コンピュータシステムのすべての機能コンポーネントを含む場合もある。
他の多くの組み合わせが可能であり、このようなすべての組み合わせは、本開示の範囲内にあるように意図されている。
さらに、「仮想」という用語は、他のコンポーネント、システム、及び/又はサブシステム(たとえば、メモリ、ファームウェア、資源、ストレージデバイス、及び入出力デバイス)に関連付けられると、同様に、仮想マシンの一部又は仮想マシンソフトウェアプログラムの一部として実施されるコンポーネント、システム、及び/又はサブシステムのシミュレーション、エミュレーション、又は他の同様の機能表現を指す。
【0010】
図1は、少なくともいくつかの例示的な実施形態に従って構成された、仮想化ソフトウェア(ハイパーバイザ及び1つ又は2つ以上の仮想マシンを含む)を実行するのに適切なコンピュータシステム100を示している。
このコンピュータシステム100は、処理ロジック102(たとえば、マイクロプロセッサ)及び揮発性ストレージ110(たとえば、ランダムアクセスメモリ、すなわちRAM)を含む。ハイパーバイザ200(「仮想マシンモニタ」と呼ぶことがある)は、メモリ110にロードされてプロセッサ102によって実行される1つ又は2つ以上の仮想マシンソフトウェアプログラムを含む。
ハイパーバイザ200は、ハイパーバイザ200によって作成される動作環境内で実行される1つ又は2つ以上の仮想マシンに対する制御、及びそれらの仮想マシン間の分離を維持する。いくつかの例示的な実施形態では、ハイパーバイザ200は、基本入出力システム(BIOS)ソフトウェアを含む一方、他の例示的な実施形態では、BIOSが、ハイパーバイザ200を含む。
さらに他の例示的な実施形態では、ハイパーバイザ200は、プロセッサ102上で実行されるオペレーティングシステムの一部として含まれる一方、さらに他の例示的な実施形態では、ハイパーバイザ200は、プロセッサ102上ですでに実行されているオペレーティングシステム内でアプリケーションプログラムとして実行される。
BIOSソフトウェア、オペレーティングシステムソフトウェア、及びハイパーバイザソフトウェアの他の変形及び組み合わせは、当業者に明らかになり、このようなすべての変形及び組み合わせは、本開示の範囲内にある。
【0011】
図1のハイパーバイザ200によって作成される動作環境内で実行される3つの仮想マシン(VM300、VM400、及びVM500)が示されている。
各仮想マシンは、コンピュータシステム100と同様の実コンピュータシステムをエミュレート及び/又はシミュレートする。
したがって、各仮想マシンは、仮想プロセッサ(vProc312、412、及び512)、仮想メモリデバイス(VM300内に含まれるvMem[0](220)及びvMem[1](221)、VM400内のvMem[2](222)、及びVM500内のvMem[3](223))、並びに仮想ファームウェア(vF/W316、416、及び516)を含む。
仮想ファームウェアは、たとえば、BIOSコード(図示せず)、及び仮想マシン300の仮想ファームウェア316内に示されている仮想アドバンストコントロールアンドパワーインターフェース(virtual Advanced Control and Power Interface:vACPI)ファームウェア318のようなハードウェア・電力制御インターフェースコードのような、実ファームウェアに含まれるプログラムと同様のプログラムを含む。
図1の実施形態は、仮想ACPIファームウェアを含むが、他の例示的な実施形態は、他の仮想化されたハードウェアインターフェースファームウェア(たとえば、Intel(登録商標)による拡張可能ファームウェアインターフェース(EFI))を含んでもよく、このようなすべての仮想化されたハードウェアインターフェースファームウェアが、本開示の範囲内にある。
【0012】
vACPI318は、仮想マシン300の仮想化されたハードウェアに対するインターフェースを、仮想プロセッサ312上で実行されるソフトウェアに提供する。
このようなソフトウェアには、たとえば、図1のオペレーティングシステム314(仮想メモリ資源ドライバ(vMRDvr)315を含む)が含まれる。
vACPI318は、一連のオブジェクトを保持する。これらのオブジェクトは、それぞれが仮想化されたハードウェア要素に対応すると共に、それぞれが仮想化された各ハードウェア要素の構成及びステータスに関連する情報を含む。
したがって、たとえば、vMemObj[0](仮想メモリオブジェクト320)は、vMem[0](仮想メモリデバイス220)に関連する情報を含む仮想マシン300内の仮想化されたACPIオブジェクトであり、同様に、vMemObj[1](仮想メモリオブジェクト321)は、vMem[1](仮想メモリデバイス221)に関連する情報を含む仮想化されたACPIオブジェクトである。
これらのオブジェクト内に含まれる情報は、たとえば、仮想マシン300のメモリアドレス空間内のデバイスのベースアドレス及びアドレス範囲を含むことができる。
【0013】
図1の例示的な実施形態の仮想ACPI318は、仮想メモリ資源オブジェクト(vMRsrcObj)330も保持する。この仮想メモリ資源オブジェクト330は、仮想デバイスグループ(ここでは、図示されている例示的な実施形態における、仮想メモリデバイスグループ)のデバイスタイプに関連付けられている。
仮想メモリ資源オブジェクト330は、仮想メモリデバイスグループを「ホットスワップ」する(すなわち、対応する仮想マシンをリセットもリブートもすることなく仮想メモリデバイスを追加又は除去する)ためのステータス及び制御の単一のポイントを提供する。
したがって、たとえば、特定のメモリ量をイジェクトする要求が、(たとえば、汎用イベント、すなわちGPEを介して)ハイパーバイザ200からvACPI318によって受信された場合、集約された単一のイジェクト通知が、vACPI318によって仮想メモリ資源オブジェクト330へ送信される。
仮想メモリ資源オブジェクト330は、次に、要求を仮想メモリ資源ドライバ315へ送信する。
また、仮想メモリ資源オブジェクト330は、デバイスオブジェクトグループについてのステータス及び/又は情報を得るための単一のポイントも提供する。
したがって、たとえば、仮想メモリ資源ドライバ315は、仮想マシン内の仮想メモリのそれぞれについての情報(たとえば、イジェクトされる仮想メモリデバイスに対応する仮想メモリオブジェクトのリスト、又は、イジェクトされるメモリ量のサイズ)を得る単一のクエリを仮想メモリ資源オブジェクト330へ発行することができる。
【0014】
仮想メモリ資源ドライバ315は、オペレーティングシステム314と対話(interact)して、要求を満たすのに十分な仮想メモリデバイスが使用中でないか、又は、メモリ外へ移動させることができる(メモリをイジェクトに利用可能にする)スワップ可能なタスクによってアクセスされているか否かを判断する。
仮想メモリ資源ドライバ315が、要求を満たすのに十分な仮想メモリデバイスを特定した場合、各仮想メモリデバイスに対する個別のイジェクト要求が、仮想メモリ資源ドライバ315によって内部(すなわち、オペレーティングシステム314内)で生成され、イジェクトされるメモリデバイスに対応する各仮想メモリオブジェクト(たとえば、図1の仮想メモリオブジェクト320)へ送信される。
個別のイジェクトオペレーションが完了すると、仮想メモリ資源オブジェクト330は、(仮想メモリ資源ドライバ315から受信された完了ステータスに基づいて)集約されたイジェクトの完了ステータスをハイパーバイザ200へ返す。
【0015】
図1の例示的な実施形態の仮想メモリ資源オブジェクト330及び仮想メモリ資源ドライバ315のオペレーションによって、単一の要求を使用して複数の仮想メモリデバイスのイジェクトが可能になり、さらに、1つ又は2つ以上の仮想メモリデバイスのイジェクトを最初に試みることなく、イジェクト要求を拒否することが可能になる。
仮想メモリ資源ドライバ315は、個別のイジェクト要求のいずれかが個別の仮想メモリオブジェクトへ発行される前に、十分なメモリデバイスが要求を満たすのに利用可能であるかどうかを判断するので、要求は、当該要求が、要求されたメモリ量のイジェクトに成功することができない限り、システムの構成を変更しないことになる。
さらに、仮想メモリ資源ドライバ315へ向けられる単一の要求を使用することに加えて、オリジナルの要求を満たすのに必要な数の個別のイジェクトのみを発行する結果、各仮想メモリデバイスの個別のイジェクトを試みると共に、場合によっては、仮想マシン内の仮想メモリデバイスのすべてのイジェクトを1つずつ試みなければならないハイパーバイザと比較して、イジェクトオペレーションはより効率的なものとなる。
また、必要とされるものよりも多くのメモリデバイスが利用可能である場合、仮想メモリ資源ドライバは、イジェクトするのに必要なオーバーヘッドが最小となる仮想メモリデバイス(たとえば、データをスワップアウトすることを必要とするメモリではなく、使用中でないメモリ)をイジェクトするように選択することができる。このような選択によって、イジェクトの実行全体をより高速にすることが可能になる。
【0016】
少なくともいくつかの例示的な実施形態では、ハイパーバイザ200によって仮想資源オブジェクト330へ送信される、仮想メモリデバイスをイジェクトする要求は、イジェクトするメモリ量ではなく、イジェクト用に特定された特定の仮想メモリデバイスのリストを含む。
このような実施形態では、仮想資源オブジェクト330は、この場合も、仮想メモリ資源ドライバ315へ単一の要求を送信するが、すべての利用可能なメモリをスキャンして要求を満たすのに十分な仮想メモリデバイスを見つける代わりに、要求内にリストされた仮想メモリデバイスのみがチェックされて、それらの仮想メモリデバイスに対応するメモリ範囲が使用中でない(又は、スワップ可能なタスクによって使用されている)かが判断される。
リストされたデバイスのいずれかが利用可能でない場合、要求は拒否される。そうでない場合、イジェクト要求は、リストされた各仮想メモリデバイスに対応する各仮想メモリオブジェクトへ送信される。
個別のイジェクトオペレーションがすべて完了すると、仮想メモリ資源オブジェクト330は、(仮想メモリ資源ドライバ315から受信された完了ステータスに基づいて)集約されたイジェクトの完了ステータスをハイパーバイザ200へ返す。
【0017】
少なくともいくつかの例示的な実施形態では、図1(仮想メモリデバイス224〜227(vMem[4〜7])に示すように、ハイパーバイザ200は、割り当てられていない仮想メモリデバイス(すなわち、仮想マシンに追加されていない仮想メモリデバイス)のレポジトリを保持する。
必要に応じて、このレポジトリ内の仮想メモリデバイスを、1つ又は2つ以上の仮想マシンからイジェクトされた仮想メモリデバイスと共に利用して、仮想メモリデバイスを、コンピュータシステム100内の他の仮想マシンに提供することができる。
他の例示的な実施形態では、ハイパーバイザ200内の割り当てられていない仮想メモリデバイスのプールに仮想メモリデバイスを保持するのではなく、仮想メモリデバイスが必要とされる時に、「オンザフライ(on-the-fly)」で仮想メモリデバイスを作成して、仮想マシンに割り当てることができる。
【0018】
図1の例示的な実施形態の割り当てられている仮想メモリデバイス及び割り当てられていない仮想メモリデバイスの双方は、メモリ110内に含まれる1つ又は2つ以上の実メモリデバイスの一部分又はサブセットを含む。
したがって、たとえば、少なくとも1つの例示的な実施形態では、メモリ110は4つの1GBの実メモリデバイス(たとえば、4つの1GBのデュアルインラインメモリモジュール、すなわちDIMM)を含む一方、各仮想メモリデバイスは、256MBの実メモリのみを含む。
仮想メモリ220〜223は、第1のDIMMの1GBのメモリを利用し、仮想メモリ224〜227は、第2のDIMMの1GBのメモリを利用し、残りの2つのDIMMの残りの2GBのメモリは、ハイパーバイザ200、及び/又は、実プロセッサ102上で実行される他の任意のアプリケーションプログラムによって利用される。
実メモリデバイス及び仮想メモリデバイスの他の多くの編成及び組み合わせが当業者に明らかになり、このようなすべての編成及び組み合わせは、本開示の範囲内にある。
【0019】
図2A及び図2Bは、図1の仮想化ソフトウェア(ハイパーバイザ200並びに仮想マシン300、400、及び500)を実行するのに適した例示的なコンピュータシステム100を示している。
図示するように、例示的なコンピュータシステム100は、筐体180、ディスプレイ140、及び入力デバイス170を含む。
コンピュータシステム100は、処理ロジック102、揮発性ストレージ110、及び不揮発性ストレージ164を含む。
処理ロジック102は、ハードウェア(たとえば、マイクロプロセッサ)、ソフトウェア(たとえば、マイクロコード)、又はハードウェア及びソフトウェアの組み合わせで実施することができる。
また、コンピュータシステム100は、コンピュータ可読媒体も含む。コンピュータ可読媒体には、揮発性ストレージ110(たとえば、ランダムアクセスメモリ(RAM))、不揮発性ストレージ164(たとえば、フラッシュRAM、読み出し専用メモリ(ROM)、ハードディスクドライブ、フロッピー(登録商標)ディスク(たとえば、フロッピー(登録商標)194)、コンパクトディスク読み出し専用メモリ(CD−ROM、たとえばCD196)、又はそれらの組み合わせが含まれる。
【0020】
揮発性ストレージ110及び不揮発性ストレージ164のいずれか又は双方は、たとえば、処理ロジック102によって実行されてコンピュータシステム100に本明細書で説明する機能の一部又はすべてを提供するソフトウェアを含む。
また、コンピュータシステム100は、ネットワークインターフェース(ネットI/F)162も含む。このネットワークインターフェース162によって、コンピュータシステム100は、イーサネット(登録商標)ジャック192によって図2Aの例において表されているローカルエリアネットワーク及び/又は有線若しくは無線のワイドエリアネットワークを介して情報を受信することが可能になる。
ビデオインターフェース(ビデオI/F)142は、ディスプレイ140に結合している。
ユーザは、入力デバイス170(たとえば、キーボード)及び/又はポインティングデバイス172(たとえば、マウス)を介してこのステーションと対話する。入力デバイス170及びポインティングデバイス172は、周辺インターフェース168に結合している。
ディスプレイ140は、入力デバイス170及び/又はポインティングデバイス172と共に、合わせてユーザインターフェースとして動作することができる。
【0021】
コンピュータシステム100は、さまざまなバスが一連のハブ又はブリッジを通じて、図2Bに示されるさまざまな要素を相互接続するバスベースのコンピュータとすることができる。
これら一連のハブ又はブリッジは、メモリコントローラハブ(MCH)104(「ノースブリッジ」と呼ばれることがある)及びインターフェースコントローラハブ(ICH)106(「サウスブリッジ」と呼ばれることがある)を含む。
図2Bの例示的な実施例のバスは、処理ロジック102をMCH104に結合するフロントサイドバス103と、ビデオインターフェース142をMCH104に結合するアクセラレーテッド(accelerated)グラフィックスポート(AGP)バス141と、ネットワークインターフェース162、不揮発性ストレージ164、周辺インターフェース168、及びICH106を互いに結合する周辺コンポーネント相互接続(PCI)バス161と、1つ又は2つ以上のPCIエクスプレスデバイス152をMCH104に結合するPCIエクスプレス(PCIe)バス151と、MCH104を揮発性ストレージ110内のデュアルインラインメモリモジュール(DIMM)120及び130に結合するメモリバス111とを含む。
【0022】
周辺インターフェース168は、入力デバイス170からの信号、及び、ポインティングデバイス172のような他の入力デバイスから信号を受け取り、それらの信号をPCIバス161上での通信に適した形式に変換する。
ビデオインターフェース142は、AGPバス141から情報を受け取ってこの情報をディスプレイ140に適した形式に変換するグラフィックスカード又は他の適切なビデオインターフェースを含むことができる。
処理ロジック102は、他のシステム要素から情報を収集する。この情報には、周辺インターフェース168からの入力データ、ならびに、不揮発性ストレージ164若しくは揮発性ストレージ110からのプログラム命令及び他のデータ、又は、ネットワークインターフェース162を介してローカルエリアネットワーク若しくはワイドエリアネットワークに結合されている他のシステム(たとえば、実行可能コードのコピーを記憶して配信するのに使用されるサーバ)からのプログラム命令及び他のデータが含まれる。
処理ロジック102は、プログラム命令(たとえば、ハイパーバイザ200)を実行し、それに応じてデータを処理する。
プログラム命令は、さらに、ビデオインターフェース142及びディスプレイ140を介してユーザに提示される情報のようなデータを他のシステム要素へ送信するように処理ロジック102を構成することができる。
ネットワークインターフェース162によって、処理ロジック102は、ネットワーク(たとえば、インターネット)を介して他のシステムと通信することが可能になる。
揮発性ストレージ110は、処理ロジック102の情報の低遅延一時ストアとして機能することができ、不揮発性ストレージ164は、情報の長期(ただし、より高遅延)ストアとして機能することができる。
【0023】
処理ロジック102は、不揮発性ストレージ164に記憶されているか又はネットワークインターフェース162を介して受信される1つ若しくは2つ以上のプログラムに従って動作し、したがって、コンピュータシステム100が、全体としてそのように動作する。
処理ロジック102は、より高速なアクセスを得るために、プログラムの一部を揮発性ストレージ110にコピーすることができ、入力デバイス170のユーザによる作動に応答して、プログラム間の切り換え又は追加プログラムの実行を行うことができる。
追加プログラムは、不揮発性ストレージ164から取り出すこともできるし、ネットワークインターフェース162を介して他のロケーションから取り出すか又は受信することもできる。
これらのプログラムの1つ又は2つ以上は、コンピュータシステム100上で実行され、コンピュータシステムに、本明細書で開示する少なくともいくつかの機能を実行させる。
【0024】
図3A〜図3Cは、少なくともいくつかの例示的な実施形態による、ハイパーバイザ200による仮想メモリデバイスの仮想マシン300への追加の一例を示している。
図3Aは、仮想メモリデバイス220がすでに割り当てられている仮想マシン300を示している。
仮想メモリデバイス221及び222は、ハイパーバイザ200によって、割り当てられていない仮想メモリデバイスとして割り当てられていない仮想メモリデバイスのプール内に保持される。これらのメモリデバイスは、要求に応じた割り当てに利用可能である。
図3A〜図3Cの実施形態は、割り当てられていない仮想メモリデバイスの静的なプールを示しているが、他の例示的な実施形態では、たとえば、割り当て要求が(たとえば、コンピュータシステム100に関連付けられているユーザインターフェースを介して要求を発行するオペレータから)ハイパーバイザ200によって受信されるとき、ハイパーバイザ200によって監視されるように各仮想マシンにすでに割り当てられているメモリのメモリ利用レベルに基づいて要求がハイパーバイザ200によって内部で生成されるとき、又は、仮想マシンによって監視された仮想マシンのメモリ利用レベルに基づいて、要求が仮想マシンによってハイパーバイザに対して生成されるときのように、「必要に応じて」又は「オンザフライ」で、仮想メモリデバイスは生成される。
【0025】
図3Aは、仮想メモリデバイスを追加する初期要求351が、ハイパーバイザ200からvACPI318へ送信されることを示している。
ハイパーバイザ200は、仮想「ホットプラグ」指示の形で(たとえば、ACPI汎用イベント、すなわちGPEとして)、この追加要求をvACPI318へ送信する。
図3Bは、この要求に対する初期応答を示している。図3Bでは、仮想メモリデバイス221及び222と、仮想プロセッサ312を仮想メモリデバイス220に結合するバスとの間の破線によって示すように、これまで割り当てられていない仮想メモリデバイス221及び222は、仮想マシン300に追加されるが、使用するにはまだ利用可能ではない。
仮想メモリデバイスオブジェクト321及び322は、vACPI318によって追加されるが、(それらのメモリオブジェクトの周りの破線によって示すように)オペレーティングシステム314によってまだ認識されていない。
少なくともいくつかの例示的な実施形態では、仮想メモリオブジェクトは、ACPI名前空間にすでに存在し、仮想メモリデバイス221及び222の追加に応答して、無効状態から有効状態に遷移される。
ホットプラグ通知353は、仮想メモリ資源オブジェクト330によって仮想メモリ資源ドライバ315へ転送され、仮想メモリデバイス221及び222の、仮想マシン300の仮想ハードウェア構成への追加を反映する。
少なくともいくつかの例示的な実施形態では、この通知353は、新しい仮想メモリオブジェクトのリストを含む一方、他の例示的な実施形態では、新しい仮想メモリオブジェクトのリストは、仮想メモリ資源オブジェクトに問い合わせることによって得ることができる。
仮想メモリ資源ドライバ315は、2つの個別のホットプラグ指示(各仮想メモリデバイス当たり1つ)を内部で生成し、図3Cに示すように、追加された仮想メモリデバイスをオペレーティングシステム314に認識させ、オペレーティングシステム314の構成にデバイスを追加させる。
個別の仮想メモリデバイスの追加が完了すると、仮想メモリ資源ドライバ315は、完了ステータス355を仮想メモリ資源オブジェクト330へ送信し、仮想メモリ資源オブジェクト330は、次に、完了ステータス357をハイパーバイザ200へ返す。
【0026】
図4A〜図4Dは、少なくともいくつかの例示的な実施形態による、或る仮想マシンから別の仮想マシンへの仮想メモリデバイスの再割り当てを示している。
図4Aは、仮想メモリデバイス220、221、及び222が仮想マシン300にすでに割り当てられており、仮想メモリデバイス223が仮想マシン400にすでに割り当てられていることを示している。
仮想マシン300から仮想マシン400へ仮想メモリを再割り当てする要求が受信されると、ハイパーバイザ200は、まず、「ホットプラグ解除」指示又は「イジェクト」指示の形で、必要なメモリを割り当て解除する要求451をvACPI318へ発行する。
いくつかの例示的な実施形態では、この要求は、イジェクトされる仮想メモリデバイスをリストすることができる一方、他の例示的な実施形態では、この要求は、仮想メモリ資源ドライバ315内の1つ又は2つ以上の機能によって、必要な個数の仮想メモリデバイスに変換される1つ又は2つ以上のメトリック(たとえば、メモリサイズ、並びに、ライトバック、揮発性/不揮発性、及びメモリ局所性のようなメモリ属性)を指定することができる。
【0027】
図4Bを参照すると、仮想集約オブジェクト330が、イジェクト要求453を仮想メモリ資源ドライバ315へ転送し、仮想メモリ資源ドライバ315は、必要な資源が利用可能であるか否かを判断する。
図4A〜図4Eの例では、この要求は、2つの利用可能な仮想メモリデバイスを必要とする。これらの仮想メモリデバイスは、仮想マシン300から利用可能であり、仮想マシン300から割り当て解除(イジェクト)することができる。
図4Bは、仮想メモリオブジェクト321及び322の除去(メモリオブジェクトの破線の境界によって示される)、並びに、対応する仮想メモリデバイス221及び222の除去(仮想メモリデバイス221及び222から、仮想メモリデバイス220を仮想プロセッサ312に結合するバスへの破線によって示される)を示している。
図4Cに示すように、イジェクトの完了時に、仮想メモリ資源ドライバ315は、完了ステータス455を仮想メモリ資源オブジェクト330へ送信し、仮想メモリ資源オブジェクト330は、次に、完了ステータス457をハイパーバイザ200へ送信する。
【0028】
仮想メモリデバイス221及び222が仮想メモリ300から割り当て解除(イジェクト)されると、ハイパーバイザ200は、割り当て要求459(図4C)をvACPI418へ(「ホットプラグ」指示の形で)送信し、vACPI418は、次に、(破線の仮想メモリオブジェクトによって示される)仮想メモリオブジェクト421及び422を作成し、図4Dに示すように、ホットプラグ通知メッセージ(461)を仮想メモリ資源ドライバ415へ送信する。
また、図4Dは、仮想メモリデバイス221及び222の仮想マシン400への追加、並びに、この追加の初期認識(仮想メモリデバイス221及び222から、仮想メモリデバイス223及び仮想プロセッサ412を結合するバスへの破線によって示される)も示している。
図4Eは、仮想メモリデバイス221及び222の仮想マシン400への結果の割り当てを示している。
仮想メモリデバイス221及び222の追加の完了時に、仮想メモリ資源ドライバは、完了ステータス463を仮想メモリ資源オブジェクト430へ送信し、仮想メモリ資源オブジェクト430は、次に、完了ステータス465をハイパーバイザ200へ送信する。
【0029】
少なくともいくつかの例示的な実施形態では、仮想デバイスをイジェクトする要求は、イジェクトされる仮想デバイスの特性を反映するメトリックを含む。
したがって、たとえば、(たとえば、図4A〜図4Cに示すような)このような実施形態における仮想メモリデバイス221及び222を仮想マシン300からイジェクトする要求は、イジェクトされるメモリ量をバイト単位で含む。
仮想メモリデバイスのサイズに基づいて、必要なデバイスの個数が、仮想メモリ資源ドライバ315内の1つ又は2つ以上の機能によって求められ、要求を満たすのに必要な個数のデバイスが使用中でない場合、又は、スワップ可能なタスクによって使用中であり、したがって利用可能である場合には、要求された仮想メモリはイジェクトされる。
たとえば、各仮想メモリデバイスが128MBであり、且つ2GBのメモリのイジェクトが要求されている場合、少なくとも16個のメモリデバイスが利用可能であるときに、要求されたメモリはイジェクトされることになる。
異なるタイプの仮想デバイスに関連付けられている他のメトリックを、仮想デバイスをイジェクトする要求内で使用することができ、このようなすべてのメトリック及び仮想デバイスのタイプが、本開示の範囲内にある。
デバイスの要求が、特定の要求されたデバイスのリストではなくメトリックに基づくものとすることを可能にすることによって、仮想デバイスを要求及び/又は管理するプログラム(たとえば、仮想マシン上で実行されるアプリケーション、又は、ハイパーバイザプログラム)は、要求を行うことに先立って、どのデバイスが使用中であるのかの追跡もチェックも行う必要がないため、資源の負荷バランシングが簡単になる。
【0030】
図5は、少なくともいくつかの例示的な実施形態による、或る仮想マシンから別の仮想マシンへ1つ又は2つ以上の仮想デバイスをイジェクトして追加する(すなわち、再割り当てする)方法600を示している。
第1の仮想マシンに現在割り当てられている1つ又は2つ以上の仮想デバイスをイジェクト(割り当て解除)する要求が、第1の仮想マシン内の仮想資源オブジェクトへ送信される(ブロック602)。
ブロック604に示すように、この要求を満たすのに必要な仮想デバイスが、第1の仮想マシンによって使用中でない場合、又は、使用中であるが利用可能にできる場合(たとえば、メモリデバイスからスワップアウト及び/又はクリアすることができるコンテンツ)、要求された仮想デバイスは、第1の仮想マシンからイジェクトされる(ブロック608)。
ブロック604に示すように、必要な仮想デバイスが使用中であり、且つ、利用可能にできない(すなわち、クリアすることができない)場合、この要求は拒否され(ブロック606)、この方法は終了する(ブロック616)。
イジェクトされたデバイスが、別の仮想マシンに追加されることになっていない場合(ブロック610)、この方法は終了する(ブロック616)。
要求された仮想デバイスがイジェクトされ(ブロック608)、且つ、イジェクトされたデバイスの1つ又は2つ以上が第2の仮想マシンに追加されることになっている場合(ブロック610)、1つ又は2つ以上の仮想デバイスを仮想マシンに追加するコマンドが、第2の仮想マシン内の仮想デバイス資源オブジェクトへ送信される(ブロック612)。
この要求によって、仮想ホットプラグイベントが、仮想マシンによって生成されサービスされて、要求された仮想デバイスが、仮想マシンに追加され(ブロック614)、この方法は終了する(ブロック616)。
【0031】
上記解説は、本発明の原理及びさまざまな実施形態の例示であるように意図されている。
上記開示が十分に理解されると、当業者には、多数の変形及び変更が明らかになる。
たとえば、本開示の例示的な実施形態の少なくともいくつかは、仮想メモリデバイスの追加及びイジェクトを説明しているが、ほんの数例を挙げると、仮想ハードディスク、仮想ネットワークアダプタ、仮想プロセッサ(1つの仮想マシン当たり2つ以上、又は、異なる実効速度の仮想プロセッサ)のようなデバイスを含む、他の多くの仮想デバイスを、本明細書で説明するように追加及びイジェクトすることができる。
また、説明したイジェクト要求に設けられるメトリックは、メモリサイズに限定されるものではなく、イジェクトすることができる多くの仮想デバイスに関連付けられる任意の数のメトリックとすることができる。
このようなメトリックの例には、仮想ハードディスクの転送帯域幅、仮想ネットワークアダプタの通信帯域幅、仮想プロセッサの個数、(たとえば、100万命令毎秒、すなわちMIPS単位の)仮想プロセッサの処理能力、及び仮想プロセッサの速度が含まれ得る。
これらのそれぞれは、1つ又は2つ以上の実デバイスの対応するメトリックの比率として表すことができる。
添付の特許請求の範囲は、このようなすべての変形及び変更を包含するように解釈されることが意図されている。
【図面の簡単な説明】
【0032】
【図1】少なくともいくつかの例示的な実施形態による、仮想マシンソフトウェアの複数のインスタンスを実行するコンピュータシステムを示す図である。
【図2A】少なくともいくつかの例示的な実施形態に従って構成された図1のコンピュータシステムの一例を示す図である。
【図2B】少なくともいくつかの例示的な実施形態に従って構成された図2Aのコンピュータシステムのブロック図である。
【図3A】少なくともいくつかの例示的な実施形態に従って追加の仮想メモリ資源を仮想マシンに追加する一例を示す図である。
【図3B】少なくともいくつかの例示的な実施形態に従って追加の仮想メモリ資源を仮想マシンに追加する一例を示す図である。
【図3C】少なくともいくつかの例示的な実施形態に従って追加の仮想メモリ資源を仮想マシンに追加する一例を示す図である。
【図4A】少なくともいくつかの例示的な実施形態に従って或る仮想マシンから別の仮想マシンへ仮想メモリ資源を再割り当てする一例を示す図である。
【図4B】少なくともいくつかの例示的な実施形態に従って或る仮想マシンから別の仮想マシンへ仮想メモリ資源を再割り当てする一例を示す図である。
【図4C】少なくともいくつかの例示的な実施形態に従って或る仮想マシンから別の仮想マシンへ仮想メモリ資源を再割り当てする一例を示す図である。
【図4D】少なくともいくつかの例示的な実施形態に従って或る仮想マシンから別の仮想マシンへ仮想メモリ資源を再割り当てする一例を示す図である。
【図4E】少なくともいくつかの例示的な実施形態に従って或る仮想マシンから別の仮想マシンへ仮想メモリ資源を再割り当てする一例を示す図である。
【図5】少なくともいくつかの例示的な実施形態に従って第1の仮想マシンから仮想デバイスをイジェクトして、オプションとして、仮想デバイスを第2の仮想マシンに再割り当てするための方法を示す図である。
【符号の説明】
【0033】
100・・・コンピュータシステム
102・・・処理ロジック
110・・・揮発性ストレージ
140・・・ディスプレイ
142・・・ビデオI/F
152・・・PCIeデバイス
162・・・ネットI/F
164・・・不揮発性ストレージ
168・・・周辺I/F
172・・・ポインティングデバイス
170・・・入力デバイス
200・・・ハイパーバイザ
300,400,500・・・仮想マシン(VM)
312,412,512・・・仮想プロセッサ(vProc)
220,221,222,223・・・仮想メモリデバイス(vMem)
314・・・オペレーティングシステム
315・・・仮想メモリ資源ドライバ(vMRDvr)
316,416,516・・・仮想ファームウェア(vF/W)
318・・・vACPI
320,321,421,422・・・仮想メモリオブジェクト
330,430・・・仮想メモリ資源オブジェクト
【技術分野】
【0001】
本発明は、仮想マシンデバイスの動的割り当てに関する。
【背景技術】
【0002】
仮想マシンソフトウェアの使用は、近年、前例のない成長を経験している。仮想マシンソフトウェアは、当初、ソフトウェア試験プラットフォームとして設計されたが、実コンピュータシステムのハードウェアをエミュレート及び/又はシミュレートして、実マシン上で実行されるソフトウェアを、エミュレート/シミュレートされた環境内において変更なしで実行することを可能にする。仮想化ソフトウェアによって提供される仮想化されたマシンは、このような仮想マシン上で実行されているソフトウェアには、実コンピュータシステムに見える。
【0003】
実コンピュータシステムのホットスワップ可能なデバイスの出現によって、今や、実マシンと同じデバイスのホットスワップをエミュレート/シミュレートすることができる仮想マシンが利用可能である。この仮想ホットスワップ能力によって、単一の実コンピュータシステム上で実行される複数の仮想マシンは、仮想化されたハードウェア資源を必要に応じて仮想マシンの構成に動的に追加及び除去することが可能になる。さらに、仮想マシンは、実コンピュータシステムをエミュレート/シミュレートするため、Intel(登録商標)による拡張可能ファームウェアインターフェース(Extensible Firmware Interface: EFI)、及びオープン工業規格(open industry standard)であるアドバンストコンフィギュレーションアンドパワーインターフェース(Advanced Configuration and Power Interface: ACPI)のような、仮想化されたハードウェアに対する業界標準ファームウェアインターフェースを含む、実コンピュータシステムのファームウェアもエミュレート/シミュレートする。
【0004】
このようなファームウェアインターフェースを使用すると、ハードウェアは、実コンピュータシステム/仮想化されたコンピュータシステム内の組み込みファームウェアによって一連のオブジェクトとして表される。これらのオブジェクトのそれぞれは、コンピュータシステム内のプロセッサ上で実行されているソフトウェア(たとえば、オペレーティングシステム)によってファームウェアインターフェースを介して管理することができる。これらのオブジェクトによって、特に、デバイスを、「ホットスワップ可能」なデバイス、すなわち、コンピュータシステムを電源切断もリブートもすることなく、コンピュータシステムにプラグ接続するか又はコンピュータシステムからプラグ接続解除することができるデバイスとして、動作させることが可能になる。たとえば、デバイスがプラグ接続されたとき、ファームウェアは、そのデバイスハードウェアが初期化されると、そのデバイスが利用可能であることをオペレーティングシステムに通知する。この通知は、コンピュータシステムによって使用されるファームウェアインターフェースを介して(たとえば、1つ又は2つ以上のACPI通知メッセージを介して)提供される。同様に、デバイスがプラグ接続解除される場合、ファームウェアは、そのデバイスをイジェクト(eject)する要求が受信されたことをオペレーティングシステムに通知する。オペレーティングシステムは、デバイスが使用中でないことを検証し、次いで、(たとえば、1つ又は2つ以上のACPI要求を介して)ハードウェアを「イジェクト」する要求を、ファームウェアインターフェースを介して、ファームウェアへ発行する。
【0005】
ハードウェア資源を仮想化することができることによって、実マシンの実ハードウェア資源のサブセットを、サイズ又は容量が削減された個別の仮想ハードウェア資源として表すことが可能になり、さらに、これらの仮想化された資源を、1つ又は2つ以上の仮想マシンへのホットスワップイン及び仮想マシンからのホットスワップアウトが可能になる。したがって、たとえば、実コンピュータシステム内の1GBメモリを、その実コンピュータシステム上で実行される1つ又は2つ以上の仮想マシン間で動的に割り当てられる8つの128MBの仮想メモリとして表すことができる。仮想マシンに割り当てられた各資源は、そのマシンの仮想ファームウェアによってオブジェクト(たとえば、ACPIオブジェクト)として表される。このオブジェクトは、ファームウェアインターフェースによって、仮想マシン上で実行されるオペレーティングシステムに対してアクセス可能とされる。各仮想メモリは、必要に応じて、実コンピュータシステム上で実行される仮想マシンのいずれにも仮想的にホットスワップインすることができるし、そのような仮想マシンのいずれからも仮想的にホットスワップアウトすることもできる。
【発明の開示】
【発明が解決しようとする課題】
【0006】
しかしながら、所与の資源のサブセットの割り当てにおいてより大きな柔軟性を達成するために、より多くのオブジェクトが使用されることがある。多くの仮想化された資源を使用することによって、実資源をよりきめ細かく割り当てることが可能になり、仮想資源が使用中であり再割り当てに利用可能でないとの理由で、仮想資源をイジェクトする要求が拒否される可能性が低減される。しかし、仮想化された資源の個数が増加するにつれて、多数の仮想化された資源を再割り当てすることに関連付けられるオーバーヘッド(overhead)が、システム、特に、多数のこのような再割り当てを行うシステム(たとえば、仮想マシン間で動的な負荷バランシングを行うシステム)の性能に悪影響を与える可能性がある。
【課題を解決するための手段】
【0007】
本発明にかかる方法は、実コンピュータシステム(100)上で仮想マシンソフトウェア(300)を実行することであって、該仮想マシンソフトウェアはハイパーバイザ(200)を含み、1つの仮想マシンが複数の仮想デバイス(220、221)を備える、仮想マシンソフトウェア(300)を実行することと、前記複数の仮想デバイスのそれぞれを、前記実コンピュータシステム内の実デバイス(110)の一意のサブセットに関連付けることと、前記ハイパーバイザが、前記仮想マシン内の仮想ファームウェア(316)へ、前記複数の仮想デバイスの1つ又は2つ以上の仮想デバイスを前記仮想マシンからイジェクト(eject)することを要求するイジェクト要求を送信することと、前記仮想ファームウェア内の仮想デバイス資源オブジェクトが、前記仮想マシン上で実行される仮想デバイス資源ドライバ(315)へ前記イジェクト要求を転送することと、前記仮想デバイス資源ドライバが、前記転送された要求に応答して、前記1つ又は2つ以上の仮想デバイスのそれぞれの前記仮想マシンからの個別のイジェクトを引き起こすこととを含む。
【0008】
ここで、この発明の例示的な実施形態の詳細な説明のために、添付図面を参照する。
【発明を実施するための最良の形態】
【0009】
表記及び用語
以下の説明及び特許請求の範囲の全体にわたって、特定のシステムコンポーネントを指すために、特定の用語が使用される。当業者には理解されるように、コンピュータ会社によって、1つのコンポーネントを異なる名前で指す場合がある。
本明細書は、名前は異なるが、機能は異ならないコンポーネントを区別することは意図していない。
以下の解説及び特許請求の範囲において、「含む(including)」及び「備える(comprising)」という用語は、限定のない様式で使用され、したがって、「〜を含むが、これらに限定されるものではない」ことを意味するように解釈されるべきである。
また、「結合する("couple" or "couples")」という用語は、間接的な電気接続、直接的な電気接続、光電気接続、又は無線電気接続のいずれをも意味するように意図されている。
したがって、第1のデバイスが第2のデバイスに結合する場合、その接続は、直接的な電気接続を通じている場合もあるし、他のデバイス及び接続を介して間接的な電気接続を通じている場合もあるし、光電気接続を通じている場合もあるし、無線電気接続を通じている場合もある。加えて、「システム」という用語は、2つ以上のハードウェアコンポーネント及びソフトウェアコンポーネント又はこれらのいずれか(ハードウェアコンポーネント及び/又はソフトウェアコンポーネント)の集まりを指し、コンピュータ、コンピュータの一部、コンピュータの組み合わせ等の電子デバイスを指すのに使用される場合がある。
さらに、「ソフトウェア」という用語は、ソフトウェアを記憶するのに使用される媒体にかかわらず、プロセッサ上で実行することができる任意の実行可能コードを含む。
したがって、不揮発性メモリに記憶されて、「組み込みファームウェア」と呼ばれることもあるコードは、ソフトウェアの定義内に含まれる。
また、「実コンピュータシステム」という用語は、たとえば、図2A及び図2Bに示すコンピュータシステム等、実際の物理的なコンピュータシステムを指す。
「仮想マシン」という用語は、コンピュータシステムのシミュレーション、エミュレーション、又は他の同様の機能表現を指し、それによって、仮想マシンは、1つ又は2つ以上の実コンピュータシステム又は物理コンピュータシステムを画定する物理的境界によって制約されない1つ又は2つ以上の機能コンポーネントを含む。
これらの機能コンポーネントには、実デバイス又は物理デバイス、相互接続バス、及びネットワーク、並びに、1つ又は2つ以上のCPU上で実行されるソフトウェアプログラムが含まれ得る。
仮想マシンは、たとえば、1つの実コンピュータシステム内又は物理コンピュータシステム内の一部の機能コンポーネントを含むが、すべての機能コンポーネントを含むとは限らない機能コンポーネントのサブセットを含む場合もあるし、複数の実コンピュータシステム又は物理コンピュータシステムの一部の機能コンポーネントを含む場合もあるし、或る実コンピュータシステム又は物理コンピュータシステムのすべての機能コンポーネントを含むが、別の実コンピュータシステム又は物理コンピュータシステムの一部のコンポーネントしか含まない場合もあるし、複数の実コンピュータシステム又は物理コンピュータシステムのすべての機能コンポーネントを含む場合もある。
他の多くの組み合わせが可能であり、このようなすべての組み合わせは、本開示の範囲内にあるように意図されている。
さらに、「仮想」という用語は、他のコンポーネント、システム、及び/又はサブシステム(たとえば、メモリ、ファームウェア、資源、ストレージデバイス、及び入出力デバイス)に関連付けられると、同様に、仮想マシンの一部又は仮想マシンソフトウェアプログラムの一部として実施されるコンポーネント、システム、及び/又はサブシステムのシミュレーション、エミュレーション、又は他の同様の機能表現を指す。
【0010】
図1は、少なくともいくつかの例示的な実施形態に従って構成された、仮想化ソフトウェア(ハイパーバイザ及び1つ又は2つ以上の仮想マシンを含む)を実行するのに適切なコンピュータシステム100を示している。
このコンピュータシステム100は、処理ロジック102(たとえば、マイクロプロセッサ)及び揮発性ストレージ110(たとえば、ランダムアクセスメモリ、すなわちRAM)を含む。ハイパーバイザ200(「仮想マシンモニタ」と呼ぶことがある)は、メモリ110にロードされてプロセッサ102によって実行される1つ又は2つ以上の仮想マシンソフトウェアプログラムを含む。
ハイパーバイザ200は、ハイパーバイザ200によって作成される動作環境内で実行される1つ又は2つ以上の仮想マシンに対する制御、及びそれらの仮想マシン間の分離を維持する。いくつかの例示的な実施形態では、ハイパーバイザ200は、基本入出力システム(BIOS)ソフトウェアを含む一方、他の例示的な実施形態では、BIOSが、ハイパーバイザ200を含む。
さらに他の例示的な実施形態では、ハイパーバイザ200は、プロセッサ102上で実行されるオペレーティングシステムの一部として含まれる一方、さらに他の例示的な実施形態では、ハイパーバイザ200は、プロセッサ102上ですでに実行されているオペレーティングシステム内でアプリケーションプログラムとして実行される。
BIOSソフトウェア、オペレーティングシステムソフトウェア、及びハイパーバイザソフトウェアの他の変形及び組み合わせは、当業者に明らかになり、このようなすべての変形及び組み合わせは、本開示の範囲内にある。
【0011】
図1のハイパーバイザ200によって作成される動作環境内で実行される3つの仮想マシン(VM300、VM400、及びVM500)が示されている。
各仮想マシンは、コンピュータシステム100と同様の実コンピュータシステムをエミュレート及び/又はシミュレートする。
したがって、各仮想マシンは、仮想プロセッサ(vProc312、412、及び512)、仮想メモリデバイス(VM300内に含まれるvMem[0](220)及びvMem[1](221)、VM400内のvMem[2](222)、及びVM500内のvMem[3](223))、並びに仮想ファームウェア(vF/W316、416、及び516)を含む。
仮想ファームウェアは、たとえば、BIOSコード(図示せず)、及び仮想マシン300の仮想ファームウェア316内に示されている仮想アドバンストコントロールアンドパワーインターフェース(virtual Advanced Control and Power Interface:vACPI)ファームウェア318のようなハードウェア・電力制御インターフェースコードのような、実ファームウェアに含まれるプログラムと同様のプログラムを含む。
図1の実施形態は、仮想ACPIファームウェアを含むが、他の例示的な実施形態は、他の仮想化されたハードウェアインターフェースファームウェア(たとえば、Intel(登録商標)による拡張可能ファームウェアインターフェース(EFI))を含んでもよく、このようなすべての仮想化されたハードウェアインターフェースファームウェアが、本開示の範囲内にある。
【0012】
vACPI318は、仮想マシン300の仮想化されたハードウェアに対するインターフェースを、仮想プロセッサ312上で実行されるソフトウェアに提供する。
このようなソフトウェアには、たとえば、図1のオペレーティングシステム314(仮想メモリ資源ドライバ(vMRDvr)315を含む)が含まれる。
vACPI318は、一連のオブジェクトを保持する。これらのオブジェクトは、それぞれが仮想化されたハードウェア要素に対応すると共に、それぞれが仮想化された各ハードウェア要素の構成及びステータスに関連する情報を含む。
したがって、たとえば、vMemObj[0](仮想メモリオブジェクト320)は、vMem[0](仮想メモリデバイス220)に関連する情報を含む仮想マシン300内の仮想化されたACPIオブジェクトであり、同様に、vMemObj[1](仮想メモリオブジェクト321)は、vMem[1](仮想メモリデバイス221)に関連する情報を含む仮想化されたACPIオブジェクトである。
これらのオブジェクト内に含まれる情報は、たとえば、仮想マシン300のメモリアドレス空間内のデバイスのベースアドレス及びアドレス範囲を含むことができる。
【0013】
図1の例示的な実施形態の仮想ACPI318は、仮想メモリ資源オブジェクト(vMRsrcObj)330も保持する。この仮想メモリ資源オブジェクト330は、仮想デバイスグループ(ここでは、図示されている例示的な実施形態における、仮想メモリデバイスグループ)のデバイスタイプに関連付けられている。
仮想メモリ資源オブジェクト330は、仮想メモリデバイスグループを「ホットスワップ」する(すなわち、対応する仮想マシンをリセットもリブートもすることなく仮想メモリデバイスを追加又は除去する)ためのステータス及び制御の単一のポイントを提供する。
したがって、たとえば、特定のメモリ量をイジェクトする要求が、(たとえば、汎用イベント、すなわちGPEを介して)ハイパーバイザ200からvACPI318によって受信された場合、集約された単一のイジェクト通知が、vACPI318によって仮想メモリ資源オブジェクト330へ送信される。
仮想メモリ資源オブジェクト330は、次に、要求を仮想メモリ資源ドライバ315へ送信する。
また、仮想メモリ資源オブジェクト330は、デバイスオブジェクトグループについてのステータス及び/又は情報を得るための単一のポイントも提供する。
したがって、たとえば、仮想メモリ資源ドライバ315は、仮想マシン内の仮想メモリのそれぞれについての情報(たとえば、イジェクトされる仮想メモリデバイスに対応する仮想メモリオブジェクトのリスト、又は、イジェクトされるメモリ量のサイズ)を得る単一のクエリを仮想メモリ資源オブジェクト330へ発行することができる。
【0014】
仮想メモリ資源ドライバ315は、オペレーティングシステム314と対話(interact)して、要求を満たすのに十分な仮想メモリデバイスが使用中でないか、又は、メモリ外へ移動させることができる(メモリをイジェクトに利用可能にする)スワップ可能なタスクによってアクセスされているか否かを判断する。
仮想メモリ資源ドライバ315が、要求を満たすのに十分な仮想メモリデバイスを特定した場合、各仮想メモリデバイスに対する個別のイジェクト要求が、仮想メモリ資源ドライバ315によって内部(すなわち、オペレーティングシステム314内)で生成され、イジェクトされるメモリデバイスに対応する各仮想メモリオブジェクト(たとえば、図1の仮想メモリオブジェクト320)へ送信される。
個別のイジェクトオペレーションが完了すると、仮想メモリ資源オブジェクト330は、(仮想メモリ資源ドライバ315から受信された完了ステータスに基づいて)集約されたイジェクトの完了ステータスをハイパーバイザ200へ返す。
【0015】
図1の例示的な実施形態の仮想メモリ資源オブジェクト330及び仮想メモリ資源ドライバ315のオペレーションによって、単一の要求を使用して複数の仮想メモリデバイスのイジェクトが可能になり、さらに、1つ又は2つ以上の仮想メモリデバイスのイジェクトを最初に試みることなく、イジェクト要求を拒否することが可能になる。
仮想メモリ資源ドライバ315は、個別のイジェクト要求のいずれかが個別の仮想メモリオブジェクトへ発行される前に、十分なメモリデバイスが要求を満たすのに利用可能であるかどうかを判断するので、要求は、当該要求が、要求されたメモリ量のイジェクトに成功することができない限り、システムの構成を変更しないことになる。
さらに、仮想メモリ資源ドライバ315へ向けられる単一の要求を使用することに加えて、オリジナルの要求を満たすのに必要な数の個別のイジェクトのみを発行する結果、各仮想メモリデバイスの個別のイジェクトを試みると共に、場合によっては、仮想マシン内の仮想メモリデバイスのすべてのイジェクトを1つずつ試みなければならないハイパーバイザと比較して、イジェクトオペレーションはより効率的なものとなる。
また、必要とされるものよりも多くのメモリデバイスが利用可能である場合、仮想メモリ資源ドライバは、イジェクトするのに必要なオーバーヘッドが最小となる仮想メモリデバイス(たとえば、データをスワップアウトすることを必要とするメモリではなく、使用中でないメモリ)をイジェクトするように選択することができる。このような選択によって、イジェクトの実行全体をより高速にすることが可能になる。
【0016】
少なくともいくつかの例示的な実施形態では、ハイパーバイザ200によって仮想資源オブジェクト330へ送信される、仮想メモリデバイスをイジェクトする要求は、イジェクトするメモリ量ではなく、イジェクト用に特定された特定の仮想メモリデバイスのリストを含む。
このような実施形態では、仮想資源オブジェクト330は、この場合も、仮想メモリ資源ドライバ315へ単一の要求を送信するが、すべての利用可能なメモリをスキャンして要求を満たすのに十分な仮想メモリデバイスを見つける代わりに、要求内にリストされた仮想メモリデバイスのみがチェックされて、それらの仮想メモリデバイスに対応するメモリ範囲が使用中でない(又は、スワップ可能なタスクによって使用されている)かが判断される。
リストされたデバイスのいずれかが利用可能でない場合、要求は拒否される。そうでない場合、イジェクト要求は、リストされた各仮想メモリデバイスに対応する各仮想メモリオブジェクトへ送信される。
個別のイジェクトオペレーションがすべて完了すると、仮想メモリ資源オブジェクト330は、(仮想メモリ資源ドライバ315から受信された完了ステータスに基づいて)集約されたイジェクトの完了ステータスをハイパーバイザ200へ返す。
【0017】
少なくともいくつかの例示的な実施形態では、図1(仮想メモリデバイス224〜227(vMem[4〜7])に示すように、ハイパーバイザ200は、割り当てられていない仮想メモリデバイス(すなわち、仮想マシンに追加されていない仮想メモリデバイス)のレポジトリを保持する。
必要に応じて、このレポジトリ内の仮想メモリデバイスを、1つ又は2つ以上の仮想マシンからイジェクトされた仮想メモリデバイスと共に利用して、仮想メモリデバイスを、コンピュータシステム100内の他の仮想マシンに提供することができる。
他の例示的な実施形態では、ハイパーバイザ200内の割り当てられていない仮想メモリデバイスのプールに仮想メモリデバイスを保持するのではなく、仮想メモリデバイスが必要とされる時に、「オンザフライ(on-the-fly)」で仮想メモリデバイスを作成して、仮想マシンに割り当てることができる。
【0018】
図1の例示的な実施形態の割り当てられている仮想メモリデバイス及び割り当てられていない仮想メモリデバイスの双方は、メモリ110内に含まれる1つ又は2つ以上の実メモリデバイスの一部分又はサブセットを含む。
したがって、たとえば、少なくとも1つの例示的な実施形態では、メモリ110は4つの1GBの実メモリデバイス(たとえば、4つの1GBのデュアルインラインメモリモジュール、すなわちDIMM)を含む一方、各仮想メモリデバイスは、256MBの実メモリのみを含む。
仮想メモリ220〜223は、第1のDIMMの1GBのメモリを利用し、仮想メモリ224〜227は、第2のDIMMの1GBのメモリを利用し、残りの2つのDIMMの残りの2GBのメモリは、ハイパーバイザ200、及び/又は、実プロセッサ102上で実行される他の任意のアプリケーションプログラムによって利用される。
実メモリデバイス及び仮想メモリデバイスの他の多くの編成及び組み合わせが当業者に明らかになり、このようなすべての編成及び組み合わせは、本開示の範囲内にある。
【0019】
図2A及び図2Bは、図1の仮想化ソフトウェア(ハイパーバイザ200並びに仮想マシン300、400、及び500)を実行するのに適した例示的なコンピュータシステム100を示している。
図示するように、例示的なコンピュータシステム100は、筐体180、ディスプレイ140、及び入力デバイス170を含む。
コンピュータシステム100は、処理ロジック102、揮発性ストレージ110、及び不揮発性ストレージ164を含む。
処理ロジック102は、ハードウェア(たとえば、マイクロプロセッサ)、ソフトウェア(たとえば、マイクロコード)、又はハードウェア及びソフトウェアの組み合わせで実施することができる。
また、コンピュータシステム100は、コンピュータ可読媒体も含む。コンピュータ可読媒体には、揮発性ストレージ110(たとえば、ランダムアクセスメモリ(RAM))、不揮発性ストレージ164(たとえば、フラッシュRAM、読み出し専用メモリ(ROM)、ハードディスクドライブ、フロッピー(登録商標)ディスク(たとえば、フロッピー(登録商標)194)、コンパクトディスク読み出し専用メモリ(CD−ROM、たとえばCD196)、又はそれらの組み合わせが含まれる。
【0020】
揮発性ストレージ110及び不揮発性ストレージ164のいずれか又は双方は、たとえば、処理ロジック102によって実行されてコンピュータシステム100に本明細書で説明する機能の一部又はすべてを提供するソフトウェアを含む。
また、コンピュータシステム100は、ネットワークインターフェース(ネットI/F)162も含む。このネットワークインターフェース162によって、コンピュータシステム100は、イーサネット(登録商標)ジャック192によって図2Aの例において表されているローカルエリアネットワーク及び/又は有線若しくは無線のワイドエリアネットワークを介して情報を受信することが可能になる。
ビデオインターフェース(ビデオI/F)142は、ディスプレイ140に結合している。
ユーザは、入力デバイス170(たとえば、キーボード)及び/又はポインティングデバイス172(たとえば、マウス)を介してこのステーションと対話する。入力デバイス170及びポインティングデバイス172は、周辺インターフェース168に結合している。
ディスプレイ140は、入力デバイス170及び/又はポインティングデバイス172と共に、合わせてユーザインターフェースとして動作することができる。
【0021】
コンピュータシステム100は、さまざまなバスが一連のハブ又はブリッジを通じて、図2Bに示されるさまざまな要素を相互接続するバスベースのコンピュータとすることができる。
これら一連のハブ又はブリッジは、メモリコントローラハブ(MCH)104(「ノースブリッジ」と呼ばれることがある)及びインターフェースコントローラハブ(ICH)106(「サウスブリッジ」と呼ばれることがある)を含む。
図2Bの例示的な実施例のバスは、処理ロジック102をMCH104に結合するフロントサイドバス103と、ビデオインターフェース142をMCH104に結合するアクセラレーテッド(accelerated)グラフィックスポート(AGP)バス141と、ネットワークインターフェース162、不揮発性ストレージ164、周辺インターフェース168、及びICH106を互いに結合する周辺コンポーネント相互接続(PCI)バス161と、1つ又は2つ以上のPCIエクスプレスデバイス152をMCH104に結合するPCIエクスプレス(PCIe)バス151と、MCH104を揮発性ストレージ110内のデュアルインラインメモリモジュール(DIMM)120及び130に結合するメモリバス111とを含む。
【0022】
周辺インターフェース168は、入力デバイス170からの信号、及び、ポインティングデバイス172のような他の入力デバイスから信号を受け取り、それらの信号をPCIバス161上での通信に適した形式に変換する。
ビデオインターフェース142は、AGPバス141から情報を受け取ってこの情報をディスプレイ140に適した形式に変換するグラフィックスカード又は他の適切なビデオインターフェースを含むことができる。
処理ロジック102は、他のシステム要素から情報を収集する。この情報には、周辺インターフェース168からの入力データ、ならびに、不揮発性ストレージ164若しくは揮発性ストレージ110からのプログラム命令及び他のデータ、又は、ネットワークインターフェース162を介してローカルエリアネットワーク若しくはワイドエリアネットワークに結合されている他のシステム(たとえば、実行可能コードのコピーを記憶して配信するのに使用されるサーバ)からのプログラム命令及び他のデータが含まれる。
処理ロジック102は、プログラム命令(たとえば、ハイパーバイザ200)を実行し、それに応じてデータを処理する。
プログラム命令は、さらに、ビデオインターフェース142及びディスプレイ140を介してユーザに提示される情報のようなデータを他のシステム要素へ送信するように処理ロジック102を構成することができる。
ネットワークインターフェース162によって、処理ロジック102は、ネットワーク(たとえば、インターネット)を介して他のシステムと通信することが可能になる。
揮発性ストレージ110は、処理ロジック102の情報の低遅延一時ストアとして機能することができ、不揮発性ストレージ164は、情報の長期(ただし、より高遅延)ストアとして機能することができる。
【0023】
処理ロジック102は、不揮発性ストレージ164に記憶されているか又はネットワークインターフェース162を介して受信される1つ若しくは2つ以上のプログラムに従って動作し、したがって、コンピュータシステム100が、全体としてそのように動作する。
処理ロジック102は、より高速なアクセスを得るために、プログラムの一部を揮発性ストレージ110にコピーすることができ、入力デバイス170のユーザによる作動に応答して、プログラム間の切り換え又は追加プログラムの実行を行うことができる。
追加プログラムは、不揮発性ストレージ164から取り出すこともできるし、ネットワークインターフェース162を介して他のロケーションから取り出すか又は受信することもできる。
これらのプログラムの1つ又は2つ以上は、コンピュータシステム100上で実行され、コンピュータシステムに、本明細書で開示する少なくともいくつかの機能を実行させる。
【0024】
図3A〜図3Cは、少なくともいくつかの例示的な実施形態による、ハイパーバイザ200による仮想メモリデバイスの仮想マシン300への追加の一例を示している。
図3Aは、仮想メモリデバイス220がすでに割り当てられている仮想マシン300を示している。
仮想メモリデバイス221及び222は、ハイパーバイザ200によって、割り当てられていない仮想メモリデバイスとして割り当てられていない仮想メモリデバイスのプール内に保持される。これらのメモリデバイスは、要求に応じた割り当てに利用可能である。
図3A〜図3Cの実施形態は、割り当てられていない仮想メモリデバイスの静的なプールを示しているが、他の例示的な実施形態では、たとえば、割り当て要求が(たとえば、コンピュータシステム100に関連付けられているユーザインターフェースを介して要求を発行するオペレータから)ハイパーバイザ200によって受信されるとき、ハイパーバイザ200によって監視されるように各仮想マシンにすでに割り当てられているメモリのメモリ利用レベルに基づいて要求がハイパーバイザ200によって内部で生成されるとき、又は、仮想マシンによって監視された仮想マシンのメモリ利用レベルに基づいて、要求が仮想マシンによってハイパーバイザに対して生成されるときのように、「必要に応じて」又は「オンザフライ」で、仮想メモリデバイスは生成される。
【0025】
図3Aは、仮想メモリデバイスを追加する初期要求351が、ハイパーバイザ200からvACPI318へ送信されることを示している。
ハイパーバイザ200は、仮想「ホットプラグ」指示の形で(たとえば、ACPI汎用イベント、すなわちGPEとして)、この追加要求をvACPI318へ送信する。
図3Bは、この要求に対する初期応答を示している。図3Bでは、仮想メモリデバイス221及び222と、仮想プロセッサ312を仮想メモリデバイス220に結合するバスとの間の破線によって示すように、これまで割り当てられていない仮想メモリデバイス221及び222は、仮想マシン300に追加されるが、使用するにはまだ利用可能ではない。
仮想メモリデバイスオブジェクト321及び322は、vACPI318によって追加されるが、(それらのメモリオブジェクトの周りの破線によって示すように)オペレーティングシステム314によってまだ認識されていない。
少なくともいくつかの例示的な実施形態では、仮想メモリオブジェクトは、ACPI名前空間にすでに存在し、仮想メモリデバイス221及び222の追加に応答して、無効状態から有効状態に遷移される。
ホットプラグ通知353は、仮想メモリ資源オブジェクト330によって仮想メモリ資源ドライバ315へ転送され、仮想メモリデバイス221及び222の、仮想マシン300の仮想ハードウェア構成への追加を反映する。
少なくともいくつかの例示的な実施形態では、この通知353は、新しい仮想メモリオブジェクトのリストを含む一方、他の例示的な実施形態では、新しい仮想メモリオブジェクトのリストは、仮想メモリ資源オブジェクトに問い合わせることによって得ることができる。
仮想メモリ資源ドライバ315は、2つの個別のホットプラグ指示(各仮想メモリデバイス当たり1つ)を内部で生成し、図3Cに示すように、追加された仮想メモリデバイスをオペレーティングシステム314に認識させ、オペレーティングシステム314の構成にデバイスを追加させる。
個別の仮想メモリデバイスの追加が完了すると、仮想メモリ資源ドライバ315は、完了ステータス355を仮想メモリ資源オブジェクト330へ送信し、仮想メモリ資源オブジェクト330は、次に、完了ステータス357をハイパーバイザ200へ返す。
【0026】
図4A〜図4Dは、少なくともいくつかの例示的な実施形態による、或る仮想マシンから別の仮想マシンへの仮想メモリデバイスの再割り当てを示している。
図4Aは、仮想メモリデバイス220、221、及び222が仮想マシン300にすでに割り当てられており、仮想メモリデバイス223が仮想マシン400にすでに割り当てられていることを示している。
仮想マシン300から仮想マシン400へ仮想メモリを再割り当てする要求が受信されると、ハイパーバイザ200は、まず、「ホットプラグ解除」指示又は「イジェクト」指示の形で、必要なメモリを割り当て解除する要求451をvACPI318へ発行する。
いくつかの例示的な実施形態では、この要求は、イジェクトされる仮想メモリデバイスをリストすることができる一方、他の例示的な実施形態では、この要求は、仮想メモリ資源ドライバ315内の1つ又は2つ以上の機能によって、必要な個数の仮想メモリデバイスに変換される1つ又は2つ以上のメトリック(たとえば、メモリサイズ、並びに、ライトバック、揮発性/不揮発性、及びメモリ局所性のようなメモリ属性)を指定することができる。
【0027】
図4Bを参照すると、仮想集約オブジェクト330が、イジェクト要求453を仮想メモリ資源ドライバ315へ転送し、仮想メモリ資源ドライバ315は、必要な資源が利用可能であるか否かを判断する。
図4A〜図4Eの例では、この要求は、2つの利用可能な仮想メモリデバイスを必要とする。これらの仮想メモリデバイスは、仮想マシン300から利用可能であり、仮想マシン300から割り当て解除(イジェクト)することができる。
図4Bは、仮想メモリオブジェクト321及び322の除去(メモリオブジェクトの破線の境界によって示される)、並びに、対応する仮想メモリデバイス221及び222の除去(仮想メモリデバイス221及び222から、仮想メモリデバイス220を仮想プロセッサ312に結合するバスへの破線によって示される)を示している。
図4Cに示すように、イジェクトの完了時に、仮想メモリ資源ドライバ315は、完了ステータス455を仮想メモリ資源オブジェクト330へ送信し、仮想メモリ資源オブジェクト330は、次に、完了ステータス457をハイパーバイザ200へ送信する。
【0028】
仮想メモリデバイス221及び222が仮想メモリ300から割り当て解除(イジェクト)されると、ハイパーバイザ200は、割り当て要求459(図4C)をvACPI418へ(「ホットプラグ」指示の形で)送信し、vACPI418は、次に、(破線の仮想メモリオブジェクトによって示される)仮想メモリオブジェクト421及び422を作成し、図4Dに示すように、ホットプラグ通知メッセージ(461)を仮想メモリ資源ドライバ415へ送信する。
また、図4Dは、仮想メモリデバイス221及び222の仮想マシン400への追加、並びに、この追加の初期認識(仮想メモリデバイス221及び222から、仮想メモリデバイス223及び仮想プロセッサ412を結合するバスへの破線によって示される)も示している。
図4Eは、仮想メモリデバイス221及び222の仮想マシン400への結果の割り当てを示している。
仮想メモリデバイス221及び222の追加の完了時に、仮想メモリ資源ドライバは、完了ステータス463を仮想メモリ資源オブジェクト430へ送信し、仮想メモリ資源オブジェクト430は、次に、完了ステータス465をハイパーバイザ200へ送信する。
【0029】
少なくともいくつかの例示的な実施形態では、仮想デバイスをイジェクトする要求は、イジェクトされる仮想デバイスの特性を反映するメトリックを含む。
したがって、たとえば、(たとえば、図4A〜図4Cに示すような)このような実施形態における仮想メモリデバイス221及び222を仮想マシン300からイジェクトする要求は、イジェクトされるメモリ量をバイト単位で含む。
仮想メモリデバイスのサイズに基づいて、必要なデバイスの個数が、仮想メモリ資源ドライバ315内の1つ又は2つ以上の機能によって求められ、要求を満たすのに必要な個数のデバイスが使用中でない場合、又は、スワップ可能なタスクによって使用中であり、したがって利用可能である場合には、要求された仮想メモリはイジェクトされる。
たとえば、各仮想メモリデバイスが128MBであり、且つ2GBのメモリのイジェクトが要求されている場合、少なくとも16個のメモリデバイスが利用可能であるときに、要求されたメモリはイジェクトされることになる。
異なるタイプの仮想デバイスに関連付けられている他のメトリックを、仮想デバイスをイジェクトする要求内で使用することができ、このようなすべてのメトリック及び仮想デバイスのタイプが、本開示の範囲内にある。
デバイスの要求が、特定の要求されたデバイスのリストではなくメトリックに基づくものとすることを可能にすることによって、仮想デバイスを要求及び/又は管理するプログラム(たとえば、仮想マシン上で実行されるアプリケーション、又は、ハイパーバイザプログラム)は、要求を行うことに先立って、どのデバイスが使用中であるのかの追跡もチェックも行う必要がないため、資源の負荷バランシングが簡単になる。
【0030】
図5は、少なくともいくつかの例示的な実施形態による、或る仮想マシンから別の仮想マシンへ1つ又は2つ以上の仮想デバイスをイジェクトして追加する(すなわち、再割り当てする)方法600を示している。
第1の仮想マシンに現在割り当てられている1つ又は2つ以上の仮想デバイスをイジェクト(割り当て解除)する要求が、第1の仮想マシン内の仮想資源オブジェクトへ送信される(ブロック602)。
ブロック604に示すように、この要求を満たすのに必要な仮想デバイスが、第1の仮想マシンによって使用中でない場合、又は、使用中であるが利用可能にできる場合(たとえば、メモリデバイスからスワップアウト及び/又はクリアすることができるコンテンツ)、要求された仮想デバイスは、第1の仮想マシンからイジェクトされる(ブロック608)。
ブロック604に示すように、必要な仮想デバイスが使用中であり、且つ、利用可能にできない(すなわち、クリアすることができない)場合、この要求は拒否され(ブロック606)、この方法は終了する(ブロック616)。
イジェクトされたデバイスが、別の仮想マシンに追加されることになっていない場合(ブロック610)、この方法は終了する(ブロック616)。
要求された仮想デバイスがイジェクトされ(ブロック608)、且つ、イジェクトされたデバイスの1つ又は2つ以上が第2の仮想マシンに追加されることになっている場合(ブロック610)、1つ又は2つ以上の仮想デバイスを仮想マシンに追加するコマンドが、第2の仮想マシン内の仮想デバイス資源オブジェクトへ送信される(ブロック612)。
この要求によって、仮想ホットプラグイベントが、仮想マシンによって生成されサービスされて、要求された仮想デバイスが、仮想マシンに追加され(ブロック614)、この方法は終了する(ブロック616)。
【0031】
上記解説は、本発明の原理及びさまざまな実施形態の例示であるように意図されている。
上記開示が十分に理解されると、当業者には、多数の変形及び変更が明らかになる。
たとえば、本開示の例示的な実施形態の少なくともいくつかは、仮想メモリデバイスの追加及びイジェクトを説明しているが、ほんの数例を挙げると、仮想ハードディスク、仮想ネットワークアダプタ、仮想プロセッサ(1つの仮想マシン当たり2つ以上、又は、異なる実効速度の仮想プロセッサ)のようなデバイスを含む、他の多くの仮想デバイスを、本明細書で説明するように追加及びイジェクトすることができる。
また、説明したイジェクト要求に設けられるメトリックは、メモリサイズに限定されるものではなく、イジェクトすることができる多くの仮想デバイスに関連付けられる任意の数のメトリックとすることができる。
このようなメトリックの例には、仮想ハードディスクの転送帯域幅、仮想ネットワークアダプタの通信帯域幅、仮想プロセッサの個数、(たとえば、100万命令毎秒、すなわちMIPS単位の)仮想プロセッサの処理能力、及び仮想プロセッサの速度が含まれ得る。
これらのそれぞれは、1つ又は2つ以上の実デバイスの対応するメトリックの比率として表すことができる。
添付の特許請求の範囲は、このようなすべての変形及び変更を包含するように解釈されることが意図されている。
【図面の簡単な説明】
【0032】
【図1】少なくともいくつかの例示的な実施形態による、仮想マシンソフトウェアの複数のインスタンスを実行するコンピュータシステムを示す図である。
【図2A】少なくともいくつかの例示的な実施形態に従って構成された図1のコンピュータシステムの一例を示す図である。
【図2B】少なくともいくつかの例示的な実施形態に従って構成された図2Aのコンピュータシステムのブロック図である。
【図3A】少なくともいくつかの例示的な実施形態に従って追加の仮想メモリ資源を仮想マシンに追加する一例を示す図である。
【図3B】少なくともいくつかの例示的な実施形態に従って追加の仮想メモリ資源を仮想マシンに追加する一例を示す図である。
【図3C】少なくともいくつかの例示的な実施形態に従って追加の仮想メモリ資源を仮想マシンに追加する一例を示す図である。
【図4A】少なくともいくつかの例示的な実施形態に従って或る仮想マシンから別の仮想マシンへ仮想メモリ資源を再割り当てする一例を示す図である。
【図4B】少なくともいくつかの例示的な実施形態に従って或る仮想マシンから別の仮想マシンへ仮想メモリ資源を再割り当てする一例を示す図である。
【図4C】少なくともいくつかの例示的な実施形態に従って或る仮想マシンから別の仮想マシンへ仮想メモリ資源を再割り当てする一例を示す図である。
【図4D】少なくともいくつかの例示的な実施形態に従って或る仮想マシンから別の仮想マシンへ仮想メモリ資源を再割り当てする一例を示す図である。
【図4E】少なくともいくつかの例示的な実施形態に従って或る仮想マシンから別の仮想マシンへ仮想メモリ資源を再割り当てする一例を示す図である。
【図5】少なくともいくつかの例示的な実施形態に従って第1の仮想マシンから仮想デバイスをイジェクトして、オプションとして、仮想デバイスを第2の仮想マシンに再割り当てするための方法を示す図である。
【符号の説明】
【0033】
100・・・コンピュータシステム
102・・・処理ロジック
110・・・揮発性ストレージ
140・・・ディスプレイ
142・・・ビデオI/F
152・・・PCIeデバイス
162・・・ネットI/F
164・・・不揮発性ストレージ
168・・・周辺I/F
172・・・ポインティングデバイス
170・・・入力デバイス
200・・・ハイパーバイザ
300,400,500・・・仮想マシン(VM)
312,412,512・・・仮想プロセッサ(vProc)
220,221,222,223・・・仮想メモリデバイス(vMem)
314・・・オペレーティングシステム
315・・・仮想メモリ資源ドライバ(vMRDvr)
316,416,516・・・仮想ファームウェア(vF/W)
318・・・vACPI
320,321,421,422・・・仮想メモリオブジェクト
330,430・・・仮想メモリ資源オブジェクト
【特許請求の範囲】
【請求項1】
実コンピュータシステム(100)上で仮想マシンソフトウェア(300)を実行することであって、該仮想マシンソフトウェアはハイパーバイザ(200)を含み、1つの仮想マシンが複数の仮想デバイス(220、221)を備える、仮想マシンソフトウェア(300)を実行することと、
前記複数の仮想デバイスのそれぞれを、前記実コンピュータシステム内の実デバイス(110)の一意のサブセットに関連付けることと、
前記ハイパーバイザが、前記仮想マシン内の仮想ファームウェア(316)へ、前記複数の仮想デバイスの1つ又は2つ以上の仮想デバイスを前記仮想マシンからイジェクト(eject)することを要求するイジェクト要求を送信することと、
前記仮想ファームウェア内の仮想デバイス資源オブジェクトが、前記仮想マシン上で実行される仮想デバイス資源ドライバ(315)へ前記イジェクト要求を転送することと、
前記仮想デバイス資源ドライバが、前記転送された要求に応答して、前記1つ又は2つ以上の仮想デバイスのそれぞれの前記仮想マシンからの個別のイジェクトを引き起こすことと
を含む方法。
【請求項2】
前記仮想デバイス資源オブジェクトを、前記複数の仮想デバイス(220、221)のデバイスタイプに関連付けること
をさらに含む請求項1に記載の方法。
【請求項3】
前記イジェクト要求に含まれるメトリックに基づいて、前記イジェクト要求を満たすのに必要な仮想デバイス(220、221)の個数を求めることと、
十分な個数の仮想デバイスが利用可能である場合に、必要であると判断された前記仮想デバイスを前記仮想マシンからイジェクトすることと、
前記複数の仮想デバイスのいずれが、前記イジェクト要求を満たすのに使用されるのかを判断することと、
をさらに含み、
前記必要な仮想デバイスの個数を求めること、及び、前記複数の仮想デバイスのいずれが使用されるのかを判断することは、前記仮想デバイス資源ドライバ(315)によって行われる
請求項1に記載の方法。
【請求項4】
前記要求に含まれる仮想デバイスのリストに基づいて、いずれの仮想デバイス(220、221)がイジェクト用に特定されるのかを判断することと、
前記要求にリストされた前記仮想デバイスが利用可能である場合に、前記リストされた仮想デバイスを前記仮想マシンからイジェクトすることと
をさらに含む請求項1に記載の方法。
【請求項5】
前記ハイパーバイザ(200)が、1つ又は2つ以上の仮想デバイス(220、221)を前記仮想マシンに追加する要求を前記仮想デバイス資源オブジェクトへ送信することと、
前記仮想デバイス資源オブジェクトが、前記追加する要求を、前記仮想デバイス資源ドライバ(315)へ転送することと、
前記仮想デバイス資源ドライバが、前記1つ又は2つ以上の仮想デバイスを、それぞれ、前記仮想マシンに個別に追加することと
をさらに含む請求項1に記載の方法。
【請求項6】
コンピュータシステムであって、
仮想マシンを実施する仮想マシンソフトウェア(300)を実行する実プロセッサであって、前記仮想マシンは、仮想プロセッサと、仮想資源デバイスドライバと、仮想デバイス資源オブジェクトを含む仮想ファームウェア(316)と、複数の仮想デバイス(220、221)とを備える、実プロセッサと、
前記プロセッサに結合される実デバイス(110)であって、前記仮想マシンソフトウェアは、前記複数の仮想デバイスのそれぞれを、該実デバイスの一意の一部分(subdivision)に関連付ける、実デバイス(110)と、
を備え、
前記実プロセッサ上で実行されるエグゼクティブソフトウェアは、前記複数の仮想デバイスの1つ又は2つ以上の仮想デバイスを前記仮想マシンからイジェクトすることを要求する要求を前記仮想ファームウェアへ送信し、
前記仮想デバイス資源オブジェクトは、前記仮想資源デバイスドライバに、前記要求された1つ又は2つ以上の仮想デバイスを前記仮想マシンから個別にイジェクトさせる
コンピュータシステム。
【請求項7】
前記仮想デバイス資源オブジェクトは、前記複数の仮想デバイス(220、221)のデバイスタイプに関連付けられている
請求項6に記載のコンピュータシステム。
【請求項8】
前記実デバイス(110)は、
実メモリデバイス
を備え、
前記複数の仮想デバイス(220、221)は、
それぞれが前記実メモリデバイスによって占有されたアドレス空間の一意の部分範囲(sub-range)に関連付けられている複数の仮想メモリデバイス
を備える
請求項6に記載のコンピュータシステム。
【請求項9】
前記仮想資源デバイスドライバは、前記イジェクトする要求に含まれるメトリックに基づいて、割り当て解除する要求を満たすのに必要な仮想デバイス(220、221)の個数を求め、さらに、前記複数の仮想デバイスのいずれが、前記イジェクトする要求を満たすのに使用されるよう選択されるのかを判断し、
十分な個数の仮想デバイスが、前記仮想資源デバイスドライバによって使用中でないと判断された場合に、前記仮想マシンソフトウェア(300)は、必要であると判断され使用されるように選択される前記仮想デバイスをイジェクトする
請求項6に記載のコンピュータシステム。
【請求項10】
前記仮想資源デバイスドライバは、前記要求において提示されている仮想デバイスのリストに基づいて、いずれの仮想デバイス(220、221)がイジェクト用に特定されるのかを判断し、
前記要求においてリストされている前記仮想デバイスが利用可能である場合に、前記仮想マシンソフトウェア(300)は、前記リストされた仮想デバイスを前記仮想マシンからイジェクトする
請求項6に記載のコンピュータシステム。
【請求項1】
実コンピュータシステム(100)上で仮想マシンソフトウェア(300)を実行することであって、該仮想マシンソフトウェアはハイパーバイザ(200)を含み、1つの仮想マシンが複数の仮想デバイス(220、221)を備える、仮想マシンソフトウェア(300)を実行することと、
前記複数の仮想デバイスのそれぞれを、前記実コンピュータシステム内の実デバイス(110)の一意のサブセットに関連付けることと、
前記ハイパーバイザが、前記仮想マシン内の仮想ファームウェア(316)へ、前記複数の仮想デバイスの1つ又は2つ以上の仮想デバイスを前記仮想マシンからイジェクト(eject)することを要求するイジェクト要求を送信することと、
前記仮想ファームウェア内の仮想デバイス資源オブジェクトが、前記仮想マシン上で実行される仮想デバイス資源ドライバ(315)へ前記イジェクト要求を転送することと、
前記仮想デバイス資源ドライバが、前記転送された要求に応答して、前記1つ又は2つ以上の仮想デバイスのそれぞれの前記仮想マシンからの個別のイジェクトを引き起こすことと
を含む方法。
【請求項2】
前記仮想デバイス資源オブジェクトを、前記複数の仮想デバイス(220、221)のデバイスタイプに関連付けること
をさらに含む請求項1に記載の方法。
【請求項3】
前記イジェクト要求に含まれるメトリックに基づいて、前記イジェクト要求を満たすのに必要な仮想デバイス(220、221)の個数を求めることと、
十分な個数の仮想デバイスが利用可能である場合に、必要であると判断された前記仮想デバイスを前記仮想マシンからイジェクトすることと、
前記複数の仮想デバイスのいずれが、前記イジェクト要求を満たすのに使用されるのかを判断することと、
をさらに含み、
前記必要な仮想デバイスの個数を求めること、及び、前記複数の仮想デバイスのいずれが使用されるのかを判断することは、前記仮想デバイス資源ドライバ(315)によって行われる
請求項1に記載の方法。
【請求項4】
前記要求に含まれる仮想デバイスのリストに基づいて、いずれの仮想デバイス(220、221)がイジェクト用に特定されるのかを判断することと、
前記要求にリストされた前記仮想デバイスが利用可能である場合に、前記リストされた仮想デバイスを前記仮想マシンからイジェクトすることと
をさらに含む請求項1に記載の方法。
【請求項5】
前記ハイパーバイザ(200)が、1つ又は2つ以上の仮想デバイス(220、221)を前記仮想マシンに追加する要求を前記仮想デバイス資源オブジェクトへ送信することと、
前記仮想デバイス資源オブジェクトが、前記追加する要求を、前記仮想デバイス資源ドライバ(315)へ転送することと、
前記仮想デバイス資源ドライバが、前記1つ又は2つ以上の仮想デバイスを、それぞれ、前記仮想マシンに個別に追加することと
をさらに含む請求項1に記載の方法。
【請求項6】
コンピュータシステムであって、
仮想マシンを実施する仮想マシンソフトウェア(300)を実行する実プロセッサであって、前記仮想マシンは、仮想プロセッサと、仮想資源デバイスドライバと、仮想デバイス資源オブジェクトを含む仮想ファームウェア(316)と、複数の仮想デバイス(220、221)とを備える、実プロセッサと、
前記プロセッサに結合される実デバイス(110)であって、前記仮想マシンソフトウェアは、前記複数の仮想デバイスのそれぞれを、該実デバイスの一意の一部分(subdivision)に関連付ける、実デバイス(110)と、
を備え、
前記実プロセッサ上で実行されるエグゼクティブソフトウェアは、前記複数の仮想デバイスの1つ又は2つ以上の仮想デバイスを前記仮想マシンからイジェクトすることを要求する要求を前記仮想ファームウェアへ送信し、
前記仮想デバイス資源オブジェクトは、前記仮想資源デバイスドライバに、前記要求された1つ又は2つ以上の仮想デバイスを前記仮想マシンから個別にイジェクトさせる
コンピュータシステム。
【請求項7】
前記仮想デバイス資源オブジェクトは、前記複数の仮想デバイス(220、221)のデバイスタイプに関連付けられている
請求項6に記載のコンピュータシステム。
【請求項8】
前記実デバイス(110)は、
実メモリデバイス
を備え、
前記複数の仮想デバイス(220、221)は、
それぞれが前記実メモリデバイスによって占有されたアドレス空間の一意の部分範囲(sub-range)に関連付けられている複数の仮想メモリデバイス
を備える
請求項6に記載のコンピュータシステム。
【請求項9】
前記仮想資源デバイスドライバは、前記イジェクトする要求に含まれるメトリックに基づいて、割り当て解除する要求を満たすのに必要な仮想デバイス(220、221)の個数を求め、さらに、前記複数の仮想デバイスのいずれが、前記イジェクトする要求を満たすのに使用されるよう選択されるのかを判断し、
十分な個数の仮想デバイスが、前記仮想資源デバイスドライバによって使用中でないと判断された場合に、前記仮想マシンソフトウェア(300)は、必要であると判断され使用されるように選択される前記仮想デバイスをイジェクトする
請求項6に記載のコンピュータシステム。
【請求項10】
前記仮想資源デバイスドライバは、前記要求において提示されている仮想デバイスのリストに基づいて、いずれの仮想デバイス(220、221)がイジェクト用に特定されるのかを判断し、
前記要求においてリストされている前記仮想デバイスが利用可能である場合に、前記仮想マシンソフトウェア(300)は、前記リストされた仮想デバイスを前記仮想マシンからイジェクトする
請求項6に記載のコンピュータシステム。
【図1】
【図2A】
【図2B】
【図3A】
【図3B】
【図3C】
【図4A】
【図4B】
【図4C】
【図4D】
【図4E】
【図5】
【図2A】
【図2B】
【図3A】
【図3B】
【図3C】
【図4A】
【図4B】
【図4C】
【図4D】
【図4E】
【図5】
【公開番号】特開2009−110518(P2009−110518A)
【公開日】平成21年5月21日(2009.5.21)
【国際特許分類】
【出願番号】特願2008−274368(P2008−274368)
【出願日】平成20年10月24日(2008.10.24)
【出願人】(503003854)ヒューレット−パッカード デベロップメント カンパニー エル.ピー. (1,145)
【Fターム(参考)】
【公開日】平成21年5月21日(2009.5.21)
【国際特許分類】
【出願日】平成20年10月24日(2008.10.24)
【出願人】(503003854)ヒューレット−パッカード デベロップメント カンパニー エル.ピー. (1,145)
【Fターム(参考)】
[ Back to top ]