JP5960161B2 - 仮想マシンの分岐および並列実行 - Google Patents

仮想マシンの分岐および並列実行 Download PDF

Info

Publication number
JP5960161B2
JP5960161B2 JP2013544715A JP2013544715A JP5960161B2 JP 5960161 B2 JP5960161 B2 JP 5960161B2 JP 2013544715 A JP2013544715 A JP 2013544715A JP 2013544715 A JP2013544715 A JP 2013544715A JP 5960161 B2 JP5960161 B2 JP 5960161B2
Authority
JP
Japan
Prior art keywords
virtual machine
branch
clone
original
state
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
JP2013544715A
Other languages
English (en)
Other versions
JP2013546103A (ja
JP2013546103A5 (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
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2013546103A publication Critical patent/JP2013546103A/ja
Publication of JP2013546103A5 publication Critical patent/JP2013546103A5/ja
Application granted granted Critical
Publication of JP5960161B2 publication Critical patent/JP5960161B2/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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • G06F11/1482Generic software techniques for error detection or fault masking by means of middleware or OS functionality
    • G06F11/1484Generic software techniques for error detection or fault masking by means of middleware or OS functionality involving virtual machines
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • 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/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • 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/45562Creating, deleting, cloning virtual machine instances

Description

[背景技術]
分岐とは、コンピュータプログラムにおける任意のポイントであって、実行が複数の可能性のある経路に進むポイントを意味する。コンピュータ科学には様々なタイプの分岐が存在する。機械レベルでは、ソフトウェアアセンブリ言語命令には、条件付き飛越しが含まれることが多い。条件が成立すると、プロセッサはジャンプにより指定される場所のコードを実行するであろう。条件が失敗すると、プロセッサはジャンプの後に続くコードの実行を継続するであろう。今日の重度にパイプライン化されたマルチコアプロセッサでは、分岐した両方の経路の実行を投機的に開始することがよくある。実行が分岐条件に到達し、条件が評価されると、分岐条件が成立する分岐を保持し、投機的に実行した他方の分岐の中間結果をフラッシュする。分岐はプロセスレベルでも発生する。UNIX(登録商標)のようなオペレーティングシステムには、アプリケーションプログラミングインターフェース(API)が含まれ、例えば、fork()があり、これは、プロセスのコピーを作成して新しいプロセスの実行を継続するものである。これを使用して、マルチスレッディング又はプロセスの分岐する可能性のある経路の追跡を行うことが可能である。
複雑なシステムのテストにはしばしば、システムを特定の条件に合うようにして、その後、様々な誘発要因に対するシステム反応をテストするための、かなりの量のセットアップを伴う。誘発要因には、ファズテストの形式で、様々な入力を、提供すること、接続されたハードウェアを操作してシステムの反応をテストすることなどが含まれてもよい。システムの機能が、実質的な状態変化を生み出してしまい、以前の状態に戻すことは難しいことがある。他の例では、複雑なシステムにおいて、データが必要でなかった、または、分岐が成立してデータが重要でなくなってしまう、ということを検知するだけのために、データのバッチを処理するのに長時間かかる場合がある。
今日、分岐は、これらの刺激に対して有用であるには低すぎるレベルで適用される。複雑なシステムおよび他フィールドのテストでは、それほど多くの時間を要することなく、かつ、面倒なセットアップを必要とすることなく、既知の状態から開始され、複数の潜在的な将来の状態を探索する方法が必要とされる。典型的には、今日、テストハーネスでは、複数の可能なテストパスをシリアルで走らせ、または、さらに効率的な場合には、複数のマシンを活用してパラレルでテストを実行することができる。これでもまだ、特にテストハーネスが、複数のテストを開始するために各マシンを共通の状態に置く必要がある場合には、時間を要する。複雑な状態の評価では、必要とされる時間は、ソフトウェア開発者が望むだけの多くの順列(permutation)でシステムをテストする時間が少なくなることを意味し、その結果、より多くのエラーがソフトウェア製品に生じる。
本明細書において、開始状態のセットアップに投じられる時間を活用しつつ、複雑な状態遷移の並列実行を可能にする状態分岐システムについて説明する。システムは、ハイパーバイザを修正することにより、仮想マシンレベルでの分岐を可能にする。仮想マシンレベルでの分岐を可能にすることにより、状態分岐システムでは、仮想マシンにおける特定の条件または状態のセットアップを可能にし、仮想マシンの並列インスタンスへのコピーおよび分岐がなされ種々の可能な後続の状態が探索される。より大きくかつより複雑な評価に対して問題が起こることが多く、特に、マシンの状態がこれらの評価により劇的に影響を受ける場合である。結果が予測できない大規模な状態変化の検出または通知があると、状態分岐システムはハイパーバイザに命令して、実行中の仮想マシンを1つまたは複数の別々の仮想マシンにコピーさせる。そして、システムでは、2つまたはそれ以上の仮想マシン(オリジナルおよびコピー)間の分岐のブランチング(branching)によって、同様の開始ポイントからの異なる状態を探索することを可能にする。実行が次の状態に到達すると、システムは、調整を行ってどのコピー(単数または複数)が実行を継続するのかを判定する。従って、状態分岐システムでは、コンピュータシステムの状態を実質的に修正する複雑な状態変化をより速く探索することを可能にする。
この要約は、以下の「発明を実施するための形態」でさらに述べる概念を選択して簡略化した形式で紹介するために提供するものである。この要約は、請求の主題の重要な特徴または主要な特徴を特定することを意図しておらず、請求の主題の範囲を制限するものとして使用されることも意図していない。
一実施形態における、状態分岐システムのコンポーネントを例示するブロック図である。 一実施形態における、オリジナル仮想マシンから1つまたは複数のクローン仮想マシンへブランチングして分岐の状態を考察する、状態分岐システムの処理を例示するフロー図である。 一実施形態における、1つまたは複数のクローン仮想マシンを出て実行を収束させてオリジナル仮想マシンに戻る、状態分岐システムの処理を例示するフロー図である。 一実施形態における、状態分岐システムによる分岐経路の並列処理を例示するタイムライン図である。
本明細書において、開始状態のセットアップに投じられる時間を活用しつつ、複雑な状態遷移の並列実行を可能にする状態分岐システムについて説明する。システムは、ハイパーバイザを修正することにより仮想マシンレベルでの分岐を可能にする。ハイパーバイザは、物理マシンのリソース(例えば、プロセッサ、メモリ、ディスク、およびネットワーク)を共有する1つまたは複数の仮想マシンプロセスを管理する。仮想マシンの全てが同じ物理マシン上で稼働するが、それぞれが、他の仮想マシンのことを知らずにおりかつ分離されている。仮想マシンレベルでの分岐を可能にすることにより、状態分岐システムでは、仮想マシンにおける特定の条件または状態のセットアップを可能にし、仮想マシンの並列インスタンスへのコピーおよび分岐がなされ異なる可能な後続の状態が探索される。より大きくかつより複雑な評価に対して問題が起こることが多く、特に、マシンの状態がこれらの評価により劇的に影響を受ける場合である。一例としてファジングがあり、仮想マシン内のオペレーティングシステム全体を分岐させることが可能であることで、ソフトウェア開発者は、ファジングされる次の反復のセットアップに費やす時間を劇的に減少させることができるようになり、また、ファジングされる可能な実行経路がより速く探索されるようになる。
結果が予測できない大規模な状態変化の検出または通知があると、状態分岐システムはハイパーバイザに命令して、実行中の仮想マシンを1つまたは複数の別々の仮想マシンにコピーさせる。そして、システムでは、2つまたはそれ以上の仮想マシン(オリジナルおよびコピー)間の分岐のブランチングによって、同様の開始ポイントからの異なる状態を探索することを可能にする。いくつかの実施形態において、アプリケーションは、ハイパーバイザを呼び出して、ハイパーバイザに既存の仮想マシンの状態をスポーンさせ、かつ、複製したコピー(単数または複数)を新しい仮想マシンにスポーンさせるようにすることができる。そして、システムは、コピーにその決定木の調整をさせて重ならないようにする。実行が次の状態に到達すると、システムは、調整を行ってどのコピー(単数または複数)が実行を継続するのかを判定する。いくつかの場合、次の重要な状態変化によってプロセスが繰り返されるまで、システムは、大まかに複数の仮想マシンに分岐し、いくつかの状態を探索し、そして、結果を組み合わせてオリジナル仮想マシンに戻すことができる。
いくつかの実施形態において、状態分岐システムは、ハイパーバイザおよびオペレーティングシステム両方の修正に依存して、仮想マシンレベルの分岐を可能にする。オペレーティングシステムは、分岐が望ましいのはいつであるかを検出する能力を有する。これには、多くの潜在的なトリガが含まれてよく、例えば、ファーストチャンス例外通知、アプリケーション要求、ユーザモードセカンドチャンス例外、などがある。操作にはまた、API、または、分岐インスタンスごとにどの決定ポイントを修正すべきであるかをアプリケーションが特定するための他の手段が含まれてよい。ハイパーバイザは修正されて、コマンドをエクスポーズしてホストまたはゲストのオペレーティングシステムが既存のゲストオペレーティングシステムのインスタンスの複製を要求することを許可する。ハイパーバイザはまた、ゲストオペレーティングシステムの実行を凍結することが可能であり、任意のハードウェア割り込みがゲストオペレーティングシステム上で実行されることを防ぐ。加えて、ハイパーバイザは、メモリ管理装置(MMU)に命令して、新しい分岐インスタンスについてゲスト操作メモリ割当て全体の複製を行わせる。いくつかの場合、システムは、全てのメモリを複製しなくともよく、ハイパーバイザが提供する分岐サポートのレベルに応じて、むしろいくつかのデータページのみを複製し、場合によっては実行可能なページは含まれない。このように、ホストまたはゲストの操作のどちらかが、いつ決定ポイントが到達されるかを判定し、これは、分岐経路を並列して評価することの利点であり、また、仮想マシンレベルでの分岐をハイパーバイザおよび/またはオペレーティングシステムに要求する。従って、状態分岐システムでは、コンピュータシステムの状態を実質的に修正する複雑な状態変化をより速く探索することを可能にする。
図1は、一実施形態における、状態分岐システムのコンポーネントを例示するブロック図である。システム100には、ハイパーバイザコンポーネント110、スケジューリングコンポーネント120、VM通信コンポーネント130、分岐識別コンポーネント140、状態クローニングコンポーネント150、VM分岐コンポーネント160、クローン調整コンポーネント170、および、結果処理コンポーネント180が含まれる。これらのコンポーネントのそれぞれについて、本明細書においてさらに詳細に説明する。
ハイパーバイザコンポーネント110は、2つまたはそれ以上の仮想コンピュータ装置間に物理コンピュータ装置のリソースを割り当てる。今日、多くのデータセンタで、仮想マシンを使用して、複数のプロダクションアプリケーションを単一のサーバ上で稼働させることを可能にし、各仮想マシンが仮想環境内にあるため、各アプリケーションはマシンを排他的に使用していると想定している。それよりむしろ、アプリケーションは典型的には、仮想マシンを排他的に使用するが、物理リソースを共有する。仮想マシンは、アプリケーションに、中央処理装置(CPU)速度、メモリサイズ、ディスク容量、ネットワーク帯域幅などの保障される量のハードウェアリソースを提供する。ハイパーバイザは、複数の仮想マシンが同一のコンピュータ上で隣り合って稼働することを可能にする商品ハードウェアで広く利用可能である(例えば、Xen、Hyper−V、およびVMWare)。ハイパーバイザは、CPU、メモリ、ディスク、および、ネットワークなどの物理リソースへのアクセスを多重化する(スケジューリングすることもある)。ハイパーバイザは、CPUおよびI/Oリソース双方のためのスケジューラを提供し、2つまたはそれ以上の仮想マシン間に全てのリソースの固定のパーティションを提供することができる。これは、多くの方法で、例えば、ハードリアルタイムスケジューリングアルゴリズムを使用して、行うことができる。
スケジューリングコンポーネント120は、物理マシン上でのリソース使用のスケジューリング、及び、オリジナル仮想マシンおよびクローン化仮想マシンを含む2つまたはそれ以上の仮想マシン間のリソース分離する機能を提供する。スケジューリングコンポーネント120は、ハイパーバイザ内で動作してよく、また、仮想マシン分離を提供して、各仮想マシンが、リソース利用可能性について仮想マシンに対して与えられる任意の保証が満たされる方法で物理マシンリソースを使用することができるようにしてよい。例えば、物理マシンが2GHzのプロセッサを有し、2つの仮想マシンそれぞれがプロセッサの時間の内、同等の特定の部分を保証されている場合、スケジューリングコンポーネント120は、各仮想マシンが物理マシンのプロセッサ時間の二分の一を使用する状態になることを保証することができる。スケジューリングコンポーネント120は、物理マシンのメモリ、ディスク空間、ネットワーク帯域幅、および他のリソースの同様の分割を提供可能である。
VM通信コンポーネント130は、2つまたはそれ以上の仮想マシン間に1つまたは複数の通信のチャネルを提供する。VM相互の通信には様々な技術が存在し、例えば、共有物理メモリ、ハイパーバイザを呼び出すハイパーコール、物理ディスク上の共通の場所におけるファイルの格納、などが含まれる。VM通信コンポーネント130は、オリジナル仮想マシンからの調整情報を受け取ること、また、調整命令を1つまたは複数のクローン仮想マシンに与えることができる。調整情報により、確実に、各仮想マシンが異なる分岐を進み、複数の可能な状態を評価するようにできる。ハイパーバイザは、共有される通信チャネルの管理、および、仮想マシンに対するセキュリティまたは他の制約の実施、を行ってもよい。オリジナル仮想マシンは、クローンの作成、および、それらの間の活動の調整のための、ハイパーバイザ内のサポートを活用してもよい。
分岐識別コンポーネント140は、現在の状態と、ソフトウェアコードを実行するオリジナル仮想マシンを分岐させるための候補である、ソフトウェアコードの1つまたは複数の後続の状態と、を識別して、1つまたは複数のクローン仮想マシンにおける後続の状態を評価する。分岐識別コンポーネント140は、ソフトウェアコードを分析することにより潜在的な分岐を自動的に識別してよく、または、アプリケーションによりどこで分岐すべきかを指示されてもよい。今日、分岐の自動識別は、CPUと同様に発生し、そこでは解析エンジンは、次に来る命令ストリーム内で複数のステップを検証すること、および、命令、機能、または、他の挙動であって、マシンの状態を実質的に変えてしまうものを識別すること、ができる。手動識別は、ソフトウェア開発者により、テスト、または、特定の場所における分岐を要求する他のアプリケーション、をプログラミングして発生させることができる。例えば、テストは、数テストに共通の状態をセットアップし、そして、ホストオペレーティングシステムに通知して、分岐を要求し、各テストが追跡する分岐経路を実行することができる。
状態クローニングコンポーネント150は、状態情報をオリジナル仮想マシンからコピーして、同様の状態を有する1つまたは複数のクローン仮想マシンを作成する。コピーでは、メモリ全体、および、オリジナル仮想マシンの他の仮想ハードウェアをコピーしてよく、または、各クローンが追跡するであろう分岐の状態の探索に使用されるサブセットのみを選択してもよい。例えば、テストは、開くことに長時間を要する種々のタイプの多数のオペレーティングシステムのハンドルを閉じてもよい。オリジナル仮想マシンは、ハンドル全てを開く作業を実行することができ、一方、クローン仮想マシンはそれぞれ特定のタイプのハンドルを閉じて種々の条件をテストする。本例では、各クローン仮想マシンは、別個の状態を追跡するが、ハンドル、または、より一般的には仮想マシン上で稼働するテストアプリケーション、に関連する状態のコピーを必要とするだけであって、全ての状態情報または他のアプリケーションに関連する状態のコピーを必要としない。
VM分岐コンポーネント160は、各作成されたクローン仮想マシンを開始させ、かつ、各クローンが追跡する実行の分岐を識別することにより、分岐を実行する。例えば、分岐識別コンポーネント140が、ソフトウェアコードに上がってくる5個の可能な経路であって、それぞれが結果として実質的に異なる状態をもたらす経路、を識別する場合、テストアプリケーションは状態クローニングコンポーネント150に指示して4つのクローンを作成させてよく、その場合、オリジナル仮想マシンは状態の内の1つを追跡し、一方、4つのクローン仮想マシンは残りの4つの状態を追跡する。VM分岐コンポーネント160は、命令ポインタおよび他のマシン状態を、分岐を取り巻く場所および状態に直接設定することなどにより、各クローン仮想マシンに該マシンが考察するであろう分岐を通知する。そして、VM分岐コンポーネント160は、分岐の状態を探索するために各仮想マシンに実行させる。
クローン調整コンポーネント170は、各クローン仮想マシンおよびオリジナル仮想マシンの動作を調整して、不要な分岐の廃棄または分岐結果の統合を可能にする。異なる分岐を実行する目的は、実行がどこで終了するのかを発見することである。多くの場合、ソフトウェアコードは、いくつかの分岐の内の1つを追跡し、分岐の成立に基づき異なる結果を伴うが最終的には共通の場所で終了し得る。従って、分岐後の短い期間に大幅に分岐するコードを実行するが、後に共通の場所で収束して結果を考察することは一般的である。クローン調整コンポーネント170は、テストまたは他のアプリケーションコードに、種々の状態を考察するためにいくつかの作業を行わせるべく複数のクローン仮想マシンを送り出すが、各クローン仮想マシンの結果を考察することにより、かつ、状態の探索が完了する時にオリジナル仮想マシンに実行を戻すことにより、周期を完了させる。これは、今日、CPUがいくつかの分岐を投機的に実行して、結局は成立しなかった分岐をフラッシュすることと同様であるが、仮想マシンレベルでもっと広いスケールで状態分岐システム100により応用される。
結果処理コンポーネント180は、各仮想マシンが生成する結果を処理し、その結果をクローン調整コンポーネント170に提供する。各仮想マシン、すなわちオリジナルおよびクローンは、単純な数値、またはテキストの結果、または仮想マシンに対して発生するさらなる状態変化などの複雑な結果を含む様々な結果を生成することができる。一例として、アンチウィルスプログラムは、悪意のあるコードを探すためにスキャンされているコンピュータ装置上で見つかるいくつかの識別されたソフトウェアコードモジュールを実行して、そのコードモジュールがコンピュータ装置に対して何らかの害をなすかどうかを判定しようとする。アンチウィルスプログラムは、オリジナルコンピュータ装置の特徴の全てを有するクローン仮想マシンにおいて各ソフトウェアコードモジュールをスポーンすることができ、その結果は、ソフトウェアコードがクローンに対して成す任意の変化である。アンチウィルスプログラムは、結果をスキャンして、何らかの害がある(例えば、重要なファイルを削除する、連絡先にスパムを送信する)かどうかを判定することができ、かつ、真偽値をオリジナルのアプリケーションに提供して有害な結果が見つかったかどうかを示すことができる。これにより、各クローンは、何らかの方法でクローン仮想マシンの状態を混乱させてしまう可能性があるが、特定の結果が得られた後にアンチウィルスプログラムにより廃棄される。別の例として、システムを使用する組込み装置を、ネットワークの接続を確認(ping)して何らかの複雑な動作を実行すべきかまたどのように実行すべきかを判定するように、設計することが可能である。この分岐により、高レイテンシ要求がなされていても、装置は物理装置のアイドルな処理パワーを使用することができる。恐らく、これには、センサまたはアンテナアレイの再較正する計算を伴い、組込み装置は、ネットワーク応答を受け取る前に可能な計算を開始することができる。
状態分岐システムが実装されるコンピュータ装置には、中央処理装置、メモリ、入力装置(例えば、キーボードおよびポインティングデバイス)、出力装置(例えば、表示装置)、および記憶装置(例えば、ディスクドライブまたは他の不揮発性記憶媒体)が含まれてよい。メモリおよび記憶装置は、システムを実装するまたは有効にするコンピュータ実行可能命令(例えば,ソフトウェア)が符号化されてよいコンピュータ可読記憶媒体である。加えて、データ構造およびメッセージ構造は、記憶されているか、又は、通信リンク上の信号などのデータ伝送媒体を介して伝送されてもよい。インターネット、ローカルエリアネットワーク、ワイドエリアネットワーク、2地点間ダイアルアップ接続、携帯電話ネットワーク、などの種々の通信リンクを使用することができる。
システムの実施形態は種々の動作環境において実装されてよく、該動作環境には、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップの装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、プログラマブル家庭用電子機器、デジタルカメラ、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたは装置のいずれかを含む分散コンピュータ環境、セットトップボックス、システムオンチップ(SOC)、などが含まれる。コンピュータシステムは、携帯電話、携帯情報端末(PDA)、スマートフォン、パーソナルコンピュータ、プログラマブル家庭用電子機器、デジタルカメラ、などとしてよい。
システムについて、1つまたは複数のコンピュータまたは他の装置により実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的文脈で説明することができる。一般的に、プログラムモジュールには、特定のタスクを実行、または、特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などが含まれる。典型的には、プログラムモジュールの機能性は、種々の実施形態において所望の通りに組み合わせまたは分散されてよい。
図2は、一実施形態における、オリジナル仮想マシンから1つまたは複数のクローン仮想マシンへ分岐して分岐の状態を考察する、状態分岐システムの処理を例示するフロー図である。ブロック210にて開始され、システムは、オリジナル仮想マシン上での実行するためのアプリケーションコードを受け取り、それにおいて、アプリケーションコードには、仮想マシンの状態を2つまたはそれ以上の可能な状態とさせる少なくとも1つの分岐が含まれる。システムは、マシンの状態を変化させるテストまたは他のアプリケーションコードを受け取ってよく、また、分岐は、ランタイム時に評価される条件に基づき発生してよい。システムは、オリジナル仮想マシンの状態を実質的に変えてしまう分岐を識別し、かつ、1つまたは複数のクローン仮想マシンを並列して実行して分岐から導かれる経路を評価する。
ブロック220へ続き、システムは、受け取ったアプリケーションコードを含むオリジナル仮想マシンを実行する。例えば、システムは、ハイパーバイザ内で動作し、同じ物理リソースを共有する複数の仮想マシンの実行を指示することができる。システムは、分岐が、仮想マシンの状態を大幅に変化させてしまう可能性があると識別されるまで、オリジナル仮想マシンを実行する。例えば、分岐は、ファイルの削除、長時間の計算の実行、大量のデータの作成、または、状態を変化させる他の動作の実行、を行うかもしれない。
ブロック230へ続き、システムは、オリジナル仮想マシン上で稼働するアプリケーションコード内の、仮想マシンの2つまたはそれ以上の可能な状態をもたらす分岐を識別する。例えば、システムは、従来技術において周知のコード分析ツールを使用してソフトウェアコード内の分岐する経路を発見することにより、分岐を自動的に識別することができる。多くの静的およびランタイムの分析ツールが、ソフトウェアコードを、バイナリおよび/またはソースコードのレベルで調査し、アプリケーションの状態における重要な分岐する位置を識別する。いくつかの実施形態において、システムにより、アプリケーションは、アプリケーションが複数の可能な状態に分岐するであろう場所を示すことができるようになる。例えば、テストアプリケーションは、2つまたはそれ以上の分岐経路を識別するオペレーティングシステムAPIを起動して、システムが仮想マシンをクローン化し、経路を並列して実行できるようにすることができる。
ブロック240へ続き、システムは、1つまたは複数のクローン仮想マシンを作成するが、当該マシンは、オリジナル仮想マシンの現在の状態を複製して、次に、分岐の1つの経路を処理して作成されるクローン仮想マシンにおける後続の状態を探索する。クローン化には、仮想ハードウェアを識別する仮想マシンの仕様のセットアップ、オリジナル仮想マシンのメモリの状態のコピー、オリジナル仮想マシンにアタッチされたディスクのコピー、などが含まれてよい。仮想化ソフトウェアには、仮想マシンを単一のファイルに記憶するものがあり、このファイルには、任意の組込みファイルシステム(例えばマイクロソフト(商標)のVirtual PCおよびHyper−Vで使用されるVHDファイル)が含まれる。システムは、オリジナル仮想マシンの実行を中断し、仮想マシンに関連する1つまたは複数のファイルをコピーすることにより、仮想マシンをクローン化してもよい。
ブロック250へ続き、システムは、各クローン仮想マシンをセットアップして、識別された分岐の異なる経路を実行する。クローンがオリジナルの完全なクローンであれば、該クローンは、オリジナルが次に行うのと同じことを行うであろう。しかし、状態分岐システムの目的の1つは、各クローンに分岐の異なる経路を並列して追跡させることである。従って、システムは、各クローンがどの経路を探索する責任があるのかについての情報を用いて該クローンをセットアップし、次に、クローンとオリジナルそれぞれを実行して、該クローンとオリジナルにその割り当てられた経路を探索させる。各クローンのセットアップには、仮想マシンが実行するであろうソフトウェアコードの識別、特定の場所への命令ポインタ及びレジスタの状態の設定、などが含まれてよい。
ブロック260へ続き、システムは、オリジナル仮想マシンおよびクローン化仮想マシンを実行して、識別された分岐の少なくとも2つの経路を並列して探索する。分岐の特定の経路がマシン状態を大幅に変えてしまう場合、その分岐を実行する仮想マシンのみが影響を受けることになる。その一方、オリジナル仮想マシンは、クローン化仮想マシンを実行して、オリジナル仮想マシンの状態に影響を与えることなく分岐経路についての情報を集める効果を判定するべく待ってもよい。アプリケーションコードが、条件が分岐経路の成立を満たさないと判定する場合、その経路に関する仮想マシンを単に廃棄することが可能であり、オリジナル仮想マシンは継続可能である。いくつかの場合、システムは、クローン仮想マシンを選択して、主要な仮想マシン(すなわち、オリジナル仮想マシンの役割を引き継ぐ)として継続させ、オリジナル仮想マシンを終了してもよい。
ブロック270へ続き、システムは、クローン化仮想マシンから少なくとも1つの実行結果を受け取る。その結果として、クローン化仮想マシンより到達される状態、交差VM通信チャネルを介してクローン化仮想マシンから通信される情報、クローン化仮想マシンにより実行される分岐経路を実行することにより生成される出力、などを示すことができる。オリジナル仮想マシンは、実行結果を使用して、次に何をすべきかを判定すること、または、オリジナル仮想マシンが処理を続けるであろう結果をもたらす仮想マシンを選択することができる。クローン化仮想マシンが並列して実行されるため、システムが、オリジナル仮想マシン内で各分岐を試すよりも早く結果に到達することが期待できる。ブロック270の後、これらのステップは完了する。
図3は、一実施形態における、1つまたは複数のクローン仮想マシンを出て実行を収束させてオリジナル仮想マシンに戻す、状態分岐システムの処理を例示するフロー図である。ブロック310にて開始され、システムは、オリジナル仮想マシン内のアプリケーションコードの分岐を前もって検出すること、かつ、各分岐経路を実行するクローン化仮想マシンをスポーンすることにより作成された、第1のクローン化仮想マシンを選択する。後に続く繰り返しにおいて、システムは次のクローン化仮想マシンを選択する。
ブロック320へ続き、システムは、選択されたクローン化仮想マシンが、同マシンが割り当てられていた分岐経路の実行を完了したことを検出する。いくつかの場合、分岐経路は、より大きな本体部分のコードの内の小さなサブセクションを表すことができ、すなわち、サブセクションは、結果又は状態変更をもたらし、ある意味においては、より大きなコード本体の外部の結果を決定するために、分岐の実行を隔離することは有益となる。クローン化仮想マシンのセットアップ中、システムは、クローン化仮想マシンが分岐経路の実行を完了するであろう時点で、命令(例えば、中止または割り込み)または他の標示を挿入してもよい。ハイパーバイザまたは他のコードが命令を監視または検出して、クローン化仮想マシンの完了を検出することが可能である。
ブロック330へ続き、システムは、クローン化仮想マシンの実行の結果状態を識別する。結果には、数値結果、クローン化仮想マシンにより生成されるデータ、クローン化仮想マシンに対する状態変化、などが含まれてよい。システムは、クローン化仮想マシンをオリジナル仮想マシンと比較して、クローン化仮想マシンが実行した分岐経路を探索することにより生成される変化を識別することができる。オリジナル仮想マシンが、分岐により投機的に実行される経路を採用すると決定すると、オリジナル仮想マシンは、選択されたクローン化仮想マシンの状態の相違または識別された結果をコピーすることが可能である。
決定ブロック340へ続き、システムは、現在の分岐に関連するクローン化仮想マシンがまだ存在するかどうかを判定する。存在する場合、システムは、ブロック310へループして次のクローン化仮想マシンを選択し、そうでない場合、システムは、各クローン化仮想マシンが処理された後にブロック350へ続く。
ブロック350へ続き、システムは、オリジナル仮想マシン上で稼働するアプリケーションコードにおける1つまたは複数の条件に基づき、成立させる分岐を選択する。いくつかの実施形態において、クローン化仮想マシンは、オリジナル仮想マシンが採用し得る分岐経路を投機的に実行するための投機的実行エンジンとして動作する。オリジナル仮想マシンが、どのパスを成立させるか判断するために、全ての条件が評価されたポイントまで実行した後に、オリジナル仮想マシンは、分岐の内の1つを正しい分岐として選択し、他を廃棄することが可能である。他の実施形態において、クローン化仮想マシンは、オリジナル仮想マシンにより全てが使用される累積結果を表してよいが、それは、結果により早く到達するために並列して実行される。そのような場合、オリジナル仮想マシンは、各クローン化仮想マシンから結果を受け取り、任意のさらなる処理を受け取った結果に対して実行し、クローン化仮想マシンが完了した後にも処理を継続する。
ブロック360へ続き、システムは、識別された結果状態を、選択された分岐を実行したクローン化仮想マシンからコピーする。このように、オリジナル仮想マシンは、個々のクローン化仮想マシンが実行する並列実行により恩恵を受ける。どの分岐を成立させようと、オリジナル仮想マシンは、各分岐のテストによる影響を受けず、また、先行するコードが完了した後に分岐を引き続き実行するべく待つ必要もない。むしろ、先行するコードがオリジナル仮想マシンにおいて完了し、一方で、クローン化仮想マシンはそれぞれ分岐の内の1つを実行し、また、選択された仮想マシンは、結果をオリジナル仮想マシンに、準備が整い次第(また、オリジナル仮想マシン自身で結果を達成することができる前に)提供する。
ブロック370へ続き、システムは、クローン化仮想マシンからのコピーした結果を使用して、オリジナル仮想マシンの実行を継続する。いくつかの実施形態において、システムは、オリジナル仮想マシンを廃棄し、かつ、選択されたクローン化仮想マシンを介して実行を継続してよい。システムは、成立させなかった分岐経路を表す任意のクローン化仮想マシンを廃棄または「フラッシュ」することが可能である。ブロック370の後、これらのステップは完了する。
図4は、一実施形態における、状態分岐システムによる分岐経路の並列処理を例示するタイムライン図である。タイムラインの第1の列410は、本明細書に記載されるオリジナル仮想マシンの処理を表す。従来のシステムでは、オリジナル仮想マシンまたは物理マシンは、処理の全てを実行することになる。オリジナル仮想マシンは、オリジナル仮想マシンが実行中のアプリケーションコード内の分岐450に遭遇する前に、1つまたは複数のタスク440を処理する。分岐前の何らかのポイントで、オリジナル仮想マシンが分岐を識別して、分岐の潜在経路を並列して実行する2つのクローン化仮想マシンをスポーンする。第2の行420は、第1のクローン化仮想マシンの処理を表し、第3の行430は第2のクローン化仮想マシンの処理を表す。オリジナル仮想マシンが分岐前タスク440を完了する一方、第1のクローン化仮想マシンが第1の分岐経路460に関連するコードを実行し、第2のクローン化仮想マシンが第2の分岐経路470に関連するコードを並列して実行する。オリジナル仮想マシンは分岐450に到達すると、オリジナル仮想マシンの現在の状態および分岐450の任意の条件に基づき採用すべき分岐の経路を判定する。オリジナル仮想マシンは、判定を勝ち抜いた分岐を選択し、結果480をオリジナル仮想マシンにコピーする。そして、オリジナル仮想マシンは実行を継続し、クローン化仮想マシンを廃棄する。このように、クローン化仮想マシンは、オリジナル仮想マシンの将来の状態を並列して準備し、オリジナル仮想マシンを各分岐経路の評価時に関与していた侵略的な状態変化から分離する。
いくつかの実施形態において、状態分岐システムは、デバイスドライバテストのためのフレームワークを提供する。デバイスドライバテストは、不正確に操作すると、オペレーティングシステムのカーネル空間においてデッドロックしてしまう状態変化および物理ハードウェアを伴うために、困難であることが多い。状態分岐システムにより、物理ハードウェアの状態変化を仮想化することが可能になるため、並列して動作する複数のクローン仮想マシンが、種々の潜在的なハードウェア入力の結果および対応するドライバ応答を評価できる。これにより、デバイスドライバソフトウェアコードのより速くよりロバストな開発が容易にされる。
いくつかの実施形態において、状態分岐システムは、分岐経路を探索する追加の仮想マシンをスポーンするための閾値を判定する。仮想マシンの作成とセットアップには、時間およびリソース使用の点である程度のコストが発生する。小さな分岐については、クローン化仮想マシンのセットアップに伴う時間は、該マシンから得られる恩恵に値する価値はないかもしれない。従って、システムは、クローン化仮想マシンを使用することの恩恵に関する閾値を判定して、トレードオフにより実行時間が最終的に節約される、または、他のポジティブな結果がもたらされる場合に限り、新しいクローン化仮想マシンをスポーンしてもよい。アプリケーションは、アプリケーションに固有の考察事項に基づく閾値を設定または調整することができてよい。同様に、いくつかの実施形態において、状態分岐システムは、分岐経路を探索するクローン化仮想マシンを使用することの恩恵を評価する際に、クローン化仮想マシンが、クローン化仮想マシンの外部の任意のリソースに影響を与える(すなわち、外部のまたはリンクされる物理装置にコマンドを発行する、ネットワーク上にパケットを送信する、など)かどうかを考慮してもよい。
いくつかの実施形態において、状態分岐システムは、オリジナル仮想マシンとは異なる物理マシン上にクローン化仮想マシンをスポーンする。仮想マシンは、物理マシン間の容易な移動に良好に適しており、システムは、クローン化仮想マシンのいくつかまたは全てを分離した物理マシン上で実行することにより、種々の分岐経路の探索を、他の物理マシンに任せてもよい。クローン化仮想マシンは、必要に応じて、ネットワークまたは物理マシン間の他の通信チャネルを介して、オリジナル仮想マシンと通信することができる。
いくつかの実施形態において、状態分岐システムは、分岐経路を探索するクローン化仮想マシンを使用する機会を検出する際に、ハイパーバイザからの通知を提供する。ハイパーバイザは、仮想マシンにおける各実行中の処理の監視、および、並列して、分離した仮想マシンが分岐経路に対して備えることができるインスタンスの自動的な検出、を行うことが可能である。そのような場合、ハイパーバイザがクローン化仮想マシンをスポーンすることをアプリケーションが意図するかどうかの標示をアプリケーションが登録することおよびそれに応答することが可能である、というアプリケーション通知をハイパーバイザは提供することができる。
いくつかの実施形態において、状態分岐システムは、仮想マシン上で稼働するアプリケーションの種々の状態に戻す効果を備える、新しい形式のデバッグを提供する。システムは、クローン化仮想マシンの形式でアプリケーションの実行時の種々のポイントで、チェックポイントを作成する。各クローン化仮想マシンは、アプリケーションの状態を特定の時間ポイントにおいて表し、アプリケーションに対して発生する任意の後続の変化から分離される。これにより、ソフトウェア開発者は、問題が発生する前または発生中の1つまたは複数の時間ポイントにおいて、デバッガをアタッチして、アプリケーションの状態を検査することができる。
いくつかの実施形態において、状態分岐システムは、種々のタスクを実行するための同様のアルゴリズムを比較するためのA−Bテストを提供する。例えば、システムは、オペレーティングシステムのページングまたはスケジューリングアルゴリズムを、それぞれを別個のクローン化仮想マシンにおいて、管理する処理の同様セットを用いてセットアップすること、そして、各クローン化仮想マシンを並列して実行して、どちらのアルゴリズムアがより良い結果を提供するかを、実行速度、または他の要因の観点から、判定することにより、テストすることができる。今日、そのようなテストを再び稼働させることで、順次新しい状態が導入される。テストハーネスが毎回同じ状態をセットアップしようと試みても、常に何らかの変化があり比較を困難にする。状態分岐システムを使用すると、各テストは既知のクローン化状態で開始され、予想外の状態変化による影響が少ない状態で、結果を比較することが可能である。
上記より、状態分岐システムの特定の実施形態が例示の目的で本明細書に記載されるが、本発明の精神および範囲から逸脱することなく種々の修正がなされてよいことは理解されるであろう。従って、本発明は添付の請求の範囲による場合を除いて制限されない。

Claims (17)

  1. オリジナル仮想マシンから1つまたは複数のクローン仮想マシンに分岐させて分岐する状態を考察するためのコンピュータに実装される方法であって、
    前記オリジナル仮想マシン上の実行用のアプリケーションコードを受け取るステップであって、前記アプリケーションコードは、前記オリジナル仮想マシンの2つまたはそれ以上の可能な状態をもたらす少なくとも1つの分岐を含む、ステップと、
    前記受け取ったアプリケーションコードを含む前記オリジナル仮想マシンを実行するステップと、
    前記アプリケーションコードが複数の可能な状態に分岐するであろう場所を示す情報を、前記アプリケーションコードから得ることにより、前記オリジナル仮想マシンの2つまたはそれ以上の可能な状態をもたらす前記オリジナル仮想マシン上で稼働する前記アプリケーションコード内の分岐を識別するステップと、
    1つまたは複数のクローン仮想マシンを作成するステップであって、前記クローン仮想マシンは、前記オリジナル仮想マシンの現在の状態を複製し、次に、それぞれが前記分岐の1つの経路を処理して、作成された当該クローン仮想マシンにおける後続の状態を探索する、ステップと、
    前記識別された分岐の異なる経路を実行するために、各クローン仮想マシンをセットアップするステップと、
    前記識別された分岐の少なくとも2つの経路を並列して探索するために、前記オリジナル仮想マシンおよびクローン化仮想マシンを実行するステップと、
    前記クローン化仮想マシンから少なくとも1つの実行結果を受け取るステップと、
    を含み、
    前述のステップが少なくとも1つのプロセッサにより実行され、
    前記オリジナル仮想マシンを実行するステップが、
    所定の動作の実行により前記オリジナル仮想マシンの状態を変化させる可能性がある分岐が識別されるまで前記オリジナル仮想マシンを実行するステップと、
    前記クローン化仮想マシンが、前記オリジナル仮想マシンのインスタンスの外部の任意のリソースに影響を与えることになるかどうかを判定するステップと、
    を含む、
    方法。
  2. 前記アプリケーションコードを受け取るステップが、前記オリジナル仮想マシンの前記状態を変化させ、かつ、ランタイムで評価される条件に基づく分岐を含む、アプリケーションコードを受け取るステップを含む、請求項1に記載の方法。
  3. 前記オリジナル仮想マシンを実行するステップが、同じ物理リソースを共有する複数の仮想マシンの実行を指示するハイパーバイザを含む、請求項1に記載の方法。
  4. 前記分岐を識別するステップが、コード解析ツールを使用して前記分岐を自動的に識別するステップを含む、請求項1に記載の方法。
  5. 前記分岐を識別するステップは、アプリケーションプログラミングインターフェース(API)起動するステップであって、該APIにより2つまたはそれ以上の分岐経路が識別される、ステップを含む、請求項1に記載の方法。
  6. クローン仮想マシンを作成するステップが、仮想ハードウェアを識別する1つまたは複数の仮想マシン仕様をセットアップするステップと、前記オリジナル仮想マシンのメモリの状態をコピーするステップと、前記オリジナル仮想マシンにアタッチされた1つまたは複数のディスクをコピーするステップとを含む、請求項1に記載の方法。
  7. 前記クローン仮想マシンを作成するステップが、前記オリジナル仮想マシンの実行を中断するステップと、前記オリジナル仮想マシンに関連する1つまたは複数の物理マシンファイルをコピーするステップとを含む、請求項1に記載の方法。
  8. 各クローンをセットアップするステップが、各クローンがどの経路を探索する責任があるのかについての情報を用いて前記クローンをセットアップするステップと、次に、前記クローンおよびオリジナル仮想マシンそれぞれにその割り当てられた経路を探索させるために、クローンおよびオリジナル仮想マシンそれぞれを実行するステップとを含む、請求項1に記載の方法。
  9. 各クローンをセットアップするステップが、前記クローン仮想マシンが実行するであろうソフトウェアコードを識別するステップと、前記クローン仮想マシンの命令ポインタ及びレジスタの状態を、特定の場所に設定するステップとを含む、請求項1に記載の方法。
  10. 前記少なくとも1つの実行結果、前記クローン化仮想マシンが到達した状態含む、請求項1に記載の方法。
  11. 仮想マシンの分岐および並列実行のためのコンピュータシステムであって、
    以下のコンポーネント内で具現化されるソフトウェア命令を実行するべく構成されるプロセッサおよびメモリと、
    2つまたはそれ以上の仮想マシンに物理コンピュータ装置のリソースを割り当て、かつ、仮想マシンをクローン化するためのサポートを提供するハイパーバイザコンポーネントと、
    物理マシン上でのリソース使用と、オリジナル仮想マシンおよびクローン化仮想マシンを含む2つまたはそれ以上の仮想マシン間のリソース分離と、のスケジューリングを提供するスケジューリングコンポーネントと、
    2つまたはそれ以上の仮想マシン間に1つまたは複数の通信のチャネルを提供するVM通信コンポーネントと、
    1つまたは複数のクローン仮想マシンにおいて後続の状態を評価するために、ソフトウェアコードを実行するオリジナル仮想マシンを分岐させるための候補である、現在の状態と、前記ソフトウェアコードの1つまたは複数の前記後続の状態を識別する、分岐識別コンポーネントと、
    状態情報を前記オリジナル仮想マシンからコピーして、同様の状態を有する1つまたは複数のクローン仮想マシンを作成する、状態クローニングコンポーネントと、
    各作成された前記クローン仮想マシンを開始させ、かつ、各クローンが追跡する実行の分岐を識別することにより、前記分岐を実行するVM分岐コンポーネントと、
    各クローン仮想マシンおよび前記オリジナル仮想マシンの動作を調整して、不要な分岐の廃棄または分岐結果の統合を可能にするクローン調整コンポーネントと、
    各仮想マシンが生成する結果を処理し、その結果を前記クローン調整コンポーネントに提供する結果処理コンポーネントと
    を備え
    前記VM分岐コンポーネントは、
    所定の動作の実行により前記オリジナル仮想マシンを変化させる可能性がある分岐が識別されるまで前記オリジナル仮想マシンを実行し、
    前記クローン化仮想マシンが、前記オリジナル仮想マシンのインスタンスの外部の任意のリソースに影響を与えることになるかどうかを判定する、
    システム。
  12. 前記VM通信コンポーネントが、前記オリジナル仮想マシンから調整情報を受け取り、調整命令を1つまたは複数のクローン仮想マシンに提供する、請求項11に記載のシステム。
  13. 前記分岐識別コンポーネントは、前記ソフトウェアコードを解析することにより前記ハイパーバイザコンポーネントを介して潜在的な分岐を自動的に識別する、請求項11に記載のシステム。
  14. 状態クローニングコンポーネントは、各クローンが追跡するであろう分岐する状態を探索に使用される前記オリジナル仮想マシンの前記状態情報のサブセットを選択し、前記選択したサブセットを複製する、請求項11に記載のシステム。
  15. 前記VM分岐コンポーネントは、各クローン仮想マシンに、自身が考察する分岐を知らせ、次に、各仮想マシンに前記分岐の後の状態の探索を実行させる、請求項11に記載のシステム。
  16. 前記クローン調整コンポーネントは、各クローン仮想マシンの結果を考察し、前記状態の探索が完了した後に、前記オリジナル仮想マシンに実行を戻す、請求項11に記載のシステム。
  17. 前記各仮想マシンが生成する結果は、各仮想マシンに対して発生するさらなる状態変化を含む、請求項11に記載のシステム。
JP2013544715A 2010-12-17 2011-12-14 仮想マシンの分岐および並列実行 Expired - Fee Related JP5960161B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/972,424 US8677355B2 (en) 2010-12-17 2010-12-17 Virtual machine branching and parallel execution
US12/972,424 2010-12-17
PCT/US2011/064754 WO2012082811A2 (en) 2010-12-17 2011-12-14 Virtual machine branching and parallel execution

Publications (3)

Publication Number Publication Date
JP2013546103A JP2013546103A (ja) 2013-12-26
JP2013546103A5 JP2013546103A5 (ja) 2015-01-15
JP5960161B2 true JP5960161B2 (ja) 2016-08-02

Family

ID=46236241

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013544715A Expired - Fee Related JP5960161B2 (ja) 2010-12-17 2011-12-14 仮想マシンの分岐および並列実行

Country Status (9)

Country Link
US (2) US8677355B2 (ja)
EP (1) EP2652600B1 (ja)
JP (1) JP5960161B2 (ja)
KR (1) KR101957533B1 (ja)
CN (1) CN102609296B (ja)
AR (1) AR084048A1 (ja)
HK (1) HK1174405A1 (ja)
TW (1) TWI534709B (ja)
WO (1) WO2012082811A2 (ja)

Families Citing this family (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2477109B1 (en) 2006-04-12 2016-07-13 Soft Machines, Inc. Apparatus and method for processing an instruction matrix specifying parallel and dependent operations
EP2523101B1 (en) 2006-11-14 2014-06-04 Soft Machines, Inc. Apparatus and method for processing complex instruction formats in a multi- threaded architecture supporting various context switch modes and virtualization schemes
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
US8407804B2 (en) * 2010-09-13 2013-03-26 Sophos Plc System and method of whitelisting parent virtual images
EP2616928B1 (en) 2010-09-17 2016-11-02 Soft Machines, Inc. Single cycle multi-branch prediction including shadow cache for early far branch prediction
US8489929B2 (en) * 2010-09-30 2013-07-16 Salesforce.Com, Inc. Facilitating large-scale testing using virtualization technology in a multi-tenant database environment
WO2012135041A2 (en) 2011-03-25 2012-10-04 Soft Machines, Inc. Register file segments for supporting code block execution by using virtual cores instantiated by partitionable engines
EP2689326B1 (en) 2011-03-25 2022-11-16 Intel Corporation Memory fragments for supporting code block execution by using virtual cores instantiated by partitionable engines
WO2012135031A2 (en) 2011-03-25 2012-10-04 Soft Machines, Inc. Executing instruction sequence code blocks by using virtual cores instantiated by partitionable engines
CN103649932B (zh) 2011-05-20 2017-09-26 英特尔公司 资源的分散分配以及用于支持由多个引擎执行指令序列的互连结构
WO2012162189A1 (en) 2011-05-20 2012-11-29 Soft Machines, Inc. An interconnect structure to support the execution of instruction sequences by a plurality of engines
KR101703401B1 (ko) 2011-11-22 2017-02-06 소프트 머신즈, 인크. 다중 엔진 마이크로프로세서용 가속 코드 최적화기
US20150039859A1 (en) 2011-11-22 2015-02-05 Soft Machines, Inc. Microprocessor accelerated code optimizer
US9811371B2 (en) 2012-06-29 2017-11-07 International Business Machines Corporation Concurrent execution of a computer software application along multiple decision paths
WO2014031100A1 (en) * 2012-08-21 2014-02-27 Empire Technology Development Llc Detection and mitigation of side-channel attacks
US9122873B2 (en) 2012-09-14 2015-09-01 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US9069782B2 (en) 2012-10-01 2015-06-30 The Research Foundation For The State University Of New York System and method for security and privacy aware virtual machine checkpointing
WO2014100954A1 (zh) * 2012-12-24 2014-07-03 华为技术有限公司 数据控制方法及系统
WO2014150991A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for implementing a reduced size register view data structure in a microprocessor
US9891924B2 (en) 2013-03-15 2018-02-13 Intel Corporation Method for implementing a reduced size register view data structure in a microprocessor
US10275255B2 (en) 2013-03-15 2019-04-30 Intel Corporation Method for dependency broadcasting through a source organized source view data structure
US9811342B2 (en) 2013-03-15 2017-11-07 Intel Corporation Method for performing dual dispatch of blocks and half blocks
US10140138B2 (en) 2013-03-15 2018-11-27 Intel Corporation Methods, systems and apparatus for supporting wide and efficient front-end operation with guest-architecture emulation
US9886279B2 (en) 2013-03-15 2018-02-06 Intel Corporation Method for populating and instruction view data structure by using register template snapshots
US9569216B2 (en) 2013-03-15 2017-02-14 Soft Machines, Inc. Method for populating a source view data structure by using register template snapshots
US9632825B2 (en) 2013-03-15 2017-04-25 Intel Corporation Method and apparatus for efficient scheduling for asymmetrical execution units
KR102063656B1 (ko) 2013-03-15 2020-01-09 소프트 머신즈, 인크. 블록들로 그룹화된 멀티스레드 명령어들을 실행하기 위한 방법
WO2014150971A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for dependency broadcasting through a block organized source view data structure
WO2014150806A1 (en) 2013-03-15 2014-09-25 Soft Machines, Inc. A method for populating register view data structure by using register template snapshots
US9904625B2 (en) 2013-03-15 2018-02-27 Intel Corporation Methods, systems and apparatus for predicting the way of a set associative cache
KR102083390B1 (ko) 2013-03-15 2020-03-02 인텔 코포레이션 네이티브 분산된 플래그 아키텍처를 이용하여 게스트 중앙 플래그 아키텍처를 에뮬레이션하는 방법
CN104216793B (zh) * 2013-05-31 2017-10-17 国际商业机器公司 应用程序备份、恢复的方法及设备
US9852000B2 (en) * 2013-08-27 2017-12-26 Empire Technology Development Llc Consolidating operations associated with a plurality of host devices
US10339236B2 (en) * 2013-09-10 2019-07-02 Vmware, Inc. Techniques for improving computational throughput by using virtual machines
US20150121374A1 (en) * 2013-10-30 2015-04-30 Alistair Black Application Processing Systems and Methods
CN104598776B (zh) * 2013-10-31 2018-11-23 深圳市腾讯计算机系统有限公司 一种对软件进行测试的方法及装置
US9323565B2 (en) 2013-12-20 2016-04-26 Vmware, Inc. Provisioning customized virtual machines without rebooting
US10977063B2 (en) 2013-12-20 2021-04-13 Vmware, Inc. Elastic compute fabric using virtual machine templates
US9575792B2 (en) * 2014-03-14 2017-02-21 Netapp, Inc. Method and system for replicating virtual machines
JP2015212920A (ja) * 2014-04-16 2015-11-26 俊介 山内 先行画像生成プログラム、仮想マシーン制御プログラムおよびコンピュータ可読記憶媒体
US9619268B2 (en) * 2014-08-23 2017-04-11 Vmware, Inc. Rapid suspend/resume for virtual machines via resource sharing
US9513948B2 (en) * 2015-02-05 2016-12-06 International Business Machines Corporation Automated virtual machine provisioning based on defect state
US20160378521A1 (en) * 2015-06-24 2016-12-29 International Business Machines Corporation Automated test optimization
US20170052866A1 (en) * 2015-08-21 2017-02-23 International Business Machines Corporation Managing a shared pool of configurable computing resources which uses a set of dynamically-assigned resources
US10846117B1 (en) * 2015-12-10 2020-11-24 Fireeye, Inc. Technique for establishing secure communication between host and guest processes of a virtualization architecture
US20180275871A1 (en) * 2017-03-22 2018-09-27 Intel Corporation Simulation of a plurality of storage devices from a single storage device coupled to a computational device
US10310966B1 (en) * 2017-06-01 2019-06-04 Amazon Technologies, Inc. Automatic test stack creation via production system replication
US10789139B2 (en) 2018-04-12 2020-09-29 Vmware, Inc. Method of rebuilding real world storage environment
US10936354B2 (en) * 2018-04-13 2021-03-02 Vmware, Inc. Rebuilding a virtual infrastructure based on user data
CN110389857B (zh) * 2018-04-20 2023-04-21 伊姆西Ip控股有限责任公司 数据备份的方法、设备和非瞬态计算机存储介质
CN112948234B (zh) * 2020-08-26 2023-02-21 深圳市明源云链互联网科技有限公司 接口测试方法、装置及电子设备

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5313647A (en) * 1991-09-20 1994-05-17 Kendall Square Research Corporation Digital data processor with improved checkpointing and forking
JPH06222913A (ja) * 1993-01-25 1994-08-12 Fujitsu Ltd プログラム解析装置
US5905855A (en) * 1997-02-28 1999-05-18 Transmeta Corporation Method and apparatus for correcting errors in computer systems
US6795966B1 (en) * 1998-05-15 2004-09-21 Vmware, Inc. Mechanism for restoring, porting, replicating and checkpointing computer systems using state extraction
US8631066B2 (en) * 1998-09-10 2014-01-14 Vmware, Inc. Mechanism for providing virtual machines for use by multiple users
US6944754B2 (en) * 2002-10-02 2005-09-13 Wisconsin Alumni Research Foundation Method and apparatus for parallel execution of computer software using a distilled program
US7299468B2 (en) 2003-04-29 2007-11-20 International Business Machines Corporation Management of virtual machines to utilize shared resources
US7849462B2 (en) * 2005-01-07 2010-12-07 Microsoft Corporation Image server
JP4585463B2 (ja) 2006-02-15 2010-11-24 富士通株式会社 仮想計算機システムを機能させるためのプログラム
US7664626B1 (en) 2006-03-24 2010-02-16 Symantec Corporation Ambiguous-state support in virtual machine emulators
US8296759B1 (en) * 2006-03-31 2012-10-23 Vmware, Inc. Offloading operations to a replicate virtual machine
US8151263B1 (en) * 2006-03-31 2012-04-03 Vmware, Inc. Real time cloning of a virtual machine
US8458695B2 (en) * 2006-10-17 2013-06-04 Manageiq, Inc. Automatic optimization for virtual systems
US8234640B1 (en) * 2006-10-17 2012-07-31 Manageiq, Inc. Compliance-based adaptations in managed virtual systems
US8336046B2 (en) * 2006-12-29 2012-12-18 Intel Corporation Dynamic VM cloning on request from application based on mapping of virtual hardware configuration to the identified physical hardware resources
US20090037885A1 (en) 2007-07-30 2009-02-05 Microsoft Cororation Emulating execution of divergent program execution paths
US8949585B2 (en) * 2007-10-09 2015-02-03 Vmware, Inc. In-place conversion of virtual machine state
US7844954B2 (en) * 2007-11-06 2010-11-30 Vmware, Inc. Using branch instruction counts to facilitate replay of virtual machine instruction execution
US9009020B1 (en) * 2007-12-12 2015-04-14 F5 Networks, Inc. Automatic identification of interesting interleavings in a multithreaded program
US8495636B2 (en) * 2007-12-19 2013-07-23 International Business Machines Corporation Parallelizing single threaded programs by performing look ahead operation on the single threaded program to identify plurality of instruction threads prior to execution
US8281318B2 (en) * 2008-03-31 2012-10-02 Vmware, Inc. Systems and methods for inter process communication based on queues
US20090307763A1 (en) * 2008-06-05 2009-12-10 Fiberlink Communications Corporation Automated Test Management System and Method
US8473946B2 (en) 2008-07-03 2013-06-25 Vmware, Inc. Efficient recording and replaying of non-deterministic instructions in a virtual machine and CPU therefor
JP2010026572A (ja) * 2008-07-15 2010-02-04 Hitachi Ltd 仮想計算機の現出方法、この方法を実行するためのプログラム、及びこの方法を実行するサーバ
US20100070678A1 (en) 2008-09-12 2010-03-18 Vmware, Inc. Saving and Restoring State Information for Virtualized Computer Systems
US20100083251A1 (en) * 2008-09-12 2010-04-01 Hyper9, Inc. Techniques For Identifying And Comparing Virtual Machines In A Virtual Machine System
JP5104958B2 (ja) * 2008-10-03 2012-12-19 富士通株式会社 仮想計算機システムのテスト方法、テストプログラム並びにその記録媒体、仮想計算機システム
US9141381B2 (en) 2008-10-27 2015-09-22 Vmware, Inc. Version control environment for virtual machines
JP5352848B2 (ja) 2008-11-28 2013-11-27 株式会社日立製作所 仮想計算機の制御方法及び計算機装置
US9817695B2 (en) * 2009-04-01 2017-11-14 Vmware, Inc. Method and system for migrating processes between virtual machines
US8656222B2 (en) * 2009-07-30 2014-02-18 Vmware, Inc. Method and system for recording a selected computer process for subsequent replay
US8572613B1 (en) * 2009-12-28 2013-10-29 Amazon Technologies, Inc. Comparison of virtual computing states by performing identified repeatable computations in a changing virtual computing environment
US9002972B2 (en) * 2010-01-29 2015-04-07 Symantec Corporation Systems and methods for sharing the results of computing operations among related computing systems
US8990813B2 (en) * 2010-03-29 2015-03-24 Red Hat, Inc. Automated virtual machine image deployment and testing by accessing downloadable test packages and dynamically-changing test parameters
US8898668B1 (en) * 2010-03-31 2014-11-25 Netapp, Inc. Redeploying baseline virtual machine to update a child virtual machine by creating and swapping a virtual disk comprising a clone of the baseline virtual machine
US8489929B2 (en) * 2010-09-30 2013-07-16 Salesforce.Com, Inc. Facilitating large-scale testing using virtualization technology in a multi-tenant database environment
US9165136B1 (en) * 2010-10-27 2015-10-20 Amazon Technologies, Inc. Supervising execution of untrusted code
US8443365B2 (en) * 2010-11-03 2013-05-14 Hewlett-Packard Development Company, L.P. Methods and systems to clone a virtual machine instance

Also Published As

Publication number Publication date
TW201227520A (en) 2012-07-01
JP2013546103A (ja) 2013-12-26
KR101957533B1 (ko) 2019-03-12
WO2012082811A3 (en) 2012-09-27
CN102609296A (zh) 2012-07-25
US20140201739A1 (en) 2014-07-17
CN102609296B (zh) 2015-04-01
EP2652600B1 (en) 2017-09-06
KR20130126938A (ko) 2013-11-21
TWI534709B (zh) 2016-05-21
WO2012082811A2 (en) 2012-06-21
EP2652600A4 (en) 2014-07-09
US8677355B2 (en) 2014-03-18
EP2652600A2 (en) 2013-10-23
HK1174405A1 (en) 2013-06-07
US20120159478A1 (en) 2012-06-21
AR084048A1 (es) 2013-04-17

Similar Documents

Publication Publication Date Title
JP5960161B2 (ja) 仮想マシンの分岐および並列実行
Guanciale et al. Inspectre: Breaking and fixing microarchitectural vulnerabilities by formal analysis
JP5904993B2 (ja) マルチスレッド・コードをデバッグする方法、システム、及びコンピュータ・プログラム
US10871982B2 (en) Virtual processor scheduling via memory monitoring
JP2013546103A5 (ja)
EP2988242B1 (en) Information processing device, and information processing method
Zuo et al. Performance tuning towards a KVM-based low latency virtualization system
US20130247007A1 (en) Making debugger behavior conditional on past program state
US11361077B2 (en) Kernel-based proactive engine for malware detection
US20120284695A1 (en) Error simulation
Weng et al. Argus: Debugging performance issues in modern desktop applications with annotated causal tracing
Burns et al. KairosVM: Deterministic introspection for real-time virtual machine hierarchical scheduling
Stojkovic et al. Specfaas: Accelerating serverless applications with speculative function execution
US11392482B2 (en) Data breakpoints on certain kinds of functions
US11954023B2 (en) Garbage collection prefetching state machine
Lv et al. Static worst-case execution time analysis of the μ C/OS-II real-time kernel
US20230418509A1 (en) Switching memory consistency models in accordance with execution privilege level
Bhargava et al. Run-time performance analysis of non-agent based solution for Inter Process Synchronization problem
Carnà et al. Strategies and software support for the management of hardware performance counters
Lin et al. A Spin-based model checking for the simple concurrent program on a preemptive RTOS
Kim et al. HD-FUZZ: Hardware dependency-aware firmware fuzzing via hybrid MMIO modeling
Anderson et al. Comparison of Bootstrapping and Finite State Machine Simulations of a Scheduling Benchmark
Carnà HOP-Hardware-based Online Profiling of multi-threaded applications via AMD Instruction-Based Sampling
Das et al. Improving Energy Efficiency of Mobile Execution Exploiting Similarity of Application Control Flow
Banister et al. Fast Thread Migration in a Heterogeneous ISA System

Legal Events

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

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20130905

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20130909

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141120

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141120

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20150523

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151228

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160126

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160422

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160622

R150 Certificate of patent or registration of utility model

Ref document number: 5960161

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees