JP5452660B2 - 仮想化されたオペレーティングシステムのためのダイレクトメモリアクセスフィルター - Google Patents

仮想化されたオペレーティングシステムのためのダイレクトメモリアクセスフィルター Download PDF

Info

Publication number
JP5452660B2
JP5452660B2 JP2012121967A JP2012121967A JP5452660B2 JP 5452660 B2 JP5452660 B2 JP 5452660B2 JP 2012121967 A JP2012121967 A JP 2012121967A JP 2012121967 A JP2012121967 A JP 2012121967A JP 5452660 B2 JP5452660 B2 JP 5452660B2
Authority
JP
Japan
Prior art keywords
physical memory
guest physical
guest
memory
hypervisor
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.)
Active
Application number
JP2012121967A
Other languages
English (en)
Other versions
JP2012185849A (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.)
Microsoft Corp
Original Assignee
Microsoft Corp
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
Priority claimed from US12/147,199 external-priority patent/US8230155B2/en
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2012185849A publication Critical patent/JP2012185849A/ja
Application granted granted Critical
Publication of JP5452660B2 publication Critical patent/JP5452660B2/ja
Active 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Landscapes

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

Description

コンピュータ産業は、ハードウェアレベルにおいてますます仮想化に向かっている。このような環境において、オペレーティングシステムは、仮想マシンモニタまたはハイパーバイザ上で稼動され、そこでコンピュータハードウェアとの相互作用が仮想化層によって媒介される。これによって、複数の仮想化されたオペレーティングシステム、別名ゲストオペレーティングシステムまたはゲストOSとして知られるシステムを単一のコンピュータ上で実行させることによって、同じマシン上で複数のワークロードが互いに強固に隔離されたて稼動することが可能になる。これは、特に複数のワークロードもしくは複数のサーバアプリケーションの稼動が要求されるIT部門または任意の動作にとって有益である。しかしながら、隔離されたオペレーティングシステムがコンピュータハードウェアと相互作用するたびに、仮想化層が隔離を保持するために介入しなければならないので、仮想化層は、パフォーマンスにかなり不利な条件が生じる。このようなパフォーマンスに不利な条件に対処するために、従来の方法では、ハードウェアに対してゲストオペレーティングシステムのダイレクト制御を行わせることによって、仮想化層が介入しなければいけない相互作用の数を減らしてきた。しかしながら、ゲストオペレーティングシステムにこのようなハードウェアデバイスのダイレクト制御を許可することは、ゲストオペレーティングシステムが、そのゲストオペレーティングシステムに割り付けられたすべてのシステムメモリの制御を拘束されずに排他的に行う許可を常に要求する。ゲストオペレーティングシステムに排他的なメモリアクセスを許可することによって、状態カプセル化、マイグレーション、およびチェックポイントを含む仮想化の多くの利点が失われる。
本文書は、ゲストOSに割り付けられたシステムメモリがオーバーコミットされる間に、物理ハードウェアデバイスに対してゲストOSのダイレクトアクセスを行わせてダイレクトメモリアクセス(DMA)転送を行うことによって、ハイパーバイザ上で実行するゲストオペレーティングシステム(ゲストOS)のランタイムパフォーマンスを向上させるための技術を説明する。一実装において、仮想化を意識するDMAフィルタドライバが仮想化を意識しないオペレーティングシステムのI/Oドライバスタックに挿入される結果、教示された(enlightened)または準仮想化された(paravirtualized)OSになる。DMA転送用のハードウェアデバイスを使用するアプリケーションによる要求に応答して、DMAフィルタドライバは、ターゲットゲスト物理メモリの転送がコミットされると知らされるまで、要求された転送の開始を遅らせることができる。一実装において、フィルタドライバは、ハイパーバイザを呼び出さずに、ゲスト物理メモリのページがコミットされたことをトラッキングするためにキャッシュを使用する。一実装において、フィルタドライバが、ターゲットゲスト物理メモリページがコミットされたことをキャッシュから知らされる場合、フィルタドライバは、要求された転送をただちに開始させる。しかしながら、フィルタドライバが、ターゲットゲスト物理メモリページの少なくとも1つがコミットされていないことをキャッシュから知らされる場合、フィルタドライバは、ハイパーバイザに、コミットされていないすべてのターゲットゲスト物理メモリページを戻すことを要求できる。ひとたびすべてのターゲットゲスト物理メモリページがコミットされたという表示を受信すると、DMAフィルタドライバは、要求された転送を開始させることができる。
一実装において、キャッシュは、ゲスト物理メモリのそれぞれのページと関連付けられた参照カウンタを付加的に備える。一実装において、DMA転送が開始される前にフィルタドライバは、転送の間に潜在的にアクセスされるであろうゲスト物理メモリのそれぞれのページと関連付けられた参照カウンタをインクリメントする。ゲスト物理メモリページの参照カウンタが正の整数を備える場合、ハイパーバイザは、別のワークロードが使用するためにページを占有することは(appropriating)、ドナー(donor)ワークロードおよびシステム全体にとって壊滅的になり得ることが分かる。しかしながら、ゲスト物理メモリページの参照カウンタがゼロである場合、ハイパーバイザは、別のワークロードが使用するためにそのページを安全に占有できる。一実装において、ひとたび転送が完了すると、フィルタドライバは、転送と関連付けられたそれぞれのページの参照カウンタをデクリメントできる。
一実装において、ゲストOSを信用できず、ハイパーバイザからの要求の応答に失敗した結果、そのゲストOSを制限することになる場合がある。一実装において、ハイパーバイザは、フィルタドライバに、キャッシュのすべての参照カウンタをリセットすることを要求できる。ワークロードがハイパーバイザの要求にタイムリーな方法で応答するのに失敗した場合、ハイパーバイザは、そのワークロードを終了できる。
詳細な説明は、添付図面を参照して説明される。図面において、参照番号の最も左の桁は、参照番号が最初に出てくる図を示す。異なる図における同じ参照番号の使用は、同等または同一の項目を示す。
ゲストオペレーティングシステムのI/Oドライバスタックに挿入される具体的な仮想化を意識するフィルタドライバを示す図である。 アプリケーションからDMA転送要求を受信して、その要求を待機リスト上でキャッチする具体的な仮想化を意識するフィルタドライバを示す。 ワークロード間でシステムメモリを共有するための具体的なシステムを示す図である。 キャッシュのそれぞれの要素がメモリのページにマッピングされた具体的なキャッシュを示す図である。 ゲストオペレーティングシステムが複数のドライバスタックを備え、ドライバスタックのそれぞれが単一の同じキャッシュを使用することを示す図である。 ワークロードをマイグレートするための具体的な処理を示す図である。 仮想化を意識するソフトウェアを仮想化を意識しないオペレーティングシステムに挿入する結果、仮想化を意識しないオペレーティングシステムが仮想マシン上で実行される時物理マシン上で実行される時とは異なる動きを示すことを示す図である。 メモリアドレスの範囲を受信するための具体的な処理であり、その範囲によってポイントされたメモリが常駐しているかどうかを判定し、ゲスト物理メモリが常駐していない場合、メモリアドレスの範囲が送信される前にハイパーバイザにそのゲスト物理メモリを常駐させることを要求することを示す図である。 メモリアドレスの範囲を変換する要求を受信するための具体的な処理であり、要求されたメモリが常駐しているかどうかを判定し、要求されたメモリが常駐していない場合、要求をハードウェアアクセス層に送信される前に、ハイパーバイザに要求されたメモリを常駐させるように要求することを示す図である。 仮想化を意識するフィルタドライバを生成する機能性の具体的な処理を示す図である。
以下の考察は、ゲストOSのメモリにオーバーコミットさせる間に、ゲストOSダイレクトアクセスを物理的ハードウェアデバイスに許可することによってハイパーバイザ上で実行するワークロードのランタイム性能を向上させる技術を狙いとしている。ホスト、親パーティション、特権パーティション、ルートパーティション、または仮想マシンマネージャとしても知られるハイパーバイザは、ゲストOSの範囲にない、信頼される管理上のコードの本体である。仮想化されたOSまたは特権がないOSとしても知られるゲストOSは、ハイパーバイザによって生成される仮想マシン上で実行する。ワークロードは、ゲストOS上で実行されるアプリケーションを備えることができる。または代替的に、ワークロードは、ゲストOS含む、仮想マシン上で実行するすべてのソフトウェアスタックを指すことができる。ハイパーバイザは、ハイパーバイザが実行する物理マシンの中に含まれる物理的なシステムメモリを制御できる。この現実の物理的なメモリを「システム物理メモリ」と定義できる。仮想マシン上で実行するゲストOSは、実際にはゲストOSは仮想マシンの仮想化されたメモリにアクセスしている場合でも、ゲストOSが現実の物理メモリにアクセスしていると信じることができる。この「仮想化された」メモリは、「ゲスト物理メモリ」と定義される。ハイパーバイザは、ゲスト物理メモリをシステム物理メモリにマッピングするインダイレクションのレベルを提供する。さらに、ゲストOSは、仮想アドレス空間を用いてゲストOS上で実行するアプリケーションを提供するメモリ仮想化システムを含むことができる。この従来の仮想化を、ハイパーバイザによるシステム物理メモリからゲスト物理メモリへの仮想化とは別個にすることができる。
サーバ環境において、サーバ上で実行する典型的なワークロードは、ホストコンピュータリソースの15−20%を使用する。サーバコンピュータは、最小のまたはゼロのダウンタイムでサーバのワークロードにおいてスパイクを効率的に処理するために、この付加的な処理ヘッドルームが構成されている。また、ただ1つのサーバアプリケーションが単一のマシン上で実行することは一般的である。なぜならば、サーバアプリケーションはマシン上で使用できるリソースをすべて消費することが多いからである。そうでなければ、同じマシン上で他のサーバアプリケーションを用いて円滑に稼動しない。単一のサーバ上で複数のゲストOSを実行するある潜在的な効用は、複数のサーバアプリケーションを実行し、それぞれのサーバアプリケーションが、ワークロード間でシステムリソースを共有しながらそれ自体のゲストOSを有する能力である。
仮想化は、あるワークロードからのメモリページを別のワークロードが使用するために占有する等、仮想マシンシステムにおいてシステムリソースを共有させることができる。一実装において、ハイパーバイザは、あるゲストOSからのメモリページを占有してそのメモリページを別のゲストOSに与えると同時に、DMA転送を用いてゲストOSがシステム物理メモリをターゲットするようにできる。DMA転送を用いてゲストOSをシステム物理メモリにターゲットさせることによって、すべてのシステム性能を改善できる。メモリをあるゲストOSから別のゲストOSに移動させることは、あるゲストOSがメモリに窮乏している一方で別のゲストOSが余分なメモリを有している時に有益であり、それによってハイパーバイザがメモリをそれぞれのゲストOSに効率的に割り付けることができる。以前では、システム物理メモリへのゲストOSダイレクトアクセスをDMA転送に許可することは、ゲストOSの中でメモリを安全に共有するハイパーバイザの能力を不可能にしていた。なぜならば、DMA転送によって後でアクセスされるゲストOSのもとからメモリを移動させることは壊滅的なシステムクラッシュを引き起こす場合があるからである。
一実装において、ゲストOSがDMA転送を用いてシステム物理メモリをターゲットしている間にハイパーバイザがゲストOS間でメモリを共有できるようにすることによって、そのゲストOSがDMA転送を用いてシステム物理メモリをターゲットしている間の状態をカプセル化できる。ゲストOSの状態カプセル化は、ゲストOSが実行する物理ハードウェアの任意のパーマネント接続からゲストOSを隔離することを備える。従って、状態カプセル化は、仮想マシンをあるホストから別のホストに転送させることができる。なぜならば、ゲストOSは、ゲストOSが実行するハードウェアに必ずしも接続されるとは限らないからである。あるホストから別のホストへのこの転送は、マイグレーションとして知られる。マイグレーションは、仮想マシンが実行し続ける間に、データ損失がほとんど無いまたはゼロで、第1のマシン上で実行する第1のハイパーバイザが、すべての仮想マシンを第2のマシン上で実行する第2のハイパーバイザに転送するようにできる。一実装において、マイグレーションを使用できると同時に、DMA転送の間にゲストOSがシステム物理メモリをターゲットするようにできる。さらに、状態カプセル化は、スナップショット(またはチェックポイント)の生成を可能にする。スナップショットが仮想マシンのすべての状態を保存することによって、ユーザがシームレスに、データを損失せずに以前の状態にリバートするようにできる。
従来、ハイパーバイザは、ほとんどの計算を仮想マシン上で実行する仮想マシンの中で行わせて、中断せずに進める。しかしながら、このような仮想マシン上で実行するゲストOSがコンピュータのI/Oシステム(ディスク、ネットワーク、ビデオ等)と相互作用しようとする時、これらのオペレーティングシステムが現実にはデバイスを所有しない理由から、従来のハイパーバイザは、このアクセスをインターセプトしなければならない。ゲストOSがデバイスをダイレクトに操作することを許可されたとしても、さまざまなゲストOSは、衝突するコマンドをデバイスに発行して、コンピュータにクラッシュを引き起こすであろう。
クラッシュを防ぐために、ゲストOSがI/Oサブシステムと相互作用しようとする度に、従来のハイパーバイザは、呼をインターセプトして、ゲストOSが遂行しようとした動作と同等のある動作を行うことができる。例えば、ゲストOSがディスクコントローラをプログラムしてディスクからデータのブロックを読み取ろうとした場合、従来のハイパーバイザは、ゲストOSを停止し、仮想ディスクの内容を含むファイルからデータのブロックを読み取り、ファイルからのデータをゲストOSによって占有されたメモリに格納し、ゲストOSを再開始できる。この処理は有効であるが、速度が遅い。
仮想化されたオペレーティングシステムまたは他のワークロードに、仮想マシンの中の特定のデバイスのすべてまたは一部をダイレクトに制御させる結果、そのようなデバイスへのアクセスを中断せずにハイパーバイザによって発生させることが可能になり、仮想化されたOSの性能がかなり向上することにつながることは有益であろう。理想的には、仮想化されたOSは、メモリをオーバーコミットする能力を犠牲にせずにハードウェアデバイスをダイレクトに制御することが可能である。ゲスト物理メモリがシステム物理メモリよりも多くワークロードに割り付けられた時、メモリは、1インスタンスにおいてオーバーコミットされる。
ハイパーバイザがゲストOSが実行するのための環境を生成する場合、ハイパーバイザは、あたかもワークロードが物理メモリの隣接領域を所有するワークロードのように見え、そのゲストOSが物理マシン上で実行したならば使用できたものに類似するメモリの表示を生成する。上述のように、これは、ゲスト物理メモリと呼ばれる。現実において、ゲストOSに割り当てられたメモリは、ほとんど隣接せず、ゲストOSがゲストOSのメモリのアドレスを指定するのに使用するアドレスは、ほとんどそのメモリの現実の物理アドレスではない。ハイパーバイザは、プロセッサまたはハイパーバイザがオンザフライ(on the fly)でこのようなアドレスを見つける(fix up)ことを可能にするインダイレクションテーブル(通常はページテーブルと呼ばれる)を生成して保持する。ゲストOSが所有しているとゲストOSが知覚する一部のメモリは存在せずまたは別のゲストOSに一時的に貸し出すことも可能である。これは、ゲストOSが現実の物理I/Oデバイスをダイレクトに制御する時に問題が生じる。ゲストOSは、そのデバイスに実際には存在しないメモリに対して読み取りまたは書き込みをするように指示することもある。また、現実のシステム物理アドレスよりもむしろメモリの仮想化されたアドレスを使用して、デバイスにメモリに対して読み取りまたは書き込みをするように指示することもある。I/Oデバイスによってメモリに対してダイレクトに読み取りまたは書き込みをするこの処理は、ダイレクトメモリアクセス(Direct Memory Access)またはDMAと呼ばれる。
この問題に対する一つの提案された解決法は、しばしば「I/Oページフォルト(Page Faults)」と呼ばれ、ゲストOSにDMA転送を行うようにデバイスに指示させることに関与する。ひとたびデバイスがDMA転送を開始すると、コンピュータのメモリコントローラは、その処理をインターセプトして、ハイパーバイザにハイパーバイザのリソースを再割り付けするように指示する結果、システム物理メモリが、デバイスがアクセスしようとするアドレスにおいて使用可能になる。次に、メモリが使用可能である時、および正しい内容がメモリにロードされた時、転送を進めることを許可される。この解決法は、ゲストOSの中のソフトウェアを変更することに関与することができない。しかしながら、この解決法は、デバイスがトランザクションを開始する時からそのトランザクションを進めることを許可される時までのほとんど無制限の時間をデバイスが耐えることを要求する。 この遅延は、無制限である。なぜならば、ハイパーバイザは、転送がすでに開始された後にその転送を認識するので、実際の物理メモリがスワップファイルからの読み取りを含む転送に使用できることを確認する任意の処理は、ハードウェアデバイスがデータを受信または送信し続ける間に発生するからである。この時間の間、ターゲットハードウェアデバイスは、送信されたすべてのデータをターゲットハードウェアデバイスの内蔵バッファに格納しなければならない。この待ち時間を、大容量のバッファをデバイスに組み込むことによって対処することができるが、それによってデバイスのコストがかなり高くなる。
代替的に、ハードウェアデバイスが、転送が開始される前にハイパーバイザの中で稼動しているデバイスドライバを中断する場合、この待ち時間を減らすことができる。ひとたび中断されると、ハイパーバイザの中のデバイスドライバは、ターゲットメモリがコミットされることを確認する。しかしながら、ハイパーバイザを呼び出すことは費用のかかる動作である理由から、この中断自体は性能にとって問題である。
一実装において、ソフトウェアコンポーネントをゲストOSに挿入して、I/Oトランザクションが開始される前にソフトウェア層においてI/Oトランザクションをサスペンドし、I/Oトランザクションによってターゲットされたゲスト物理メモリが実際の物理メモリによって戻されたことを確認する。ターゲットゲスト物理メモリがコミットされるのを確認するためにトランザクションをサスペンドすることは、I/Oページフォルトモードによって引き起こされる任意の待ち時間を排除し、中断せずにトランザクションが行えるようにできる。トランザクションが開始される前にソフトウェア層においてトランザクションをサスペンドすることは、教示されたゲストOSが、ターゲットゲスト物理メモリがハイパーバイザとの通信を行わずに戻されることを確認できるようにし得る。しかしながら、一実装において、ゲストOSは、ハイパーバイザとの通信を行って、ターゲットゲスト物理メモリページが今からDMA転送に使用されることをハイパーバイザに知らせることができる。この通信は、ゲストOS参照カウントテーブル、またはゲストOSとのより明示的な通信を使用することができる。
図1は、コンピュータ上で実行できる具体的な仮想マシン環境100を示す。環境100は、コンピュータ上でダイレクトに実行するハイパーバイザ102を含む。一実装におけるコンピュータを、複数のワークロードを稼動するのに必要なリソースを有するサーバコンピュータとすることができ、それぞれのワークロードはそれ自体のゲストOSインスタンス上で実行する。別の環境において、コンピュータは、デスクトップまたはラップトップコンピュータ等のパーソナルコンピュータとすることができ、ユーザが複数のオペレーティングシステムを同時に稼動するようにできる。一実装において、ハイパーバイザは、ハイパーバイザI/Oサブシステム104を含む。ハイパーバイザI/Oサブシステム104は、コンピュータ上のすべてのハードウェアリソースを制御して、複数のゲストオペレーティングシステムが衝突するコマンドを実際のハードウェアデバイスに発行しないことを確認できる。ハイパーバイザI/Oサブシステム104は、仮想マシンに割り付けられた仮想リソースを割り付けて制御するためのゲストOSメモリマネージメントコンポーネント106を含むことができる。
ハイパーバイザ102、ハイパーバイザI/Oサブシステム104、およびゲストOSメモリマネージメントコンポーネント106は、ゲストオペレーティングシステム108またはゲストOS108が実行する仮想マシンを協調して生成できる。一実装において、ゲストOSが仮想マシン上または物理マシン上のどちらで稼動しているかをゲストOSが意識しているという意味で、ゲストOS108を教示できる。教示されたゲストOSは、仮想化されたリソースおよび物理リソースについて行われた異なる仮定に基づいて、仮想マシン上で実行する時に、物理マシン上とは異なったリソースを利用できる。さらに、教示されたゲストOSは、ハイパーバイザ102と相互作用してリソースを共有できる。一実装において、教示されたゲストOSは、別のゲストOSが使用するために、協調してハイパーバイザ102からゲスト物理メモリを要求するまたはハイパーバイザ102に対してゲスト物理メモリを放棄することができる。
別の実装において、ゲストOS108は、ゲストOS108が仮想マシン上で実行していることを意識してない。仮想化を意識しないまたは協調しないゲストOS108としても知られるこの「教示されていない(un-enlightened)」ゲストOS108は、教示されたゲストOSよりも劣る性能を仮想マシン上で示すこともあるが、それ以外は同一のゲストOSである。教示されていないゲストOS108は、教示されていないゲストOS108が物理マシン上で動作するのとまったく同じ動作を仮想マシン上で行うことができる。
多くのオペレーティングシステムは、デバイスドライバが典型的に使用するソフトウェア抽象化をダイレクトメモリアクセスに提供する。この抽象化は、デバイスドライバに物理アドレスのリストを、典型的にはメモリディスクリプタリストまたはMDLの形式で提供させるいくつかのプログラミングインタフェースおよびオブジェクトに関与し、代わりにデバイス論理アドレスのリストを、典型的にはスキャター/ギャザーリストの形式で受信する。
物理アドレスは、ハイパーバイザによって使用される、現実の物理メモリを読み取るまたは書き込むためのシステム物理アドレスとすることができる。代替的に、物理アドレスは、ゲストOS108にとって現実の物理アドレスのように見えることもあるが、実際は、ゲスト物理アドレスとして知られる仮想化されたアドレスである。一方、デバイス論理アドレスは、ハードウェアデバイスによって使用される、物理メモリを読み取るまたは書き込むためのアドレスである。ひとたびデバイス論理アドレスのスキャター/ギャザーリストがインタフェースから戻ると、デバイスドライバは、デバイスドライバのハードウェアをプログラムして、関連付けられた読み取りまたは書き込みを実際に実行することができる。
このDMA抽象化を通じて、多くのオペレーティングシステムは、アドインコンポーネントがDMA機能性を拡張できるようにする。一実装において、DMAフィルタ114は、DMAフィルタが物理アドレスをデバイス論理アドレスに変換する必要がある時にDMAフィルタが呼び出す機能のポインタを、デバイスドライバ112が読み出すことによってDMAフィルタ自体をその処理に挿入できる。別の環境において、仮想化を意識するハードウェア抽象化層(HAL)120を、仮想化を意識しないゲストOS108に挿入できることによって、仮想化を意識しないゲストOS108に教示された動きを示すようにさせる。追加的または代替的に、仮想化を意識するモジュールを仮想化を意識しないゲストOSの実行に挿入するまたは仮想化を意識しないゲストOSの任意のコンポーネントと置き換えることができる。このような手段を通して、仮想化を意識するコンポーネントを仮想化を意識しないゲストOS108に挿入できることによって、仮想化を意識しないゲストOS108に教示されたまたは準仮想化された(paravirtualized)ゲストOSと同じ動きを示すようにさせる。
一実装において、デバイスドライバ112は、DMA転送を開始してハードウェアデバイスへデータを書き込むまたはハードウェアデバイスからデータを読み取ることができる。デバイスドライバ112は、要求122をプラグアンドプレイマネージャ118に送信することができ、要求122は、ゲストOSのゲスト物理アドレスで定義されたメモリの範囲を含む。一実装において、プラグアンドプレイマネージャ118は、メモリの範囲をゲスト物理アドレスからバスに関連したアドレスに変換するのに使用される機能のポインタに対する要求124をハードウェアアクセス層120に送信できる。ひとたび要求124を受信すると、仮想化を意識するハードウェアアクセス層120は、ハイパーバイザ102との通信を行うことができ、DMA転送が開始される前に、DMA転送と関連付けられたメモリがコミットされることを確認する。
別の実装において、DMAフィルタ114がI/Oドライバスタック110に挿入される。一実装において、DMAフィルタ114は、I/Oドライバスタック110の中で通信を行うのに使用されるプラグアンドプレイマネージャ118からI/O要求パケット(IRP)を受信できる。IRPの1つを、デバイスドライバ112からの、ゲスト物理メモリアドレスの範囲をバスに関連したアドレスの範囲に変換するのに使用される機能のポインタに対する要求126とすることができる。一実装において、I/O要求パケットが送信されて、I/Oドライバスタック110において最良のコンポーネントを見つけて、DMAサービスに使用されるインタフェースを提供する。I/Oドライバスタック110においてドライバがまったく応答しない場合、HAL120は、要求されたインタフェースを提供できる。ひとたび要求126を受信すると仮想化を意識するDMAフィルタ114は、ハイパーバイザ102との通信を行うことができ、DMA転送が開始される前に、DMA転送と関連付けられたメモリがコミットされることを確認する。メッセージ128がプラグアンドプレイマネージャ118に戻り、転送が開始される。
図2は、コンピュータ上で実行される具体的な仮想マシン環境200を示す。一実装において、DMAフィルタ114は、トランザクションに必要なメモリがコミットされることを確認するために、要求されたDMA転送をサスペンドする。要求されたDMA転送は、メモリアドレスの範囲を備える。ゲストOS108にとってこのようなメモリアドレスは、物理メモリアドレスのように見えるので、すぐにDMA転送に使用できるが、このようなアドレスは、実際には、実際の物理メモリアドレスにマッピングしない仮想メモリアドレスの形式の、ゲスト物理メモリアドレスとすることができる。さらに、このようなゲスト物理メモリアドレスの一部を、現在、現実の物理メモリアドレスにマッピングできない。なぜならば、ハイパーバイザ102が、別のゲストOSが使用するためにメモリの実際の物理ページの一部を占有しているからである。DMAトランザクションを、ハイパーバイザ102が介入しなくてもゲストOS108において安全に行うことができる前に、トランザクションによって参照されたメモリをトランザクションの継続時間(lifetime)にコミットしなければならないし、トランザクションによって参照されたメモリアドレスを、ゲスト物理アドレス空間とシステム物理アドレス空間との間で有効に変換しなければならない。一実装において、DMAフィルタ114は、ゲストOSメモリマネージメントコンポーネント106との通信を行って、トランザクションによって参照されたメモリページのすべてがコミットされることを確認できる。一実装において、DMAフィルタ114は、ゲストOSメモリマネージメントコンポーネント106との通信を行って、ゲストOSメモリマネージメントコンポーネント106がトランザクションによって参照されたコミットされていないすべてのメモリページをコミットすることを要求できる。
一実装において、トランザクションは、アプリケーション202において開始され(例えば、ディスクの読み取り)、そのトランザクションを処理するハードウェアデバイスのデバイスドライバ112に渡される。次にデバイスドライバ112は、デバイスドライバのDMAインタフェースを使用して、トランザクションによって参照された宛先メモリのデバイス論理アドレスを要求する。DMAフィルタ114は、このデバイス論理アドレスの要求をインターセプトして、参照されたメモリがコミットされて有効な変換が存在するまでトランザクションを待機リスト204に置くことができる。次にDMAフィルタ114は、デバイスドライバ112に戻った論理アドレスの得られたセットとともにトランザクションを提供することができ、次にハードウェアをプログラムしてDMAを通じてデータの転送を行うことができる。
図3は、コンピュータ上で実行される具体的なゲスト物理メモリの共有環境300を示す。一実装において、ワークロード302、ワークロード304、およびワークロード306のすべてはハイパーバイザ上で実行して、それぞれのワークロードをシステム物理メモリ308部分に割り付けることができる。ワークロード302−306は、他のサーバタスクの中でもとりわけ、データベース、電子メールサーバ、ウェブサーバ、またはOLAPサーバを実行できる。ワークロード302は、システム物理メモリ308にマッピングできるゲスト物理メモリ310を使用できる。ワークロード304および306も同様に、ゲスト物理メモリ312および314を使用でき、それぞれがシステム物理メモリ308にマッピングされる。ワークロード302のゲスト物理メモリ310のそれぞれのページを、システム物理メモリ308におけるメモリのページにマッピングできる。しかしながら、ハイパーバイザがワークロード302とは別にゲスト物理メモリのページをスチール(steal)し、そのページをワークロード304のページとして提供する可能性がある。それによって、オーバーラップ316が示すように、2つのワークロードがシステム物理メモリの同じ部分を示す、または1つのワークロードが、別のワークロードが使用するために実際に占有されているシステム物理メモリページを1つのワークロードが所有しているかのように実行する可能性がある。この場合、ワークロード302および304が実行しているゲストオペレーティングシステムは、オーバーコミットされる。なぜならば、ハイパーバイザのゲストOSメモリマネージメントコンポーネントが、システム物理メモリ308において実際に使用できるよりも多くゲスト物理メモリをワークロードに割り付けているからである。ワークロード302がオーバーラップ316に含まれるゲスト物理メモリにアクセスしようとする場合、ハイパーバイザが介入してワークロード302をシステム物理メモリの新しいページに提供する場合があり、任意には、スワップファイルからの値をメモリの新しいページにコピーする。
図4は、具体的なドライバスタック400を示す。一実装において、メモリのターゲットページがコミットされることを確認する処理は、メッセージをゲストOSメモリマネージャ106に送信して応答メッセージを受信することに関与する。別の実装において、DMAフィルタ114がハイパーバイザ102との通信を行わなければならい回数を減らすまたは排除するためにメモリ状態キャッシュ402を導入することによって、応答性を向上させることができる。メモリ状態キャッシュ402は、システム物理メモリ308のどのメモリページがコミットされたかを示す配列を格納できる。メモリ状態キャッシュ402をDMAフィルタ114に格納できる結果、DMAフィルタは、ハイパーバイザ102を呼び出さずに完全なゲストOS108の文脈においてアクセスできるようになる。メモリ状態キャッシュ402は、メモリの1ページに対し4ビットを備えることができる。他のビット数も同様に考慮される。一実施形態において、1ビットを使用してページがコミットされたかどうかを示すことができ、残りの3ビットは、そのメモリページと関連付けられたアクティブなDMA転送の数をカウントできる。代替的にまたは追加として、メモリ状態キャッシュ402は、カウントがメモリ状態キャッシュのカウント容量をオーバーフローした時に、メモリページと関連付けられたアクティブなDMA転送の数を格納するページのハッシュテーブルを備えることができる。このシステムは、メモリ状態キャッシュ402がDMAトランザクションを同時に7つまでトラッキングできるようにする。例えば、メモリ状態キャッシュエントリ404は、関連付けられたメモリのページが7つのDMAトランザクションに関与していて、そのページが現在常駐していることを示す。メモリ状態キャッシュエントリ406は、関連付けられたメモリのページがどのDMAトランザクションにも関与していなくて、現在、現実のメモリの物理ページにコミットされていないことを示す。コミットされないことによって、状態キャッシュエントリ406と関連付けられたメモリページに書き込むまたはそのメモリページから読み取ろうとする任意のDMAトランザクションは、別のワークロードに割り当てられたメモリまたはまったく存在しないメモリに値が書き込まれる場合があるので、データの破損またはクラッシュが生じるであろう。
メモリのページと関連付けられたDMA転送の数をトラッキングする目的の1つは、ハイパーバイザ102が、現在DMAトランザクションが使用中であるゲストOS108からページをスチールしないことを確認することである。従って、現在DMAトランザクションが使用中であるメモリの範囲に含まれるメモリのすべてのページは、少なくとも関連付けられたすべてのDMAトランザクションが完了するまでコミットされたままである。従って、メモリ状態キャッシュエントリ408は、エラー、つまり3つのDMAトランザクションが関連付けられたページ上で動作しているが、そのページは現在コミットされていないことを示す。それによって、ハイパーバイザ102があるワークロードからメモリページをスチールしてそのメモリページを別のワークロードに与える前に、ハイパーバイザは、ゲストOS108に組み込まれた仮想化を意識するコンポーネントが、そのメモリページが現在使用中であることを知っているかどうかを最初に判定する。
DMAトランザクションが開始され、そのトランザクションと関連付けられたメモリページのすべてがコミットされた場合、DMAフィルタ114は、DMAトランザクションと関連付けられたメモリページと関連付けられたメモリ状態キャッシュエントリの参照カウントまたはピンカウントを増加できる。次にDMAフィルタ114は、すぐにそのトランザクションを開始させることができる。
メモリ状態キャッシュエントリ410は、関連付けられたメモリページを使用したアクティブなDMA転送はないが、そのページは現在コミットされていることを示す。DMA転送が、メモリ状態キャッシュエントリ410と関連付けられたページと同じページを使用するように要求された場合、DMA転送は、内在する(underlying)ハードウェアにダイレクトにアクセスしてすぐに継続可能になるであろう。
一実装において、ハイパーバイザは、DMAフィルタ114がメモリ状態キャッシュ402のすべての参照カウンタをリセットすることを要求できる。追加的にまたは代替的に、ワークロードがハイパーバイザの要求をタイムリーに応答できなかった場合、ハイパーバイザは、そのワークロードを制限することができる。一実装において、制限によってワークロードを終了することができる。追加的または代替的に、制限は、ワークロードからハードウェアデバイスの制御をはずすこともある。
一実装において、メモリ状態キャッシュ402は存在しない。この場合、デバイスドライバを停止しなければならず、ハイパーバイザがページをデコミットする前にすべてのトランザクションを後退(retire)させなければならない。このストラテジーは、キャッシュを実装するように要求されたメモリを大幅に減らすので、ある環境において好ましい。
ほとんどまたはすべてのゲストメモリがコミットされたままであり、ほとんどのDMAトランザクションがゲストOSメモリマネージャとの通信を必要とせずに開始される時、最適性能になる。
図5は、具体的な複数のドライバスタック500を示す。一実装において、第1のドライバスタック110、第2のドライバスタック504、および第3のドライバスタック506はすべて同じメモリ状態キャッシュ502を共有する。複数のドライバスタックは、DMAフィルタ114のインスタンスとは異なるインスタンスを生成できる。しかしながら、すべての仮想化を意識するDMAフィルタは、同じゲスト物理メモリを管理している。その結果、すべてのDMAフィルタは、キャッシュを保持するのに必要なオーバーヘッドを減らし、DMAフィルタ114とハイパーバイザ間の通信を最小限にするために同じメモリ状態キャッシュ上で動作する。例えば、ドライバスタック506が、ゲスト物理アドレス0x0012384Cに関与するDMA転送を開始したが、メモリ状態キャッシュ502をDMAフィルタの他のインスタンスと共有しなかった場合、ハイパーバイザがゲストOSからのゲスト物理メモリページの占有を望む度に、ドライバスタックは、すべてのメモリ状態キャッシュを検査して、DMA転送に関与して占有されなかったメモリページをアクティブにすることを確認しなければならないであろう。
図6は、具体的なマイグレーション環境600を示す。この実装に従って、状態カプセル化は、コンピュータ602上で稼動するハイパーバイザ604がコンピュータ606上で稼動するハイパーバイザ608にマイグレートできるようにし得る。一実施形態において、状態カプセル化は、ハイパーバイザ608およびゲストOSメモリマネージメントコンポーネント106によって使用でき得ると同時にDMA転送の間にハードウェアデバイスダイレクトメモリアクセスが可能になる。ある環境において、ワークロード610から616は、ハイパーバイザ604上で実行する。ワークロード612は、ネットワーク622経由でハイパーバイザ608にマイグレートされる必要がある場合がある。マイグレーションは、マイグレーションワークロード612が機能し続ける間に、ハイパーバイザ604からハイパーバイザ608にメモリページをコピーすることによって行われる。マイグレーションは、ワークロード612におけるすべてのページを無効にすることによって開始される結果、ワークロード612によって行われる後続のどのメモリアクセスも、ハイパーバイザ604にトラップされる。次にハイパーバイザ604は、メモリのすべての有効なページをハイパーバイザ608に転送し始める。この転送の間、ワークロード612は、ハイパーバイザ604上で実行し続ける。その転送の間にアクセスされるメモリページは、ダーティー(dirt)として登録されてハイパーバイザ604上に残されるが、ダーティとして登録されていないメモリページは、そのページが扱われていないことを示し、ハイパーバイザ608に転送され続ける。最終的に、すべてのクリーン(clean)ページが転送されて、ワークロード612によって扱われたダーティページのみが残る。この時点で、ワークロード612を停止して、残ったダーティページをハイパーバイザ608に転送させることが可能である。ひとたびすべてのページがハイパーバイザ608に転送されると、ワークロード612がハイパーバイザ608上で開始され、ワークロード612がハイパーバイザ604によって停止された後、通常300ミリ秒以下で開始される。典型的には、マイグレーションは、接続を断つことなく発生する。
図7は、仮想化を意識するソフトウェアコンポーネントを用いて仮想化を意識しないオペレーティングシステムを拡張するための具体的な処理を示す。動作02は、I/Oドライバスタック110にインストールされた仮想意識ソフトウェアコンポーネントを用いて、システムが仮想マシン上で実行しているかどうかを判定することを表す。一実装において、仮想化を意識するソフトウェアコンポーネントは、DMAフィルタ114を備える。追加的または代替的に、仮想化を意識するソフトウェアコンポーネントは、HAL120を備えることができる。一方、動作704は、仮想マシン上で実行する時にハイパーバイザ102との通信を行う仮想化を意識するソフトウェアコンポーネントを表す。
図8は、ソフトウェアにおいて、転送と関連付けられたゲスト物理メモリがシステム物理メモリによって戻されたと知らされるまでDMA転送の開始を遅らせるための具体的な処理を示す。動作802は、ゲスト物理メモリアドレスの範囲の受信を表す。一実装において、ゲスト物理メモリアドレスの範囲は、DMA転送のソースまたは宛先を備える。受信されたゲスト物理メモリアドレスは、その後デバイス論理アドレスまたはシステム物理アドレスに変換でき、転送に使用されるハードウェアデバイスがネイティブに物理メモリのアドレスを指定できるようにする。一方、動作804は、受信されたゲスト物理メモリアドレスによって示されたシステム物理メモリが戻っていない、すなわち常駐していないかどうかを判定することを表す。すべての要求アドレスが常駐しているという意味で、どのアドレスも非常駐アドレスではない場合、ゲスト物理メモリアドレスの受信された範囲が送信される。一実施形態において、ゲスト物理アドレスの範囲が、ゲスト物理メモリアドレスをデバイス論理アドレスまたはシステム物理アドレスに変換するコンポーネントに送信される。一方、動作806は、ゲスト物理メモリアドレスの受信された範囲において参照されたメモリの少なくとも1つの戻っていないまたは非常駐部分があると最終的に判定していることを表す。一方、動作808は、ハイパーバイザ102に、受信されたゲスト物理メモリアドレスの非常駐部分を戻すまたは常駐させることを要求していることを表す。一方、動作810は、受信されたゲスト物理メモリアドレスによって示されたすべての非常駐部分が戻ったという表示をハイパーバイザ102から受信することを表す。一方、動作812は、ゲスト物理メモリアドレスの範囲を送信することを表す。
図9は、ソフトウェアにおいて、転送と関連付けられたゲスト物理メモリが、現実のシステム物理メモリによって戻されたと知らされるまでDMA転送の開始を遅らせるための具体的な処理を示す。動作902は、ゲスト物理メモリアドレスをバスに関連したメモリアドレスに変換する要求を受信することを表す。一方、動作904は、受信されたどのゲスト物理メモリアドレスも現実の物理メモリによって戻されていないかどうかを判定することを表す。すべてのゲスト物理メモリアドレスが戻った場合、受信された要求は、HAL120に送信される。一方、動作906は、受信された要求において参照されたゲスト物理メモリの少なくとも1つの戻っていないまたは非常駐部分があると最終的に判定する時を表す。一方、動作908は、転送が同期して発生できないことを示すメッセージをデバイスドライバ112に送信することを表す。一実装において、受信された要求は、待機リスト204に格納される。一方、動作910は、ハイパーバイザ102が受信された要求に含まれるゲスト物理メモリの非常駐部分を戻すまたは常駐させることを要求するメッセージをハイパーバイザ102に送信することを表す。一方、動作912は、受信された要求に含まれるゲスト物理アドレスによって示されるすべての非常駐部分が現実の物理メモリによって戻されたというメッセージをハイパーバイザ102から受信することを表す。一方、動作014は、要求をデバイスドライバへ送信することを表す。
図10は、仮想化を意識するDMAフィルタドライバまたはDMAフィルタ114を生成する例示的な処理機能性1000を示す。1インスタンスにおけるフィルタドライバは、従来のドライバスタックの通常の作業に影響を与えずに、ある特定の機能を行う従来のドライバスタックに挿入されるドライバを備える。処理機能性1000を、ソフトハング分析および検出システムを実装することができる任意の適したコンピューティングデバイスまたはサーバとして構成できる。一例示的な構成において、処理機能性1000は、少なくとも1つの処理ユニット1002およびメモリ1004を備える。処理ユニット1002を、ハードウェア、ソフトウェア、ファームウェアまたはそれらの組み合わせにおいて適切に実装できる。処理ユニット1002のソフトウェアまたはファームウェアの実装は、説明したさまざまな機能を行うために、任意の適したプログラミング言語で書き込まれたコンピュータまたはマシン実行可能命令を含むことができる。
メモリ1004は、プロセッサ上でロード可能で実行可能な命令のプログラムを格納でき、これらのプログラムの実行の間に作成されたデータも格納できる。コンピューティングデバイスの構成および種類に応じて、メモリ1004は、揮発性(RAMなど)および/または不揮発性(ROM、フラッシュメモリなど)とすることができる。コンピューティングデバイスまたはサーバは、磁気ストレージ、光ディスク、および/またはテープストレージを含む付加的なリムーバブルストレージ1006および/またはノンリムーバブルストレージ1008を含むことができるが、これらに限らない。ディスクドライブおよびそれらに関連するコンピュータ読み取り媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびコンピューティングデバイス他のデータの不揮発性ストレージを提供できる。
メモリ1004、リムーバブルストレージ1006、およびノンリムーバブルストレージ1008はすべて、コンピュータストレージ媒体の例である。コンピュータストレージ媒体は、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータ等の情報を格納するための任意の方法または技術に実装される揮発性および不揮発性、リムーバブルおよびノンリムーバブル媒体を含む。メモリ1004、リムーバブルストレージ1006、およびノンリムーバブルストレージ1008はすべて、コンピュータストレージ媒体の例である。提供できるコンピュータストレージ媒体の付加的な種類は、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気ストレージデバイス、または所望の情報を格納するのに使用することができ、サーバまたは他のコンピューティングデバイスによってアクセスすることができるその他の媒体と含むが、これらに限らない。
メモリ1004の内容をより詳細に見ると、メモリ1004は、オペレーティングシステム1010およびソフトハング分析および検出プログラム100を実装するための1または複数のアプリケーションプログラムまたはサーバを含むことができる。一実装において、メモリ1004は、データマネージメントモジュール1012および自動化モジュール1014を含む。データマネージメントモジュール1012は、セッションを識別してラッキングすることを含むが、これらに限らない。自動化モジュール1014は、セッション識別子、セッション状態、ユーザのコンピューティングデバイス等の情報を格納して管理して、1または複数のローカルおよび/またはリモートデータベースまたはサービスとの通信を行うことができる。
メモリ1004は、ユーザインタフェースモジュール1016およびセッションモジュール1018をさらに含む。ユーザインタフェースモジュール1016は、ユーザにセッションをログインまたはログオフ、入出力を行う等のユーザインタフェースを提供する。セッションモジュール1018は、コンピューティングデバイスのログインまたはログオフ、接続または切断等の状態をトラッキングすることを含むが、これらに限らない。セッションモジュール1018は、接続と、切断と、ログオンされているクライアントデバイス、ログオフされているクライアントデバイス、クライアントデバイスの状態、ユーザの状態等を識別するための探索を行う等の探索機能とを行う。
処理機能性1000は、処理機能性1000が格納されたデータベース、別のコンピューティングデバイスまたはサーバ、ユーザ端末、および/またはネットワーク上の他のデバイスとの通信を行わせることができる1または複数の通信接続1016も含むことができる。1または複数の通信接続1016は、通信媒体の一例である。通信媒体は、典型的には、コンピュータ可読命令、データ構造、およびプログラムモジュールを実装する。例を挙げると、通信媒体は、有線ネットワークまたは直接有線接続等の有線媒体と、音響、RF、赤外線および他の無線媒体等の無線媒体とを含むが、これらに限らない。本明細書で使用される用語コンピュータ可読媒体は、ストレージ媒体と通信媒体の両方を含む。
処理機能性1000は、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイス等の1または複数の入力デバイス1018と、ディスプレイ、スピーカ、プリンタ等の1または複数の出力デバイス1020も含むことができる。処理機能性1000は、セッションデータ、ネットワークアドレス、コンピューティングデバイスのリスト等を含む処理機能性1000上でホストされたデータベースを含むことができるが、これらに限らない。これらのすべてのデバイスは、当業者には周知であり、ここで詳細に論じる必要はない。
上述した発明の内容を、ハードウェア、またはソフトウェア、ハードウェアとソフトウェアの両方に実装することができる。構造的特徴および/または方法論的動作に特有の言語で発明の対象を説明したが、添付の請求において定義された発明の対象は、上述した特定の特徴または動作に必ずしも限定されるものではないことを理解されたい。むしろ、特定の特徴および動作は、発明の対象を実装する例示的な形式として開示される。例えば、方法論的動作は、本明細書で説明された順序または組み合わせにおいて行われる必要はなく、1または複数の任意の動作において行うことができる。
結論
例示的なシステムおよび方法を、構造的特徴および/または方法論的動作に特有の言語で説明したが、添付の請求において定義された発明の対象は、説明された特定の特徴または動作に必ずしも限定されるものではないことを理解されたい。むしろ、特定の特徴および動作は、特許請求の範囲を実装する例示的な形式として開示される。

