【文献】
山田真大、林 和宏、鈴木章浩、岡本幸太、小林良岳、本田晋也、高田広章,CPU affinityによる汎用OSのリアルタイム性向上手法,情報処理学会研究報告 [online],日本,一般社団法人情報処理学会,2013年 7月24日,Vol.2013-OS-126,No.18,pp.1-7
(58)【調査した分野】(Int.Cl.,DB名)
複数の仮想マシンの実行をサポートする仮想化ソフトウェアを有するホストコンピュータであって、前記仮想化ソフトウェアは、前記複数の仮想マシンのそれぞれの仮想マシンモニタを含み、各仮想マシンモニタは、対応する仮想マシンの仮想中央演算処理装置(CPU)をエミュレートする、前記ホストコンピュータにおいて、仮想マシンの仮想中央演算処理装置の実行を中止する方法であって、
対応する仮想マシンから仮想マシンモニタにおいて第1の中止命令を受信するステップと、
前記仮想マシンが待ち時間の影響を受けやすいか否かを前記仮想マシンモニタによって判断するステップと、
前記仮想マシンが待ち時間の影響を受けやすい場合、前記仮想マシンモニタから、前記仮想中央演算処理装置が実行される物理的中央演算処理装置を中止する第2の中止命令を発行するステップと、
前記仮想マシンが待ち時間の影響を受けやすくない場合、前記仮想中央演算処理装置がアイドル状態であることを示すシステムコールを前記ホストコンピュータで実行中のカーネルに対して実行するステップとを備える、方法。
前記仮想マシンが待ち時間の影響を受けやすい場合、前記仮想中央演算処理装置は、前記物理的中央演算処理装置において排他的モードで実行される、請求項1に記載の方法。
前記システムコールに応答して、前記カーネル中央演算処理装置スケジューラは、前記物理的中央演算処理装置を前記仮想中央演算処理装置から割り振り解除し、前記物理的中央演算処理装置を他のタスクに割り振る、請求項6に記載の方法。
ホストコンピュータによって実行可能な命令を含む非一時的なコンピュータ可読媒体であって、前記ホストコンピュータは、複数の仮想マシンの実行をサポートする仮想化ソフトウェアを有し、前記仮想化ソフトウェアは、前記複数の仮想マシンの各々の仮想マシンモニタを含み、各仮想マシンモニタは、対応する仮想マシンの仮想中央演算処理装置(CPU)をエミュレートし、前記命令は、実行されると、前記ホストコンピュータに仮想マシの仮想中央演算処理装置の実行を中止する方法を実行させ、前記方法は、
対応する仮想マシンから仮想マシンモニタにおいて第1の中止命令を受信するステップと、
前記仮想マシンが待ち時間の影響を受けやすいか否かを前記仮想マシンモニタによって判断するステップと、
前記仮想マシンが待ち時間の影響を受けやすい場合、前記仮想マシンモニタから、前記仮想中央演算処理装置が実行される物理的中央演算処理装置を中止する第2の中止命令を発行するステップと、
前記仮想マシンが待ち時間の影響を受けやすくない場合、前記仮想中央演算処理装置がアイドル状態であることを示すシステムコールを前記ホストコンピュータで実行中のカーネルに対して実行するステップとを備える、コンピュータ可読媒体。
前記仮想マシンが待ち時間の影響を受けやすい場合、前記仮想中央演算処理装置は、前記物理的中央演算処理装置において排他的モードで実行される、請求項8に記載のコンピュータ可読媒体。
前記カーネル中央演算処理装置スケジューラは、前記システムコールに応答して、前記仮想中央演算処理装置をスケジュール解除する、請求項12に記載のコンピュータ可読媒体。
前記システムコールに応答して、前記カーネル中央演算処理装置スケジューラは、前記物理的中央演算処理装置を前記仮想中央演算処理装置から割り振り解除し、前記物理的中央演算処理装置を他のタスクに割り振る、請求項13に記載のコンピュータ可読媒体。
前記仮想マシンが待ち時間の影響を受けやすい場合、前記仮想中央演算処理装置は、前記物理的中央演算処理装置において排他的モードで実行される、請求項15に記載のシステム。
前記カーネル中央演算処理装置スケジューラは、前記システムコールに応答して、前記仮想中央演算処理装置をスケジュール解除し、前記物理的中央演算処理装置を前記仮想中央演算処理装置から割り振り解除し、前記物理的中央演算処理装置を他のタスクに割り振る、請求項19に記載のシステム。
【発明を実施するための形態】
【0007】
図1は、1つ又は複数の実施形態を実施し得る仮想化コンピューティング環境を示す。示されるように、コンピューティング環境は、ホストコンピュータ100と、仮想マシン(VM)管理サーバ150とを含む。VM管理サーバ150は、ローカル接続を介して、又は代替的にはリモートネットワーク接続を介してホストコンピュータ100と通信する。
【0008】
ホストコンピュータ100は、実施形態では、オペレーティングシステム及び1つ又は複数のアプリケーションプログラムの実行をサポートする汎用コンピュータである。仮想化計算プラットフォームを含む様々な構成要素を実行するために、ホストコンピュータ100は通常、サーバクラスのコンピュータである。しかし、ホストコンピュータ100は、デスクトップ又はラップトップコンピュータであってもよい。
【0009】
図1に示されるように、ホストコンピュータ100は、3つの構成要素に論理的に分割される。第1に、実行空間120は、ユーザレベル(すなわち、非カーネルレベル)プログラムの実行をサポートする。ユーザレベルプログラムは非特権であり、特権命令の実行又はシステムメモリの特定の保護領域へのアクセス等の特定の特権機能を実行することができないことを意味する。実行空間120がサポートするプログラムは、特に、仮想マシンである。
【0010】
仮想マシンは、物理的計算デバイスのソフトウェア実施であり、物理的コンピュータと略同じようにプログラムを実行する。実施形態では、仮想マシンは、ソフトウェアにおいて、ゲストオペレーティングシステム(OS)の制御下でソフトウェアアプリケーションの実行をサポートする計算プラットフォームを実施する。したがって、仮想マシンは通常、特定の計算アーキテクチャをエミュレートする(emulate)。
図1では、実行空間120はVM110
1〜110
Nを含む。示される各VM110は1つ又は複数のアプリケーション111の実行をサポートし、各アプリケーション111は特定のゲストOS112の制御下で実行される。アプリケーション111は、例えば、ワードプロセッサ又はスプレッドシートプログラム(spreadsheet programs)等のユーザレベル(非カーネル)プログラムである。示される各ゲストOS112は、マイクロソフト社(Microsoft Corp.)からの任意のバージョンのウィンドウズ(Windows)(登録商標)オペレーティングシステム、リナックス(Linux)(登録商標)オペレーティングシステム、又はアップル社(Apple, Inc.)からのMac OS(登録商標)X等のよく知られた市販のオペレーティングシステムの1つであり得る。アプリケーション及びゲストOSがVM毎に異なり得ることに留意されたい。したがって、VM110
1内のアプリケーション111
1は、ゲストOS112
1としてウィンドウズ(Windows)(登録商標)7の制御下で実行されるマイクロソフト(Microsoft)のワード(Word)(登録商標)及びエクセル(Excel)(登録商標)アプリケーションを含み得る。これとは対照的に、VM110
N内のアプリケーション111
Nは、ゲストOS112
XとしてMacOS(登録商標)Xの制御下で実行されるサファリ(Safari)(登録商標)ウェブブラウザを含み得る。
【0011】
図1に示されるように、各VM110
1〜110
N及びユーザプログラム115は、本明細書ではハイパーバイザ130と呼ばれるハイパーバイザ構成要素と通信する。
ハイパーバイザ130は、
図1に示されるように、コンピュータホスト100でプロセスを実行するためのオペレーティングシステムプラットフォームを提供する。ハイパーバイザ130は、コンピュータホスト100内の全てのハードウェアデバイスを制御し、そこで実行される全てのアプリケーションのシステムリソースを管理する。ハイパーバイザ130が提供するコア機能は、特に、コンソールサービス、ファイルシステムサービス、デバイスドライバ、及びリソーススケジューリングである。さらに、ハイパーバイザ130は、ホストコンピュータでの1つ又は複数の仮想マシンのインスタンス化を提供するソフトウェア構成要素を実施する。
【0012】
図1の実施形態に示されるように、ハイパーバイザ130は仮想マシンモニタ(VMM)131
1〜131
Nを含む。各VMM131は実行中のVM110に対応する。したがって、VMM131
1はVM110
1に対応し、VMM131
2はVM110
2に対応し、以下同様である。各VMM131は、対応する仮想マシンのゲストOSに仮想ハードウェアプラットフォームを提供するソフトウェアレイヤである。対応するVMが、ハイパーバイザ130のカーネル構成要素(
図1ではカーネル136として示される)によって提供されるサービスにアクセスするのは、特定のVMM131を通してである。カーネル136によって実行される機能は、特に、メモリ管理、ネットワーキング及び記憶スタックの提供、及びプロセススケジューリングである。
【0013】
図1での各VMM131は、対応するVM110の仮想ハードウェアプラットフォームを実施する。実施される仮想ハードウェアプラットフォームの構成要素は、特に、1つ又は複数の仮想中央演算処理装置(又はVCPU)125である。
図1では、VMM131
1はVCPU125
1を実施し、VMM131
2はVCPU125
2を実施し、以下同様である。各VCPU125は、対応するVM110で実行されるアプリケーション111及びゲストOS112の観点から、物理的CPUとして見える。このようにして、仮想マシン内で実行される仮想化ゲストオペレーティングシステムは、コンピュータホストで直接実行されるオペレーティングシステムが(すなわち、非仮想化的に)、物理的CPUでの実行に向けてプロセスをスケジュールしディスパッチするのと同じように、1つ又は複数の仮想CPUでの実行に向けてプロセスをスケジュールし、ディスパッチし得る。しかし、ハイパーバイザ130の観点から(典型的な実施形態では、コンピュータホスト100で直接実行される)、各VCPU125は、コンピュータホスト100の物理的CPUでスケジュールされディスパッチされるプロセスである。
【0014】
VMMに対応する仮想マシンで実行中のゲストオペレーティングシステム(例えば、ウィンドウズ(Windows)又はリナックス(Linux))は、もはや実行するいかなるタスクもないと判断し得る。例えば、仮想マシンは、スプレッドシート(spreadsheet)又は言語処理アプリケーションを実行した可能性がある。それらのアプリケーションが終了し、他のアプリケーションが開始されない場合、ゲストオペレーティングシステムは、電力を節減するために、1つ又は複数のCPU(すなわち、対応する仮想マシンの仮想CPU)を休止すべきであると判断し得る。仮想CPUを休止するために、ゲストオペレーティングシステムは、「休止」命令(例えば、x86アーキテクチャの部分であるHLT命令)を実行し得る。他の場合、ゲストオペレーティングシステムは、モニタリング待機(例えば、MWAIT)命令を発行し、CPUは予め定義された命令アドレスで処理を中止する。何れの場合でも、CPUは処理を止め、アイドル状態になる。1つ又は複数の実施形態では、CPUへの割り込みが受信される場合、CPUはアイドル状態から戻る。VMM(VMM131等)は、中止された仮想CPUが、対応する仮想マシンで実行中のゲストオペレーティングシステムから休止した物理的CPUとして見えるように、仮想CPUの休止(又は中止)をエミュレートする。
【0015】
1つ又は複数の実施形態では、カーネル136は、コンピュータホスト100のVM110と物理的ハードウェアとの連絡部として機能する。カーネル136は、中央オペレーティングシステム構成要素であり、ホスト100で直接実行される。実施形態では、カーネル136は、メモリを割り振り、物理的CPUへのアクセスをスケジュールし、コンピュータホスト100に接続された物理的ハードウェアデバイスへのアクセスを管理する。
【0016】
カーネル136はカーネルスケジューラ135も含む。カーネルスケジューラ135は、コンピュータホスト100の物理的CPUでの実行に向けてタスクをスケジュールすることを担う。コンピュータホスト100で実行される全てのタスクが、基本となるハードウェアリソースを共有することに留意されたい。これは、ランダムアクセスメモリ、外部ストレージ、及び物理的CPUでの処理時間を含む。したがって、カーネルスケジューラ135が処理に向けてスケジュールするタスクは、非仮想化スタンドアロンアプリケーション、カーネルスレッド、割り込みモジュールと同じように、(VMを実行する仮想CPUである)VCPU125を含むカーネルスレッド、割り込みモジュール実施形態では、カーネルスケジューラ135は、各物理的CPU(図示せず)に別個の実行キューを保持する。すなわち、カーネルスケジューラ135は、プロセスを特定の物理的CPUの実行キューに配置することにより、その特定の物理的CPUでの実行に向けてそのプロセスをスケジュールする。通常、物理的CPUは、それ自体のキューから実行するプロセスを選択するだけである。
【0017】
しかし、他の物理的CPUが対応する実行キュー内で待機中のジョブを有する間、ある物理的CPUがアイドルにあることが生じ得る。したがって、周期的に、カーネルスケジューラ135はキューをリバランスする。すなわち、特定の物理的CPUの実行キューが数多くのタスクを含む場合、カーネルスケジューラ135は、その実行キュー内のタスクの幾つかを、あまり忙しくない物理的CPUの実行キューに移す。
【0018】
図1は、コンピュータホスト100の別の構成要素であるハードウェアプラットフォーム140も示す。ハードウェアプラットフォーム140は、コンピュータホスト100の全ての物理的なデバイス、チャネル、及びアダプタを含む。ハードウェアプラットフォーム140は、ネットワーク通信用のネットワークアダプタ(図示せず)と、外部記憶デバイスへの通信を可能にするホストバスアダプタ(HBS:host bus adapter)(図示せず)とを含む。さらに、ハードウェアプラットフォーム140は、コンピュータホスト100の物理的CPU(本明細書ではPCPUと呼ばれる)を含む。
図1に示されるように、コンピュータホスト100はM PCPU145
1〜145
Mを有する。図に示されるように、カーネルスケジューラ135は、1つ又は複数のPCPU145での実行に向けてタスクをスケジュールしディスパッチする。
【0019】
ハードウェアプラットフォーム140はランダムアクセスメモリ(RAM)141も含み、RAM141は、特に、現在実行中のプログラム及びそのようなプログラムに必要とされるデータを記憶する。さらに、前述したカーネルスケジューラ135が各PCPUに保持する実行キューは通常、RAM141内に保持される。
【0020】
待ち時間高感度仮想マシンの実行に必要な構成、識別、及び処理の変更をサポートするために、
図1に示される実施形態はVM管理サーバ150を含む。VM管理サーバ150は、実施形態では、コンピュータホスト100内又はコンピュータホスト100からリモートに(
図1に示されるように)実行されるサーバアプリケーションである。VM管理サーバ150の実施形態は、システム管理者が1つ又は複数のホストコンピュータでの実行に向けて仮想マシンを定義し、構成し、展開できるようにするインターフェース(グラフィカルユーザインターフェース(又はGUI)等)を提供する。
【0021】
さらに、VM管理サーバ150は待ち時間高感度仮想マシンとしての仮想マシンの構成を提供する。1つ又は複数の実施形態によれば、VM管理サーバ150は待ち時間感度テーブル155を保持し、このテーブルは、仮想マシンの待ち時間感度特徴を定義する。待ち時間感度テーブル155については、更に詳細に以下に説明する。
【0022】
図1に示されるように、VM管理サーバ150は、直接ローカル接続又はコンピュータネットワークを介してコンピュータホスト100と通信する。そのような通信を促進するために、VM管理エージェント134はコンピュータホスト100で実行される。VM管理エージェント134はカーネル136の一部分ではないが、VM管理エージェントの実施形態はハイパーバイザ130内でハイパーバイザレベルで実行される。しかし、他の実施形態では、VM管理エージェント134は、実行空間120内でユーザプログラムとして実行され得る。VM管理エージェント134のプロセスもカーネルスケジューラ135によって実行に向けてスケジュールされることに留意されたい。
【0023】
VM管理エージェント134は、命令をVM管理サーバ150から受信し、VM管理サーバ150の代理としてタスクを実行する。VM管理エージェント134によって実行されるタスクとは、特に、仮想マシンの構成及びインスタント化である。仮想マシンの構成の一態様は、仮想マシンが待ち時間高感度であるか否かである。したがって、VM管理エージェント134は、待ち時間感度テーブル155のコピーを受信し、基本データを待ち時間感度データ143としてRAM141内に保存する。
図1に示されるように、待ち時間感度データ143がRAMに保存されると、カーネルスケジューラ135はその情報にアクセスして、どの仮想マシンが待ち時間高感度であるかを判断する。1つ又は複数の仮想マシンが待ち時間高感度であると判断されると、カーネルスケジューラ135は特定のスケジュール変更を行い、これらの仮想マシンのニーズに応える。
【0024】
図2は、待ち時間感度テーブル155の一実施形態を示すブロック図である。図に示されるように、待ち時間感度テーブル155は複数行のデータを記憶し、各行はホスト100内の特定の仮想マシンに対応する。各仮想マシンは、一意のVM ID210によってホスト上で識別される。VM ID210は、仮想マシンに関連付けられた任意の一意の二進値又は英数値であり得る。
図2に示されるように、待ち時間感度テーブル155は、
図1に示される仮想マシンVM110
1及びVM110
2にそれぞれ対応するVM ID210
1及び210
2のエントリを有する。
【0025】
VM ID210毎に、待ち時間感度テーブル155は2つの値を記憶する。第1の値は待ち時間感度インジケータである。このインジケータは2つの別個の値(Y又はN等)を有し、この値は、対応する仮想マシンが待ち時間高感度であるか否かを示す。他の実施形態では、待ち時間感度インジケータは3つ以上の値(例えば、高、中、低、又は普通)を有し、対応する仮想マシンの異なる程度の待ち時間感度の指定を提供する。
図2では、(VM110
1に対応する)VM ID210
1は、待ち時間感度インジケータがNに設定されているため、待ち時間高感度ではない仮想マシンを識別する。他方、(VM110
2に対応する)VM ID210
2は、対応する待ち時間感度インジケータがYに設定されているため、待ち時間高感度である仮想マシンを識別する。例えば、VM110
2は、リアルタイム金融取引アプリケーションを実行する仮想マシンであり、一方、VM110
1は、通常、瞬時応答時間を必要とせず、一般に、仮想化計算環境で生じるジッタによる影響を受けないバッチ処理アプリケーション(課金システム等)を実行する仮想マシンであり得る。
【0026】
待ち時間感度テーブル155が記憶する第2の値は、「エンタイトルメント(entitlement)」値である。仮想マシンのCPUリソースエンタイトルメントは、CPU確保値、CPU制限値、及びCPU共有値を指定することによって調整し得る。CPU確保値は、仮想マシンへのCPUリソースの保証された最小割り振りを表す。逆に、CPU制限値は、仮想マシンへのCPUリソースの最大割り振りを表す。最後に、CPU共有値は、他の仮想マシンに割り振られたCPUリソースの量に相対して仮想マシンに割り振られるCPUリソース量を表す。したがって、CPUが割り振りを共有する場合、仮想マシンのCPUエンタイトルメントは、他の仮想マシンが電源オン(powered-on)、電源オフ(powered-off)、又は各自のCPU共有値が構成される際、動的に変更され得る。
【0027】
図2に示される実施形態では、エンタイトルメント値は割合である。この実施形態では、エンタイトルメント値は、所与のVMの仮想CPUのCPUリソースの確保割合(すなわち、CPU確保値)を表す。すなわち、エンタイトルメント値によって表される確保は、対応する仮想マシンに保証された最小割り振りを指定する。実施形態によれば、仮想マシンは、その仮想マシンの確保を満たすために十分な未確保CPUリソースが利用可能な場合のみ、電源オンされ得る。エンタイトルメント値が割合として表現されることに限定されないことに留意されたい。他の実施形態では、エンタイトルメント値は、確保されたCPUサイクル数(ギガヘルツ(GHz)単位でのプロセッサの速度の特定の部分等)として表現され得る。
【0028】
図2では、(VM ID210
1によって識別されるように)VM110
1は、40パーセント(%)のエンタイトルメント値を有し、物理的CPUの40%がVM110
1に関連付けられたVCPU(すなわち、VCPU125
1)に確保されることを意味する。この例では、VM110
1が1つのみのVCP125を有すると仮定されることに留意されたい。しかし、VM110
1が2つ以上のVCPUを有する場合、それらのVCPUのそれぞれは、1つの物理的CPUの確保容量の40%を共有する。
【0029】
図2を参照すると、(VM ID210
2によって識別されるように)VM110
2は、100%の対応するエンタイトルメント値を有する。したがって、ホストは、物理的CPUの容量の100%をVM110
2に確保する。
【0030】
1つ又は複数の実施形態によれば、仮想マシンが待ち時間高感度であり、且つ最大エンタイトルメント値を有する場合、その仮想マシンには、1つ又は複数の物理的CPUへの排他的アフィニティ(exclusive affinity)が認められる。例えば、VM110
2が1つの仮想CPU VCPU125
2を有すると仮定すると、VM110
2(又は特に、VCPU125
2)には、コンピュータホスト100内の1つの物理的CPU(すなわち、PCPU145
1〜145
Mの1つ)への排他的アフィニティが付与される。他方、VM110
2が2つの仮想CPUを有する場合、両方の仮想CPUに物理的CPUへの排他的アフィニティが付与されるように、VM ID210
2の待ち時間感度テーブル155内のエンタイトルメント値は、200%に設定される(すなわち、VM110
2に対応する1組のVCPU125
2内の各仮想CPUに100%を確保)。
【0031】
仮想マシンの仮想CPUが物理的CPUへの排他的アフィニティを有する場合、物理的CPUは、効率的に、その特定の仮想CPUの実行専用である。すなわち、カーネルスケジューラ(すなわち、カーネルスケジューラ135)は、物理的CPUがアイドル状態であっても、仮想CPUが排他的アフィニティを有する物理的CPUでのいかなるプロセスの実行のスケジュールも避ける。さらに、カーネルスケジューラ135は、物理的CPUでの大半の割り込み処理のスケジュールも割ける。その代わり、仮想CPUが他の物理的CPUへの排他的アフィニティを有さない場合、割り込み処理はそのような他の物理的CPUでスケジュールされディスパッチされる。
【0032】
さらに、実行中の仮想マシンが、Yに動的に設定された待ち時間感度インジケータを有するとともに、最大割合値に動的に設定されたエンタイトルメントを有する場合、カーネルスケジューラ135はそれらの構成変更を検出する(又はそれらの構成変更が通知される)。さらに、カーネルスケジューラ135は、待ち時間感度インジケータが以前はYに設定され、エンタイトルメントが以前は最大割合に設定されていた仮想マシンが電源投入されたときを検出する(又はそのときが通知される)。何れの場合でも、カーネルスケジューラ135は、所要数の物理的CPUを仮想マシンの仮想CPUに割り振るステップをとる。したがって、仮想マシンの電源投入時(又は代替的には、仮想マシンの待ち時間感度インジケータ及びエンタイトルメントが変更されたとき)に、全ての物理的CPUがタスクを実行中である場合、カーネルスケジューラ135は、実行中のタスクをある物理的CPUから別の物理的CPUに移行する。カーネルスケジュールは、仮想マシンの仮想CPUの数と同じ数の物理的CPUに対してこの移行を実行する。したがって、仮想マシンの仮想CPUが、実行する必要があるタスクを有する場合、それらのタスクは、いかなるスケジューリングオーバーヘッド又はコンテキスト切り換えオーバーヘッドを発生させずに、割り振られた物理的CPUで直接実行される。さらに、実施形態によれば、カーネルスケジューラ135は、最小数の物理的CPUが非待ち時間高感度仮想マシンのタスクの処理に利用可能なことを保証する。これらの実施形態では、待ち時間高感度仮想マシンに電源が投入され、幾つかの物理的CPUが割り振られると、結果として、非待ち時間高感度タスクの処理に利用可能な物理的CPUの数はこの最小数未満になり、その場合、その仮想マシンは電源投入されない。
【0033】
図3は、1つ又は複数の実施形態による、待ち時間高感度仮想マシンによって発行される中止命令の処理を示す図である。上述したように、ゲストオペレーティングシステムの実施形態(ゲストOS112
1及びゲストOS112
2等)は、仮想マシンが実行する追加のタスクを有するか否かを検出するように構成される。仮想マシンが実行する追加のタスクを有さない場合、仮想マシン内のゲストオペレーティングシステムは、「仮想」中止命令を発行し得る。すなわち、ゲストオペレーティングシステムは、仮想マシンの1つ又は複数の仮想CPUに中止(HLT又はMWAIT等)命令を発行し得る。これは、仮想マシンがいかなる有用タスクも実行してないときに電力を節減するために行われる。
【0034】
仮想マシンのゲストオペレーティングシステムが中止命令を仮想CPUに発行する場合、命令は対応するVMMによって受信され処理される。仮想マシンが待ち時間高感度ではない場合、VMMは、中止された仮想CPUの実行に前に割り振られていた任意の物理的CPUを割り振り解除する(deallocate)ようにカーネルに命令する。この状況は
図3に示され、VM110
1で実行中のゲストOS112
1は、(310
1で示される)VCPU125
1を中止する中止命令を発行する。
図2に示される待ち時間感度テーブル155に記憶される情報に基づいて、VM110
1が待ち時間高感度仮想マシンではないことに留意されたい。これは、(VM110
1に対応する)VM ID210
1の待ち時間感度インジケータがNに設定されていること、及びVM ID210
1のエンタイトルメント値が最大値(例えば、100%)ではないことに起因する。したがって、VMM131
1は、中止命令を受信し、中止命令に応答して、(
図3では315として示される)カーネルコールを行い、VCPU125
1がアイドルであることをカーネルスケジューラ135に通信する。
【0035】
カーネルコール315に応答して、カーネルスケジューラ135は、VCPU125
1から、VCPU125
1が現在実行中のあらゆる物理的CPUを割り振り解除する。このプロセスは、
図3において矢印320によって示されている。例えば、
図2において、タスク300
1が、現在、PCPU145
1で実行中のタスクであると仮定する。さらに、タスク300
1はVCPU125
1に対応する。すなわち、タスク300
1は、物理的CPU PCPU145
1でのVCPU125
1の実行を表す。カーネルコール315に応答して、カーネルスケジューラ135は、(点線で示される)PCPU145
1での実行からタスク300
1を割り振り解除する。これは、CPU資源を必要とする他のタスクの実行に向けてPCPU145
1を解放する。
図3に示されるように、タスク300
2が、PCPU145
1での実行にカーネルスケジューラ135によって選択される。仮想中止要求310
1、カーネルコール315、及びスケジューリングタスク320の処理がそれぞれ、物理的CPU資源を消費し、したがって、待ち時間の一因となることに留意されたい。さらに、(例えば、ソフトウェア割り込みを受信することにより)VCPU125
1がタスクを実行する準備ができると、カーネルスケジューラ135は物理的CPUでの実行に向けてVCPUを再スケジューリングする必要があり、これは待ち時間の更なる原因である。
【0036】
VM110
1とは対照的に、VM110
2は待ち時間高感度仮想マシンである。これは、(VM110
2に対応する)VM ID210
2の待ち時間感度インジケータがYに設定されていること、及びVM ID210
2のエンタイトルメント値が最大値(すなわち、100%)に設定されていることに起因する。この場合、ゲストOS112
2が中止命令(すなわち、HLT、MWAIT、又は同等の命令)をVCPU125
2に発行すると、VMM131
2は命令をインターセプトする(intercept)。次に、VMM131
2は、VM110
2が待ち時間高感度であると判断し、したがって、対応するVCPUがコンピュータホスト100の1つ又は複数の物理的CPUに排他的アフィニティを有する状態で実行される。例えば、
図3では、VMM131
2は、VCPU125
2が、PCPU145
2に排他的アフィニティを有して実行されると判断する。したがって、VCPU125
2の中止を行うために、VM131
2は、物理的中止命令(例えば、物理的HLT、MWAIT、又は同等の命令)を物理的CPU PCPU145
2に発行する。待ち時間高感度VM110
2の場合、VMM131
2が、VCPU125
2がアイドルであることを通知するカーネルコールを行わないことに留意されたい。むしろ、中止命令がPCPU145
2に直接発行され、このことは、(VCPU125
2に対応し、PCPU145
2で実行されているものとして示されている)タスク300
3からPCPU145
2を割り振り解除せずに、そのタスク300
3を中止するという効果がある。したがって、VCPU125
2が、中止命令の受信に続けて割り込みを受ける場合、PCPU145
2は、カーネルスケジューラ135が対応するいかなるタスクもスケジュールする必要もなく、VCPU125
2に対する処理を即座に開始することが可能である。したがって、非待ち時間高感度VM110
1に提示される待ち時間は、待ち時間高感度VM110
2に対しては存在しない。
【0037】
図4は、1つ又は複数の実施形態による、待ち時間高感度仮想マシンの仮想CPUを中止する方法400を示す流れ図である。示されるように、方法400のステップは、仮想マシンモニタ(
図3に示されるVMM131
1又はVMM131
2等)及びカーネルスケジューラ(カーネルスケジューラ135等)によって実行される。方法400はステップ410において開始され、ここで、仮想マシンのVMMは、仮想マシンの仮想CPUに対する中止命令を受信する。上述したように、中止命令は、x86プロセッサアーキテクチャのHLT若しくはMWAIT命令であるか、又はプロセッサの実行を中止する任意の同等の命令であり得る。
【0038】
次に、ステップ420において、VMMは、VMMが待ち時間高感度である仮想マシンに対応するか否かを判断する。1つ又は複数の実施形態によれば、VMMは、待ち時間感度データ構造内のエントリ(例えば、待ち時間感度テーブル155に基づく待ち時間感度データ143等)を調べることにより、対応する仮想マシンの待ち時間感度を特定する。VMMが、受信された中止命令を発行した仮想マシンが待ち時間高感度であると判断する場合、方法400はステップ460に進む。
【0039】
ステップ460において、VMMは、ホストコンピュータの物理的CPUの1つに排他的アフィニティを有する仮想CPUに中止命令を発行する。したがって、仮想CPUに発行された中止命令は、中止された仮想CPUが実行される物理的CPUを直接中止するという効果を有する。さらに、物理的CPUの中止は、カーネルコールを発行せずに実行される。ステップ460の後、方法400は終了する。
【0040】
しかし、VMMが、ステップ420において、仮想CPUの中止命令を発行した仮想マシンが待ち時間高感度ではないと判断する場合、方法400はステップ430に進む。ステップ430において、VMMは、仮想CPUに対応するタスクが現在、アイドルであることをカーネルスケジューラ(
図1に示されるカーネルスケジューラ135等)に通知するカーネルコールを発行する。ハイパーバイザ及びカーネルスケジューラの観点から、仮想CPUが、物理的プロセッサではなく、実行すべきタスクであることに留意する。
【0041】
ステップ430においてVMMによって行われたカーネルコールに応答して、カーネルスケジューラは、ステップ440において、仮想CPUに対応するタスクをプリエンプトする。すなわち、カーネルスケジューラは、仮想CPUに対応するタスクを中止する。実施形態によれば、カーネルスケジューラは、仮想CPUタスクの状態を保存し、仮想CPUがアイドル状態ではないようなときに将来実行するためにそのタスクをキューに入れる。
【0042】
次に、ステップ450において、カーネルスケジューラは、仮想CPUタスクが実行からプリエンプトされた物理的CPUでの別のタスクの実行をスケジュールする。この他のスケジュールされたタスクは、アイドルではない別の仮想CPU、ユーザプログラム、オペレーティングシステムプロセス、又は割り込みハンドラであり得る。他のタスクが物理的CPUでの実行に向けてスケジュールされると、方法400は終了する。
【0043】
1つ又は複数の実施形態について、理解を明確にするために本明細書において幾らか詳細に説明したが、本開示の趣旨から逸脱せずに、特定の変更及び変形が行われ得ることを認識されたい。本明細書に記載される様々な実施形態は、コンピュータシステムに記憶されたデータを含む様々なコンピュータ実施動作を利用し得る。例えば、これらの動作は、物理的数量の物理的操作を必要とし得、必ずしもではないが通常、これらの数量は電気信号又は磁気信号の形態を取り得、電気信号又は磁気信号又はそれらの表現は、記憶、転送、結合、比較、又は他の様式での操作が可能である。さらに、そのような操作は、多くの場合、用語に関して、製造、生成、識別、特定、又は比較等と呼ばれる。本開示の1つ又は複数の実施形態の一部をなす本明細書に記載される任意の動作は、有用なマシン動作であり得る。さらに、本開示の1つ又は複数の実施形態は、これらの動作を実行するデバイス又は装置にも関する。装置は特に、特定の所要目的に向けて構築されてもよく、又はコンピュータに記憶されたコンピュータプログラムによって選択的にアクティブ化若しくは構成される汎用コンピュータであってもよい。特に、様々な汎用マシンが、本明細書での教示に従って書かれたコンピュータプログラムと併用され得、又は必要とされる動作を実行するより専用化された装置を構築することがより好都合であり得る。
【0044】
本明細書に記載される様々な実施形態は、ハンドヘルドデバイス、マイクロプロセッサシステム、マイクロプロセッサベース又はプログラマブル消費者電子装置、ミニコンピュータ、メインフレームコンピュータ等を含め、他のコンピュータシステム構成を用いて実施し得る。
【0045】
本開示の1つ又は複数の実施形態は、1つ若しくは複数のコンピュータプログラムとして、又は1つ若しくは複数のコンピュータ可読媒体で実施される1つ若しくは複数のコンピュータプログラムモジュールとして実施され得る。コンピュータ可読媒体という用語は、データを記憶することができる任意のデータ記憶デバイスを指し、データは後にコンピュータシステムに入力することができ、コンピュータ可読媒体は、コンピュータにより読み出し可能にするようにコンピュータプログラムを実施する任意の既存又は後に開発される技術に基づき得る。コンピュータ可読媒体の例としては、ハードドライブ、ネットワーク接続ストレージ(NAS:network attached storage)、読み取り専用メモリ、ランダムアクセスメモリ(例えば、フラッシュメモリデバイス)、CD(コンパクトディスク)−−CD−ROM、CD−R、又はCD−RW、DVD(デジタル多用途ディスク)、磁気テープ、並びに他の光学及び非光学データ記憶デバイスが挙げられる。コンピュータ可読媒体は、ネットワーク結合されたコンピュータシステムに分散することもでき、それにより、コンピュータ可読コードは分散して記憶され実行される。
【0046】
本開示の1つ又は複数の実施形態について、理解を明確にするために幾らか詳細に説明したが、特許請求の範囲内で特定の変更及び変形が行われ得ることが明らかであろう。したがって、記載される実施形態は、限定ではなく例示として見なされるべきであり、特許請求の範囲は、本明細書に付与される詳細に限定されるべきではなく、特許請求の範囲及び均等物内で変更が可能である。特許請求の範囲では、要素及び/又はステップは、特許請求の範囲において明示的に記載される場合を除き、いかなる特定の順序の動作も暗示しない。
【0047】
多くの変形、変更、追加、及び改善が可能である。複数のインスタンスが、1つのインスタンスとして本明細書に記載される構成要素、動作、又は構造に提供され得る。様々な構成要素、動作、及びデータストア間の境界は幾らか任意のものであり、特定の動作は、特定の例示的な構成の文脈で示されている。機能の他の割り振りが考えられ、本開示の範囲内にあり得る。一般に、例示的な構成において別個の構成要素として提示される構造及び機能は、結合された構造又は構成要素として実施され得る。同様に、1つの構成要素として提示される構造及び機能は、別個の構成要素として実施され得る。これら及び他の変形、変更、追加、及び改善は、添付の特許請求の範囲内にあり得る。