JP5376496B2 - 仮想マシンデバイスの動的割り当て - Google Patents

仮想マシンデバイスの動的割り当て Download PDF

Info

Publication number
JP5376496B2
JP5376496B2 JP2008274368A JP2008274368A JP5376496B2 JP 5376496 B2 JP5376496 B2 JP 5376496B2 JP 2008274368 A JP2008274368 A JP 2008274368A JP 2008274368 A JP2008274368 A JP 2008274368A JP 5376496 B2 JP5376496 B2 JP 5376496B2
Authority
JP
Japan
Prior art keywords
virtual
devices
request
virtual machine
computer system
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008274368A
Other languages
English (en)
Other versions
JP2009110518A (ja
Inventor
トシミツ・カニ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Development Co LP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Development Co LP filed Critical Hewlett Packard Development Co LP
Publication of JP2009110518A publication Critical patent/JP2009110518A/ja
Application granted granted Critical
Publication of JP5376496B2 publication Critical patent/JP5376496B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、仮想マシンデバイスの動的割り当てに関する。
仮想マシンソフトウェアの使用は、近年、前例のない成長を経験している。仮想マシンソフトウェアは、当初、ソフトウェア試験プラットフォームとして設計されたが、実コンピュータシステムのハードウェアをエミュレート及び/又はシミュレートして、実マシン上で実行されるソフトウェアを、エミュレート/シミュレートされた環境内において変更なしで実行することを可能にする。仮想化ソフトウェアによって提供される仮想化されたマシンは、このような仮想マシン上で実行されているソフトウェアには、実コンピュータシステムに見える。
実コンピュータシステムのホットスワップ可能なデバイスの出現によって、今や、実マシンと同じデバイスのホットスワップをエミュレート/シミュレートすることができる仮想マシンが利用可能である。この仮想ホットスワップ能力によって、単一の実コンピュータシステム上で実行される複数の仮想マシンは、仮想化されたハードウェア資源を必要に応じて仮想マシンの構成に動的に追加及び除去することが可能になる。さらに、仮想マシンは、実コンピュータシステムをエミュレート/シミュレートするため、Intel(登録商標)による拡張可能ファームウェアインターフェース(Extensible Firmware Interface: EFI)、及びオープン工業規格(open industry standard)であるアドバンストコンフィギュレーションアンドパワーインターフェース(Advanced Configuration and Power Interface: ACPI)のような、仮想化されたハードウェアに対する業界標準ファームウェアインターフェースを含む、実コンピュータシステムのファームウェアもエミュレート/シミュレートする。
このようなファームウェアインターフェースを使用すると、ハードウェアは、実コンピュータシステム/仮想化されたコンピュータシステム内の組み込みファームウェアによって一連のオブジェクトとして表される。これらのオブジェクトのそれぞれは、コンピュータシステム内のプロセッサ上で実行されているソフトウェア(たとえば、オペレーティングシステム)によってファームウェアインターフェースを介して管理することができる。これらのオブジェクトによって、特に、デバイスを、「ホットスワップ可能」なデバイス、すなわち、コンピュータシステムを電源切断もリブートもすることなく、コンピュータシステムにプラグ接続するか又はコンピュータシステムからプラグ接続解除することができるデバイスとして、動作させることが可能になる。たとえば、デバイスがプラグ接続されたとき、ファームウェアは、そのデバイスハードウェアが初期化されると、そのデバイスが利用可能であることをオペレーティングシステムに通知する。この通知は、コンピュータシステムによって使用されるファームウェアインターフェースを介して(たとえば、1つ又は2つ以上のACPI通知メッセージを介して)提供される。同様に、デバイスがプラグ接続解除される場合、ファームウェアは、そのデバイスをイジェクト(eject)する要求が受信されたことをオペレーティングシステムに通知する。オペレーティングシステムは、デバイスが使用中でないことを検証し、次いで、(たとえば、1つ又は2つ以上のACPI要求を介して)ハードウェアを「イジェクト」する要求を、ファームウェアインターフェースを介して、ファームウェアへ発行する。
ハードウェア資源を仮想化することができることによって、実マシンの実ハードウェア資源のサブセットを、サイズ又は容量が削減された個別の仮想ハードウェア資源として表すことが可能になり、さらに、これらの仮想化された資源を、1つ又は2つ以上の仮想マシンへのホットスワップイン及び仮想マシンからのホットスワップアウトが可能になる。したがって、たとえば、実コンピュータシステム内の1GBメモリを、その実コンピュータシステム上で実行される1つ又は2つ以上の仮想マシン間で動的に割り当てられる8つの128MBの仮想メモリとして表すことができる。仮想マシンに割り当てられた各資源は、そのマシンの仮想ファームウェアによってオブジェクト(たとえば、ACPIオブジェクト)として表される。このオブジェクトは、ファームウェアインターフェースによって、仮想マシン上で実行されるオペレーティングシステムに対してアクセス可能とされる。各仮想メモリは、必要に応じて、実コンピュータシステム上で実行される仮想マシンのいずれにも仮想的にホットスワップインすることができるし、そのような仮想マシンのいずれからも仮想的にホットスワップアウトすることもできる。
しかしながら、所与の資源のサブセットの割り当てにおいてより大きな柔軟性を達成するために、より多くのオブジェクトが使用されることがある。多くの仮想化された資源を使用することによって、実資源をよりきめ細かく割り当てることが可能になり、仮想資源が使用中であり再割り当てに利用可能でないとの理由で、仮想資源をイジェクトする要求が拒否される可能性が低減される。しかし、仮想化された資源の個数が増加するにつれて、多数の仮想化された資源を再割り当てすることに関連付けられるオーバーヘッド(overhead)が、システム、特に、多数のこのような再割り当てを行うシステム(たとえば、仮想マシン間で動的な負荷バランシングを行うシステム)の性能に悪影響を与える可能性がある。
本発明にかかる方法は、実コンピュータシステム(100)上で仮想マシンソフトウェア(300)を実行することであって、該仮想マシンソフトウェアはハイパーバイザ(200)を含み、1つの仮想マシンが複数の仮想デバイス(220、221)を備える、仮想マシンソフトウェア(300)を実行することと、前記複数の仮想デバイスのそれぞれを、前記実コンピュータシステム内の実デバイス(110)の一意のサブセットに関連付けることと、前記ハイパーバイザが、前記仮想マシン内の仮想ファームウェア(316)へ、前記複数の仮想デバイスの1つ又は2つ以上の仮想デバイスを前記仮想マシンからイジェクト(eject)することを要求するイジェクト要求を送信することと、前記仮想ファームウェア内の仮想デバイス資源オブジェクトが、前記仮想マシン上で実行される仮想デバイス資源ドライバ(315)へ前記イジェクト要求を転送することと、前記仮想デバイス資源ドライバが、前記転送された要求に応答して、前記1つ又は2つ以上の仮想デバイスのそれぞれの前記仮想マシンからの個別のイジェクトを引き起こすこととを含む。
ここで、この発明の例示的な実施形態の詳細な説明のために、添付図面を参照する。
表記及び用語
以下の説明及び特許請求の範囲の全体にわたって、特定のシステムコンポーネントを指すために、特定の用語が使用される。当業者には理解されるように、コンピュータ会社によって、1つのコンポーネントを異なる名前で指す場合がある。
本明細書は、名前は異なるが、機能は異ならないコンポーネントを区別することは意図していない。
以下の解説及び特許請求の範囲において、「含む(including)」及び「備える(comprising)」という用語は、限定のない様式で使用され、したがって、「〜を含むが、これらに限定されるものではない」ことを意味するように解釈されるべきである。
また、「結合する("couple" or "couples")」という用語は、間接的な電気接続、直接的な電気接続、光電気接続、又は無線電気接続のいずれをも意味するように意図されている。
したがって、第1のデバイスが第2のデバイスに結合する場合、その接続は、直接的な電気接続を通じている場合もあるし、他のデバイス及び接続を介して間接的な電気接続を通じている場合もあるし、光電気接続を通じている場合もあるし、無線電気接続を通じている場合もある。加えて、「システム」という用語は、2つ以上のハードウェアコンポーネント及びソフトウェアコンポーネント又はこれらのいずれか(ハードウェアコンポーネント及び/又はソフトウェアコンポーネント)の集まりを指し、コンピュータ、コンピュータの一部、コンピュータの組み合わせ等の電子デバイスを指すのに使用される場合がある。
さらに、「ソフトウェア」という用語は、ソフトウェアを記憶するのに使用される媒体にかかわらず、プロセッサ上で実行することができる任意の実行可能コードを含む。
したがって、不揮発性メモリに記憶されて、「組み込みファームウェア」と呼ばれることもあるコードは、ソフトウェアの定義内に含まれる。
また、「実コンピュータシステム」という用語は、たとえば、図2A及び図2Bに示すコンピュータシステム等、実際の物理的なコンピュータシステムを指す。
「仮想マシン」という用語は、コンピュータシステムのシミュレーション、エミュレーション、又は他の同様の機能表現を指し、それによって、仮想マシンは、1つ又は2つ以上の実コンピュータシステム又は物理コンピュータシステムを画定する物理的境界によって制約されない1つ又は2つ以上の機能コンポーネントを含む。
これらの機能コンポーネントには、実デバイス又は物理デバイス、相互接続バス、及びネットワーク、並びに、1つ又は2つ以上のCPU上で実行されるソフトウェアプログラムが含まれ得る。
仮想マシンは、たとえば、1つの実コンピュータシステム内又は物理コンピュータシステム内の一部の機能コンポーネントを含むが、すべての機能コンポーネントを含むとは限らない機能コンポーネントのサブセットを含む場合もあるし、複数の実コンピュータシステム又は物理コンピュータシステムの一部の機能コンポーネントを含む場合もあるし、或る実コンピュータシステム又は物理コンピュータシステムのすべての機能コンポーネントを含むが、別の実コンピュータシステム又は物理コンピュータシステムの一部のコンポーネントしか含まない場合もあるし、複数の実コンピュータシステム又は物理コンピュータシステムのすべての機能コンポーネントを含む場合もある。
他の多くの組み合わせが可能であり、このようなすべての組み合わせは、本開示の範囲内にあるように意図されている。
さらに、「仮想」という用語は、他のコンポーネント、システム、及び/又はサブシステム(たとえば、メモリ、ファームウェア、資源、ストレージデバイス、及び入出力デバイス)に関連付けられると、同様に、仮想マシンの一部又は仮想マシンソフトウェアプログラムの一部として実施されるコンポーネント、システム、及び/又はサブシステムのシミュレーション、エミュレーション、又は他の同様の機能表現を指す。
図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ソフトウェア、オペレーティングシステムソフトウェア、及びハイパーバイザソフトウェアの他の変形及び組み合わせは、当業者に明らかになり、このようなすべての変形及び組み合わせは、本開示の範囲内にある。
図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))を含んでもよく、このようなすべての仮想化されたハードウェアインターフェースファームウェアが、本開示の範囲内にある。
vACPI318は、仮想マシン300の仮想化されたハードウェアに対するインターフェースを、仮想プロセッサ312上で実行されるソフトウェアに提供する。
このようなソフトウェアには、たとえば、図1のオペレーティングシステム314(仮想メモリ資源ドライバ(vMRDvr)315を含む)が含まれる。
vACPI318は、一連のオブジェクトを保持する。これらのオブジェクトは、それぞれが仮想化されたハードウェア要素に対応すると共に、それぞれが仮想化された各ハードウェア要素の構成及びステータスに関連する情報を含む。
したがって、たとえば、vMemObj[0](仮想メモリオブジェクト320)は、vMem[0](仮想メモリデバイス220)に関連する情報を含む仮想マシン300内の仮想化されたACPIオブジェクトであり、同様に、vMemObj[1](仮想メモリオブジェクト321)は、vMem[1](仮想メモリデバイス221)に関連する情報を含む仮想化されたACPIオブジェクトである。
これらのオブジェクト内に含まれる情報は、たとえば、仮想マシン300のメモリアドレス空間内のデバイスのベースアドレス及びアドレス範囲を含むことができる。
図1の例示的な実施形態の仮想ACPI318は、仮想メモリ資源オブジェクト(vMRsrcObj)330も保持する。この仮想メモリ資源オブジェクト330は、仮想デバイスグループ(ここでは、図示されている例示的な実施形態における、仮想メモリデバイスグループ)のデバイスタイプに関連付けられている。
仮想メモリ資源オブジェクト330は、仮想メモリデバイスグループを「ホットスワップ」する(すなわち、対応する仮想マシンをリセットもリブートもすることなく仮想メモリデバイスを追加又は除去する)ためのステータス及び制御の単一のポイントを提供する。
したがって、たとえば、特定のメモリ量をイジェクトする要求が、(たとえば、汎用イベント、すなわちGPEを介して)ハイパーバイザ200からvACPI318によって受信された場合、集約された単一のイジェクト通知が、vACPI318によって仮想メモリ資源オブジェクト330へ送信される。
仮想メモリ資源オブジェクト330は、次に、要求を仮想メモリ資源ドライバ315へ送信する。
また、仮想メモリ資源オブジェクト330は、デバイスオブジェクトグループについてのステータス及び/又は情報を得るための単一のポイントも提供する。
したがって、たとえば、仮想メモリ資源ドライバ315は、仮想マシン内の仮想メモリのそれぞれについての情報(たとえば、イジェクトされる仮想メモリデバイスに対応する仮想メモリオブジェクトのリスト、又は、イジェクトされるメモリ量のサイズ)を得る単一のクエリを仮想メモリ資源オブジェクト330へ発行することができる。
仮想メモリ資源ドライバ315は、オペレーティングシステム314と対話(interact)して、要求を満たすのに十分な仮想メモリデバイスが使用中でないか、又は、メモリ外へ移動させることができる(メモリをイジェクトに利用可能にする)スワップ可能なタスクによってアクセスされているか否かを判断する。
仮想メモリ資源ドライバ315が、要求を満たすのに十分な仮想メモリデバイスを特定した場合、各仮想メモリデバイスに対する個別のイジェクト要求が、仮想メモリ資源ドライバ315によって内部(すなわち、オペレーティングシステム314内)で生成され、イジェクトされるメモリデバイスに対応する各仮想メモリオブジェクト(たとえば、図1の仮想メモリオブジェクト320)へ送信される。
個別のイジェクトオペレーションが完了すると、仮想メモリ資源オブジェクト330は、(仮想メモリ資源ドライバ315から受信された完了ステータスに基づいて)集約されたイジェクトの完了ステータスをハイパーバイザ200へ返す。
図1の例示的な実施形態の仮想メモリ資源オブジェクト330及び仮想メモリ資源ドライバ315のオペレーションによって、単一の要求を使用して複数の仮想メモリデバイスのイジェクトが可能になり、さらに、1つ又は2つ以上の仮想メモリデバイスのイジェクトを最初に試みることなく、イジェクト要求を拒否することが可能になる。
仮想メモリ資源ドライバ315は、個別のイジェクト要求のいずれかが個別の仮想メモリオブジェクトへ発行される前に、十分なメモリデバイスが要求を満たすのに利用可能であるかどうかを判断するので、要求は、当該要求が、要求されたメモリ量のイジェクトに成功することができない限り、システムの構成を変更しないことになる。
さらに、仮想メモリ資源ドライバ315へ向けられる単一の要求を使用することに加えて、オリジナルの要求を満たすのに必要な数の個別のイジェクトのみを発行する結果、各仮想メモリデバイスの個別のイジェクトを試みると共に、場合によっては、仮想マシン内の仮想メモリデバイスのすべてのイジェクトを1つずつ試みなければならないハイパーバイザと比較して、イジェクトオペレーションはより効率的なものとなる。
また、必要とされるものよりも多くのメモリデバイスが利用可能である場合、仮想メモリ資源ドライバは、イジェクトするのに必要なオーバーヘッドが最小となる仮想メモリデバイス(たとえば、データをスワップアウトすることを必要とするメモリではなく、使用中でないメモリ)をイジェクトするように選択することができる。このような選択によって、イジェクトの実行全体をより高速にすることが可能になる。
少なくともいくつかの例示的な実施形態では、ハイパーバイザ200によって仮想資源オブジェクト330へ送信される、仮想メモリデバイスをイジェクトする要求は、イジェクトするメモリ量ではなく、イジェクト用に特定された特定の仮想メモリデバイスのリストを含む。
このような実施形態では、仮想資源オブジェクト330は、この場合も、仮想メモリ資源ドライバ315へ単一の要求を送信するが、すべての利用可能なメモリをスキャンして要求を満たすのに十分な仮想メモリデバイスを見つける代わりに、要求内にリストされた仮想メモリデバイスのみがチェックされて、それらの仮想メモリデバイスに対応するメモリ範囲が使用中でない(又は、スワップ可能なタスクによって使用されている)かが判断される。
リストされたデバイスのいずれかが利用可能でない場合、要求は拒否される。そうでない場合、イジェクト要求は、リストされた各仮想メモリデバイスに対応する各仮想メモリオブジェクトへ送信される。
個別のイジェクトオペレーションがすべて完了すると、仮想メモリ資源オブジェクト330は、(仮想メモリ資源ドライバ315から受信された完了ステータスに基づいて)集約されたイジェクトの完了ステータスをハイパーバイザ200へ返す。
少なくともいくつかの例示的な実施形態では、図1(仮想メモリデバイス224〜227(vMem[4〜7])に示すように、ハイパーバイザ200は、割り当てられていない仮想メモリデバイス(すなわち、仮想マシンに追加されていない仮想メモリデバイス)のレポジトリを保持する。
必要に応じて、このレポジトリ内の仮想メモリデバイスを、1つ又は2つ以上の仮想マシンからイジェクトされた仮想メモリデバイスと共に利用して、仮想メモリデバイスを、コンピュータシステム100内の他の仮想マシンに提供することができる。
他の例示的な実施形態では、ハイパーバイザ200内の割り当てられていない仮想メモリデバイスのプールに仮想メモリデバイスを保持するのではなく、仮想メモリデバイスが必要とされる時に、「オンザフライ(on-the-fly)」で仮想メモリデバイスを作成して、仮想マシンに割り当てることができる。
図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上で実行される他の任意のアプリケーションプログラムによって利用される。
実メモリデバイス及び仮想メモリデバイスの他の多くの編成及び組み合わせが当業者に明らかになり、このようなすべての編成及び組み合わせは、本開示の範囲内にある。
図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)、又はそれらの組み合わせが含まれる。
揮発性ストレージ110及び不揮発性ストレージ164のいずれか又は双方は、たとえば、処理ロジック102によって実行されてコンピュータシステム100に本明細書で説明する機能の一部又はすべてを提供するソフトウェアを含む。
また、コンピュータシステム100は、ネットワークインターフェース(ネットI/F)162も含む。このネットワークインターフェース162によって、コンピュータシステム100は、イーサネット(登録商標)ジャック192によって図2Aの例において表されているローカルエリアネットワーク及び/又は有線若しくは無線のワイドエリアネットワークを介して情報を受信することが可能になる。
ビデオインターフェース(ビデオI/F)142は、ディスプレイ140に結合している。
ユーザは、入力デバイス170(たとえば、キーボード)及び/又はポインティングデバイス172(たとえば、マウス)を介してこのステーションと対話する。入力デバイス170及びポインティングデバイス172は、周辺インターフェース168に結合している。
ディスプレイ140は、入力デバイス170及び/又はポインティングデバイス172と共に、合わせてユーザインターフェースとして動作することができる。
コンピュータシステム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とを含む。
周辺インターフェース168は、入力デバイス170からの信号、及び、ポインティングデバイス172のような他の入力デバイスから信号を受け取り、それらの信号をPCIバス161上での通信に適した形式に変換する。
ビデオインターフェース142は、AGPバス141から情報を受け取ってこの情報をディスプレイ140に適した形式に変換するグラフィックスカード又は他の適切なビデオインターフェースを含むことができる。
処理ロジック102は、他のシステム要素から情報を収集する。この情報には、周辺インターフェース168からの入力データ、ならびに、不揮発性ストレージ164若しくは揮発性ストレージ110からのプログラム命令及び他のデータ、又は、ネットワークインターフェース162を介してローカルエリアネットワーク若しくはワイドエリアネットワークに結合されている他のシステム(たとえば、実行可能コードのコピーを記憶して配信するのに使用されるサーバ)からのプログラム命令及び他のデータが含まれる。
処理ロジック102は、プログラム命令(たとえば、ハイパーバイザ200)を実行し、それに応じてデータを処理する。
プログラム命令は、さらに、ビデオインターフェース142及びディスプレイ140を介してユーザに提示される情報のようなデータを他のシステム要素へ送信するように処理ロジック102を構成することができる。
ネットワークインターフェース162によって、処理ロジック102は、ネットワーク(たとえば、インターネット)を介して他のシステムと通信することが可能になる。
揮発性ストレージ110は、処理ロジック102の情報の低遅延一時ストアとして機能することができ、不揮発性ストレージ164は、情報の長期(ただし、より高遅延)ストアとして機能することができる。
処理ロジック102は、不揮発性ストレージ164に記憶されているか又はネットワークインターフェース162を介して受信される1つ若しくは2つ以上のプログラムに従って動作し、したがって、コンピュータシステム100が、全体としてそのように動作する。
処理ロジック102は、より高速なアクセスを得るために、プログラムの一部を揮発性ストレージ110にコピーすることができ、入力デバイス170のユーザによる作動に応答して、プログラム間の切り換え又は追加プログラムの実行を行うことができる。
追加プログラムは、不揮発性ストレージ164から取り出すこともできるし、ネットワークインターフェース162を介して他のロケーションから取り出すか又は受信することもできる。
これらのプログラムの1つ又は2つ以上は、コンピュータシステム100上で実行され、コンピュータシステムに、本明細書で開示する少なくともいくつかの機能を実行させる。
図3A〜図3Cは、少なくともいくつかの例示的な実施形態による、ハイパーバイザ200による仮想メモリデバイスの仮想マシン300への追加の一例を示している。
図3Aは、仮想メモリデバイス220がすでに割り当てられている仮想マシン300を示している。
仮想メモリデバイス221及び222は、ハイパーバイザ200によって、割り当てられていない仮想メモリデバイスとして割り当てられていない仮想メモリデバイスのプール内に保持される。これらのメモリデバイスは、要求に応じた割り当てに利用可能である。
図3A〜図3Cの実施形態は、割り当てられていない仮想メモリデバイスの静的なプールを示しているが、他の例示的な実施形態では、たとえば、割り当て要求が(たとえば、コンピュータシステム100に関連付けられているユーザインターフェースを介して要求を発行するオペレータから)ハイパーバイザ200によって受信されるとき、ハイパーバイザ200によって監視されるように各仮想マシンにすでに割り当てられているメモリのメモリ利用レベルに基づいて要求がハイパーバイザ200によって内部で生成されるとき、又は、仮想マシンによって監視された仮想マシンのメモリ利用レベルに基づいて、要求が仮想マシンによってハイパーバイザに対して生成されるときのように、「必要に応じて」又は「オンザフライ」で、仮想メモリデバイスは生成される。
図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へ返す。
図4A〜図4Dは、少なくともいくつかの例示的な実施形態による、或る仮想マシンから別の仮想マシンへの仮想メモリデバイスの再割り当てを示している。
図4Aは、仮想メモリデバイス220、221、及び222が仮想マシン300にすでに割り当てられており、仮想メモリデバイス223が仮想マシン400にすでに割り当てられていることを示している。
仮想マシン300から仮想マシン400へ仮想メモリを再割り当てする要求が受信されると、ハイパーバイザ200は、まず、「ホットプラグ解除」指示又は「イジェクト」指示の形で、必要なメモリを割り当て解除する要求451をvACPI318へ発行する。
いくつかの例示的な実施形態では、この要求は、イジェクトされる仮想メモリデバイスをリストすることができる一方、他の例示的な実施形態では、この要求は、仮想メモリ資源ドライバ315内の1つ又は2つ以上の機能によって、必要な個数の仮想メモリデバイスに変換される1つ又は2つ以上のメトリック(たとえば、メモリサイズ、並びに、ライトバック、揮発性/不揮発性、及びメモリ局所性のようなメモリ属性)を指定することができる。
図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へ送信する。
仮想メモリデバイス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へ送信する。
少なくともいくつかの例示的な実施形態では、仮想デバイスをイジェクトする要求は、イジェクトされる仮想デバイスの特性を反映するメトリックを含む。
したがって、たとえば、(たとえば、図4A〜図4Cに示すような)このような実施形態における仮想メモリデバイス221及び222を仮想マシン300からイジェクトする要求は、イジェクトされるメモリ量をバイト単位で含む。
仮想メモリデバイスのサイズに基づいて、必要なデバイスの個数が、仮想メモリ資源ドライバ315内の1つ又は2つ以上の機能によって求められ、要求を満たすのに必要な個数のデバイスが使用中でない場合、又は、スワップ可能なタスクによって使用中であり、したがって利用可能である場合には、要求された仮想メモリはイジェクトされる。
たとえば、各仮想メモリデバイスが128MBであり、且つ2GBのメモリのイジェクトが要求されている場合、少なくとも16個のメモリデバイスが利用可能であるときに、要求されたメモリはイジェクトされることになる。
異なるタイプの仮想デバイスに関連付けられている他のメトリックを、仮想デバイスをイジェクトする要求内で使用することができ、このようなすべてのメトリック及び仮想デバイスのタイプが、本開示の範囲内にある。
デバイスの要求が、特定の要求されたデバイスのリストではなくメトリックに基づくものとすることを可能にすることによって、仮想デバイスを要求及び/又は管理するプログラム(たとえば、仮想マシン上で実行されるアプリケーション、又は、ハイパーバイザプログラム)は、要求を行うことに先立って、どのデバイスが使用中であるのかの追跡もチェックも行う必要がないため、資源の負荷バランシングが簡単になる。
図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)。
上記解説は、本発明の原理及びさまざまな実施形態の例示であるように意図されている。
上記開示が十分に理解されると、当業者には、多数の変形及び変更が明らかになる。
たとえば、本開示の例示的な実施形態の少なくともいくつかは、仮想メモリデバイスの追加及びイジェクトを説明しているが、ほんの数例を挙げると、仮想ハードディスク、仮想ネットワークアダプタ、仮想プロセッサ(1つの仮想マシン当たり2つ以上、又は、異なる実効速度の仮想プロセッサ)のようなデバイスを含む、他の多くの仮想デバイスを、本明細書で説明するように追加及びイジェクトすることができる。
また、説明したイジェクト要求に設けられるメトリックは、メモリサイズに限定されるものではなく、イジェクトすることができる多くの仮想デバイスに関連付けられる任意の数のメトリックとすることができる。
このようなメトリックの例には、仮想ハードディスクの転送帯域幅、仮想ネットワークアダプタの通信帯域幅、仮想プロセッサの個数、(たとえば、100万命令毎秒、すなわちMIPS単位の)仮想プロセッサの処理能力、及び仮想プロセッサの速度が含まれ得る。
これらのそれぞれは、1つ又は2つ以上の実デバイスの対応するメトリックの比率として表すことができる。
添付の特許請求の範囲は、このようなすべての変形及び変更を包含するように解釈されることが意図されている。
少なくともいくつかの例示的な実施形態による、仮想マシンソフトウェアの複数のインスタンスを実行するコンピュータシステムを示す図である。 少なくともいくつかの例示的な実施形態に従って構成された図1のコンピュータシステムの一例を示す図である。 少なくともいくつかの例示的な実施形態に従って構成された図2Aのコンピュータシステムのブロック図である。 少なくともいくつかの例示的な実施形態に従って追加の仮想メモリ資源を仮想マシンに追加する一例を示す図である。 少なくともいくつかの例示的な実施形態に従って追加の仮想メモリ資源を仮想マシンに追加する一例を示す図である。 少なくともいくつかの例示的な実施形態に従って追加の仮想メモリ資源を仮想マシンに追加する一例を示す図である。 少なくともいくつかの例示的な実施形態に従って或る仮想マシンから別の仮想マシンへ仮想メモリ資源を再割り当てする一例を示す図である。 少なくともいくつかの例示的な実施形態に従って或る仮想マシンから別の仮想マシンへ仮想メモリ資源を再割り当てする一例を示す図である。 少なくともいくつかの例示的な実施形態に従って或る仮想マシンから別の仮想マシンへ仮想メモリ資源を再割り当てする一例を示す図である。 少なくともいくつかの例示的な実施形態に従って或る仮想マシンから別の仮想マシンへ仮想メモリ資源を再割り当てする一例を示す図である。 少なくともいくつかの例示的な実施形態に従って或る仮想マシンから別の仮想マシンへ仮想メモリ資源を再割り当てする一例を示す図である。 少なくともいくつかの例示的な実施形態に従って第1の仮想マシンから仮想デバイスをイジェクトして、オプションとして、仮想デバイスを第2の仮想マシンに再割り当てするための方法を示す図である。
符号の説明
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・・・仮想メモリ資源オブジェクト

