IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ グーグル インコーポレイテッドの特許一覧

<>
  • 特許-投機的仮想マシン実行 図1
  • 特許-投機的仮想マシン実行 図2A
  • 特許-投機的仮想マシン実行 図2B
  • 特許-投機的仮想マシン実行 図2C
  • 特許-投機的仮想マシン実行 図2D
  • 特許-投機的仮想マシン実行 図3
  • 特許-投機的仮想マシン実行 図4
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-03-25
(45)【発行日】2022-04-04
(54)【発明の名称】投機的仮想マシン実行
(51)【国際特許分類】
   G06F 9/50 20060101AFI20220328BHJP
   G06F 9/455 20060101ALI20220328BHJP
   G06F 12/1009 20160101ALI20220328BHJP
【FI】
G06F9/50 120Z
G06F9/455 150
G06F12/1009 100
【請求項の数】 18
【外国語出願】
(21)【出願番号】P 2020158874
(22)【出願日】2020-09-23
(62)【分割の表示】P 2018548748の分割
【原出願日】2017-05-15
(65)【公開番号】P2021007027
(43)【公開日】2021-01-21
【審査請求日】2020-10-02
(31)【優先権主張番号】15/178,937
(32)【優先日】2016-06-10
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】特許業務法人深見特許事務所
(72)【発明者】
【氏名】スリニバス,ベンカテシュ
【審査官】井上 宏一
(56)【参考文献】
【文献】特開2015-022380(JP,A)
【文献】米国特許第08903888(US,B1)
【文献】広渕 崇宏,外2名,「準仮想化ページフォルトを用いたポストコピー型ライブマイグレーションの性能向上手法」,情報処理学会 シンポジウム コンピュータシステム・シンポジウム 2012 [online],情報処理学会,2012年11月29日,pp.2-12
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/455-9/54
G06F 12/1009
(57)【特許請求の範囲】
【請求項1】
方法であって、
マイグレーションターゲットホストが、マイグレーションソースホストから前記マイグレーションターゲットホストにポストコピーマイグレーションされていて、かつ前記マイグレーションターゲットホスト上で実行されているゲスト仮想マシンが前記ゲスト仮想マシンの命令ストリームにおいて不在ページへのページ参照についてのページ違反に遭遇したことを判断することと、
前記マイグレーションターゲットホストが、前記マイグレーションターゲットホスト上にロードするための前記不在ページを前記マイグレーションソースホストに要求することと、
前記マイグレーションターゲットホスト上で実行されているエミュレータ上で、または、前記マイグレーションターゲットホストと通信しているエミュレータ上で、前記ゲスト仮想マシンの前記命令ストリームの継続実行をエミュレートすることと、
前記エミュレータが、前記継続実行をエミュレートするときに実行される前記命令ストリームの命令に基づき、将来のページへの将来のページ参照を識別することと、
前記エミュレータが、識別された前記将来のページ参照のうちの1つと関連付けられた前記命令ストリーム内の少なくとも1つの命令を調べて、少なくとも1つの付加的な将来のページ参照を識別することと、
前記マイグレーションターゲットホストが、前記不在ページを前記マイグレーションソースホストに要求するとき、識別された前記将来のページ参照に対応する前記将来のページと、識別された前記少なくとも1つの付加的な将来のページ参照に対応する付加的な将来のページとを、前記マイグレーションソースホストに要求することを備える、方法。
【請求項2】
前記不在ページを前記マイグレーションターゲットホスト上にロードする間に前記将来のページを前記マイグレーションターゲットホストにプリフェッチするために、識別された前記将来のページ参照に対応する前記将来のページを前記マイグレーションソースホストに要求することは、前記不在ページを要求することと並行している、請求項1に記載の方法。
【請求項3】
前記ゲスト仮想マシンの前記命令ストリームの前記継続実行をエミュレートする間、前記不在ページのロードされた値に依存する命令を除外することによって、前記エミュレータが将来のページ違反より後の将来のページ参照を識別できるようにすることをさらに備える、請求項1または2に記載の方法。
【請求項4】
前記マイグレーションターゲットホストは、
1つ以上のコンピューティングデバイスと、
前記1つ以上のコンピューティングデバイスと通信している1つ以上のメモリホストとを備え、前記1つ以上のメモリホストはページを格納している、請求項1から3のいずれか1項に記載の方法。
【請求項5】
前記少なくとも1つの付加的な将来のページ参照を識別することは、
前記将来のページ参照と前記不在ページとの関係に基づいて前記少なくとも1つの付加的な将来のページ参照を識別することを含む、請求項1から4のいずれか1項に記載の方法。
【請求項6】
前記関係は、親ページと1つ以上の子ページとの間のページナビゲーションマップを備える、請求項5に記載の方法。
【請求項7】
前記不在ページを要求することによって、前記不在ページが前記マイグレーションソースホストから前記マイグレーションターゲットホストに配信されて、前記マイグレーションターゲットホストにロードされた場合、前記マイグレーションターゲットホストが、前記エミュレータによる前記命令ストリームの前記継続実行のエミュレーションを中止することをさらに備える、請求項1から6のいずれか1項に記載の方法。
【請求項8】
前記不在ページを要求することによって、前記不在ページが前記マイグレーションソースホストから配信されて前記マイグレーションターゲットホスト上にロードされた場合、前記マイグレーションターゲットホスト前記ゲスト仮想マシンの前記命令ストリームの実行を継続することをさらに備える、請求項7に記載の方法。
【請求項9】
前記エミュレータが前記命令ストリームの命令に基づき、将来のページ参照を識別することは、識別された前記将来のページ参照の将来のページアドレスを識別することをさらに備える、請求項1から8のいずれか1項に記載の方法。
【請求項10】
マイグレーションターゲットホストであって、
データ処理ハードウェアと、
前記データ処理ハードウェアと通信しているメモリハードウェアとを備え、前記メモリハードウェアは命令を格納しており、前記命令は前記データ処理ハードウェア上で実行されると前記データ処理ハードウェアに動作を実行させ、前記動作は、
マイグレーションソースホストから前記メモリハードウェアにポストコピーマイグレーションされていて、かつ前記データ処理ハードウェア上で実行されているゲスト仮想マシンが、前記ゲスト仮想マシンの命令ストリームにおいて不在ページへのページ参照についてのページ違反に遭遇したことを判断することと、
前記メモリハードウェア上にロードするための前記不在ページを前記マイグレーションソースホストに要求することと、
前記データ処理ハードウェア上で実行されているエミュレータ上で、または、前記マイグレーションターゲットホストと通信しているエミュレータ上で、前記ゲスト仮想マシンの前記命令ストリームの継続実行をエミュレートすることと、
前記エミュレータが、前記継続実行をエミュレートするときに実行される前記命令ストリームの命令に基づき、将来のページへの将来のページ参照を識別することと、
前記エミュレータが、識別された前記将来のページ参照のうちの1つと関連付けられた前記命令ストリーム内の少なくとも1つの命令を調べて、少なくとも1つの付加的な将来のページ参照を識別することと、
前記不在ページを前記マイグレーションソースホストに要求するとき、識別された前記将来のページ参照に対応する前記将来のページと、識別された前記少なくとも1つの付加的な将来のページ参照に対応する付加的な将来のページとを、前記マイグレーションソースホストに要求することを備える、マイグレーションターゲットホスト。
【請求項11】
前記不在ページを前記マイグレーションターゲットホスト上にロードする間に前記将来のページを前記マイグレーションターゲットホストにプリフェッチするために、識別された前記将来のページ参照に対応する前記将来のページを前記マイグレーションソースホストに要求することは、前記不在ページ要求することと並行している、請求項10に記載のマイグレーションターゲットホスト。
【請求項12】
前記動作はさらに、前記ゲスト仮想マシンの前記命令ストリームの前記継続実行をエミュレートする間、前記不在ページのロードされた値に依存する命令を除外することによって、前記エミュレータが将来のページ違反より後の将来のページ参照を識別できるようにすることを備える、請求項10または11に記載のマイグレーションターゲットホスト。
【請求項13】
前記動作はさらに、前記将来のページ参照が識別されると、識別された前記将来のページ参照を前記マイグレーションソースホストに要求することを備える、請求項10から12のいずれか1項に記載のマイグレーションターゲットホスト。
【請求項14】
前記少なくとも1つの付加的な将来のページ参照を識別することは、前記将来のページ参照と前記不在ページとの関係に基づいて前記少なくとも1つの付加的な将来のページ参照を識別することを備える、請求項10から13のいずれか1項に記載のマイグレーションターゲットホスト。
【請求項15】
前記関係は、親ページと1つ以上の子ページとの間のページナビゲーションマップを備える、請求項14に記載のマイグレーションターゲットホスト。
【請求項16】
前記動作はさらに、前記不在ページを要求することによって、前記不在ページが配信されて前記マイグレーションターゲットホスト前記メモリハードウェア上にロードされた場合、前記エミュレータによる前記命令ストリームの前記継続実行のエミュレーションを中止することを備える、請求項10から15のいずれか1項に記載のマイグレーションターゲットホスト。
【請求項17】
前記動作はさらに、前記不在ページを要求することによって、前記不在ページが前記マイグレーションターゲットホストに配信されて前記メモリハードウェア上にロードされた場合、前記ゲスト仮想マシンの前記命令ストリームの実行を継続することを備える、請求項16に記載のマイグレーションターゲットホスト。
【請求項18】
前記エミュレータが前記命令ストリームの命令に基づき、将来のページ参照を識別することは、識別された前記将来のページ参照の将来のページアドレスを識別することをさらに備える、請求項10から17のいずれか1項に記載のマイグレーションターゲットホスト。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は投機的仮想マシン実行に関する。
【背景技術】
【0002】
背景
ウェブサービスはサーバ上で仮想マシンを動作させ得る。各サーバは、当該サーバ内で独立したマシンとして存在して動作する複数の仮想マシンをホストし得る。さらに、各仮想マシンは1つ以上の仮想中央処理装置(vCPU)を含み得る。サーバがメンテナンスを必要とする場合、または他の理由で劣化した場合、仮想マシンは異なるサーバに移行され得る。仮想マシンを異なるサーバに移行させるためにライブマイグレーションが行なわれ得る。ライブマイグレーションは一般に、現在のサーバ上の仮想マシンを休止または中断し、仮想マシンを異なるサーバにコピーするかまたは移行させる。そして、異なるサーバが仮想マシンを再開して動作を継続する。ライブマイグレーションでは、コピーまたは移行が起こっている間は仮想マシンの動作を休止または中断する必要がある。仮想マシンの休止または中断によって生じる遅延は、仮想マシン動作にとって許容できない場合がある。したがって、迅速にダウンタイムなしで仮想マシンを別のサーバに移行させることが望ましい場合がある。
【発明の概要】
【課題を解決するための手段】
【0003】
概要
本開示の一局面は、投機的VM実行のための方法を提供する。当該方法は、ゲスト仮想マシンをマイグレーションソースホストからマイグレーションターゲットホストにポストコピーマイグレーションすることを含む。ゲスト仮想マシンは複数の命令の命令ストリームを有する。当該方法は、ゲスト仮想マシンの命令ストリームをマイグレーションターゲットホスト上で実行することと、マイグレーションターゲットホストによって、ゲスト仮想マシンがページ違反に遭遇したことを判断することとをさらに含む。ゲスト仮想マシンが、命令ストリームにおいて不在ページへのページ参照についてのページ違反に遭遇すると、ゲスト仮想マシンは命令ストリームの実行をストールする。不在ページはマイグレーションソースホスト上に存在しており、マイグレーションターゲットホスト上には存在していない。ゲスト仮想マシンがページ違反に遭遇すると、当該方法は、マイグレーションターゲットホストが、マイグレーションターゲットホスト上にロードするための不在ページをマイグレーションソースホストに要求することと、マイグレーションターゲットホスト上で実行されているかまたはマイグレーションターゲットホストと通信しているエミュレータ上で、ゲスト仮想マシンの命令ストリームの継続実行をエミュレートすることとを含む。当該方法は、エミュレータが、エミュレートされた命令ストリームの継続実行から将来のページへの将来のページ参照を識別することと、マイグレーションターゲットホストが、不在ページ要求と並行して、マイグレーションソースホストに将来のページを要求することにより、不在ページをマイグレーションターゲットホスト上にロードしつつ、将来のページをマイグレーションターゲットホストにプリフェッチすることとをさらに含む。
【0004】
本開示の実装例は以下の任意の特徴の1つ以上を含んでもよい。ある実装例では、当該方法は、対応する将来のページ参照が識別されると、将来のページをマイグレーションソースホストに要求することを含む。ゲスト仮想マシンの命令ストリームの継続実行をエミュレートする間、当該方法は、不在ページのロードされた値に依存する命令を除外することによって、エミュレータが将来のページ違反より後の将来のページ参照を識別できるよ
うにすることを含む。
【0005】
マイグレーションターゲットホストは、1つ以上のコンピューティングデバイスと、1つ以上のコンピューティングデバイスと通信している1つ以上のメモリホストとを含んでもよい。1つ以上のメモリホストはページを格納している。当該方法は、将来のページ参照と不在ページとの関係に基づいて将来のページ参照を識別することをさらに含んでもよい。関係は、親ページと1つ以上の子ページとの間のページナビゲーションマップを含んでもよい。ある例では、将来のページ参照を識別することは、識別された将来のページ参照と関連付けられた少なくとも1つの命令内に、少なくとも1つの付加的な将来のページ参照を識別することを含む。当該方法は、不在ページをマイグレーションターゲットホストに配信済みである場合、エミュレータによる命令ストリームの継続実行のエミュレーションを中止することをさらに含む。当該方法は、不在ページがマイグレーションターゲットホスト上に存在している場合、マイグレーションターゲットホスト上でゲスト仮想マシンの命令ストリームの実行を継続することをさらに含む。エミュレートされた命令ストリームの継続実行から将来のページ参照を識別することは、識別された将来のページ参照の将来のページアドレスを識別することをさらに含んでもよい。
【0006】
本開示の別の局面は、データ処理ハードウェアと、データ処理ハードウェアと通信しているメモリハードウェアとを含むマイグレーションターゲットホストを提供する。メモリハードウェアは命令を格納しており、命令は、データ処理ハードウェア上で実行されるとデータ処理ハードウェアに動作を実行させる。当該動作は、ゲスト仮想マシンをマイグレーションソースホストからメモリハードウェアにポストコピーマイグレーションすることを含む。ゲスト仮想マシンは複数の命令の命令ストリームを有する。当該動作は、ゲスト仮想マシンの命令ストリームを実行することと、ゲスト仮想マシンがページ違反に遭遇したことを判断することとをさらに含む。ゲスト仮想マシンが、命令ストリームにおいて不在ページへのページ参照についてのページ違反に遭遇すると、ゲスト仮想マシンは命令ストリームの実行をストールし、不在ページはマイグレーションソースホスト上に存在しており、マイグレーションターゲットホストのメモリハードウェア上には存在していない。ゲスト仮想マシンがページ違反に遭遇すると、当該動作は、マイグレーションターゲットホストのメモリハードウェア上にロードするための不在ページをマイグレーションソースホストに要求することと、データ処理ハードウェア上で実行されているかまたはマイグレーションターゲットホストと通信しているエミュレータ上で、ゲスト仮想マシンの命令ストリームの継続実行をエミュレートすることとを含む。当該動作は、エミュレータが、エミュレートされた命令ストリームの継続実行から将来のページへの将来のページ参照を識別することと、不在ページ要求と並行して、将来のページをマイグレーションソースホストに要求することにより、不在ページをマイグレーションターゲットホストのメモリハードウェア上にロードしつつ、将来のページをマイグレーションターゲットホストのメモリハードウェアにプリフェッチすることとをさらに含む。
【0007】
本局面は以下の任意の特徴の1つ以上を含んでもよい。ある実装例では、当該動作は、対応する将来のページ参照が識別されると、将来のページをマイグレーションソースホストに要求することを含む。当該動作は、ゲスト仮想マシンの命令ストリームの継続実行をエミュレートする間、不在ページのロードされた値に依存する命令を除外することによって、エミュレータが将来のページ違反より後の将来のページ参照を識別できるようにすることをさらに含んでもよい。メモリハードウェアは、データ処理ハードウェアと通信している1つ以上のメモリホストをさらに含んでもよく、1つ以上のメモリホストはページを格納している。ある例では、当該動作は、将来のページ参照と不在ページとの関係に基づいて将来のページ参照を識別することを含む。関係は、親ページと1つ以上の子ページとの間のページナビゲーションマップを含んでもよい。
【0008】
ある実装例では、将来のページ参照を識別する動作は、識別された将来のページ参照と関連付けられた少なくとも1つの命令内に、少なくとも1つの将来のページ参照を識別することを含む。当該動作は、不在ページをマイグレーションターゲットホストのメモリハードウェアに配信済みである場合、エミュレータによる命令ストリームの継続実行のエミュレーションを中止することをさらに含んでもよい。当該動作は、不在ページがマイグレーションターゲットホストのメモリハードウェア上に存在している場合、ゲスト仮想マシンの命令ストリームの実行を継続することをさらに含んでもよい。エミュレートされた命令ストリームの継続実行から将来のページ参照を識別することは、識別された将来のページ参照の将来のページアドレスを識別することをさらに含んでもよい。
【0009】
本開示の1つ以上の実装例の詳細は添付の図面および以下の説明に記述されている。他の局面、特徴、および利点は説明および図面から、ならびに請求項から明らかになるであろう。
【0010】
さまざまな図中の同様の参照符号は同様の要素を示す。
【図面の簡単な説明】
【0011】
図1】メモリホストを有する分散システムの概略図である。
図2A】マイグレーションソースホストからマイグレーションターゲットホストに移行されている仮想マシンの概略図である。
図2B】マイグレーションソースホストからマイグレーションターゲットホストに移行される処理中の仮想マシンの概略図である。
図2C】マイグレーションソースホストからマイグレーションターゲットホストに移行されてページを取出す処理中の仮想マシンの概略図である。
図2D】要求されたページがマイグレーションソースホストからマイグレーションターゲットホストに移行した後の仮想マシンの概略図である。
図3】投機的仮想マシン実行の方法のための動作の例示的な配列の図である。
図4】本文書に記載のシステムおよび方法を実現するために用いられるホストであり得る例示的なコンピューティングデバイスの概略図である。
【発明を実施するための形態】
【0012】
詳細な説明
ポストコピーマイグレーションを用いて仮想マシン(たとえばゲストvCPU)をマイグレーションソースホストからマイグレーションターゲットホストに移行させる間、ゲストvCPUの休止中に物理的な静止状態および最小の動的状態(たとえば登録状態)のみが移行する。この結果、仮想マシンがマイグレーションターゲットホスト上で再開すると、ゲストページ参照を行なうと(ゲストページはその新たなホスト、すなわちマイグレーションターゲットホスト上にまだロードされていないので)不在違反が生じる。ゲストvCPUが不在ページ違反に遭遇すると、ゲストvCPUは、命令ストリームの実行をストールし、同時に、不在ページをマイグレーションソースホストに要求して、マイグレーションターゲットホストが不在ページをロードするのを待つ。違反を除去する/無くすために、マイグレーションターゲットホストは、オンデマンドでマイグレーションソースからマイグレーションターゲットへのページの移行を要求する。ゲストvCPUが不在ページ違反のためにストールしている間、エミュレータがゲストvCPUによる命令ストリームの実行を継続して、命令ストリームから将来のページ参照を抽出し、抽出された将来のページ参照が発見されるとそれらを不在ページと並行してマイグレーションソースに要求することによって、不在ページをマイグレーションターゲットホスト上にロードしつつ、識別されたページ参照をマイグレーションターゲットホストにプリフェッチし得る。
【0013】
図1は、サーバまたはホスト110を有する分散システム100の概略図である。1つ
以上のサーバまたはホスト110、110a、110b…110nの各々は、データ処理ハードウェア112(たとえば1つ以上のコンピュータプロセッサ)と、データ処理ハードウェア112と通信しているメモリハードウェア130とを含む。各ホスト110は、他のホスト110と、またはネットワーク140を介して(たとえばインターネットを介して)1つ以上のクライアント120と通信するように構成されたネットワークインターフェイス接続(NIC)116を含む。
【0014】
ある実装例では、1つ以上のホスト110は、対応するメモリハードウェア130に格納された対応する命令210を実行することによって仮想マシン200を提供する。命令210は、1つ以上のホスト110、110a、…110nが受信する命令ストリームの一部であり得る。仮想マシン200は特定のコンピュータシステムのエミュレーションであり得る。さらに、仮想マシン200は、現実のまたは仮想のコンピュータの具体的なコンピュータアーキテクチャおよび1つ以上の機能に基づいて動作し得、その実装は専用のハードウェア、ソフトウェア、またはその組合せを含み得る。ある例では、仮想マシン200はシステム仮想マシンであるが、他の例では、仮想マシン200はプロセス仮想マシンである。
【0015】
システム仮想マシン(完全仮想化VMとしても公知)は、標的リアルマシンの完全な置換、および完全なオペレーティングシステムの実行を可能にする機能のレベルを提供する。システム仮想マシンは通常は既存のアーキテクチャをエミュレートし、i)リアルハードウェアが使用不可能である(たとえば別の状況では旧式のプラットフォーム上で実行されている)場合にプログラムを走らせるプラットフォームを提供する目的で、ii)(たとえばハードウェア仮想化を提供するために)コンピューティングリソースのより効率的な使用に繋がる仮想マシンの複数のインスタンスを提供する目的で、または、iii)その両
方の目的で構築される。ハイパーバイザがハードウェアを共有して管理し、さまざまな環境を互いに分離して同一の物理マシン上で実行し得る。
【0016】
プロセス仮想マシンは、抽象化されてプラットフォームから独立したプログラム実行環境を提供することによって、単一のコンピュータプログラムを実行する。ある例では、プロセス仮想マシンはさまざまなアーキテクチャをエミュレートし、別のCPUまたはアーキテクチャ用に書かれたソフトウェアアプリケーションおよびオペレーティングシステムの実行を可能にする。
【0017】
各仮想マシン200は物理的状態202および動的状態204を含む。物理的状態202は、vCPU206、仮想PCIスロット、PCIスロット内の仮想デバイス、および/または他のコンピュータ機器の数を表わす。ある実装例では、仮想マシン200は1つの関連付けられたvCPU206を有するが、他の実装例では、物理的ホスト110が複数のCPUコアを自由に使える場合は、仮想マシン200は複数の関連付けられたvCPU206を有する。そのような実装例では、CPUスケジューラが実行コンテキストを割当て得、vCPUは本質的に論理プロセッサ上の一連のタイムスロットになる。動的状態204は、仮想マシン200が動作してコンピューティングマシンをエミュレートするのに必要な、仮想CPUレジスタのコンテンツ、ゲストメモリのコンテンツ等を表わす。
【0018】
命令210はページ参照220を含み得る。ページ参照220は、クライアント120またはデータソースと対話してページ230に含まれているデータまたは情報にアクセスすることを命じるコマンドである。命令210は1つ以上のvCPU206を表わし得る。さらに、データ処理ハードウェア112が実行する命令210は、1つ以上のvCPU206の命令と同一であり得る。少なくとも1つの実装例では、命令210はx86コマンドである。少なくとも1つの他の実装例では、命令210はデータ処理ハードウェア112が実行する任意の一連のコマンドである。
【0019】
ページ230は、たとえば208Gbを超えるなどかなり大きくてもよく、さらに大きい実装例も可能である。たとえば、クライアント120は、情報またはデータ150を求める要求122を、ネットワーク140を介して仮想マシン200に送信し得る。NIC116は適切なホスト110で当該要求を受信する。ホスト110のデータ処理ハードウェア112は、当該要求を、ホスト110のメモリ130内に位置する正確な仮想マシン200に導く。次いで、ホスト110のデータ処理ハードウェア112は命令210にアクセスして、仮想マシン200の物理的状態202および動的状態204に従って、仮想マシン200が実行するように要求122に対する適切な処理を実行する。データ処理ハードウェア112は、データ150を含むさまざまなページ230にアクセスし得る。データ処理ハードウェア112はページ230から適切なデータ150を決定し、データ150またはページ230全体をクライアント120に戻す。ある例では、各ホスト110、110a、110b…110nが1つ以上の仮想マシン200、200a、200b…200nに対して動作するのと同時に、複数のクライアント120、120a、120b…110nが複数のホスト110、110a、110b…110nにアクセスする。
【0020】
図2Aは、マイグレーションソースホスト110、110aからマイグレーションターゲットホスト110、110bに移行されている仮想マシン200の概略図である。さまざまな理由で、仮想マシン200をマイグレーションソースホスト110、110aからマイグレーションターゲットホスト110、110bにマイグレーションしなければならない場合がある。ポストコピーマイグレーションが用いられ得る。そのような実装例では、マイグレーションソースホスト110、110は、仮想マシン200の休止中に、物理的状態202、最小の動的状態204(たとえば登録状態)、および仮想マシン200と関連付けられた命令210の一部またはすべてのみをマイグレーションターゲットホスト110、110bに移行させるかまたはポストコピーする。ある例では、マイグレーションソースホスト110、110aは、物理的状態202、任意に動的状態204の一部、および仮想マシン200と関連付けられた命令210の一部またはすべてを、NIC116を介してネットワーク140上で移行させる。マイグレーションターゲットホスト110、110bは、物理的状態202、任意の動的状態204、および仮想マシン200と関連付けられた命令210の一部またはすべてを、NIC116を介してネットワーク140上で受信する。ポストコピーマイグレーションは、仮想マシン200の最小量の情報を移行させ、仮想マシン200のダウンタイムを最小にするために用いられ得る。すべてのページ230がマイグレーションターゲットホスト110、110bに移行するのを待つと、仮想マシン200にとって許容できないダウンタイムが生じ得る。マイグレーションソースホスト110、110aはページ230を保持し、ページ230を必要に応じてマイグレーションターゲットホスト110、110bに移行させ得る。マイグレーションターゲットホスト110、110bは、物理的状態202、動的状態204、および仮想マシン200と関連付けられた命令210の一部またはすべてを、そのメモリ130、130b内にロードする。データ処理ハードウェア112、112bは、所与のページ230へのアクセスを要求する命令または要求を含む命令ストリーム形式の命令210を実行し始め得る。
【0021】
図2Bは、マイグレーションソースホスト110、110aからマイグレーションターゲットホスト110、110bに移行される処理中の仮想マシン200の概略図である。マイグレーションターゲットホスト110、110bのデータ処理ハードウェア112、112bは命令210を実行して、vCPU206として作用する仮想マシン200aを動作させ始め得る。多くの命令210が所与のページ230へのアクセスを要求し得る。データ処理ハードウェア112が、マイグレーションソースホスト110、110aからまだ移行されていないページ230を要求する命令210に遭遇すると、データ処理ハードウェア112は不在ページ違反240を提起する。不在ページ違反240は、対応する
ページ230、230aが取出され得るまで命令210の実行をストールし、ストールしたvCPU206として作用する。不在ページ違反240に続いて、マイグレーションターゲットホスト110、110bはエミュレータ250を実行する。エミュレータ250は命令210を調べるかまたは実行して、マイグレーションターゲットホスト110、110b上で不在ページ230を受信することによって不在ページ違反240が取除かれた後にデータ処理ハードウェア112がアクセスし得る将来のページ230、230bを識別する。ある例では、エミュレータ250は命令210の実行を継続し、エミュレータ250は不在のページ230または値をすべて除外し、命令210が次に呼出し得るかまたは必要とし得るページ230、230bを識別し続ける。また、エミュレータ250はページ230を直接調べて、関係に基づいて、さらなる不在ページ違反240を防止するためにデータ処理ハードウェア112またはvCPU206がどのページ230、230bを必要とするかを判断し得る。エミュレータ250は、ページ230同士の間の過去の使用の頻度、共通のアドレス位置、メモリアクセス要件、埋込まれたリンク付け、またはページ230同士の間の他の関係(を含むがこれらに限定されるものではない)を調べて、将来のページ230、230bへの参照を決定し得る。ある例では、将来のページ230、230bへのページ参照220は、親ページ230と1つ以上の子ページ230との間のページナビゲーションマップを含む。
【0022】
図2Cは、マイグレーションソースホスト110、110aからマイグレーションターゲットホスト110、110bに移行されてページ230を取出す処理中の仮想マシン200の概略図である。マイグレーションターゲットホスト110、110bのデータ処理ハードウェア112、112b上で実行される仮想マシン200が不在ページ違反240のためにストールし続けると、データ処理ハードウェア112、112bは、アドレス232にある不在ページ230aを求める不在ページ要求242を送信し得る。エミュレータ250は、データ処理ハードウェア112、112bを用いて、不在ページ230aを求める不在ページ要求242の間は動作し続ける。アドレス232は、不在ページ違反240を生成している可能性がある特定のページ230を識別する。マイグレーションターゲットホスト110、110bは、マイグレーションソースホスト110、110aまたは不在ページ230aを含む他のホスト110に不在ページ要求242を配信する。マイグレーションソースホスト110、110aは不在ページ230aを取出し、不在ページリターン244によって不在ページ230aをマイグレーションターゲットホスト110、110bに配信し得る。不在ページリターン244が不在ページ230、230aをマイグレーションターゲットホスト110、110bに戻すことによって、マイグレーションターゲットホスト110、110bは不在ページ違反240を取除くことができる。
【0023】
不在ページ要求242が送信されて戻されている間、エミュレータ250は不在ページ違反240が起こった点から命令210の継続実行を開始し、vCPU206として作用する。エミュレータ250は、データ処理ハードウェア112、112bが実行し得る次の命令210をステップスルーすることによって命令210の継続実行をエミュレートし、エミュレートされた命令212に基づいて将来のページ230、230bへの将来のページ参照220を識別する。データ処理ハードウェア112は、他の参照を用いてページ230を識別してもよい。さらに、将来のページ参照220は、ページ230を識別するためのアドレス232または他の参照を含んでもよい。エミュレータ250が命令210の継続実行をエミュレートして将来のページ参照220を識別すると、エミュレータ250は、識別された将来のページ参照220に対応する将来のページ230、230bを求める将来ページ要求252を生成し、エミュレートされた命令212に基づいて、命令210の将来の継続実行のために何が必要であり得るか(たとえば他のリソース)を任意に判断する。エミュレータ250は、命令210をエミュレートする間、不在ページ230aを参照する命令210を除外し、将来のページ参照220を識別し続け得る。マイグレーションターゲットホスト110、110bは、不在ページ違反240を生成した不在ペ
ージ230aを求める不在ページ要求242と並行して、エミュレートされた命令212から発見された将来のページ参照220に対応する将来のページ230bを求める1つ以上の将来ページ要求252を送信し得る。
【0024】
1つ以上の将来ページ要求252を受信したことに応答して、マイグレーションソースホスト110、110aは、要求された将来のページ230、230bを含む1つ以上の対応する将来ページリターン254をマイグレーションターゲットホスト110、110bに送信する。不在ページ要求242、不在ページリターン244、将来ページ要求252、および将来ページリターン254は、同様のおよび/または重なり合う時間フレームで起こり得る。これによって、マイグレーションソースホスト110、110aは複数のページ230をマイグレーションターゲットホスト110、110bに完全にまたは部分的に移行させることによって、不在ページ違反240の将来の発生と、vCPU206についての命令210の実行の関連した停止とを減少させることができる。ある例では、データ処理ハードウェア112は、不在ページリターン244によって不在ページ230、230aが戻ってくるとエミュレータ250を中断する。エミュレータ250が停止された場合でも、マイグレーションソースホスト110、110aは将来ページ要求252を満たして将来ページリターン254をマイグレーションターゲットホスト110、110bに送信し続けてもよい。ある例では、エミュレータ250はエミュレートされた命令212から将来のページ参照220を誤って識別し、誤って識別された将来のページ参照220に対応する将来のページ230bを求める対応する将来ページ要求252を生成することによって、対応する将来のページ230、230bがプリフェッチされてしまう。このような例は許容可能であり得る。なぜなら、データ処理ハードウェア112は、命令210の後の継続実行において、誤って識別された将来のページ参照220の将来のページ230、230bを後で使用する可能性があるからである。
【0025】
図2Dは、要求されたページ230がマイグレーションソースホスト110、110aからマイグレーションターゲットホスト110、110bに移行した後の仮想マシン200の概略図である。不在ページ230、230aが戻されてマイグレーションターゲットホスト110、110bのメモリ130、130b内にロードされることによって、仮想マシン200が、データ処理ハードウェア112、112bを介してvCPU206の動作を継続するために必要なアクセスを有するようになると、エミュレータ250は停止または中断され得る。マイグレーションターゲットホスト110、110bが(vCPU206を介して)不在ページ違反240を取除くことによって、マイグレーションターゲットホスト110、110b上のvCPU206は命令210を実行し続け、マイグレーションターゲットホスト110、110b上で仮想マシン200を動作させ続けることができ得る。不在ページ違反240の継続生成およびページ230の取出しは、命令210が参照する必要なページ230がマイグレーションソースホスト110、110aからマイグレーションターゲットホスト110、110bに移行されるまで継続し得る。命令210が参照するすべてのページ230がマイグレーションターゲットホスト110、110b上に存在するようになると、マイグレーションターゲットホスト110、110bはデータ処理ハードウェア112、112bを介して命令210を実行して、さらなる不在ページ違反240なしに仮想マシン200を提供することができる。完全に移行された仮想マシン200は、完全な物理的状態202および動的状態204を有する。
【0026】
図3は、投機的仮想マシン実行の方法300のための動作の例示的な配列を提供する。ブロック302において、方法300は、ゲスト仮想マシン200をマイグレーションソースホスト110、110aからマイグレーションターゲットホスト110、110bにポストコピーマイグレーションすることを含む。各仮想マシン200は、仮想CPU206、PCIスロット、PCIスロット内のデバイス等の数を表わす物理的状態202と、仮想マシンが動作するのに必要な仮想CPUレジスタのコンテンツ、ゲストメモリのコン
テンツ等を含む動的状態204とを含み得る。各仮想マシン200は、さまざまなページ230を参照する1組の命令210を有する。ネットワーク140は、その物理的状態202および動的状態204を含む仮想マシン200をマイグレーションソースホスト110、110aからマイグレーションターゲットホスト110、110bに移行させ得る。ブロック304において、方法300は、ゲスト仮想マシン200の命令210をマイグレーションターゲットホスト110、110b上で実行することを含む。マイグレーションターゲットホスト110、110bのデータ処理ハードウェア112、112bは命令210を実行して、少なくとも1つの関連付けられたvCPU206を有する仮想マシン200を提供し得る。ゲスト仮想マシン200が、命令210の命令ストリームにおいて不在ページ230、230aへのページ230へのページ参照またはアドレス232についてのページ違反240に遭遇すると、ゲスト仮想マシン200は命令210の命令ストリームの実行をストールし得る。不在ページ230、230aは、マイグレーションソースホスト110、110a上に存在しており、マイグレーションターゲットホスト110、110b上には存在していない場合がある。ブロック306において、方法300は、マイグレーションターゲットホスト110、110bが、ゲスト仮想マシン200がページ違反240に遭遇したことを判断することを含み得る。マイグレーションターゲットホスト110、110bのデータ処理ハードウェア112は、命令210の継続実行に必要なページ230がマイグレーションターゲットホスト110、110bのメモリ130、130bに不在である場合に不在ページ違反240に遭遇し得る。ゲスト仮想マシン200がページ違反240に遭遇すると、方法300は以下を含み得る。ブロック308において、方法300は、マイグレーションターゲットホスト110、110bが、マイグレーションターゲットホスト110、110b上にロードするための不在ページ230、230aをマイグレーションソースホスト110、110aに要求することを含む。不在ページ230、230は、不在ページ230、230aのアドレス232を含む不在ページ242を求める要求によって要求され得る。ブロック310において、方法300は、マイグレーションターゲットホスト110、110b上で実行されているかまたはマイグレーションターゲットホスト110、110bと通信しているエミュレータ250上で、ゲスト仮想マシン200の命令210の命令ストリームの継続実行をエミュレートすることを含み得る。エミュレータ250は、命令210を処理することによって命令210の継続実行をエミュレートし続け得る。エミュレータ250は、不在ページ違反240を通り越して命令210を調べ続けて、不在ページ違反240の後に仮想マシン200(および/またはvCPU206)がどのページ230を必要とし得るかを判断する、ストールした仮想マシン200(および/またはvCPU206)として作用し得る。ブロック312において、方法300は、エミュレータ250が、命令210の命令ストリームのエミュレートされた継続実行またはエミュレートされた命令212から将来のページ参照220を識別することを含み得る。エミュレートされた命令212は、命令210を調べてページ230が必要とする値を除外して、命令210がその継続実行のためにどのページ230を後で必要とし得るかを判断することによって、将来のページ参照220を識別し得る。ある例では、エミュレータ250はページ230と不在ページ230、230aとの関係を調べて、将来のページ230、230bへの将来のページ参照220を識別する。ブロック314において、方法300は、マイグレーションターゲットホスト110、110bが、不在ページ242を求める要求と並行して、将来のページ230、230bをマイグレーションソースホスト110、110aに要求することにより、不在ページ230、230aをマイグレーションターゲットホスト110、110b上にロードしつつ、将来のページ230、230bをマイグレーションターゲットホスト110、110bにプリフェッチすることを含み得る。識別された将来のページ参照220は、具体的な将来のページ230bを識別するアドレス232を含み得る。マイグレーションソースホスト110、110aは、識別された将来のページ230bを将来ページリターン254によってマイグレーションターゲットホスト110、110bに部分的にまたは完全に移行させ得る。不在ページリターン244は不在ページ230、230aを戻し得る。不在ペー
ジリターン244および将来ページリターン254は並列動作し得る。
【0027】
ある実装例では、方法300は、エミュレータ250が対応する将来のページ参照220を識別すると、将来ページ要求252によって将来のページ230、230bをマイグレーションソースホスト110、110bに要求することを含む。不在ページ要求242および不在ページリターン244の間に、1つ以上の将来ページ要求252が進行中であり得る。ゲスト仮想マシン200の命令210の命令ストリームの継続実行をエミュレートする間、方法300は、不在ページ230、230aのロードされた値に依存する命令210を除外することによって、エミュレータ250が将来のページ違反または不在ページ違反240より後の将来のページ参照220を識別できるようにすることを含み得る。
【0028】
マイグレーションターゲットホスト110、110bは、1つ以上のコンピューティングデバイス400またはプロセッサ112と、1つ以上のコンピューティングデバイス400またはプロセッサ112と通信している1つ以上のメモリホストまたはメモリ130とを含み得、1つ以上のメモリホストまたはメモリ130はページ230を格納している。方法300は、将来のページ参照220と不在ページ230、230aとの関係に基づいて将来のページ参照220を識別することをさらに含み得る。当該関係は、親ページ230と1つ以上の子ページ230との間のページナビゲーションマップ260を含み得る。ページナビゲーションマップ260は、親ページ230の関連の使用と子ページ230の以前の使用との関係であり得る。ある例では、将来のページ参照220を識別することは、識別された将来のページ参照220と関連付けられた少なくとも1つの命令210内に少なくとも1つの付加的な将来のページ参照220を識別することを含む。方法300は、不在ページ230、230aをマイグレーションターゲットホスト110、110bに配信済みである場合、エミュレータ250による命令210の命令ストリームの継続実行のエミュレーションを中止することをさらに含み得る。不在ページ230、230aは、マイグレーションソースホスト110、110aから不在ページリターン244によって戻され得る。方法300は、不在ページ230、230aがマイグレーションターゲットホスト110、110b上に存在している場合、マイグレーションターゲットホスト110、110b上でゲスト仮想マシン200の命令210の命令ストリームの実行を継続することをさらに含み得る。方法300の、エミュレートされた命令210の命令ストリームの継続実行から将来のページ参照220を識別することは、識別された将来のページ参照220の将来のページアドレス232を識別することをさらに含み得る。
【0029】
図4は、本文書に記載のシステムおよび方法を実装するために用いられるホスト110であり得る例示的なコンピューティングデバイス400の概略図である。コンピューティングデバイス400は、ラップトップ、デスクトップ、ワークステーション、携帯情報端末、サーバ、ブレードサーバ、メインフレーム、および他の適切なコンピュータなどの、さまざまな形態のデジタルコンピュータを表わすことを意図している。ここに示すコンポーネント、それらの接続および関係、ならびにそれらの機能は例示であることが意図されているに過ぎず、本文書に記載されるおよび/または請求される本発明の実装例を限定することを意図していない。
【0030】
コンピューティングデバイス400は、データ処理ハードウェア112と、メモリ130と、記憶装置430と、メモリ130および高速拡張ポート450に接続している高速インターフェイス/コントローラ440と、低速バス470および記憶装置430に接続している低速インターフェイス/コントローラ460とを含む。コンポーネント112、130、430、450および460の各々はさまざまなバスを用いて相互に接続されており、共通のマザーボード上にまたは他の態様で適宜搭載され得る。プロセッサ112は、コンピューティングデバイス400内で実行される命令を処理可能であり、この命令には、グラフィカルユーザインターフェイス(GUI)のためのグラフィック情報を高速イ
ンターフェイス440に結合されているディスプレイ480などの外部入出力デバイス上に表示するためにメモリ130内または記憶装置430上に記憶されている命令が含まれる。他の実装例では、複数のプロセッサおよび/または複数のバスが、複数のメモリおよび複数種類のメモリとともに適宜用いられ得る。また、複数のコンピューティングデバイス400が接続され得、各デバイスは(たとえば、サーババンク、ブレードサーバ群、またはマルチプロセッサシステムとして)必要な動作の一部を提供する。
【0031】
メモリ130は、情報を非一時的にコンピューティングデバイス400内に記憶する。メモリ130は、コンピュータ読取可能媒体、揮発性メモリユニット、または不揮発性メモリユニットであり得る。非一時的メモリ130は、コンピューティングデバイス400が使用するプログラム(たとえば命令のシーケンス)またはデータ(たとえばプログラム状態情報)を一時的にまたは永続的に記憶するために用いられる物理装置であり得る。不揮発性メモリの例として、フラッシュメモリおよび読取専用メモリ(ROM)/プログラマブルROM(PROM)/消去可能プログラマブルROM(EPROM)/電子的消去可能プログラマブルROM(EEPROM(登録商標))(たとえば、ブートプラグラムなどのファームウェアに典型的に用いられる)が挙げられるが、これらに限定されない。揮発性メモリの例として、ランダムアクセスメモリ(RAM)、ダイナミックRAM(DRAM)、スタティックRAM(SRAM)、相変化メモリ(PCM)およびディスクまたはテープが挙げられるが、これらに限定されない。
【0032】
記憶装置430は、コンピューティングデバイス400に大容量記憶を提供可能である。ある実装例では、記憶装置430はコンピュータ読取可能媒体である。さまざまな異なる実装例では、記憶装置430は、フロッピー(登録商標)ディスクデバイス、ハードディスクデバイス、光ディスクデバイス、またはテープデバイス、フラッシュメモリもしくは他の同様のソリッドステートメモリデバイス、またはストレージエリアネットワークもしくは他のコンフィギュレーションにおけるデバイスを含む一連のデバイスであり得る。さらなる実装例では、コンピュータプログラムプロダクトが情報担体において有形に具体化される。コンピュータプログラムプロダクトは、実行されると上述のような1つ以上の方法を実行する命令を含む。情報担体は、メモリ130、記憶装置430、またはプロセッサ112上のメモリなどの、コンピュータ読取可能媒体または機械読取可能媒体である。
【0033】
高速コントローラ440はコンピューティングデバイス400のための帯域幅集約的な動作を管理するのに対して、低速コントローラ460はより低い帯域幅集約的な動作を管理する。そのような機能の割当ては例示に過ぎない。ある実装例では、高速コントローラ440はメモリ130、ディスプレイ480に(たとえばグラフィックスプロセッサまたはアクセラレータを介して)、およびさまざまな拡張カード(図示せず)を受付け得る高速拡張ポート450に結合される。ある実装例では、低速コントローラ460は記憶装置430および低速拡張ポート470に結合される。さまざまな通信ポート(たとえばUSB、ブルートゥース(登録商標)、イーサネット(登録商標)、無線イーサネット)を含み得る低速拡張ポート470は、キーボード、ポインティングデバイス、スキャナ、またはスイッチもしくはルータといったネットワーキングデバイスなどの1つ以上の入出力デバイスに、たとえばネットワークアダプタを介して結合され得る。
【0034】
コンピューティングデバイス400は、図に示すように多数の異なる形態で実現され得る。たとえば、コンピューティングデバイス400は標準的なサーバ400aとしてもしくはそのようなサーバ400a群内で複数回、ラップトップコンピュータ400bとして、またはラックサーバシステム400cの一部として実現され得る。ここに記載したシステムおよび技法の各種実装は、デジタル電子および/または光回路、集積回路、専用に設計されたASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェ
ア、ソフトウェア、および/またはその組み合わせで実現できる。これら各種実装は、少なくとも1つのプログラマブルプロセッサを含むプログラマブルシステム上で実行可能および/または解釈可能な1つ以上のコンピュータプログラムでの実装を含むことができ、それは、専用または汎用目的でもよく、格納システム、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスに対して、データおよび命令を受信し、データおよび命令を送信するように結合される。
【0035】
多数の実装例が記載されてきた。しかし、本開示の精神および範囲から逸脱することなくさまざまな変形がなされ得ることが理解されるであろう。したがって、他の実装例は、以下の請求項の範囲内にある。たとえば、請求項に記載されている動作は、異なる順序で実行されて、依然として望ましい結果を達成することができる。
図1
図2A
図2B
図2C
図2D
図3
図4