Claims (20)

  1. 1または複数のプロセッサと、
    前記1または複数のプロセッサによってアクセス可能なシステム物理メモリと、
    仮想化対応モジュールを有する第1の仮想マシンであって、前記システム物理メモリに格納された前記仮想化対応モジュールは、
    第2の仮想マシンのワークロードとは独立しているゲスト物理メモリアドレスの第1の範囲を前記第1の仮想マシンの内部の部分から受信し、
    前記ゲスト物理メモリアドレスの第1の範囲内の前記ゲスト物理メモリアドレスの少なくとも1つがゲスト物理メモリの非常駐部分をポイントするかどうかを判定し、
    前記ゲスト物理メモリアドレスの少なくとも1つが前記ゲスト物理メモリの非常駐部分をポイントするという判定に応答し、要求をハイパーバイザに送信して前記ゲスト物理メモリの非常駐部分をコミットし、前記ゲスト物理メモリの非常駐部分がコミットされたことを示すメッセージを前記ハイパーバイザから受信し、
    前記ゲスト物理メモリアドレスの第1の範囲を前記第1の仮想マシンの内部の部分に送信する
    前記1または複数のプロセッサ上で動作可能である、第1の仮想マシンと
    を備えたことを特徴とするコンピュータシステム。
  2. 前記仮想化対応モジュールは、前記ゲスト物理メモリアドレスの第1の範囲と関連付けられたメモリ転送が完了したという指示を受信することがさらに実行可能であることを特徴とする請求項1に記載のコンピュータシステム。
  3. 前記仮想化対応モジュールはデータ構造を備え、前記データ構造は前記ゲスト物理メモリのそれぞれの部分に対するインジケータを含み、それぞれのインジケータは、前記ゲスト物理メモリの部分が常駐であるかまたは非常駐であるかどうかの表現を含むことを特徴とする請求項1に記載のコンピュータシステム。
  4. それぞれのインジケータが進行中のメモリ転送の参照カウントをさらに備え、前記進行中のメモリ転送は、前記インジケータと関連付けられた前記ゲスト物理メモリの部分を含む前記ゲスト物理メモリアドレスの第2の範囲を対象とすることを特徴とする請求項3に記載のコンピュータシステム。
  5. 前記ゲスト物理メモリアドレスの第1の範囲は、非同期ダイレクトメモリアクセス転送の対象を含むことを特徴とする請求項1に記載のコンピュータシステム。
  6. 前記仮想化対応モジュールは、ハードウェア抽象化層であることを特徴とする請求項1に記載のコンピュータシステム。
  7. 前記ハイパーバイザに要求を送信した後、前記仮想化対応モジュールは、前記ゲスト物理メモリのそれぞれの部分と関連付けられた前記参照カウントを更新することを特徴とする請求項4に記載のコンピュータシステム。
  8. 前記仮想化対応モジュールの複数のインスタンス化は同じデータ構造にアクセスし、前記データ構造は前記ゲスト物理メモリのそれぞれの部分のインジケータを含むことを特徴とする請求項3に記載のコンピュータシステム。
  9. 前記ハイパーバイザは、前記仮想化対応モジュールが前記ゲスト物理メモリのそれぞれの部分と関連付けられた前記参照カウントを更新するのに失敗した時に前記第1の仮想マシンを制限するように構成されることを特徴とする請求項7に記載のコンピュータシステム。
  10. 前記制限は前記第1の仮想マシンを終了することを含むことを特徴とする請求項9に記載のコンピュータシステム。
  11. 前記ゲスト物理メモリアドレスの第1の範囲は、デバイスドライバの要求を伝達するための入力/出力要求パケットと関連付けられていることを特徴とする請求項1に記載のコンピュータシステム。
  12. 前記仮想化対応モジュールは、前記ハイパーバイザによってホストされたワークロードにおいて実行する仮想化非対応ゲストオペレーティングシステムに挿入されるように構成されて、前記ハイパーバイザによって、前記仮想化非対応ゲストオペレーティングシステムが前記コンピュータシステムのハードウェアデバイスをダイレクトに制御できるようになることを特徴とする請求項1に記載のコンピュータシステム。
  13. 前記ワークロードは、前記ワークロードが前記システム物理メモリへのダイレクトアクセスを用いてDMA転送を行う間に第2のコンピュータシステムにマイグレートされることを特徴とする請求項12に記載のコンピュータシステム。
  14. メモリに格納された仮想化対応モジュールを有する第1の仮想マシンにおいて、前記第1の仮想マシンの内部の部分から、ゲスト物理メモリアドレスの第1の範囲を含む要求を受信するステップと、
    前記第1の仮想マシンが、前記ゲスト物理メモリアドレスの第1の範囲内の前記ゲスト物理メモリアドレスの少なくとも1つがゲスト物理メモリの非常駐部分をポイントするかどうかを判定するステップであって、
    るステップと、
    前記ゲスト物理メモリアドレスの少なくとも1つが前記ゲスト物理メモリの非常駐部分をポイントするという判定に応答して、要求をハイパーバイザに送信して前記ゲスト物理メモリの非常駐部分をコミットし、前記ハイパーバイザから前記ゲスト物理メモリの非常駐部分がコミットされたことを示すメッセージを受信するステップと、
    前記第1の仮想マシンの内部の部分に、前記ゲスト物理メモリアドレスの第1の範囲を送信するステップと
    を備えたことを特徴とする方法。
  15. 前記ゲスト物理メモリアドレスの第1の範囲に関連するメモリ転送が完了したという指示を受信するステップをさらに備えたことを特徴とする請求項14に記載の方法。
  16. 前記仮想化対応モジュールはデータ構造を備え、前記データ構造は前記ゲスト物理メモリメモリのそれぞれの部分に対するインジケータを含み、それぞれのインジケータは前記ゲスト物理メモリの部分が常駐であるかまたは非常駐であるかどうかの表現を含み、前記仮想化対応モジュールの複数のインスタンス化を用いて、前記ゲスト物理メモリのそれぞれの部分に対するインジケータを含むものと同じデータ構造にアクセスするステップをさらに備えたことを特徴とする請求項14に記載の方法。
  17. それぞれのインジケータが進行中のメモリ転送の参照カウントをさらに備え、前記進行中のメモリ転送は、前記インジケータと関連付けられた前記ゲスト物理メモリの部分を含むゲスト物理メモリアドレスの第2の範囲を対象とし、前記ハイパーバイザに要求を送信した後、前記ゲスト物理メモリのそれぞれの部分と関連付けられた前記参照カウントを更新するステップをさらに備えたことを特徴とする請求項16に記載の方法。
  18. 前記仮想化対応モジュールが前記ゲスト物理メモリのそれぞれの部分と関連付けられた前記参照カウントを更新するのに失敗した時に、前記ハイパーバイザが、前記第1の仮想マシンを制限するように構成されることを特徴とする請求項17に記載の方法。
  19. コンピュータ実行可能命令を格納する1または複数のコンピュータ可読記憶媒体であって、前記コンピュータ実行可能命令を1または複数のプロセッサ上で実行すると、前記プロセッサに、
    仮想化対応モジュールを有する第1の仮想マシンにおいて、仮想化対応モジュールを有する第2の仮想マシンのワークロードとは独立しているゲスト物理メモリアドレスの第1の範囲を前記第1の仮想マシンの内部の部分から受信するステップと、
    前記ゲスト物理メモリアドレスの第1の範囲内の前記ゲスト物理メモリアドレスの少なくとも1つがゲスト物理メモリの非常駐部分をポイントするかどうかを判定するステップと、
    前記ゲスト物理メモリアドレスの少なくとも1つが前記ゲスト物理メモリの非常駐部分をポイントするという判定に応答して、要求をハイパーバイザに送信して前記ゲスト物理メモリの非常駐部分をコミットし、前記ハイパーバイザから前記ゲスト物理メモリの非常駐部分がコミットされたことを示すメッセージを受信するするステップと、
    前記ゲスト物理メモリアドレスの第1の範囲を前記第1の仮想マシンの内部の部分に送信するステップと
    を実行させることを特徴とするコンピュータ可読記憶媒体。
  20. 前記コンピュータ実行可能命令を前記プロセッサ上で実行すると、前記プロセッサに、前記ゲスト物理メモリアドレスの第1の範囲に関連するメモリ転送が完了したという指示を受信するステップをさらに実行させることを特徴とする請求項19に記載のコンピュータ可読記憶媒体。