Claims (10)

  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. 前記仮想デバイス資源ドライバ(315)は、
    前記要求に含まれる仮想デバイスのリストに基づいて、いずれの仮想デバイス(220、221)がイジェクト用に特定されるのかを判断し、
    前記要求にリストされた前記仮想デバイスが利用可能である場合に、前記リストされた仮想デバイスを前記仮想マシンからイジェクトする
    請求項1に記載の方法。
  5. 前記ハイパーバイザ(200)が、1つ又は2つ以上の仮想デバイス(220、221)を前記仮想マシンに追加する要求を前記仮想デバイス資源オブジェクトへ送信することと、
    前記仮想デバイス資源オブジェクトが、前記追加する要求を、前記仮想デバイス資源ドライバ(315)へ転送することと、
    前記仮想デバイス資源ドライバが、前記1つ又は2つ以上の仮想デバイスを、それぞれ、前記仮想マシンに個別に追加することと
    をさらに含む請求項1に記載の方法。
  6. コンピュータシステムであって、
    仮想マシンを実施する仮想マシンソフトウェア(300)を実行する実プロセッサであって、前記仮想マシンは、仮想プロセッサと、仮想資源デバイスドライバと、仮想デバイス資源オブジェクトを含む仮想ファームウェア(316)と、複数の仮想デバイス(220、221)とを備える、実プロセッサと、
    前記プロセッサに結合され、前記仮想マシンソフトウェアは、前記複数の仮想デバイスのそれぞれを、該実デバイスの一意の一部分(subdivision)に関連付ける実デバイス(110)と
    を備え、
    前記実プロセッサ上で実行されるハイパーバイザ(200)は、前記複数の仮想デバイスの1つ又は2つ以上の仮想デバイスを前記仮想マシンからイジェクトする要求を前記仮想ファームウェアへ送信し、
    前記仮想ファームウェアの中の仮想デバイス資源オブジェクトは、前記イジェクトする要求を仮想デバイス資源ドライバに転送し、
    前記仮想デバイス資源ドライバは、前記要求された1つ又は2つ以上の仮想デバイスを前記仮想マシンから個別にイジェクトさせる
    コンピュータシステム。
  7. 前記仮想デバイス資源オブジェクトは、前記複数の仮想デバイス(220、221)のデバイスタイプに関連付けられている
    請求項6に記載のコンピュータシステム。
  8. 前記実デバイス(110)は、
    実メモリデバイス
    を備え、
    前記複数の仮想デバイス(220、221)は、
    それぞれが前記実メモリデバイスによって占有されたアドレス空間の一意の部分範囲(sub-range)に関連付けられている複数の仮想メモリデバイス
    を備える
    請求項6に記載のコンピュータシステム。
  9. 前記仮想デバイス資源ドライバは、
    前記イジェクトする要求に含まれるメトリックに基づいて、割り当て解除する要求を満たすのに必要な仮想デバイス(220、221)の個数を求め、さらに、前記複数の仮想デバイスのいずれが、前記イジェクトする要求を満たすのに使用されるよう選択されるのかを判断し、
    少なくとも求められた個数の仮想デバイスが、前記仮想デバイス資源ドライバによって使用中でないと判断された場合に、必要であると判断され使用されるように選択される前記仮想デバイスをイジェクトする
    請求項6に記載のコンピュータシステム。
  10. 前記仮想デバイス資源ドライバは、
    前記要求において提示されている仮想デバイスのリストに基づいて、いずれの仮想デバイス(220、221)がイジェクト用に特定されるのかを判断し、
    前記要求においてリストされている前記仮想デバイスが利用可能である場合に、前記リストされた仮想デバイスを前記仮想マシンからイジェクトする
    請求項6に記載のコンピュータシステム。
