(57)【特許請求の範囲】
【請求項１】
仮想マシンの配備時間を最適化するための方法であって、
指定されたＣＰＵ容量を有する仮想マシンを構成する要求を受信することと、
前記指定されたＣＰＵ容量に加えて付加的なＣＰＵ容量を有する前記仮想マシンをプロビジョニングすることと、
前記指定されたＣＰＵ容量に加えて前記付加的なＣＰＵ容量を有する前記仮想マシンをアクティブ化することと、
前記仮想マシンの前記アクティブ化の完了に応答して、プロセッサにより、前記仮想マシンのＣＰＵ構成を前記指定されたＣＰＵ容量に復旧させるコマンドをハイパーバイザに発行することと、
を含む方法。
【請求項２】
前記指定されたＣＰＵ容量が閾値以下であることについて判断することをさらに含む、請求項１に記載の方法。
【請求項３】
前記閾値は、シングルＣＰＵコアに対応する、請求項２に記載の方法。
【請求項４】
前記指定されたＣＰＵ容量が前記閾値以下であることに応答して、クラウド・コンピューティング環境が、前記仮想マシンの配備のために割り当てる前記付加的なＣＰＵ容量を有することについて判断することをさらに含む、請求項２又は請求項３に記載の方法。
【請求項５】
前記クラウド・コンピューティング環境が前記仮想マシンの配備のために割り当てる前記付加的なＣＰＵ容量を有することに応答して、前記指定されたＣＰＵ容量に加えて前記付加的なＣＰＵ容量を有するように前記仮想マシンをプロビジョニングする、請求項４に記載の方法。
【請求項６】
前記指定されたＣＰＵ容量を有する前記仮想マシンへのユーザ・アクセスを許可することをさらに含む、請求項１から請求項５の何れか１項に記載の方法。
【請求項７】
仮想マシンの配備時間を最適化するための、コンピュータ可読ストレージ媒体内に具体化されたコンピュータ・プログラムであって、
指定されたＣＰＵ容量を有する仮想マシンを構成する要求を受信し、
前記指定されたＣＰＵ容量に加えて付加的なＣＰＵ容量を有するように前記仮想マシンをプロビジョニングし、
前記指定されたＣＰＵ容量に加えて前記付加的なＣＰＵ容量を有する前記仮想マシンをアクティブ化し、
前記仮想マシンの前記アクティブ化の完了に応答して、前記仮想マシンのＣＰＵ構成を前記指定されたＣＰＵ容量に復旧させるコマンドをハイパーバイザに発行する、
ためのプログラミング命令を含む、コンピュータ・プログラム。
【請求項８】
前記指定されたＣＰＵ容量が閾値以下であることについて判断するためのプログラミング命令をさらに含む、請求項７に記載のコンピュータ・プログラム。
【請求項９】
前記閾値は、シングルＣＰＵコアに対応する、請求項８に記載のコンピュータ・プログラム。
【請求項１０】
前記指定されたＣＰＵ容量が前記閾値以下であることに応答して、クラウド・コンピューティング環境が、前記仮想マシンの配備のために割り当てる前記付加的なＣＰＵ容量を有することについて判断するためのプログラミング命令をさらに含む、請求項８又は請求項９に記載のコンピュータ・プログラム。
【請求項１１】
前記クラウド・コンピューティング環境が前記仮想マシンの配備のために割り当てる前記付加的なＣＰＵ容量を有することに応答して、前記指定されたＣＰＵ容量に加えて前記付加的なＣＰＵ容量を有するように前記仮想マシンをプロビジョニングする、請求項１０に記載のコンピュータ・プログラム。
【請求項１２】
前記指定されたＣＰＵ容量を有する前記仮想マシンへのユーザ・アクセスを許可するためのプログラミング命令をさらに含む、請求項７から請求項１１の何れか１項に記載のコンピュータ・プログラム。
【請求項１３】
仮想マシンの配備時間を最適化するためのコンピュータ・プログラムを格納するためのメモリ・ユニットと、
前記メモリ・ユニットに結合されたプロセッサと、
を含み、前記プロセッサは、前記コンピュータ・プログラムに応答して、
指定されたＣＰＵ容量を有する仮想マシンを構成する要求を受信するための回路と、
前記指定されたＣＰＵ容量に加えて付加的なＣＰＵ容量を有するように前記仮想マシンをプロビジョニングするための回路と、
前記指定されたＣＰＵ容量に加えて前記付加的なＣＰＵ容量を有する前記仮想マシンをアクティブ化するための回路と、
前記仮想マシンの前記アクティブ化の完了に応答して、前記仮想マシンのＣＰＵ構成を前記指定されたＣＰＵ容量に復旧させるコマンドをハイパーバイザに発行するための回路と、
を含む、システム。
【請求項１４】
前記プロセッサは、
前記指定されたＣＰＵ容量が閾値以下であることについて判断するための回路をさらに含む、請求項１３に記載のシステム。
【請求項１５】
前記閾値は、シングルＣＰＵコアに対応する、請求項１４に記載のシステム。
【請求項１６】
前記プロセッサは、
前記指定されたＣＰＵ容量が前記閾値以下であることに応答して、クラウド・コンピューティング環境が前記仮想マシンの配備のために割り当てる前記付加的なＣＰＵ容量を有することについて判断するための回路をさらに含む、請求項１４又は請求項１５に記載のシステム。
【請求項１７】
前記クラウド・コンピューティング環境が前記仮想マシンの配備のために割り当てる前記付加的なＣＰＵ容量を有することに応答して、前記指定されたＣＰＵ容量に加えて前記付加的なＣＰＵ容量を有するように前記仮想マシンをプロビジョニングする、請求項１６に記載のシステム。
【請求項１８】
前記プロセッサは、
前記指定されたＣＰＵ容量を有する前記仮想マシンへのユーザ・アクセスを許可するための回路をさらに含む、請求項１３から請求項１７の何れか１項に記載のシステム。
【請求項１９】
プログラムがコンピュータ上で実行されるとき、請求項１から請求項６の何れか１項に記載の方法を実施するように適合されたプログラム・コード手段を含むコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、クラウド・コンピューティングに関し、より具体的には、仮想マシンの初期配備時間（initial deployment time）の間、より多くの処理リソースを一時的に割り当てることによって、仮想マシンの配備時間を最適化することに関する。
【背景技術】
【０００２】
クラウド・コンピューティング環境においては、コンピューティングは、製品ではなくサービスとして提供されるため、共有リソース、ソフトウェア及び情報は、インターネットなどのネットワーク上で計量サービス（metered service）としてコンピュータ及び他のデバイスに提供される。こうした環境においては、計算、ソフトウェア、データ・アクセス、及びストレージ・サービスは、サービスを提供するシステムの物理的位置及び構成の知識を必要とせず、ユーザに提供される。
【０００３】
クラウド・コンピューティング環境のクラウド・コンピューティング・ノード内に実装できるような仮想化されたコンピュータ環境において、仮想化されたコンピュータ環境は、仮想オペレーティング・システムを含む。仮想オペレーティング・システムは、共通ベース部分と別個のユーザ部分とを含み、その全てが物理コンピュータ上で実行される。物理コンピュータは、ホストと呼ばれる。共通ベース部分はハイパーバイザと呼ぶことができ、各ユーザ部分はゲストと呼ぶことができる。各ゲストは、コンピュータの物理リソースの論理パーティションである。ゲスト・オペレーティング・システムは各ゲスト上で実行され、ゲストは、ゲスト・オペレーション・システムには実コンピュータのように見える。各ゲスト・オペレーション・システムは、１つ又は複数の仮想マシンをホストすることができる。
【０００４】
現在のところ、最も一般的なゲスト構成の１つは、高密度のコンソリデーション（consolidation）を達成するための、シングルコア又はサブコアＣＰＵ割り当てである。シングルコア又はサブコアＣＰＵ割り当てしか利用可能でないので、所定の時間に単一スレッド（即ち、命令ストリーム）しか実行することができない。
【０００５】
マルチスレッディング（multithreading）は、単一プロセスの文脈内に存在する複数のスレッド又は複数の命令ストリームを有することを言う。これらのスレッドは、プロセスのリソースを共有するが、独立して実行することが可能である。その結果、マルチスレッド・スタートアップを用いてオペレーティング・システム及びミドルウェア層（middleware tier）を初期化できる場合、オペレーティング・システム及びミドルウェア層の初期化をより迅速に行うことができ、それにより、仮想ゲスト・インスタンス及び仮想マシンの配備時間が低減される。しかしながら、現在のところ、シングルコア又はサブコアＣＰＵ割り当てしか利用可能でないので、マルチスレッディングを達成することはできない。従って、仮想ゲスト・インスタンス及び仮想マシンの配備時間は、マルチスレッド・スタートアップを用いてオペレーティング・システム及びミドルウェア層を初期化できる場合よりも著しく長くなる。
【０００６】
特許文献１は、基板（substrate）ネットワーク及び仮想ネットワーク環境上で少なくとも１つの仮想ネットワークを動作させるための方法を開示する。（要約及び図７に関する記述を参照されたい）。
【０００７】
特許文献２は、各々が少なくとも１つのネットワーク・オペレーティング・システムを実行する物理ノードを含む、インフラストラクチャ・ネットワークと呼ばれる物理ネットワーク上に、特定の用途のために適合された少なくとも１つの仮想ネットワークをオンザフライ式に且つオンデマンドで生成するための方法を開示する。この方法は、次のステップ：即ち、仮想ネットワーク・サーバと呼ばれる少なくとも１つのコンピュータ・デバイス上で、特定の用途に従って生成される仮想ネットワークに関連するデータを判断するステップと；このデータに基づき、且つ、インフラストラクチャ・ネットワークの、アクティブ・ノードと呼ばれる物理ノードの少なくとも一部分に対して、仮想ノードを作成する要求を伝送するステップと；仮想デバイスを各々のアクティブ・ノードにインストールすることによって、各々のアクティブ・ノード上に仮想ノードを作成するステップであって、前述の仮想ネットワークはこのように作成された仮想ノードの全てから成る、ステップとを含む。
【０００８】
特許文献３は、シリアル処理モードにおいて、複数のノードの第１のサブセットを起動するステップと：並列処理モードにおいて、複数のノードの第２のサブセットを起動するステップと；並列コンピュータ上でのアプリケーションの配備前に、アプリケーションをプロファイルするステップであって、アプリケーションは、アプリケーションのシリアル・セグメント及び並行セグメントを識別するためのものである、ステップと；アプリケーションのプロファイル、及び第２のサブセット内のノードに対する第１のサブセット内のノードのデータ通信ネットワークにおける近接性に基づいて、並列コンピュータ上での実行のためにアプリケーションを配備するステップとを含む、並列コンピュータ上での実行のためにアプリケーションを構成するための方法、システム、及び製品を開示する。（図５及び図６に関する記述、並びに段落３を参照されたい）。
【０００９】
非特許文献１は、仮想ノード配備スキームを開示する。（ページ１、４及び５を参照されたい。）
【００１０】
特許文献４は、仮想ネットワーク上に仮想パスのための必要トラフィック（offered traffic）を所与として、限られた伝送リソースを仮想ネットワークに割り当てるための一般的なディメンジョニング（dimensioning：大きさを定める）方法及びシステムを開示する。Ｎ個のレベルの階層構造の上部の３つの層を、底部の旧レイヤと上部の新レイヤとから成る２レイヤの階層構造に折り畳むことにより、Ｎ個のレイヤの仮想ネットワークのディメンジョニングの問題を、等価的な仮想パスのディメンジョニング問題に縮小する。上部の新レイヤは、底部の旧レイヤ上にマッピングされた複数の仮想ルートを含む。結果として生じる仮想ルートのディメンジョニング問題は、標準的な技術を用いることにより、又はエントロピーに基づくディメンジョニング・アルゴリズムを使用することにより、レイヤＮ−２に対するリソースの最適な割り当てを生じるように解決することができる。
【００１１】
特許文献５は、ネットワーク・トポロジーを仮想リンクに抽象化し、一般的な仮想リンク及びインスタンス化された仮想化リンクの両方をサポートして、仮想化されたトポロジーをドメイン内の実際のリソースとリンクさせ、ネットワーク・トポロジー情報に関するセキュリティを提供し、リソースの割り当てに対する制御を提供し、広告の複雑さを低減させるためのシステム及び方法を開示する。
【００１２】
非特許文献２は、キャップされていない論理パーティションの概念を開示する。こうしたパーティションは、これに割り当てられた処理パワーに加えて、付加的な処理パワーを使用することができる。
【００１３】
非特許文献３のように、Ｗｉｎｄｏｗｓ７により、トラブルシューティング及びデバッグの目的で又はスタートアップ・コードの単一スレッド実行を試験するために、起動プロセスの際に使用される（マルチコアＣＰＵ又は複数のＣＰＵにおける）プロセッサの数を変更することが可能になる。
【００１４】
非特許文献４は、Ｉｎｔｅｌ  ＴｕｒｂｏＢｏｏｓｔが、ＣＰＵパッケージ内の他のコアがフル稼働で動作していない場合に、どのようにクロック速度をコアに付加することを可能にするかを論じている。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】国際公開第２０１００６６４３０号
【特許文献２】米国特許第２０１２０１３１５７９号
【特許文献３】米国特許第２０１２０１８００５８号
【特許文献４】米国特許第５７６４７４０号
【特許文献５】米国特許第２００８００９５１７６号
【非特許文献】
【００１６】
【非特許文献１】Begnum他著、Scaleable Deployment and Configuration of High Performance andVirtual Clusters、CISE/CGCS 2006、https://project.iu.hio.no/papers/ManageVirtualHPC.pdf
【非特許文献２】http://pic.dhe.ibm.com/infocenter/powersys/v3r1m5/index.jsp?topic=%2Fiphat%2Fiphatsharedproc.htm
【非特許文献３】http://www.ocztechnologyforum.com/forum/showthread.php?63273-*-Windows-7-Ultimate-Tweaks-amp-Utilities-*
【非特許文献４】http://www.intel.com/content/www/us/en/architecture-and-technology/turbo-boost/turbo-boost-technology.html
【非特許文献５】Peter Mell及びTimothy Grance著、「The NIST Definition of Cloud Computing」、２０１１年９月、http://csrc.nist.gov/publications/nistpubs/800-145/SP800-145.pdf
【発明の概要】
【発明が解決しようとする課題】
【００１７】
仮想マシンの配備時間を最適化するための方法、システム、及びコンピュータ・プログラムを提供する。
【課題を解決するための手段】
【００１８】
第１の態様によると、仮想マシンの配備時間を最適化するための方法であって、指定されたＣＰＵ容量を有する仮想マシンを構成する要求を受信することと、指定されたＣＰＵ容量に加えて付加的なＣＰＵ容量を有するように仮想マシンをプロビジョニングすることと、指定されたＣＰＵ容量に加えて付加的なＣＰＵ容量を有する仮想マシンをアクティブ化することと、仮想マシンのアクティブ化の完了に応答して、プロセッサにより、仮想マシンのＣＰＵ構成を指定されたＣＰＵ容量に復旧させるコマンドをハイパーバイザに発行することと、を含む方法が提供される。
【００１９】
第２の態様によると、仮想マシンの配備時間を最適化するための、コンピュータ可読ストレージ媒体内に具体化されたコンピュータ・プログラム製品であって、指定されたＣＰＵ容量を有する仮想マシンを構成する要求を受信し、指定されたＣＰＵ容量に加えて付加的なＣＰＵ容量を有するように仮想マシンをプロビジョニングし、指定されたＣＰＵ容量に加えて付加的なＣＰＵ容量を有する仮想マシンをアクティブ化し、仮想マシンのアクティブ化の完了に応答して、仮想マシンのＣＰＵ構成を指定されたＣＰＵ容量に復旧させるコマンドをハイパーバイザに発行するためのプログラミング命令を含む、コンピュータ・プログラム製品が提供される。
【００２０】
第３の態様によると、仮想マシンの配備時間を最適化するためのコンピュータ・プログラムを格納するためのメモリ・ユニットと、メモリ・ユニットに結合されたプロセッサとを含み、プロセッサは、コンピュータ・プログラムに応答して、指定されたＣＰＵ容量を有する仮想マシンを構成する要求を受信するための回路と、指定されたＣＰＵ容量に加えて付加的なＣＰＵ容量を有するように仮想マシンをプロビジョニングするための回路と、指定されたＣＰＵ容量に加えて付加的なＣＰＵ容量を有する仮想マシンをアクティブ化するための回路と、仮想マシンのアクティブ化の完了に応答して、仮想マシンのＣＰＵ構成を指定されたＣＰＵ容量に復旧させるコマンドをハイパーバイザに発行するための回路とを含む、システムが提供される。
【００２１】
第４の態様によると、プログラムがコンピュータ上で実行されるときに、第１の態様による方法を実施するように適合されたプログラム・コード手段を含むコンピュータ・プログラムが提供される。
【００２２】
好ましい実施形態によると、仮想マシンの初期配備時間の間、より多くの処理リソースを一時的に割り当てることにより、仮想マシンの配備時間を最適化する解決策が開示される。
【００２３】
上記は、以下の本発明の詳細な説明をよりよく理解できるように、本発明の１つ又は複数の実施形態の特徴及び技術的利点を幾分一般的に要約している。本発明の特許請求の範囲の主題を形成することができる本発明の付加的な特徴及び利点は、以下に記載される。
【００２４】
ここで、一例として、添付図面を参照して、本発明の好ましい実施形態を説明する。
【図面の簡単な説明】
【００２５】
【図１】本発明の１つの実施形態に従って構成されたネットワーク・システムを示す。
【図２】本発明の１つの実施形態によるクラウド・コンピューティング環境を示す。
【図３】本発明の１つの実施形態による仮想化されたコンピュータ環境内の例示的なクラウド・コンピューティング・ノードの概略図を示す。
【図４】本発明の１つの実施形態に従って構成されたクラウド・コントローラのハードウェア構成を示す。
【図５】本発明の１つの実施形態による仮想マシンの配備時間を最適化するためのフローチャートである。
【発明を実施するための形態】
【００２６】
本発明は、仮想マシンの配備時間を最適化するための方法、システム、コンピュータ・プログラム、及びコンピュータ・プログラム製品を含む。本発明の一実施形態において、クラウド・コントローラは、指定されたＣＰＵ容量を有する仮想マシンを構成する要求をユーザから受信する。指定されたＣＰＵ容量が閾値を下回る又はこれに等しい（すなわち閾値以下）場合、次に、クラウド・コントローラは、仮想マシンの配備のために割り当てられる、利用可能な付加的なクラウド・リソースが存在するかどうかを判断する。存在する場合には、次に、クラウド・コントローラは、仮想マシンのプロビジョニングに使用されるように、付加的なＣＰＵ容量を指定されたＣＰＵ容量に割り当て、それにより、オペレーティング・システム及びミドルウェア層を初期化するためのマルチスレッド・スタートアップが可能になり、仮想マシンの配備時間が低減する。付加的なリソースは、仮想マシンの初期配備時間の間しか利用可能でなく、システムがオンラインになってユーザにシステムへのアクセスが許可される前に除去される。
【００２７】
以下の説明において、本発明の完全な理解を与えるために、多数の具体的な詳細が述べられる。しかしながら、本発明は、そうした具体的な詳細がなくても実施できることが、当業者には明らかであろう。他の例では、本発明を不必要な詳細で分かりにくくしないように、周知の回路は、ブロック図の形で示されている。大部分において、タイミング考察などに関する詳細は、そうした詳細が本発明の完全な理解を得るために必要でなく、当業者の技術範囲内にある限り、省略されている。
【００２８】
本開示はクラウド・コンピューティングに関する詳細な説明を含むが、本明細書に述べられる教示の実施は、クラウド・コンピューティング環境に限定されるものではないことを、予め理解されたい。もっと正確に言えば、本発明の実施形態は、現在知られている又は後に開発されるいずれのタイプのクラスタ化コンピューティング環境とも併せて実施することが可能である。
【００２９】
本明細書は、非特許文献５において与えられる定義を使用する。要約すると：
クラウド・コンピューティングは、５つの本質的な特徴、３つのサービス・モデル、及び４つの配備モデルを含む。
特徴は、以下の通りである。：
オンデマンド・セルフ・サービス（On-Demand Self-Service）、幅広いネットワーク・アクセス（BroadNetwork Access）、リソース・プール（Resource Pooling）、迅速な伸縮性（Rapid Elasticity）及び計測されるサービス（MeasuredService）。
サービス・モデルは、以下の通りである。：
Ｓｏｆｔｗａｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ（ＳａａＳ）、Ｐｌａｔｆｏｒｍ  ａｓ  ａ  Ｓｅｒｖｉｃｅ（ＰａａＳ）、及びＩｎｆｒａｓｔｒｕｃｔｕｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ（ＩａａＳ）。
配備モデルは、以下の通りである。：
プライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、及びハイブリッド・クラウド。
付加的な詳細については、非特許文献５を参照されたい。
【００３０】
ここで添付図面を詳細に参照すると、図１は、本発明の１つの実施形態に従って構成されたネットワーク・システム１００を示す。ネットワーク・システム１００は、ネットワーク１０３を介してクラウド・コンピューティング環境１０２に接続されたクライアント・デバイス１０１を含む。クライアント・デバイス１０１は、ネットワーク１０３を介してクラウド・コンピューティング環境１０２に接続する能力を有するように構成された任意のタイプのコンピューティング・デバイス（例えば、ポータブル・コンピューティング・ユニット、携帯情報端末（ＰＤＡ）、スマートフォン、ラップトップ・コンピュータ、携帯電話、ナビゲーション装置、ゲーム機、デスクトップ・コンピュータ・システム、ワークステーション、インターネット家電等）とすることができる。
【００３１】
ネットワーク１０３は、例えば、ローカル・エリア・ネットワーク、広域ネットワーク、無線広域ネットワーク、回線交換電話ネットワーク、Ｇｌｏｂａｌ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｍｏｂｉｌｅ  Ｃｏｍｍｕｎｉｃａｔｉｏｎｓ（ＧＳＭ）ネットワーク、Ｗｉｒｅｌｅｓｓ  Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｔｏｃｏｌ（ＷＡＰ）ネットワーク、ＷｉＦｉネットワーク、ＩＥＥＥ８０２．１１規格ネットワーク、それらの種々の組み合わせ等とすることができる。他のネットワークについても、簡潔にするために本明細書では説明を省略するが、本発明の範囲から逸脱することなく、図１のシステム１００と併せて使用することができる。
【００３２】
クラウド・コンピューティング環境１０２は、ｃｏｍｐｕｔｉｎｇ  ａｓ  ａ  ｓｅｒｖｉｃｅを、上述のモデルを実装するクライアント・デバイス１０１に提供するために用いられる。クラウド・コンピューティング環境１０２の実施形態が、図２と関連して以下に論じられる。
【００３３】
図２は、本発明の１つの実施形態によるクラウド・コンピューティング環境１０２を示す。示されるように、クラウド・コンピューティング環境１０２は、例えば、携帯情報端末（ＰＤＡ）又は携帯電話２０２、デスクトップ・コンピュータ２０３、ラップトップ・コンピュータ２０４、及び／又は自動車コンピュータ・システム２０５などの、クラウド・コンシューマにより使用されるローカル・コンピューティング・デバイスが通信できる１つ又は複数のクラウド・コンピューティング・ノード２０１（「クラスタ」とも呼ばれる）を含む。ノード２０１は、互いに通信することができる。これらのノードは、上述したようなプライベート・クラウド、コミュニティ・クラウド、パブリック・クラウド、又はハイブリッド・クラウド、又はそれらの組み合わせのような１つ又は複数のネットワークに物理的又は仮想的にグループ化することができる（図示せず）。これにより、クラウド・コンピューティング環境１０２は、クラウド・コンシューマがローカル・コンピューティング・デバイス上にリソースを保持する必要のない、ｉｎｆｒａｓｔｒｕｃｔｕｒｅ  ａｓ  ｓｅｒｖｉｃｅ、ｐｌａｔｆｏｒｍ  ａｓ  ｓｅｒｖｉｃｅ及び／又はｓｏｆｔｗａｒｅ  ａｓ  ｓｅｒｖｉｃｅを提供することが可能になる。例示的なクラウド・コンピューティング・ノード２０１の概略の説明が、図３と関連して以下に与えられる。図１のクライアント・デバイス１０１を表すことができる、図２に示されるコンピューティング・デバイス２０２、２０３、２０４、２０５のタイプは例証であることが意図されていること、並びに、クラウド・コンピューティング・ノード２０１及びクラウド・コンピューティング環境１０２は、任意のタイプのネットワーク及び／又はネットワーク・アドレス指定可能接続によって（例えば、ウェブ・ブラウザを用いて）任意のタイプのコンピュータ化されたデバイスと通信できることを理解されたい。ノード２０１の１つにあるプログラム・コードは、ノード２０１の１つにおけるコンピュータ記録可能ストレージ媒体上に格納し、これらのコンピューティング・デバイスで使用できるように、ネットワークを通じてコンピューティング・デバイス２０２、２０３、２０４、２０５にダウンロードすることができる。例えば、コンピューティング・ノード２０１におけるサーバ・コンピュータは、プログラム・コードを、サーバ・コンピュータ上のコンピュータ可読ストレージ媒体上に格納することができる。サーバ・コンピュータは、コンピューティング・デバイス上で使用できるように、プログラム・コードを、コンピューティング・デバイス２０２、２０３、２０４、２０５にダウンロードすることができる。
【００３４】
ここで図３を参照すると、図３は、本発明の１つの実施形態による仮想化されたコンピュータ環境におけるクラウド・コンピューティング・ノード２０１Ａ−２０１Ｎを示す。クラウド・コンピューティング・ノード２０１Ａ−２０１Ｎは、まとめてクラウド・コンピューティング・ノード（複数）２０１と呼ぶことができ、又は個々にコンピューティング・ノード（単数）２０１と呼ぶこともできる。クラウド・コンピューティング・ノード２０１Ａ−２０１Ｎはそれぞれ、クラウド・コンピューティング・ノード２０１上のハイパーバイザと通信するデータセンタ・レベルの機能を提供して、仮想マシンをインストールし、仮想マシンを終了／一時停止し、仮想マシンを１つのコンピューティング・ノード２０１からデータ・センタ内の別のものに再配置し、並びに、図５と関連してさらに後述されるように、ユーザ要求を上回る処理リソースを一時的に割り当ててオペレーティング・システム及びミドルウェア層を初期化するためのマルチスレッド・スタートアップを可能にし、仮想マシンの配備時間を最適化するように構成されたクラウド・コントローラ３０１に結合される。
【００３５】
ここでクラウド・コンピューティング・ノード２０１Ａを参照すると、クラウド・コンピューティング・ノード２０１Ａは、仮想オペレーティング・システム３０２Ａを含む。オペレーティング・システム３０２Ａは、実又は物理コンピュータ３０３Ａ上で実行される。実コンピュータ３０３Ａは、１つ又は複数のプロセッサ３０４Ａ、メモリ３０５Ａ（本明細書ではホスト物理メモリとも呼ばれる）、１つ又は複数のディスク・ドライブ３０６Ａ等を含む。簡潔にするために、実コンピュータ３０３Ａの他のコンポーネントは、本明細書で論じられない。
【００３６】
仮想オペレーティング・システム３０２Ａは、本明細書では「ゲスト」と呼ばれる、ユーザ部分３０７Ａ−３０７Ｂ（図３では、それぞれ「ゲスト１」及び「ゲスト２」として識別される）を含む。各ゲスト３０７Ａ、３０７Ｂは、別個のシステムとして機能することができる。つまり、各ゲスト３０７Ａ−３０７Ｂは、独立にリセットし、それぞれゲスト・オペレーティング・システム３０８Ａ−３０８Ｂ（図３では、それぞれ「ゲスト１  Ｏ／Ｓ」及び「ゲスト２  Ｏ／Ｓ」として識別される）をホストし、異なるプログラムで動作することができる。ゲスト３０７Ａ、３０７Ｂにおいて実行されるオペレーティング・システム又はアプリケーション・プログラムは、十分かつ完全なシステムにアクセスできるように見えるが、実際には、その一部しか利用可能でない。
【００３７】
各ゲスト・オペレーティング・システム３０８Ａ、３０８Ｂは、Ｊａｖａ（商標）仮想マシンなどの１つ又は複数の仮想マシン・アプリケーション３０９Ａ−３０９Ｃ（図３では、それぞれ「ＶＭ１」、「ＶＭ２」及び「ＶＭ３」として識別される）をホストすることができる。（Ｊａｖａ及び全てのＪａｖａベースの商標及びロゴは、Ｏｒａｃｌｅ及び／又はその関連会社の商標又は登録商標である。）例えば、ゲスト・オペレーティング・システム３０８Ａは、仮想マシン・アプリケーション３０９Ａ−３０９Ｂをホストする。ゲスト・オペレーティング・システム３０８Ｂは、仮想マシン・アプリケーション３０９Ｃをホストする。
【００３８】
仮想オペレーティング・システム３０２Ａは、本明細書でハイパーバイザと呼ばれる、共通ベース部分３１０Ａをさらに含む。ハイパーバイザ３１０Ａは、プロセッサ３０４Ａ上で実行されているマイクロコードで実装することができ、又は、仮想オペレーティング・システム３０２Ａの一部としてソフトウェアで実装することができる。ハイパーバイザ３１０Ａは、ゲスト３０７Ａ、３０７Ｂを管理し、これらが単一のホスト上で実行されるのを可能にするように構成される。
【００３９】
上述のように、仮想オペレーティング・システム３０２Ａ及びそのコンポーネントは、物理又は実コンピュータ３０３Ａ上で実行される。プロセッサ３０４Ａによる実行のために、これらのソフトウェア・コンポーネントをメモリ３０５Ａ内にロードすることができる。
【００４０】
同じく上述のように、クラウド・コンピューティング環境１０２（図２）は、図３に示されるような複数のクラウド・コンピューティング・ノード２０１Ａ−２０１Ｎを含むことができる。一実施形態において、各クラウド・コンピューティング・ノード２０１Ａ−２０１Ｎは、上述したクラウド・コンピューティング・ノード２０１Ａと同様に構成される。例えば、クラウド・コンピューティング・ノード２０１Ｎは、クラウド・コンピューティング・ノード２０１Ａと同様に構成される。クラウド・コンピューティング・ノード２０１Ｎは、クラウド・コンピューティング・ノード２０１Ａと同じ要素を含む。例えば、ゲスト３０７Ｃ−３０７Ｄ（図３では、それぞれ「ゲスト３」及び「ゲスト４」として識別される）は、ゲスト３０７Ａ−３０７Ｂと機能的に同一である。同様に、ゲスト・オペレーティング・システム３０８Ｃ−３０８Ｄ（図３では、それぞれ「ゲスト３  Ｏ／Ｓ」及び「ゲスト４  Ｏ／Ｓ」として識別される）は、ゲスト・オペレーティング・システム３０８Ａ−３０８Ｂと機能的に同一である。仮想マシン３０９Ｄ−３０９Ｅ（図３では、それぞれ「ＶＭ４」及び「ＶＭ５」として識別される）は、仮想マシン３０９Ａ−３０９Ｃと機能的に同一である。さらに、ハイパーバイザ３１０Ｂは、ハイパーバイザ３１０Ａと機能的に同一である。従って、クラウド・コンピューティング・ノード２０１Ａの説明は、クラウド・コンピューティング・ノード２０１Ｎを含む各クラウド・コンピューティング・ノード２０１に適用される。一実施形態において、各クラウド・コンピューティング・ノード２０１を異なるように構成することができ、物理ハードウェア、ハイパーバイザ及び他のコンポーネントもまた異なり得る。
【００４１】
ゲスト３０７Ａ−３０７Ｄは、まとめてゲスト（複数）３０７と呼ぶことができ、又は個々にゲスト（単数）３０７と呼ぶこともできる。ゲスト・オペレーティング・システム３０８Ａ−３０８Ｄは、まとめてゲスト・オペレーティング・システム（複数）３０８と呼ぶことができ、又は個々にゲスト・オペレーティング・システム（単数）３０８と呼ぶこともできる。仮想マシン３０９Ａ−３０９Ｅは、まとめて仮想マシン（複数）３０９と呼ぶことができ、又は個々に仮想マシン（単数）３０９と呼ぶこともできる。ハイパーバイザ３１０Ａ−３１０Ｂは、まとめてハイパーバイザ（複数）３１０と呼ぶことができ、又は個々にハイパーバイザ（単数）３１０と呼ぶこともできる。
【００４２】
図３の範囲は、特定の数のクラウド・コンピューティング・ノード２０１に限定されるものではなく、各クラウド・コンピューティング・ノード２０１は、いずれの数のゲスト３０７、ゲスト・オペレーティング・システム３０８、仮想マシン３０９等も含むことができる。さらに、クラウド・コンピューティング・ノード２０１は、簡潔にするために本明細書では論じていない他のコンポーネントも含む。従って、クラウド・コンピューティング・ノード２０１の範囲は、図３に示される要素に限定されるものではない。
【００４３】
再び図３を参照すると、幾つかの実施形態において、クラウド・コントローラ３０１は、クラウド・コンピューティング・ノード２０１の全てのハードウェア・コンポーネントを管理し、システム利用を監視し、データのイメージをインテリジェントに配備し、クラウド・コンピューティング環境１０２の動作の最適化のために使用することができる、本明細書では管理ソフトウェア３１１と呼ばれるモジュールをサポートする。さらに、管理ソフトウェア３１１は、図５と関連して以下にさらに述べられるように、ユーザ要求を上回る処理リソースを一時的に割り当てて、オペレーティング・システム及びミドルウェア層を初期化するためのマルチスレッド・スタートアップを可能にし、仮想マシン３０９の配備時間を最適化するために用いることができる。クラウド・コントローラ３０１のハードウェア構成の説明は、図４と関連して以下にさらに与えられる。
【００４４】
ここで図４を参照すると、図４は、本発明を実施するためのハードウェア環境を表すクラウド・コントローラ３０１（図３）のハードウェア構成を示す。クラウド・コントローラ３０１は、システム・バス４０２によって種々の他のコンポーネントに結合されたプロセッサ４０１を有する。オペレーティング・システム４０３は、プロセッサ４０１上で実行され、図４の種々のコンポーネントの機能を制御及び調整する。本発明の１つの実施形態の原理によるアプリケーション４０４は、オペレーティング・システム４０３と共に実行され、オペレーティング・システム４０３への呼び出しを行い、ここで、呼び出しは、アプリケーション４０４により実施される種々の機能又はサービスを実施する。アプリケーション４０４は、例えば、図５と関連して以下にさらに述べられるように、ユーザ要求を上回る処理リソースを一時的に割り当てて、オペレーティング・システム及びミドルウェア層を初期化するためのマルチスレッド・スタートアップを可能にし、仮想マシン３０９の配備時間を最適化するための、図３の管理ソフトウェア３１１のようなプログラムを含むことができる。
【００４５】
再び図４を参照すると、読み出し専用メモリ（「ＲＯＭ」）４０５が、システム・バス４０２に結合され、クラウド・コントローラ３０１の特定の基本機能を制御する、基本入力／出力システム（「ＢＩＯＳ」）を含む。ランダム・アクセス・メモリ（「ＲＡＭ」）４０６及びディスク・アダプタ２０７もシステム・バス４０２に結合される。オペレーティング・システム４０３及びアプリケーション４０４を含むソフトウェア・コンポーネントは、実行のためのクラウド・コントローラ３０１の主メモリとすることができるＲＡＭ４０６にロードすることができることに留意されたい。ディスク・アダプタ２０７は、例えばディスク・ドライブなどのディスク・ユニット４０８と通信する、ｉｎｔｅｇｒａｔｅｄ  ｄｒｉｖｅ  ｅｌｅｃｔｒｏｎｉｃｓ（「ＩＤＥ」）アダプタとすることができる。図５に関連して以下にさらに述べられるように、ユーザ要求を上回る処理リソースを一時的に割り当てて、オペレーティング・システム及びミドルウェア層を初期化するためのマルチスレッド・スタートアップを可能にし、仮想マシン３０９の配備時間を最適化するためのプログラムは、ディスク・ユニット４０８内にあっても又はアプリケーション４０４内にあってもよいことに留意されたい。
【００４６】
クラウド・コントローラ３０１は、バス４０２に結合された通信アダプタ４０９をさらに含むことができる。通信アダプタ４０９は、バス４０２を外部ネットワーク（例えば、図１のネットワーク１０３）と相互接続する。
【００４７】
当業者により認識されるように、本発明の態様は、システム、方法、コンピュータ・プログラム、又はコンピュータ・プログラム製品として具体化することができる。従って、本発明の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロコード等を含む）、又はソフトウェアの態様とハードウェアの態様とを組み合わせた実施形態の形態をとることができ、本明細書においては、これらは全て、一般的に「回路」、「モジュール」又は「システム」と呼ぶことがある。さらに、本発明の態様は、具体化されたコンピュータ可読プログラム・コードを有する、１つ又は複数のコンピュータ可読媒体内に具体化されたコンピュータ・プログラム製品の形態をとることができる。
【００４８】
１つ又は複数のコンピュータ可読媒体のいずれの組み合わせを用いることもできる。コンピュータ可読媒体は、コンピュータ可読信号媒体又はコンピュータ可読ストレージ媒体とすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子、磁気、光学、電磁気、赤外線、又は半導体のシステム、装置、若しくはデバイス、又は上記のいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例（非網羅的なリスト）には、１つ又は複数の配線を有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能プログラム可能読み出し専用メモリ（ＥＰＲＯＭ又はフラッシュ・メモリ）、ポータブル・コンパクト・ディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、光記憶装置、磁気記憶装置、又は上記のもののいずれかの適切な組み合わせが挙げられる。本文書の文脈において、コンピュータ可読ストレージ媒体は、命令実行システム、装置若しくはデバイスによって又はこれらと関連して用いるためのプログラムを収容又は格納することができるいずれかの有形媒体とすることができる。
【００４９】
コンピュータ可読信号媒体は、コンピュータ可読プログラム・コードが、例えばベースバンド内に、又は搬送波の一部としてその中に具体化された、伝搬データ信号を含むことができる。このような伝搬信号は、これらに限定されるものではないが、電磁気、光学又はこれらのいずれかの適切な組み合わせを含む、種々の異なる形態のいずれかを取ることができる。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではなく、かつ、命令実行システム、装置若しくはデバイスによって又はこれらと関連して用いるためのプログラムを通信、伝搬、又は搬送することができる、いずれかのコンピュータ可読媒体とすることができる。
【００５０】
コンピュータ可読媒体上に具体化されたプログラム・コードは、これらに限定されるものではないが、無線、有線、光ファイバ・ケーブル、ＲＦ等、又は上記のもののいずれかの適切な組み合わせを含む、いずれかの適切な媒体を用いて伝送することができる。
【００５１】
本発明の態様のための動作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ、Ｓｍａｌｌｔａｌｋ、Ｃ＋＋等のようなオブジェクト指向型プログラミング言語、及び「Ｃ」プログラミング言語又は同様のプログラミング言語のような従来の手続き型プログラミング言語を含む、１つ又は複数のプログラミング言語のいずれかの組み合わせで記述することができる。プログラム・コードは、完全にユーザのコンピュータ上で実行されるか、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして実行されるか、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行されるか、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合がある。後者のシナリオにおいては、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）若しくは広域ネットワーク（ＷＡＮ）を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続されるか、又は、（例えば、インターネット・サービス・プロバイダを用いたインターネットを通じて）外部コンピュータへの接続がなされる場合がある。
【００５２】
本発明の態様は、方法、装置（システム）及びコンピュータ・プログラム製品のフローチャート図及び／又はブロック図を参照して以下に説明される。フローチャート図及び／又はブロック図の各ブロック、並びにフローチャート図及び／又はブロック図におけるブロックの組み合わせは、コンピュータ・プログラム命令によって実装できることが理解されるであろう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えてマシンを製造し、その結果、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実施するための手段を生成するようにすることができる。
【００５３】
これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他の装置を特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、その結果、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実装する命令を含むようにすることができる。
【００５４】
コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他の装置上にロードして、そのコンピュータ、他のプログラム可能データ処理装置、又は他の装置上で行われる一連の動作ステップによりコンピュータ実装プロセスを生成し、その結果、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロックにおいて指定された機能／動作を実装するためのプロセスをもたらすようにすることもできる。
【００５５】
背景セクションで述べられるように、現在のところ、最も一般的なゲスト構成の１つは、高密度のコンソリデーションを達成するための、シングルコア又はサブコアＣＰＵ割り当てである。シングルコア又はサブコアＣＰＵ割り当てしか利用可能でないので、所定の時間において単一スレッド（即ち、命令ストリーム）しか実行することができない。マルチスレッディングは、単一プロセスの文脈内に存在する複数のスレッド又は複数の命令ストリームがあることを意味する。これらのスレッドは、プロセスのリソースを共有するが、独立して実行することが可能である。その結果、マルチスレッド・スタートアップを用いてオペレーティング・システム及びミドルウェア層を初期化できる場合に、オペレーティング・システム及びミドルウェア層の初期化をより迅速に実行することでき、それにより、仮想ゲスト・インスタンス及び仮想マシンの配備時間が低減される。しかしながら、現在のところ、シングルコア又はサブコアＣＰＵ割り当てしか利用可能でないため、マルチスレッディングを達成することはできない。従って、マルチスレッド・スタートアップを用いてオペレーティング・システム及びミドルウェア層が初期化できる場合よりも、仮想ゲスト・インスタンス及び仮想マシンの配備時間は著しく長くなる。
【００５６】
本発明の原理は、図５と関連して以下でさらに述べられるように、ユーザ要求を上回る処理リソースを一時的に割り当てて、オペレーティング・システム及びミドルウェア層を初期化するためのマルチスレッド・スタートアップを可能にし、仮想マシン３０９（図３）の配備時間を最適化するための手段を提供する。
【００５７】
図５は、本発明の１つの実施形態に従って仮想マシンの配備時間を最適化するための方法５００のフローチャートである。
【００５８】
図１−図４と併せて図５を参照すると、クラウド・コントローラ３０１は、Ｒは正の実数であるものとして、Ｒ個のＣＰＵコアの指定されたＣＰＵ容量を有する仮想マシン３０９を構成する要求を、ユーザから受信する。
【００５９】
ステップ５０２において、コントローラ３０１は、指定されたＣＰＵ容量が閾値を下回る又はこれに等しいかについて判断する。例えば、Ｒが、シングルＣＰＵコアを示している１を下回る又は１に等しいかどうかについて判断を行うことができる。１を下回る又は１に等しい場合、仮想マシン３０９の最初の配備時間の間、付加的なリソースを用いて、オペレーティング・システム及びミドルウェア層を初期化するためのマルチスレッド・スタートアップを可能にし、仮想マシン３０９の配備時間を低減させることができるので、仮想マシン３０９は、最適化のための候補となる。
【００６０】
仮想マシン３０９についてのユーザの指定されたＣＰＵ容量が閾値以上であるか又はこれと等しくない場合、クラウド・コントローラ３０１は、ステップ５０１において、Ｒ個のＣＰＵコアの指定されたＣＰＵ容量を有する仮想マシン３０９を構成する別の要求を、ユーザから受信するのを待つ。
【００６１】
しかしながら、仮想マシン３０９についてのユーザの指定されたＣＰＵ容量が閾値を下回る又はこれに等しい場合、次いで、ステップ５０３において、クラウド・コントローラ３０１により、クラウド・コンピューティング環境１０２が仮想マシン３０９の配備のために割り当てる、Ｔは正の実数であるものとして、Ｔ個のＣＰＵコアとして称される利用可能な付加的なリソースを有するかどうかに関して判断がなされる。仮想マシン３０９の配備のために割り当てられる、クラウド・コンピューティング環境１０２に利用可能な付加的なリソースが存在しない場合、クラウド・コントローラ３０１は、ステップ５０１において、Ｒ個のＣＰＵコアの指定されたＣＰＵ容量を有する仮想マシン３０９を構成する別の要求をユーザから受信するのを待つ。
【００６２】
しかしながら、仮想マシン３０９を配備するために割り当てることができる、クラウド・コンピューティング環境１０２に利用可能な付加的なリソースが存在する場合、次いで、ステップ５０４において、クラウド・コントローラ３０１は、指定されたＣＰＵ容量に加えて付加的なＣＰＵ容量（Ｒ＋Ｔ個のＣＰＵコア）を有するように仮想マシン３０９をプロビジョニングする。ユーザ要求を上回るＣＰＵ容量を有する仮想マシン３０９をプロビジョニングすることにより、マルチスレッド・スタートアップを用いてオペレーティング・システム及びミドルウェア層を初期化することが可能になり、それにより、仮想マシン３０９の配備時間が低減される。
【００６３】
ステップ５０５において、クラウド・コントローラ３０１は仮想マシン３０９をアクティブ化し、そのことは、オペレーティング・システム、ネットワーク、及びミドルウェア層をアクティブ化又は初期化する段階を含む。
【００６４】
ステップ５０６において、クラウド・コントローラ３０１により、アクティブ化が完了したかどうかについて判断がなされる。アクティブ化が完了していない場合、クラウド・コントローラ３０１は、アクティブ化が完了したかどうかについての判断を続ける。
【００６５】
しかしながら、アクティブ化が完了している場合、次いで、ステップ５０７において、クラウド・コントローラ３０１は、ＣＰＵ構成をユーザ指定のＣＰＵ容量（Ｒ個のＣＰＵコア）に復旧させるコマンドを、仮想マシン３０９のハイパーバイザ３１０に発行する。このように、付加的なリソースは、仮想マシン３０９の初期配備時間の間しか利用可能でなく、システムがオンラインになってユーザにシステムへのアクセスが許可される前に除去される。
【００６６】
ステップ５０８において、クラウド・コントローラ３０１は、ユーザ指定のＣＰＵ容量（Ｒ個のＣＰＵコア）を有する仮想マシン３０９へのユーザ・アクセスを許可する。
【００６７】
幾つかの実装において、方法５００は、明瞭にするために示されていない他のステップ及び／又は付加的なステップを含むことができる。さらに、幾つかの実装において、方法５００は、提示されたものとは異なる順序で実行することができ、図５の記述で提示される順序は例証である。さらに、幾つかの実装において、方法５００の特定のステップは、実質的に同時的に実行してもよく、又は省略してもよい。
【００６８】
本発明の種々の実施形態の説明は、例証を目的として提示されたものであり、網羅的であること又は開示された実施形態に限定することを意図するものではない。記述される実施形態の範囲及び趣旨から逸脱することなく、多数の修正及び変形が当業者には明らかとなるであろう。本明細書で使用される用語は、実施形態の原理、実際的用途、又は市場で見出される技術に優る技術上の改良を最も良く説明するために、又は、当業者が、本明細書に開示される実施形態を理解できるように、選択された。
【符号の説明】
【００６９】
１００：ネットワーク・システム
１０１：クライアント・デバイス
１０２：クラウド・コンピューティング環境
１０３：ネットワーク
２０１、２０１Ａ−２０１Ｎ：クラウド・コンピューティング・ノード
３０１：クラウド・コントローラ
３０２Ａ：仮想オペレーティング・システム
３０３Ａ：実コンピュータ
３０４Ａ：プロセッサ
３０５Ａ：メモリ
３０６Ａ：ディスク・ドライブ
３０７、３０７Ａ、３０７Ｂ、３０７Ｃ、３０７Ｄ：ユーザ部分（ゲスト）
３０８Ａ、３０８Ｂ、３０８Ｃ、３０８Ｄ：ゲスト・オペレーティング・システム
３０９、３０９Ａ、３０９Ｂ、３０９Ｃ、３０９Ｄ、３０９Ｅ：仮想マシン・アプリケーション
３１０、３１０Ａ、３１０Ｂ：共通ベース部分（ハイパーバイザ）
３１１：管理ソフトウェア
４０１：プロセッサ
４０２：システム・バス
４０３：オペレーティング・システム
４０４：アプリケーション
【図１】
0006312679.tif 000002
【図２】
0006312679.tif 000003
【図３】
0006312679.tif 000004
【図４】
0006312679.tif 000005
【図５】
0006312679.tif 000006