JP2012121967A 2008-06-26 2012-05-29 仮想化されたオペレーティングシステムのためのダイレクトメモリアクセスフィルター Active JP5452660B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US12/147,199 2008-06-26
US12/147,199 US8230155B2 (en) 2008-06-26 2008-06-26 Direct memory access filter for virtualized operating systems
US12/242,761 US8151032B2 (en) 2008-06-26 2008-09-30 Direct memory access filter for virtualized operating systems
US12/242,761 2008-09-30

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2011516405A Division JP5450620B2 (ja) 2008-06-26 2009-06-05 コンピュータシステム、処理方法及びコンピュータプログラム

Publications (2)

Publication Number Publication Date
JP2012185849A JP2012185849A (ja) 2012-09-27
JP5452660B2 true JP5452660B2 (ja) 2014-03-26

Family

ID=41445198

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2011516405A Active JP5450620B2 (ja) 2008-06-26 2009-06-05 コンピュータシステム、処理方法及びコンピュータプログラム
JP2012121967A Active JP5452660B2 (ja) 2008-06-26 2012-05-29 仮想化されたオペレーティングシステムのためのダイレクトメモリアクセスフィルター

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2011516405A Active JP5450620B2 (ja) 2008-06-26 2009-06-05 コンピュータシステム、処理方法及びコンピュータプログラム

Country Status (5)

Country Link
US (1) US8151032B2 (ja)
EP (1) EP2313832B1 (ja)
JP (2) JP5450620B2 (ja)
CN (1) CN102077188B (ja)
WO (1) WO2009158178A2 (ja)

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8230155B2 (en) 2008-06-26 2012-07-24 Microsoft Corporation Direct memory access filter for virtualized operating systems
US8719823B2 (en) * 2009-03-04 2014-05-06 Vmware, Inc. Managing latency introduced by virtualization
US8726269B2 (en) * 2009-04-14 2014-05-13 Dell Products L.P. Method to enable application sharing on embedded hypervisors by installing only application context
US8887144B1 (en) * 2009-09-04 2014-11-11 Amazon Technologies, Inc. Firmware updates during limited time period
US10177934B1 (en) 2009-09-04 2019-01-08 Amazon Technologies, Inc. Firmware updates inaccessible to guests
US8971538B1 (en) 2009-09-08 2015-03-03 Amazon Technologies, Inc. Firmware validation from an external channel
US8959611B1 (en) 2009-09-09 2015-02-17 Amazon Technologies, Inc. Secure packet management for bare metal access
US8381264B1 (en) 2009-09-10 2013-02-19 Amazon Technologies, Inc. Managing hardware reboot and reset in shared environments
US20110153715A1 (en) * 2009-12-17 2011-06-23 Microsoft Corporation Lightweight service migration
US9389895B2 (en) * 2009-12-17 2016-07-12 Microsoft Technology Licensing, Llc Virtual storage target offload techniques
US8667191B2 (en) * 2010-01-15 2014-03-04 Kingston Technology Corporation Managing and indentifying multiple memory storage devices
US8453145B1 (en) * 2010-05-06 2013-05-28 Quest Software, Inc. Systems and methods for instant provisioning of virtual machine files
US9547562B1 (en) 2010-08-11 2017-01-17 Dell Software Inc. Boot restore system for rapidly restoring virtual machine backups
US8893306B2 (en) * 2010-08-31 2014-11-18 International Business Machines Corporation Resource management and security system
US8495750B2 (en) 2010-08-31 2013-07-23 International Business Machines Corporation Filesystem management and security system
US8694992B2 (en) 2010-12-16 2014-04-08 International Business Machines Corporation Traversing memory structures to parse guest operating system instrumentation information in a hypervisor
JP5573649B2 (ja) * 2010-12-17 2014-08-20 富士通株式会社 情報処理装置
US8578006B2 (en) * 2011-03-29 2013-11-05 Symantec Corporation Enabling selective policy driven propagation of configuration elements between and among a host and a plurality of guests
WO2012154658A2 (en) * 2011-05-06 2012-11-15 University Of North Carolina At Chapel Hill Methods, systems, and computer readable media for efficient computer forensic analysis and data access control
US9298910B2 (en) 2011-06-08 2016-03-29 Mcafee, Inc. System and method for virtual partition monitoring
US9311126B2 (en) * 2011-07-27 2016-04-12 Mcafee, Inc. System and method for virtual partition monitoring
CN102360369B (zh) * 2011-09-28 2014-08-13 中兴通讯股份有限公司 在用户空间文件系统上实现聚合写文件脏页的方法和装置
US9804870B2 (en) * 2011-10-28 2017-10-31 Intel Corporation Instruction-set support for invocation of VMM-configured services without VMM intervention
US9021476B1 (en) * 2012-06-19 2015-04-28 Bromium, Inc. Ensuring the privacy and integrity of a hypervisor
US10140139B1 (en) 2012-06-19 2018-11-27 Bromium, Inc. Ensuring the privacy and integrity of a hypervisor
US9135046B1 (en) 2012-06-19 2015-09-15 Bromium, Inc. Preventing host operating system from inspecting or modifying data received by hardware controller by moving host operating system into a virtual machine after boot up
WO2014110095A1 (en) * 2013-01-08 2014-07-17 Violin Memory Inc. Method and system for data storage
JP6075226B2 (ja) 2013-06-26 2017-02-08 富士通株式会社 プログラム、仮想マシン管理方法および情報処理装置
US10229043B2 (en) * 2013-07-23 2019-03-12 Intel Business Machines Corporation Requesting memory spaces and resources using a memory controller
US9053068B2 (en) 2013-09-25 2015-06-09 Red Hat Israel, Ltd. RDMA-based state transfer in virtual machine live migration
US9436823B1 (en) * 2013-12-17 2016-09-06 Google Inc. System and method for detecting malicious code
US9875115B2 (en) * 2013-12-20 2018-01-23 Microsoft Technology Licensing, Llc Memory-preserving reboot
KR101571810B1 (ko) 2013-12-30 2015-11-25 주식회사 시큐아이 복수의 가상 머신들을 포함하는 컴퓨팅 시스템
US9459900B2 (en) * 2014-01-13 2016-10-04 Red Hat Israel, Ltd. Hypervisor-based balloon page initialization
US9639478B2 (en) 2014-01-17 2017-05-02 International Business Machines Corporation Controlling direct memory access page mappings
US10275269B1 (en) * 2016-05-27 2019-04-30 Bromium, Inc. Hypervisor to support nested virtualization
US10318311B2 (en) * 2016-06-30 2019-06-11 Amazon Technologies, Inc. Memory allocation techniques at partially-offloaded virtualization managers
US10127068B2 (en) 2016-06-30 2018-11-13 Amazon Technologies, Inc. Performance variability reduction using an opportunistic hypervisor
US11029986B2 (en) * 2018-05-25 2021-06-08 Microsoft Technology Licensing, Llc Processor feature ID response for virtualization
US10833949B2 (en) * 2018-11-20 2020-11-10 Amazon Technologies, Inc Extension resource groups of provider network services
US11182192B2 (en) 2019-03-08 2021-11-23 International Business Machines Corporation Controlling access to secure storage of a virtual machine
US11283800B2 (en) 2019-03-08 2022-03-22 International Business Machines Corporation Secure interface control secure storage hardware tagging
US11176054B2 (en) 2019-03-08 2021-11-16 International Business Machines Corporation Host virtual address space for secure interface control storage
US11455398B2 (en) 2019-03-08 2022-09-27 International Business Machines Corporation Testing storage protection hardware in a secure virtual machine environment
US11068310B2 (en) 2019-03-08 2021-07-20 International Business Machines Corporation Secure storage query and donation
US11520530B2 (en) 2019-09-24 2022-12-06 Amazon Technologies, Inc. Peripheral device for configuring compute instances at client-selected servers
US11064017B2 (en) 2019-09-24 2021-07-13 Amazon Technologies, Inc. Peripheral device enabling virtualized computing service extensions
US11169870B2 (en) * 2020-01-15 2021-11-09 Vmware, Inc. Managing the migration of virtual machines in the presence of uncorrectable memory errors
US11569997B1 (en) 2020-03-09 2023-01-31 Amazon Technologies, Inc. Security mechanisms for data plane extensions of provider network services
US20220391240A1 (en) * 2021-06-04 2022-12-08 Vmware, Inc. Journal space reservations for virtual disks in a virtualized computing system
CN114201444B (zh) * 2021-12-06 2023-11-14 海飞科(南京)信息技术有限公司 用于存储管理的方法、介质、程序产品、系统和装置

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3874603B2 (ja) * 2000-11-21 2007-01-31 株式会社日立製作所 計算機システムの共有メモリ構築方法
DE10328486B4 (de) * 2003-06-25 2007-03-01 Eisenmann Maschinenbau Gmbh & Co. Kg Hubvorrichtung
US7376949B2 (en) * 2003-10-01 2008-05-20 Hewlett-Packard Development Company, L.P. Resource allocation and protection in a multi-virtual environment
US7558723B2 (en) * 2003-12-12 2009-07-07 Microsoft Corporation Systems and methods for bimodal device virtualization of actual and idealized hardware-based devices
US7421533B2 (en) * 2004-04-19 2008-09-02 Intel Corporation Method to manage memory in a platform with virtual machines
US20050246453A1 (en) * 2004-04-30 2005-11-03 Microsoft Corporation Providing direct access to hardware from a virtual environment
US20060070065A1 (en) * 2004-09-29 2006-03-30 Zimmer Vincent J Memory support for heterogeneous virtual machine guests
US7882317B2 (en) * 2004-12-06 2011-02-01 Microsoft Corporation Process isolation using protection domains
US7886126B2 (en) * 2005-01-14 2011-02-08 Intel Corporation Extended paging tables to map guest physical memory addresses from virtual memory page tables to host physical memory addresses in a virtual machine system
US7334076B2 (en) * 2005-03-08 2008-02-19 Microsoft Corporation Method and system for a guest physical address virtualization in a virtual machine environment
US7685635B2 (en) * 2005-03-11 2010-03-23 Microsoft Corporation Systems and methods for multi-level intercept processing in a virtual machine environment
US7451249B2 (en) * 2005-03-21 2008-11-11 Hewlett-Packard Development Company, L.P. Method and apparatus for direct input and output in a virtual machine environment containing a guest operating system
US20070011444A1 (en) * 2005-06-09 2007-01-11 Grobman Steven L Method, apparatus and system for bundling virtualized and non-virtualized components in a single binary
US8001543B2 (en) * 2005-10-08 2011-08-16 International Business Machines Corporation Direct-memory access between input/output device and physical memory within virtual machine environment
US7890669B2 (en) * 2005-11-25 2011-02-15 Hitachi, Ltd. Computer system for sharing I/O device
US8042109B2 (en) * 2006-03-21 2011-10-18 Intel Corporation Framework for domain-specific run-time environment acceleration using virtualization technology
US7613847B2 (en) * 2006-05-16 2009-11-03 Hewlett-Packard Development Company, L.P. Partially virtualizing an I/O device for use by virtual machines
US20080065854A1 (en) * 2006-09-07 2008-03-13 Sebastina Schoenberg Method and apparatus for accessing physical memory belonging to virtual machines from a user level monitor

Also Published As

Publication number Publication date
US20090327576A1 (en) 2009-12-31
JP5450620B2 (ja) 2014-03-26
EP2313832B1 (en) 2020-11-04
US8151032B2 (en) 2012-04-03
CN102077188B (zh) 2014-04-09
JP2011526035A (ja) 2011-09-29
JP2012185849A (ja) 2012-09-27
CN102077188A (zh) 2011-05-25
EP2313832A4 (en) 2011-11-09
WO2009158178A2 (en) 2009-12-30
EP2313832A2 (en) 2011-04-27
WO2009158178A3 (en) 2010-04-15

Similar Documents

Publication Publication Date Title
JP5452660B2 (ja) 仮想化されたオペレーティングシステムのためのダイレクトメモリアクセスフィルター
US8230155B2 (en) Direct memory access filter for virtualized operating systems
US10437727B2 (en) Transparent host-side caching of virtual disks located on shared storage
US9519795B2 (en) Interconnect partition binding API, allocation and management of application-specific partitions
JP4942966B2 (ja) パーティションバス
US8645974B2 (en) Multiple partition adjunct instances interfacing multiple logical partitions to a self-virtualizing input/output device
US9384060B2 (en) Dynamic allocation and assignment of virtual functions within fabric
EP2588957B1 (en) Cooperative memory resource management via application-level balloon
US7257811B2 (en) System, method and program to migrate a virtual machine
US8612633B2 (en) Virtual machine fast emulation assist
US20170277573A1 (en) Multifunction option virtualization for single root i/o virtualization
US9804877B2 (en) Reset of single root PCI manager and physical functions within a fabric
US20160077847A1 (en) Synchronization of physical functions and virtual functions within a fabric
US20200201691A1 (en) Enhanced message control banks
US11543988B1 (en) Preserving large pages of memory across live migrations of workloads
US20200218459A1 (en) Memory-mapped storage i/o

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20130712

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20130719

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130813

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131112

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: 20131203

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20131227

R150 Certificate of patent or registration of utility model

Ref document number: 5452660

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250