JP2008274368A 2007-10-31 2008-10-24 仮想マシンデバイスの動的割り当て Expired - Fee Related JP5376496B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/932,440 US8281303B2 (en) 2007-10-31 2007-10-31 Dynamic ejection of virtual devices on ejection request from virtual device resource object within the virtual firmware to virtual resource driver executing in virtual machine
US11/932,440 2007-10-31

Publications (2)

Publication Number Publication Date
JP2009110518A JP2009110518A (ja) 2009-05-21
JP5376496B2 true JP5376496B2 (ja) 2013-12-25

Family

ID=40469933

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008274368A Expired - Fee Related JP5376496B2 (ja) 2007-10-31 2008-10-24 仮想マシンデバイスの動的割り当て

Country Status (4)

Country Link
US (1) US8281303B2 (ja)
EP (1) EP2056199A3 (ja)
JP (1) JP5376496B2 (ja)
CN (1) CN101425022B (ja)

Families Citing this family (60)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8479194B2 (en) * 2007-04-25 2013-07-02 Microsoft Corporation Virtual machine migration
US8332847B1 (en) 2008-01-10 2012-12-11 Hewlett-Packard Development Company, L. P. Validating manual virtual machine migration
US8185894B1 (en) * 2008-01-10 2012-05-22 Hewlett-Packard Development Company, L.P. Training a virtual machine placement controller
US20090216519A1 (en) * 2008-02-25 2009-08-27 Mohan Parthasarathy Data Processing System And Method
WO2009145098A1 (ja) * 2008-05-28 2009-12-03 日本電気株式会社 I/o接続システム、方法及びプログラム
US8145871B2 (en) * 2008-06-09 2012-03-27 International Business Machines Corporation Dynamic allocation of virtual real memory for applications based on monitored usage
US9262194B2 (en) * 2008-06-10 2016-02-16 Apple Inc. Virtual machine communications
EP2329369A1 (en) * 2008-08-25 2011-06-08 Power-One Italy S.p.a. A hardware virtualization system
EP2202639B1 (en) * 2008-12-24 2012-09-12 VirtualLogix SA Virtual machine monitor
US9405347B2 (en) * 2009-02-26 2016-08-02 Microsoft Technology Licensing, Llc Power-saving operating system for virtual environment
US9396042B2 (en) 2009-04-17 2016-07-19 Citrix Systems, Inc. Methods and systems for evaluating historical metrics in selecting a physical host for execution of a virtual machine
US8291416B2 (en) * 2009-04-17 2012-10-16 Citrix Systems, Inc. Methods and systems for using a plurality of historical metrics to select a physical host for virtual machine execution
US8954487B2 (en) * 2009-06-23 2015-02-10 Samsung Electronics Co., Ltd. Management server and method for providing cloud computing service
US20110029971A1 (en) * 2009-07-30 2011-02-03 Fujitsu Limited Information processing apparatus, image processing method and computer program
US9037717B2 (en) * 2009-09-21 2015-05-19 International Business Machines Corporation Virtual machine demand estimation
US11132237B2 (en) * 2009-09-24 2021-09-28 Oracle International Corporation System and method for usage-based application licensing in a hypervisor virtual execution environment
US8402461B2 (en) * 2009-11-15 2013-03-19 Hewlett-Packard Development Company, L. P. Switching between direct mode and indirect mode for virtual machine I/O requests
US8301818B2 (en) * 2009-12-11 2012-10-30 Oracle America, Inc. Virtual hot plugging of devices and virtual devices
US8434081B2 (en) * 2010-07-02 2013-04-30 International Business Machines Corporation Storage manager for virtual machines with virtual storage
US8943260B2 (en) * 2011-03-13 2015-01-27 International Business Machines Corporation Dynamic memory management in a virtualized computing environment
US9183030B2 (en) 2011-04-27 2015-11-10 Microsoft Technology Licensing, Llc Virtual processor allocation techniques
EP2521035B1 (de) * 2011-05-06 2018-02-21 Siemens Aktiengesellschaft Verfahren und Anordnung zur Konfigurierung einer Ressource für eine virtuelle Laufzeitumgebung
TW201250464A (en) * 2011-06-01 2012-12-16 Hon Hai Prec Ind Co Ltd System and method for monitoring virtual machines
US9432258B2 (en) 2011-06-06 2016-08-30 At&T Intellectual Property I, L.P. Methods and apparatus to configure virtual private mobile networks to reduce latency
US9386035B2 (en) 2011-06-21 2016-07-05 At&T Intellectual Property I, L.P. Methods and apparatus to configure virtual private mobile networks for security
US10044678B2 (en) * 2011-08-31 2018-08-07 At&T Intellectual Property I, L.P. Methods and apparatus to configure virtual private mobile networks with virtual private networks
US8666723B2 (en) * 2011-08-31 2014-03-04 Oregon State Board Of Higher Education On Behalf Of Portland State University System and methods for generating and managing a virtual device
EP2570920A1 (en) 2011-09-16 2013-03-20 France Télécom System and method for cross-platform application execution and display
US9886312B2 (en) 2011-09-28 2018-02-06 Microsoft Technology Licensing, Llc Dynamic provisioning of virtual video memory based on virtual video controller configuration
US9448810B2 (en) 2011-10-21 2016-09-20 Hewlett-Packard Development Company, L.P. Web-based interface to access a function of a basic input/output system
DE112011105745B4 (de) * 2011-10-21 2021-09-23 Hewlett-Packard Development Company, L.P. Bereitstellen einer Funktion eines Basisdatenaustauschsystems (BIOS) in einer privilegierten Domain
WO2013088818A1 (ja) * 2011-12-13 2013-06-20 株式会社日立製作所 仮想計算機システム、仮想化機構、及びデータ管理方法
WO2013123650A1 (zh) * 2012-02-22 2013-08-29 华为技术有限公司 虚拟机分配方法和虚拟机分配装置
US20150127916A1 (en) * 2012-04-25 2015-05-07 Hewlett-Packard Development Company, L.P. Dynamic memory allocation
US9122418B2 (en) * 2012-08-07 2015-09-01 Xyratex Technology Limited—A Seagate Company Method of controlling the capacity of a virtual storage system, and a virtual storage system
US9152540B2 (en) 2012-08-31 2015-10-06 Oregon State Board Of Higher Education On Behalf Of Portland State University System and methods for generating and managing a virtual device
US9575788B2 (en) * 2012-09-04 2017-02-21 Red Hat Israel, Ltd. Hypervisor handling of processor hotplug requests
US9195585B2 (en) * 2013-01-23 2015-11-24 Vmware, Inc. Techniques for allocating and surfacing host-side storage capacity to virtual machines
US11669441B1 (en) 2013-03-14 2023-06-06 Amazon Technologies, Inc. Secure virtual machine reboot via memory allocation recycling
US9507540B1 (en) * 2013-03-14 2016-11-29 Amazon Technologies, Inc. Secure virtual machine memory allocation management via memory usage trust groups
US9323552B1 (en) 2013-03-14 2016-04-26 Amazon Technologies, Inc. Secure virtual machine memory allocation management via dedicated memory pools
US10095606B2 (en) * 2014-06-20 2018-10-09 Red Hat Israel, Ltd. Guest-independent testing of guest firmware in virtualized systems
CN104461731B (zh) * 2014-10-23 2018-06-15 新华三技术有限公司 一种动态资源扩展中虚拟机资源回收方法和装置
CN107209685B (zh) * 2015-01-27 2020-06-19 慧与发展有限责任合伙企业 虚拟机布置
US10491667B1 (en) 2015-03-16 2019-11-26 Amazon Technologies, Inc. Customized memory modules in multi-tenant service provider systems
CN105138389B (zh) * 2015-07-30 2019-01-11 北京京东尚科信息技术有限公司 一种集群中虚拟设备的管理方法及系统
US10394586B2 (en) * 2015-08-13 2019-08-27 Red Hat Israel, Ltd. Using capability indicators to indicate support for guest driven surprise removal of virtual PCI devices
CN106959889A (zh) * 2016-01-11 2017-07-18 阿里巴巴集团控股有限公司 一种服务器资源调整的方法和装置
GB201603469D0 (en) * 2016-02-29 2016-04-13 Ibm Securely removing system capabilities from a logical partition
US10459751B2 (en) * 2017-06-30 2019-10-29 ATI Technologies ULC. Varying firmware for virtualized device
WO2019024994A1 (en) * 2017-08-02 2019-02-07 Huawei Technologies Co., Ltd. SYSTEM, METHOD AND COMPUTER PROGRAM FOR VIRTUAL MACHINE RESOURCE ALLOCATION
WO2019028596A1 (zh) * 2017-08-07 2019-02-14 深圳前海达闼云端智能科技有限公司 一种虚拟机的启动方法、装置和智能终端
US10782908B2 (en) 2018-02-05 2020-09-22 Micron Technology, Inc. Predictive data orchestration in multi-tier memory systems
US11416395B2 (en) * 2018-02-05 2022-08-16 Micron Technology, Inc. Memory virtualization for accessing heterogeneous memory components
US11099789B2 (en) 2018-02-05 2021-08-24 Micron Technology, Inc. Remote direct memory access in multi-tier memory systems
US10880401B2 (en) 2018-02-12 2020-12-29 Micron Technology, Inc. Optimization of data access and communication in memory systems
US10877892B2 (en) 2018-07-11 2020-12-29 Micron Technology, Inc. Predictive paging to accelerate memory access
US10852949B2 (en) 2019-04-15 2020-12-01 Micron Technology, Inc. Predictive data pre-fetching in a data storage device
US11494297B2 (en) * 2020-07-23 2022-11-08 Vmware, Inc. Concurrent memory management in a computing system
US11487694B1 (en) * 2021-12-17 2022-11-01 SambaNova Systems, Inc. Hot-plug events in a pool of reconfigurable data flow resources

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4253145A (en) * 1978-12-26 1981-02-24 Honeywell Information Systems Inc. Hardware virtualizer for supporting recursive virtual computer systems on a host computer system
US4649479A (en) * 1985-02-28 1987-03-10 International Business Machines Corp. Device driver and adapter binding technique
JPH0799501B2 (ja) * 1991-11-18 1995-10-25 インターナショナル・ビジネス・マシーンズ・コーポレイション 複数アプリケーションの同時実行装置
US5898861A (en) * 1996-10-18 1999-04-27 Compaq Computer Corporation Transparent keyboard hot plug
JP2002041305A (ja) * 2000-07-26 2002-02-08 Hitachi Ltd 仮想計算機システムにおける計算機資源の割当て方法および仮想計算機システム
US20050108711A1 (en) * 2003-11-13 2005-05-19 Infineon Technologies North America Corporation Machine instruction for enhanced control of multiple virtual processor systems
US7467381B2 (en) * 2003-12-16 2008-12-16 Intel Corporation Resource partitioning and direct access utilizing hardware support for virtualization
US7971203B2 (en) * 2004-03-05 2011-06-28 Intel Corporation Method, apparatus and system for dynamically reassigning a physical device from one virtual machine to another
US7401240B2 (en) * 2004-06-03 2008-07-15 International Business Machines Corporation Method for dynamically managing power in microprocessor chips according to present processing demands
US7281124B2 (en) * 2004-06-17 2007-10-09 Intel Corporation Establishing a virtual drive accessible to pre-boot and operating system runtime phases
US8914606B2 (en) 2004-07-08 2014-12-16 Hewlett-Packard Development Company, L.P. System and method for soft partitioning a computer system
US20060107262A1 (en) * 2004-11-03 2006-05-18 Intel Corporation Power consumption-based thread scheduling
US20060184938A1 (en) * 2005-02-17 2006-08-17 Intel Corporation Method, apparatus and system for dynamically reassigning memory from one virtual machine to another
US20060294401A1 (en) * 2005-06-24 2006-12-28 Dell Products L.P. Power management of multiple processors
US7937701B2 (en) * 2005-06-30 2011-05-03 Intel Corporation ACPI communication between virtual machine monitor and policy virtual machine via mailbox
US20070074199A1 (en) * 2005-09-27 2007-03-29 Sebastian Schoenberg Method and apparatus for delivering microcode updates through virtual machine operations
US20070074067A1 (en) * 2005-09-29 2007-03-29 Rothman Michael A Maintaining memory reliability
US8777737B2 (en) * 2006-04-13 2014-07-15 Igt Method and apparatus for integrating remotely-hosted and locally rendered content on a gaming device

