(57)【要約】ホストコンピュータは、複数の仮想マシンの実行をサポートする仮想化ソフトウェアを有し、仮想化ソフトウェアは仮想マシンのそれぞれに仮想マシンモニタを含み、各仮想マシンモニタは対応する仮想マシンの仮想中央演算処理装置（ＣＰＵ）をエミュレートする。仮想マシンモニタは、対応する仮想マシンから第１の中止命令を受信し、仮想マシンが待ち時間の影響を受けやすいか否かを判断することにより、仮想マシンの仮想ＣＰＵの実行を中止する。仮想マシンが待ち時間の影響を受けやすい場合、仮想ＣＰＵが実行される物理的ＣＰＵを中止する第２の中止命令が、仮想マシンモニタから発行される。仮想マシンが待ち時間の影響を受けやすくない場合、仮想ＣＰＵがアイドル状態であることを示すシステムコールが、ホストコンピュータで実行中のカーネルに対して実行される。
2016529614.tif 000002
【特許請求の範囲】
【請求項１】
複数の仮想マシンの実行をサポートする仮想化ソフトウェアを有するホストコンピュータであって、前記仮想化ソフトウェアは、前記複数の仮想マシンのそれぞれの仮想マシンモニタを含み、各仮想マシンモニタは、対応する仮想マシンの仮想中央演算処理装置（ＣＰＵ）をエミュレートする、前記ホストコンピュータにおいて、仮想マシンの仮想中央演算処理装置の実行を中止する方法であって、
対応する仮想マシンから仮想マシンモニタにおいて第１の中止命令を受信するステップと、
前記仮想マシンが待ち時間の影響を受けやすいか否かを前記仮想マシンモニタによって判断するステップと、
前記仮想マシンが待ち時間の影響を受けやすい場合、前記仮想マシンモニタから、前記仮想中央演算処理装置が実行される物理的中央演算処理装置を中止する第２の中止命令を発行するステップと、
前記仮想マシンが待ち時間の影響を受けやすくない場合、前記仮想中央演算処理装置がアイドル状態であることを示すシステムコールを前記ホストコンピュータで実行中のカーネルに対して実行するステップとを備える、方法。
【請求項２】
前記第１の中止命令は、前記仮想マシンで実行中のゲストオペレーティングシステムによって発行される、請求項１に記載の方法。
【請求項３】
前記仮想マシンが待ち時間の影響を受けやすい場合、前記仮想中央演算処理装置は、前記物理的中央演算処理装置において排他的モードで実行される、請求項１に記載の方法。
【請求項４】
前記仮想マシンが待ち時間の影響を受けやすいか否かを判断するステップは、
前記仮想マシンの待ち時間感度インジケータを読み出すステップと、
前記仮想マシンの中央演算処理装置エンタイトルメント値を読み出すステップと、
前記待ち時間感度インジケータが所定の値を有するか否かを判断するステップと、
前記中央演算処理装置エンタイトルメント値が最大値であるか否かを判断するステップとを含む、請求項１に記載の方法。
【請求項５】
前記システムコールは、カーネル中央演算処理装置スケジューラに対して行われる、請求項１に記載の方法。
【請求項６】
前記カーネル中央演算処理装置スケジューラは、前記システムコールに応答して、前記仮想中央演算処理装置をスケジュール解除する、請求項５に記載の方法。
【請求項７】
前記システムコールに応答して、前記カーネル中央演算処理装置スケジューラは、前記物理的中央演算処理装置を前記仮想中央演算処理装置から割り振り解除し、前記物理的中央演算処理装置を他のタスクに割り振る、請求項６に記載の方法。
【請求項８】
ホストコンピュータによって実行可能な命令を含む非一時的なコンピュータ可読媒体であって、前記ホストコンピュータは、複数の仮想マシンの実行をサポートする仮想化ソフトウェアを有し、前記仮想化ソフトウェアは、前記複数の仮想マシンの各々の仮想マシンモニタを含み、各仮想マシンモニタは、対応する仮想マシンの仮想中央演算処理装置（ＣＰＵ）をエミュレートし、前記命令は、実行されると、前記ホストコンピュータに仮想マシの仮想中央演算処理装置の実行を中止する方法を実行させ、前記方法は、
対応する仮想マシンから仮想マシンモニタにおいて第１の中止命令を受信するステップと、
前記仮想マシンが待ち時間の影響を受けやすいか否かを前記仮想マシンモニタによって判断するステップと、
前記仮想マシンが待ち時間の影響を受けやすい場合、前記仮想マシンモニタから、前記仮想中央演算処理装置が実行される物理的中央演算処理装置を中止する第２の中止命令を発行するステップと、
前記仮想マシンが待ち時間の影響を受けやすくない場合、前記仮想中央演算処理装置がアイドル状態であることを示すシステムコールを前記ホストコンピュータで実行中のカーネルに対して実行するステップとを備える、コンピュータ可読媒体。
【請求項９】
前記第１の中止命令は、前記仮想マシンで実行中のゲストオペレーティングシステムによって発行される、請求項８に記載のコンピュータ可読媒体。
【請求項１０】
前記仮想マシンが待ち時間の影響を受けやすい場合、前記仮想中央演算処理装置は、前記物理的中央演算処理装置において排他的モードで実行される、請求項８に記載のコンピュータ可読媒体。
【請求項１１】
前記仮想マシンが待ち時間の影響を受けやすいか否かを判断するステップは、
前記仮想マシンの待ち時間感度インジケータを読み出すステップと、
前記仮想マシンの中央演算処理装置エンタイトルメント値を読み出すステップと、
前記待ち時間感度インジケータが所定の値を有するか否かを判断するステップと、
前記中央演算処理装置エンタイトルメント値が最大値であるか否かを判断するステップとを含む、請求項８に記載のコンピュータ可読媒体。
【請求項１２】
前記システムコールは、カーネル中央演算処理装置スケジューラに対して行われる、請求項８に記載のコンピュータ可読媒体。
【請求項１３】
前記カーネル中央演算処理装置スケジューラは、前記システムコールに応答して、前記仮想中央演算処理装置をスケジュール解除する、請求項１２に記載のコンピュータ可読媒体。
【請求項１４】
前記システムコールに応答して、前記カーネル中央演算処理装置スケジューラは、前記物理的中央演算処理装置を前記仮想中央演算処理装置から割り振り解除し、前記物理的中央演算処理装置を他のタスクに割り振る、請求項１３に記載のコンピュータ可読媒体。
【請求項１５】
仮想化計算システムであって、
複数の仮想マシンの実行をサポートする仮想化ソフトウェアを有するホストコンピュータと、
カーネルスケジューラと、
前記複数の仮想マシンのそれぞれの仮想マシンモニタであって、各仮想マシンモニタは、対応する仮想マシンの仮想中央演算処理装置（ＣＰＵ）をエミュレートし、各仮想マシンモニタは、仮想マシンの仮想中央演算処理装置の実行を中止する方法を実行するように構成される、前記仮想マシンモニタと
を備え、前記方法は、
対応する仮想マシンから仮想マシンモニタにおいて第１の中止命令を受信するステップと、
前記仮想マシンが待ち時間の影響を受けやすいか否かを前記仮想マシンモニタによって判断するステップと、
前記仮想マシンが待ち時間の影響を受けやすい場合、前記仮想マシンモニタから、前記仮想中央演算処理装置が実行される物理的中央演算処理装置を中止する第２の中止命令を発行するステップと、
前記仮想マシンが待ち時間の影響を受けやすくない場合、前記仮想中央演算処理装置がアイドル状態であることを示すシステムコールを前記ホストコンピュータで実行中のカーネルに対して実行するステップとを備える、システム。
【請求項１６】
前記第１の中止命令は、前記仮想マシンで実行中のゲストオペレーティングシステムによって発行される、請求項１５に記載のシステム。
【請求項１７】
前記仮想マシンが待ち時間の影響を受けやすい場合、前記仮想中央演算処理装置は、前記物理的中央演算処理装置において排他的モードで実行される、請求項１５に記載のシステム。
【請求項１８】
前記仮想マシンが待ち時間の影響を受けやすいか否かを判断するステップは、
前記仮想マシンの待ち時間感度インジケータを読み出すステップと、
前記仮想マシンの中央演算処理装置エンタイトルメント値を読み出すステップと、
前記待ち時間感度インジケータが所定の値を有するか否かを判断するステップと、
前記中央演算処理装置エンタイトルメント値が最大値であるか否かを判断するステップとを含む、請求項１５に記載のシステム。
【請求項１９】
前記システムコールは、カーネル中央演算処理装置スケジューラに対して行われる、請求項１５に記載のシステム。
【請求項２０】
前記カーネル中央演算処理装置スケジューラは、前記システムコールに応答して、前記仮想中央演算処理装置をスケジュール解除し、前記物理的中央演算処理装置を前記仮想中央演算処理装置から割り振り解除し、前記物理的中央演算処理装置を他のタスクに割り振る、請求項１９に記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
「待ち時間の影響を受けやすい（latency sensitive : 待ち時間感度）」ものとして特徴付けられたアプリケーションは通常、アプリケーションが実行される計算環境によってもたらされる実行遅延及びジッタ（すなわち、予測不能性）の影響を非常に受けやすい。待ち時間の影響を受けやすいアプリケーションの例としては金融取引システムが挙げられ、金融取引システムは通常、証券価格設定又は取引の実行及び決済等の機能を実行する際、瞬時応答時間を必要とする。
【０００２】
実行遅延の一原因は、システムカーネル、特に、システムカーネルにおいて実行されるカーネルスケジューラである。システム及びユーザタスクのスケジューリング及びスケジューリング解除は、幾つかの方法で待ち時間の一因となる。第１に、実行に向けてスケジュールされたタスクは、特定の中央演算処理装置（ＣＰＵ）のキュー内でかなりの時間量を費やしてから、そのＣＰＵでの実行に向けてディスパッチされ得る。さらに、タスクは、実行されると、より高い優先度のタスクによってプリエンプトされ得る。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
（仮想マシン用に物理的ＣＰＵをエミュレートする）仮想ＣＰＵが、仮想マシンのゲストオペレーティングシステムによって中止される場合、仮想ＣＰＵの実行は、物理的ＣＰＵで中止される。これは通常、カーネルスケジューラが、幾つかの物理的プロセッサでの仮想ＣＰＵの実行をプリエンプトし、後で実行するために仮想ＣＰＵに対応するタスクをキューに入れることによって達成される。仮想ＣＰＵが再び実行可能な状態になると、仮想ＣＰＵタスクは通常、同じ又は他のＣＰＵの実行キューに配置されて、そのＣＰＵで続けて実行される。カーネルスケジューラが、仮想ＣＰＵをプリエンプトすること及び仮想ＣＰＵが実行可能な状態になったときに仮想ＣＰＵを再びキューに入れることの両方による介入が、待ち時間の原因であり、プリエンプトされた仮想ＣＰＵで実行中の待ち時間の影響を受けやすいアプリケーションに問題を生じさせるおそれがある。
【課題を解決するための手段】
【０００４】
ホストコンピュータでの仮想マシンの仮想ＣＰＵの実行を中止する方法が提供され、ホストコンピュータは、複数の仮想マシンの実行をサポートする仮想化ソフトウェアを有し、仮想化ソフトウェアは仮想マシンのそれぞれに仮想マシンモニタを含み、各仮想マシンモニタは、対応する仮想マシンの仮想中央演算処理装置（ＣＰＵ）をエミュレートする。本方法は、対応する仮想マシンから仮想マシンモニタにおいて第１の中止命令を受信するステップと、仮想マシンが待ち時間の影響を受けやすいか否かを仮想マシンモニタによって判断するステップとを含む。本方法は、仮想マシンが待ち時間の影響を受けやすい場合、仮想マシンモニタから、仮想ＣＰＵが実行される物理的ＣＰＵを中止する第２の中止命令を発行するステップを更に含む。本方法は、仮想マシンが待ち時間の影響を受けやすくない場合、仮想ＣＰＵがアイドル状態であることを示すシステムコールをホストコンピュータで実行中のカーネルに対して実行するステップを更に含む。
【０００５】
更なる実施形態は、実行されると、ホストコンピュータに上記方法の１つ又は複数の態様を実施させる命令を含む非一時的コンピュータ可読媒体並びにホストコンピュータと、カーネルスケジューラと、上記方法の１つ又は複数の態様を実施するように構成された仮想マシンモニタとを含む仮想化計算システムを提供する。
【図面の簡単な説明】
【０００６】
【図１】１つ又は複数の実施形態が実施され得る仮想化計算環境を示す図である。
【図２】実施形態による、待ち時間感度情報を記憶するテーブルを示すブロック図である。
【図３】１つ又は複数の実施形態による、待ち時間の影響を非常に受けやすい仮想マシンによって発行された中止命令の処理を示す図である。
【図４】１つ又は複数の実施形態による、待ち時間の影響を非常に受けやすい仮想ＣＰＵを中止する方法を示す流れ図である。
【発明を実施するための形態】
【０００７】
図１は、１つ又は複数の実施形態を実施し得る仮想化コンピューティング環境を示す。示されるように、コンピューティング環境は、ホストコンピュータ１００と、仮想マシン（ＶＭ）管理サーバ１５０とを含む。ＶＭ管理サーバ１５０は、ローカル接続を介して、又は代替的にはリモートネットワーク接続を介してホストコンピュータ１００と通信する。
【０００８】
ホストコンピュータ１００は、実施形態では、オペレーティングシステム及び１つ又は複数のアプリケーションプログラムの実行をサポートする汎用コンピュータである。仮想化計算プラットフォームを含む様々な構成要素を実行するために、ホストコンピュータ１００は通常、サーバクラスのコンピュータである。しかし、ホストコンピュータ１００は、デスクトップ又はラップトップコンピュータであってもよい。
【０００９】
図１に示されるように、ホストコンピュータ１００は、３つの構成要素に論理的に分割される。第１に、実行空間１２０は、ユーザレベル（すなわち、非カーネルレベル）プログラムの実行をサポートする。ユーザレベルプログラムは非特権であり、特権命令の実行又はシステムメモリの特定の保護領域へのアクセス等の特定の特権機能を実行することができないことを意味する。実行空間１２０がサポートするプログラムは、特に、仮想マシンである。
【００１０】
仮想マシンは、物理的計算デバイスのソフトウェア実施であり、物理的コンピュータと略同じようにプログラムを実行する。実施形態では、仮想マシンは、ソフトウェアにおいて、ゲストオペレーティングシステム（ＯＳ）の制御下でソフトウェアアプリケーションの実行をサポートする計算プラットフォームを実施する。したがって、仮想マシンは通常、特定の計算アーキテクチャをエミュレートする（emulate）。図１では、実行空間１２０はＶＭ１１０１〜１１０Ｎを含む。示される各ＶＭ１１０は１つ又は複数のアプリケーション１１１の実行をサポートし、各アプリケーション１１１は特定のゲストＯＳ１１２の制御下で実行される。アプリケーション１１１は、例えば、ワードプロセッサ又はスプレッドシートプログラム（spreadsheet programs）等のユーザレベル（非カーネル）プログラムである。示される各ゲストＯＳ１１２は、マイクロソフト社（Ｍｉｃｒｏｓｏｆｔ  Ｃｏｒｐ．）からの任意のバージョンのウィンドウズ（Ｗｉｎｄｏｗｓ)（登録商標）オペレーティングシステム、リナックス（Ｌｉｎｕｘ）（登録商標）オペレーティングシステム、又はアップル社（Ａｐｐｌｅ，  Ｉｎｃ．）からのＭａｃ  ＯＳ（登録商標）Ｘ等のよく知られた市販のオペレーティングシステムの１つであり得る。アプリケーション及びゲストＯＳがＶＭ毎に異なり得ることに留意されたい。したがって、ＶＭ１１０１内のアプリケーション１１１１は、ゲストＯＳ１１２１としてウィンドウズ（Ｗｉｎｄｏｗｓ）（登録商標）７の制御下で実行されるマイクロソフト（Ｍｉｃｒｏｓｏｆｔ）のワード（Ｗｏｒｄ）（登録商標）及びエクセル（Ｅｘｃｅｌ）（登録商標）アプリケーションを含み得る。これとは対照的に、ＶＭ１１０Ｎ内のアプリケーション１１１Ｎは、ゲストＯＳ１１２ＸとしてＭａｃＯＳ（登録商標）Ｘの制御下で実行されるサファリ（Ｓａｆａｒｉ）（登録商標）ウェブブラウザを含み得る。
【００１１】
図１に示されるように、各ＶＭ１１０１〜１１０Ｎ及びユーザプログラム１１５は、本明細書ではハイパーバイザ１３０と呼ばれるハイパーバイザ構成要素と通信する。
ハイパーバイザ１３０は、図１に示されるように、コンピュータホスト１００でプロセスを実行するためのオペレーティングシステムプラットフォームを提供する。ハイパーバイザ１３０は、コンピュータホスト１００内の全てのハードウェアデバイスを制御し、そこで実行される全てのアプリケーションのシステムリソースを管理する。ハイパーバイザ１３０が提供するコア機能は、特に、コンソールサービス、ファイルシステムサービス、デバイスドライバ、及びリソーススケジューリングである。さらに、ハイパーバイザ１３０は、ホストコンピュータでの１つ又は複数の仮想マシンのインスタンス化を提供するソフトウェア構成要素を実施する。
【００１２】
図１の実施形態に示されるように、ハイパーバイザ１３０は仮想マシンモニタ（ＶＭＭ）１３１１〜１３１Ｎを含む。各ＶＭＭ１３１は実行中のＶＭ１１０に対応する。したがって、ＶＭＭ１３１１はＶＭ１１０１に対応し、ＶＭＭ１３１２はＶＭ１１０２に対応し、以下同様である。各ＶＭＭ１３１は、対応する仮想マシンのゲストＯＳに仮想ハードウェアプラットフォームを提供するソフトウェアレイヤである。対応するＶＭが、ハイパーバイザ１３０のカーネル構成要素（図１ではカーネル１３６として示される）によって提供されるサービスにアクセスするのは、特定のＶＭＭ１３１を通してである。カーネル１３６によって実行される機能は、特に、メモリ管理、ネットワーキング及び記憶スタックの提供、及びプロセススケジューリングである。
【００１３】
図１での各ＶＭＭ１３１は、対応するＶＭ１１０の仮想ハードウェアプラットフォームを実施する。実施される仮想ハードウェアプラットフォームの構成要素は、特に、１つ又は複数の仮想中央演算処理装置（又はＶＣＰＵ）１２５である。図１では、ＶＭＭ１３１１はＶＣＰＵ１２５１を実施し、ＶＭＭ１３１２はＶＣＰＵ１２５２を実施し、以下同様である。各ＶＣＰＵ１２５は、対応するＶＭ１１０で実行されるアプリケーション１１１及びゲストＯＳ１１２の観点から、物理的ＣＰＵとして見える。このようにして、仮想マシン内で実行される仮想化ゲストオペレーティングシステムは、コンピュータホストで直接実行されるオペレーティングシステムが（すなわち、非仮想化的に）、物理的ＣＰＵでの実行に向けてプロセスをスケジュールしディスパッチするのと同じように、１つ又は複数の仮想ＣＰＵでの実行に向けてプロセスをスケジュールし、ディスパッチし得る。しかし、ハイパーバイザ１３０の観点から（典型的な実施形態では、コンピュータホスト１００で直接実行される）、各ＶＣＰＵ１２５は、コンピュータホスト１００の物理的ＣＰＵでスケジュールされディスパッチされるプロセスである。
【００１４】
ＶＭＭに対応する仮想マシンで実行中のゲストオペレーティングシステム（例えば、ウィンドウズ（Ｗｉｎｄｏｗｓ）又はリナックス（Ｌｉｎｕｘ））は、もはや実行するいかなるタスクもないと判断し得る。例えば、仮想マシンは、スプレッドシート（spreadsheet）又は言語処理アプリケーションを実行した可能性がある。それらのアプリケーションが終了し、他のアプリケーションが開始されない場合、ゲストオペレーティングシステムは、電力を節減するために、１つ又は複数のＣＰＵ（すなわち、対応する仮想マシンの仮想ＣＰＵ）を休止すべきであると判断し得る。仮想ＣＰＵを休止するために、ゲストオペレーティングシステムは、「休止」命令（例えば、ｘ８６アーキテクチャの部分であるＨＬＴ命令）を実行し得る。他の場合、ゲストオペレーティングシステムは、モニタリング待機（例えば、ＭＷＡＩＴ）命令を発行し、ＣＰＵは予め定義された命令アドレスで処理を中止する。何れの場合でも、ＣＰＵは処理を止め、アイドル状態になる。１つ又は複数の実施形態では、ＣＰＵへの割り込みが受信される場合、ＣＰＵはアイドル状態から戻る。ＶＭＭ（ＶＭＭ１３１等）は、中止された仮想ＣＰＵが、対応する仮想マシンで実行中のゲストオペレーティングシステムから休止した物理的ＣＰＵとして見えるように、仮想ＣＰＵの休止（又は中止）をエミュレートする。
【００１５】
１つ又は複数の実施形態では、カーネル１３６は、コンピュータホスト１００のＶＭ１１０と物理的ハードウェアとの連絡部として機能する。カーネル１３６は、中央オペレーティングシステム構成要素であり、ホスト１００で直接実行される。実施形態では、カーネル１３６は、メモリを割り振り、物理的ＣＰＵへのアクセスをスケジュールし、コンピュータホスト１００に接続された物理的ハードウェアデバイスへのアクセスを管理する。
【００１６】
カーネル１３６はカーネルスケジューラ１３５も含む。カーネルスケジューラ１３５は、コンピュータホスト１００の物理的ＣＰＵでの実行に向けてタスクをスケジュールすることを担う。コンピュータホスト１００で実行される全てのタスクが、基本となるハードウェアリソースを共有することに留意されたい。これは、ランダムアクセスメモリ、外部ストレージ、及び物理的ＣＰＵでの処理時間を含む。したがって、カーネルスケジューラ１３５が処理に向けてスケジュールするタスクは、非仮想化スタンドアロンアプリケーション、カーネルスレッド、割り込みモジュールと同じように、（ＶＭを実行する仮想ＣＰＵである）ＶＣＰＵ１２５を含むカーネルスレッド、割り込みモジュール実施形態では、カーネルスケジューラ１３５は、各物理的ＣＰＵ（図示せず）に別個の実行キューを保持する。すなわち、カーネルスケジューラ１３５は、プロセスを特定の物理的ＣＰＵの実行キューに配置することにより、その特定の物理的ＣＰＵでの実行に向けてそのプロセスをスケジュールする。通常、物理的ＣＰＵは、それ自体のキューから実行するプロセスを選択するだけである。
【００１７】
しかし、他の物理的ＣＰＵが対応する実行キュー内で待機中のジョブを有する間、ある物理的ＣＰＵがアイドルにあることが生じ得る。したがって、周期的に、カーネルスケジューラ１３５はキューをリバランスする。すなわち、特定の物理的ＣＰＵの実行キューが数多くのタスクを含む場合、カーネルスケジューラ１３５は、その実行キュー内のタスクの幾つかを、あまり忙しくない物理的ＣＰＵの実行キューに移す。
【００１８】
図１は、コンピュータホスト１００の別の構成要素であるハードウェアプラットフォーム１４０も示す。ハードウェアプラットフォーム１４０は、コンピュータホスト１００の全ての物理的なデバイス、チャネル、及びアダプタを含む。ハードウェアプラットフォーム１４０は、ネットワーク通信用のネットワークアダプタ（図示せず）と、外部記憶デバイスへの通信を可能にするホストバスアダプタ（ＨＢＳ：ｈｏｓｔ  ｂｕｓ  ａｄａｐｔｅｒ）（図示せず）とを含む。さらに、ハードウェアプラットフォーム１４０は、コンピュータホスト１００の物理的ＣＰＵ（本明細書ではＰＣＰＵと呼ばれる）を含む。図１に示されるように、コンピュータホスト１００はＭ  ＰＣＰＵ１４５１〜１４５Ｍを有する。図に示されるように、カーネルスケジューラ１３５は、１つ又は複数のＰＣＰＵ１４５での実行に向けてタスクをスケジュールしディスパッチする。
【００１９】
ハードウェアプラットフォーム１４０はランダムアクセスメモリ（ＲＡＭ）１４１も含み、ＲＡＭ１４１は、特に、現在実行中のプログラム及びそのようなプログラムに必要とされるデータを記憶する。さらに、前述したカーネルスケジューラ１３５が各ＰＣＰＵに保持する実行キューは通常、ＲＡＭ１４１内に保持される。
【００２０】
待ち時間高感度仮想マシンの実行に必要な構成、識別、及び処理の変更をサポートするために、図１に示される実施形態はＶＭ管理サーバ１５０を含む。ＶＭ管理サーバ１５０は、実施形態では、コンピュータホスト１００内又はコンピュータホスト１００からリモートに（図１に示されるように）実行されるサーバアプリケーションである。ＶＭ管理サーバ１５０の実施形態は、システム管理者が１つ又は複数のホストコンピュータでの実行に向けて仮想マシンを定義し、構成し、展開できるようにするインターフェース（グラフィカルユーザインターフェース（又はＧＵＩ）等）を提供する。
【００２１】
さらに、ＶＭ管理サーバ１５０は待ち時間高感度仮想マシンとしての仮想マシンの構成を提供する。１つ又は複数の実施形態によれば、ＶＭ管理サーバ１５０は待ち時間感度テーブル１５５を保持し、このテーブルは、仮想マシンの待ち時間感度特徴を定義する。待ち時間感度テーブル１５５については、更に詳細に以下に説明する。
【００２２】
図１に示されるように、ＶＭ管理サーバ１５０は、直接ローカル接続又はコンピュータネットワークを介してコンピュータホスト１００と通信する。そのような通信を促進するために、ＶＭ管理エージェント１３４はコンピュータホスト１００で実行される。ＶＭ管理エージェント１３４はカーネル１３６の一部分ではないが、ＶＭ管理エージェントの実施形態はハイパーバイザ１３０内でハイパーバイザレベルで実行される。しかし、他の実施形態では、ＶＭ管理エージェント１３４は、実行空間１２０内でユーザプログラムとして実行され得る。ＶＭ管理エージェント１３４のプロセスもカーネルスケジューラ１３５によって実行に向けてスケジュールされることに留意されたい。
【００２３】
ＶＭ管理エージェント１３４は、命令をＶＭ管理サーバ１５０から受信し、ＶＭ管理サーバ１５０の代理としてタスクを実行する。ＶＭ管理エージェント１３４によって実行されるタスクとは、特に、仮想マシンの構成及びインスタント化である。仮想マシンの構成の一態様は、仮想マシンが待ち時間高感度であるか否かである。したがって、ＶＭ管理エージェント１３４は、待ち時間感度テーブル１５５のコピーを受信し、基本データを待ち時間感度データ１４３としてＲＡＭ１４１内に保存する。図１に示されるように、待ち時間感度データ１４３がＲＡＭに保存されると、カーネルスケジューラ１３５はその情報にアクセスして、どの仮想マシンが待ち時間高感度であるかを判断する。１つ又は複数の仮想マシンが待ち時間高感度であると判断されると、カーネルスケジューラ１３５は特定のスケジュール変更を行い、これらの仮想マシンのニーズに応える。
【００２４】
図２は、待ち時間感度テーブル１５５の一実施形態を示すブロック図である。図に示されるように、待ち時間感度テーブル１５５は複数行のデータを記憶し、各行はホスト１００内の特定の仮想マシンに対応する。各仮想マシンは、一意のＶＭ  ＩＤ２１０によってホスト上で識別される。ＶＭ  ＩＤ２１０は、仮想マシンに関連付けられた任意の一意の二進値又は英数値であり得る。図２に示されるように、待ち時間感度テーブル１５５は、図１に示される仮想マシンＶＭ１１０１及びＶＭ１１０２にそれぞれ対応するＶＭ  ＩＤ２１０１及び２１０２のエントリを有する。
【００２５】
ＶＭ  ＩＤ２１０毎に、待ち時間感度テーブル１５５は２つの値を記憶する。第１の値は待ち時間感度インジケータである。このインジケータは２つの別個の値（Ｙ又はＮ等）を有し、この値は、対応する仮想マシンが待ち時間高感度であるか否かを示す。他の実施形態では、待ち時間感度インジケータは３つ以上の値（例えば、高、中、低、又は普通）を有し、対応する仮想マシンの異なる程度の待ち時間感度の指定を提供する。図２では、（ＶＭ１１０１に対応する）ＶＭ  ＩＤ２１０１は、待ち時間感度インジケータがＮに設定されているため、待ち時間高感度ではない仮想マシンを識別する。他方、（ＶＭ１１０２に対応する）ＶＭ  ＩＤ２１０２は、対応する待ち時間感度インジケータがＹに設定されているため、待ち時間高感度である仮想マシンを識別する。例えば、ＶＭ１１０２は、リアルタイム金融取引アプリケーションを実行する仮想マシンであり、一方、ＶＭ１１０１は、通常、瞬時応答時間を必要とせず、一般に、仮想化計算環境で生じるジッタによる影響を受けないバッチ処理アプリケーション（課金システム等）を実行する仮想マシンであり得る。
【００２６】
待ち時間感度テーブル１５５が記憶する第２の値は、「エンタイトルメント（entitlement）」値である。仮想マシンのＣＰＵリソースエンタイトルメントは、ＣＰＵ確保値、ＣＰＵ制限値、及びＣＰＵ共有値を指定することによって調整し得る。ＣＰＵ確保値は、仮想マシンへのＣＰＵリソースの保証された最小割り振りを表す。逆に、ＣＰＵ制限値は、仮想マシンへのＣＰＵリソースの最大割り振りを表す。最後に、ＣＰＵ共有値は、他の仮想マシンに割り振られたＣＰＵリソースの量に相対して仮想マシンに割り振られるＣＰＵリソース量を表す。したがって、ＣＰＵが割り振りを共有する場合、仮想マシンのＣＰＵエンタイトルメントは、他の仮想マシンが電源オン（powered-on）、電源オフ（powered-off）、又は各自のＣＰＵ共有値が構成される際、動的に変更され得る。
【００２７】
図２に示される実施形態では、エンタイトルメント値は割合である。この実施形態では、エンタイトルメント値は、所与のＶＭの仮想ＣＰＵのＣＰＵリソースの確保割合（すなわち、ＣＰＵ確保値）を表す。すなわち、エンタイトルメント値によって表される確保は、対応する仮想マシンに保証された最小割り振りを指定する。実施形態によれば、仮想マシンは、その仮想マシンの確保を満たすために十分な未確保ＣＰＵリソースが利用可能な場合のみ、電源オンされ得る。エンタイトルメント値が割合として表現されることに限定されないことに留意されたい。他の実施形態では、エンタイトルメント値は、確保されたＣＰＵサイクル数（ギガヘルツ（ＧＨｚ）単位でのプロセッサの速度の特定の部分等）として表現され得る。
【００２８】
図２では、（ＶＭ  ＩＤ２１０１によって識別されるように）ＶＭ１１０１は、４０パーセント（％）のエンタイトルメント値を有し、物理的ＣＰＵの４０％がＶＭ１１０１に関連付けられたＶＣＰＵ（すなわち、ＶＣＰＵ１２５１）に確保されることを意味する。この例では、ＶＭ１１０１が１つのみのＶＣＰ１２５を有すると仮定されることに留意されたい。しかし、ＶＭ１１０１が２つ以上のＶＣＰＵを有する場合、それらのＶＣＰＵのそれぞれは、１つの物理的ＣＰＵの確保容量の４０％を共有する。
【００２９】
図２を参照すると、（ＶＭ  ＩＤ２１０２によって識別されるように）ＶＭ１１０２は、１００％の対応するエンタイトルメント値を有する。したがって、ホストは、物理的ＣＰＵの容量の１００％をＶＭ１１０２に確保する。
【００３０】
１つ又は複数の実施形態によれば、仮想マシンが待ち時間高感度であり、且つ最大エンタイトルメント値を有する場合、その仮想マシンには、１つ又は複数の物理的ＣＰＵへの排他的アフィニティ（exclusive affinity）が認められる。例えば、ＶＭ１１０２が１つの仮想ＣＰＵ  ＶＣＰＵ１２５２を有すると仮定すると、ＶＭ１１０２（又は特に、ＶＣＰＵ１２５２）には、コンピュータホスト１００内の１つの物理的ＣＰＵ（すなわち、ＰＣＰＵ１４５１〜１４５Ｍの１つ）への排他的アフィニティが付与される。他方、ＶＭ１１０２が２つの仮想ＣＰＵを有する場合、両方の仮想ＣＰＵに物理的ＣＰＵへの排他的アフィニティが付与されるように、ＶＭ  ＩＤ２１０２の待ち時間感度テーブル１５５内のエンタイトルメント値は、２００％に設定される（すなわち、ＶＭ１１０２に対応する１組のＶＣＰＵ１２５２内の各仮想ＣＰＵに１００％を確保）。
【００３１】
仮想マシンの仮想ＣＰＵが物理的ＣＰＵへの排他的アフィニティを有する場合、物理的ＣＰＵは、効率的に、その特定の仮想ＣＰＵの実行専用である。すなわち、カーネルスケジューラ（すなわち、カーネルスケジューラ１３５）は、物理的ＣＰＵがアイドル状態であっても、仮想ＣＰＵが排他的アフィニティを有する物理的ＣＰＵでのいかなるプロセスの実行のスケジュールも避ける。さらに、カーネルスケジューラ１３５は、物理的ＣＰＵでの大半の割り込み処理のスケジュールも割ける。その代わり、仮想ＣＰＵが他の物理的ＣＰＵへの排他的アフィニティを有さない場合、割り込み処理はそのような他の物理的ＣＰＵでスケジュールされディスパッチされる。
【００３２】
さらに、実行中の仮想マシンが、Ｙに動的に設定された待ち時間感度インジケータを有するとともに、最大割合値に動的に設定されたエンタイトルメントを有する場合、カーネルスケジューラ１３５はそれらの構成変更を検出する（又はそれらの構成変更が通知される）。さらに、カーネルスケジューラ１３５は、待ち時間感度インジケータが以前はＹに設定され、エンタイトルメントが以前は最大割合に設定されていた仮想マシンが電源投入されたときを検出する（又はそのときが通知される）。何れの場合でも、カーネルスケジューラ１３５は、所要数の物理的ＣＰＵを仮想マシンの仮想ＣＰＵに割り振るステップをとる。したがって、仮想マシンの電源投入時（又は代替的には、仮想マシンの待ち時間感度インジケータ及びエンタイトルメントが変更されたとき）に、全ての物理的ＣＰＵがタスクを実行中である場合、カーネルスケジューラ１３５は、実行中のタスクをある物理的ＣＰＵから別の物理的ＣＰＵに移行する。カーネルスケジュールは、仮想マシンの仮想ＣＰＵの数と同じ数の物理的ＣＰＵに対してこの移行を実行する。したがって、仮想マシンの仮想ＣＰＵが、実行する必要があるタスクを有する場合、それらのタスクは、いかなるスケジューリングオーバーヘッド又はコンテキスト切り換えオーバーヘッドを発生させずに、割り振られた物理的ＣＰＵで直接実行される。さらに、実施形態によれば、カーネルスケジューラ１３５は、最小数の物理的ＣＰＵが非待ち時間高感度仮想マシンのタスクの処理に利用可能なことを保証する。これらの実施形態では、待ち時間高感度仮想マシンに電源が投入され、幾つかの物理的ＣＰＵが割り振られると、結果として、非待ち時間高感度タスクの処理に利用可能な物理的ＣＰＵの数はこの最小数未満になり、その場合、その仮想マシンは電源投入されない。
【００３３】
図３は、１つ又は複数の実施形態による、待ち時間高感度仮想マシンによって発行される中止命令の処理を示す図である。上述したように、ゲストオペレーティングシステムの実施形態（ゲストＯＳ１１２１及びゲストＯＳ１１２２等）は、仮想マシンが実行する追加のタスクを有するか否かを検出するように構成される。仮想マシンが実行する追加のタスクを有さない場合、仮想マシン内のゲストオペレーティングシステムは、「仮想」中止命令を発行し得る。すなわち、ゲストオペレーティングシステムは、仮想マシンの１つ又は複数の仮想ＣＰＵに中止（ＨＬＴ又はＭＷＡＩＴ等）命令を発行し得る。これは、仮想マシンがいかなる有用タスクも実行してないときに電力を節減するために行われる。
【００３４】
仮想マシンのゲストオペレーティングシステムが中止命令を仮想ＣＰＵに発行する場合、命令は対応するＶＭＭによって受信され処理される。仮想マシンが待ち時間高感度ではない場合、ＶＭＭは、中止された仮想ＣＰＵの実行に前に割り振られていた任意の物理的ＣＰＵを割り振り解除する（deallocate）ようにカーネルに命令する。この状況は図３に示され、ＶＭ１１０１で実行中のゲストＯＳ１１２１は、（３１０１で示される）ＶＣＰＵ１２５１を中止する中止命令を発行する。図２に示される待ち時間感度テーブル１５５に記憶される情報に基づいて、ＶＭ１１０１が待ち時間高感度仮想マシンではないことに留意されたい。これは、（ＶＭ１１０１に対応する）ＶＭ  ＩＤ２１０１の待ち時間感度インジケータがＮに設定されていること、及びＶＭ  ＩＤ２１０１のエンタイトルメント値が最大値（例えば、１００％）ではないことに起因する。したがって、ＶＭＭ１３１１は、中止命令を受信し、中止命令に応答して、（図３では３１５として示される）カーネルコールを行い、ＶＣＰＵ１２５１がアイドルであることをカーネルスケジューラ１３５に通信する。
【００３５】
カーネルコール３１５に応答して、カーネルスケジューラ１３５は、ＶＣＰＵ１２５１から、ＶＣＰＵ１２５１が現在実行中のあらゆる物理的ＣＰＵを割り振り解除する。このプロセスは、図３において矢印３２０によって示されている。例えば、図２において、タスク３００１が、現在、ＰＣＰＵ１４５１で実行中のタスクであると仮定する。さらに、タスク３００１はＶＣＰＵ１２５１に対応する。すなわち、タスク３００１は、物理的ＣＰＵ  ＰＣＰＵ１４５１でのＶＣＰＵ１２５１の実行を表す。カーネルコール３１５に応答して、カーネルスケジューラ１３５は、（点線で示される）ＰＣＰＵ１４５１での実行からタスク３００１を割り振り解除する。これは、ＣＰＵ資源を必要とする他のタスクの実行に向けてＰＣＰＵ１４５１を解放する。図３に示されるように、タスク３００２が、ＰＣＰＵ１４５１での実行にカーネルスケジューラ１３５によって選択される。仮想中止要求３１０１、カーネルコール３１５、及びスケジューリングタスク３２０の処理がそれぞれ、物理的ＣＰＵ資源を消費し、したがって、待ち時間の一因となることに留意されたい。さらに、（例えば、ソフトウェア割り込みを受信することにより）ＶＣＰＵ１２５１がタスクを実行する準備ができると、カーネルスケジューラ１３５は物理的ＣＰＵでの実行に向けてＶＣＰＵを再スケジューリングする必要があり、これは待ち時間の更なる原因である。
【００３６】
ＶＭ１１０１とは対照的に、ＶＭ１１０２は待ち時間高感度仮想マシンである。これは、（ＶＭ１１０２に対応する）ＶＭ  ＩＤ２１０２の待ち時間感度インジケータがＹに設定されていること、及びＶＭ  ＩＤ２１０２のエンタイトルメント値が最大値（すなわち、１００％）に設定されていることに起因する。この場合、ゲストＯＳ１１２２が中止命令（すなわち、ＨＬＴ、ＭＷＡＩＴ、又は同等の命令）をＶＣＰＵ１２５２に発行すると、ＶＭＭ１３１２は命令をインターセプトする（intercept）。次に、ＶＭＭ１３１２は、ＶＭ１１０２が待ち時間高感度であると判断し、したがって、対応するＶＣＰＵがコンピュータホスト１００の１つ又は複数の物理的ＣＰＵに排他的アフィニティを有する状態で実行される。例えば、図３では、ＶＭＭ１３１２は、ＶＣＰＵ１２５２が、ＰＣＰＵ１４５２に排他的アフィニティを有して実行されると判断する。したがって、ＶＣＰＵ１２５２の中止を行うために、ＶＭ１３１２は、物理的中止命令（例えば、物理的ＨＬＴ、ＭＷＡＩＴ、又は同等の命令）を物理的ＣＰＵ  ＰＣＰＵ１４５２に発行する。待ち時間高感度ＶＭ１１０２の場合、ＶＭＭ１３１２が、ＶＣＰＵ１２５２がアイドルであることを通知するカーネルコールを行わないことに留意されたい。むしろ、中止命令がＰＣＰＵ１４５２に直接発行され、このことは、（ＶＣＰＵ１２５２に対応し、ＰＣＰＵ１４５２で実行されているものとして示されている）タスク３００３からＰＣＰＵ１４５２を割り振り解除せずに、そのタスク３００３を中止するという効果がある。したがって、ＶＣＰＵ１２５２が、中止命令の受信に続けて割り込みを受ける場合、ＰＣＰＵ１４５２は、カーネルスケジューラ１３５が対応するいかなるタスクもスケジュールする必要もなく、ＶＣＰＵ１２５２に対する処理を即座に開始することが可能である。したがって、非待ち時間高感度ＶＭ１１０１に提示される待ち時間は、待ち時間高感度ＶＭ１１０２に対しては存在しない。
【００３７】
図４は、１つ又は複数の実施形態による、待ち時間高感度仮想マシンの仮想ＣＰＵを中止する方法４００を示す流れ図である。示されるように、方法４００のステップは、仮想マシンモニタ（図３に示されるＶＭＭ１３１１又はＶＭＭ１３１２等）及びカーネルスケジューラ（カーネルスケジューラ１３５等）によって実行される。方法４００はステップ４１０において開始され、ここで、仮想マシンのＶＭＭは、仮想マシンの仮想ＣＰＵに対する中止命令を受信する。上述したように、中止命令は、ｘ８６プロセッサアーキテクチャのＨＬＴ若しくはＭＷＡＩＴ命令であるか、又はプロセッサの実行を中止する任意の同等の命令であり得る。
【００３８】
次に、ステップ４２０において、ＶＭＭは、ＶＭＭが待ち時間高感度である仮想マシンに対応するか否かを判断する。１つ又は複数の実施形態によれば、ＶＭＭは、待ち時間感度データ構造内のエントリ（例えば、待ち時間感度テーブル１５５に基づく待ち時間感度データ１４３等）を調べることにより、対応する仮想マシンの待ち時間感度を特定する。ＶＭＭが、受信された中止命令を発行した仮想マシンが待ち時間高感度であると判断する場合、方法４００はステップ４６０に進む。
【００３９】
ステップ４６０において、ＶＭＭは、ホストコンピュータの物理的ＣＰＵの１つに排他的アフィニティを有する仮想ＣＰＵに中止命令を発行する。したがって、仮想ＣＰＵに発行された中止命令は、中止された仮想ＣＰＵが実行される物理的ＣＰＵを直接中止するという効果を有する。さらに、物理的ＣＰＵの中止は、カーネルコールを発行せずに実行される。ステップ４６０の後、方法４００は終了する。
【００４０】
しかし、ＶＭＭが、ステップ４２０において、仮想ＣＰＵの中止命令を発行した仮想マシンが待ち時間高感度ではないと判断する場合、方法４００はステップ４３０に進む。ステップ４３０において、ＶＭＭは、仮想ＣＰＵに対応するタスクが現在、アイドルであることをカーネルスケジューラ（図１に示されるカーネルスケジューラ１３５等）に通知するカーネルコールを発行する。ハイパーバイザ及びカーネルスケジューラの観点から、仮想ＣＰＵが、物理的プロセッサではなく、実行すべきタスクであることに留意する。
【００４１】
ステップ４３０においてＶＭＭによって行われたカーネルコールに応答して、カーネルスケジューラは、ステップ４４０において、仮想ＣＰＵに対応するタスクをプリエンプトする。すなわち、カーネルスケジューラは、仮想ＣＰＵに対応するタスクを中止する。実施形態によれば、カーネルスケジューラは、仮想ＣＰＵタスクの状態を保存し、仮想ＣＰＵがアイドル状態ではないようなときに将来実行するためにそのタスクをキューに入れる。
【００４２】
次に、ステップ４５０において、カーネルスケジューラは、仮想ＣＰＵタスクが実行からプリエンプトされた物理的ＣＰＵでの別のタスクの実行をスケジュールする。この他のスケジュールされたタスクは、アイドルではない別の仮想ＣＰＵ、ユーザプログラム、オペレーティングシステムプロセス、又は割り込みハンドラであり得る。他のタスクが物理的ＣＰＵでの実行に向けてスケジュールされると、方法４００は終了する。
【００４３】
１つ又は複数の実施形態について、理解を明確にするために本明細書において幾らか詳細に説明したが、本開示の趣旨から逸脱せずに、特定の変更及び変形が行われ得ることを認識されたい。本明細書に記載される様々な実施形態は、コンピュータシステムに記憶されたデータを含む様々なコンピュータ実施動作を利用し得る。例えば、これらの動作は、物理的数量の物理的操作を必要とし得、必ずしもではないが通常、これらの数量は電気信号又は磁気信号の形態を取り得、電気信号又は磁気信号又はそれらの表現は、記憶、転送、結合、比較、又は他の様式での操作が可能である。さらに、そのような操作は、多くの場合、用語に関して、製造、生成、識別、特定、又は比較等と呼ばれる。本開示の１つ又は複数の実施形態の一部をなす本明細書に記載される任意の動作は、有用なマシン動作であり得る。さらに、本開示の１つ又は複数の実施形態は、これらの動作を実行するデバイス又は装置にも関する。装置は特に、特定の所要目的に向けて構築されてもよく、又はコンピュータに記憶されたコンピュータプログラムによって選択的にアクティブ化若しくは構成される汎用コンピュータであってもよい。特に、様々な汎用マシンが、本明細書での教示に従って書かれたコンピュータプログラムと併用され得、又は必要とされる動作を実行するより専用化された装置を構築することがより好都合であり得る。
【００４４】
本明細書に記載される様々な実施形態は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベース又はプログラマブル消費者電子装置、ミニコンピュータ、メインフレームコンピュータ等を含め、他のコンピュータシステム構成を用いて実施し得る。
【００４５】
本開示の１つ又は複数の実施形態は、１つ若しくは複数のコンピュータプログラムとして、又は１つ若しくは複数のコンピュータ可読媒体で実施される１つ若しくは複数のコンピュータプログラムモジュールとして実施され得る。コンピュータ可読媒体という用語は、データを記憶することができる任意のデータ記憶デバイスを指し、データは後にコンピュータシステムに入力することができ、コンピュータ可読媒体は、コンピュータにより読み出し可能にするようにコンピュータプログラムを実施する任意の既存又は後に開発される技術に基づき得る。コンピュータ可読媒体の例としては、ハードドライブ、ネットワーク接続ストレージ（ＮＡＳ：ｎｅｔｗｏｒｋ  ａｔｔａｃｈｅｄ  ｓｔｏｒａｇｅ）、読み取り専用メモリ、ランダムアクセスメモリ（例えば、フラッシュメモリデバイス）、ＣＤ（コンパクトディスク）−−ＣＤ−ＲＯＭ、ＣＤ−Ｒ、又はＣＤ−ＲＷ、ＤＶＤ（デジタル多用途ディスク）、磁気テープ、並びに他の光学及び非光学データ記憶デバイスが挙げられる。コンピュータ可読媒体は、ネットワーク結合されたコンピュータシステムに分散することもでき、それにより、コンピュータ可読コードは分散して記憶され実行される。
【００４６】
本開示の１つ又は複数の実施形態について、理解を明確にするために幾らか詳細に説明したが、特許請求の範囲内で特定の変更及び変形が行われ得ることが明らかであろう。したがって、記載される実施形態は、限定ではなく例示として見なされるべきであり、特許請求の範囲は、本明細書に付与される詳細に限定されるべきではなく、特許請求の範囲及び均等物内で変更が可能である。特許請求の範囲では、要素及び／又はステップは、特許請求の範囲において明示的に記載される場合を除き、いかなる特定の順序の動作も暗示しない。
【００４７】
多くの変形、変更、追加、及び改善が可能である。複数のインスタンスが、１つのインスタンスとして本明細書に記載される構成要素、動作、又は構造に提供され得る。様々な構成要素、動作、及びデータストア間の境界は幾らか任意のものであり、特定の動作は、特定の例示的な構成の文脈で示されている。機能の他の割り振りが考えられ、本開示の範囲内にあり得る。一般に、例示的な構成において別個の構成要素として提示される構造及び機能は、結合された構造又は構成要素として実施され得る。同様に、１つの構成要素として提示される構造及び機能は、別個の構成要素として実施され得る。これら及び他の変形、変更、追加、及び改善は、添付の特許請求の範囲内にあり得る。
【図１】
2016529614.tif 000003
【図２】
2016529614.tif 000004
【図３】
2016529614.tif 000005
【図４】
2016529614.tif 000006
【国際調査報告】
2016529614.tif 000007
2016529614.tif 000008
2016529614.tif 000009