Also Published As

Publication number Publication date
EP2056199A3 (en) 2013-04-17
CN101425022A (zh) 2009-05-06
JP2009110518A (ja) 2009-05-21
EP2056199A2 (en) 2009-05-06
US20090113422A1 (en) 2009-04-30
CN101425022B (zh) 2013-03-27
US8281303B2 (en) 2012-10-02

Similar Documents

Publication Publication Date Title
JP5376496B2 (ja) 仮想マシンデバイスの動的割り当て
US7971203B2 (en) Method, apparatus and system for dynamically reassigning a physical device from one virtual machine to another
CN106537340B (zh) 虚拟化信息操纵系统的输入/输出加速设备和方法
CN103034524B (zh) 半虚拟化的虚拟gpu
CN102906691B (zh) 虚拟机迁移技术
US8972991B2 (en) Systems and methods for exposing processor topology for virtual machines
KR102047558B1 (ko) 가상 디스크 저장 기술
EP1548589B1 (en) Systems and methods for bimodal device virtualization of actual and idealized hardware-based devices
US20060184938A1 (en) Method, apparatus and system for dynamically reassigning memory from one virtual machine to another
CN107430570B (zh) 具有SR-IOV和xHCI-IOV的附加安全执行环境
US10289564B2 (en) Computer and memory region management method
JP2011100431A (ja) 仮想マシン制御装置及び仮想マシン制御方法
CN102402462A (zh) 用于对启用gpu的虚拟机进行负载平衡的技术
JP2008146566A (ja) 計算機、仮想デバイスの制御方法およびそのプログラム
JP2022516486A (ja) リソース管理方法と装置、電子デバイス、及び記録媒体
WO2014120113A1 (en) Assigning processors to memory mapped configuration
US10235195B2 (en) Systems and methods for discovering private devices coupled to a hardware accelerator
JP6974510B2 (ja) データを処理するための方法、装置、デバイス及び媒体
US10776145B2 (en) Systems and methods for traffic monitoring in a virtualized software defined storage architecture
CN107766122B (zh) 一种宿主机的可用内存空间设置方法和装置
CN116324706A (zh) 分离式存储器池分配
US8813075B2 (en) Virtual computer system and method of installing virtual computer system
US20160026567A1 (en) Direct memory access method, system and host module for virtual machine
CN111158849A (zh) 支持虚拟机共享io设备的多机计算装置及其io设备共享方法
CN117725014B (zh) Dpu场景下的pcie设备属性修改方法及相关装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20111019

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130408

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130703

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130830

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130918

R150 Certificate of patent or registration of utility model

Ref document number: 5376496

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R360 Written notification for declining of transfer of rights

Free format text: JAPANESE INTERMEDIATE CODE: R360

R371 Transfer withdrawn

Free format text: JAPANESE INTERMEDIATE CODE: R371

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees