特表2016-529614(P2016-529614A)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

▶ ヴイエムウェア インコーポレイテッドの特許一覧

特表2016-529614待ち時間の影響を受けやすい仮想マシンをサポートするように構成された仮想マシンモニタ
<>
  • 特表2016529614-待ち時間の影響を受けやすい仮想マシンをサポートするように構成された仮想マシンモニタ 図000003
  • 特表2016529614-待ち時間の影響を受けやすい仮想マシンをサポートするように構成された仮想マシンモニタ 図000004
  • 特表2016529614-待ち時間の影響を受けやすい仮想マシンをサポートするように構成された仮想マシンモニタ 図000005
  • 特表2016529614-待ち時間の影響を受けやすい仮想マシンをサポートするように構成された仮想マシンモニタ 図000006
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】特表2016-529614(P2016-529614A)
(43)【公表日】2016年9月23日
(54)【発明の名称】待ち時間の影響を受けやすい仮想マシンをサポートするように構成された仮想マシンモニタ
(51)【国際特許分類】
   G06F 9/48 20060101AFI20160826BHJP
   G06F 9/46 20060101ALI20160826BHJP
【FI】
   G06F9/46 452H
   G06F9/46 350
【審査請求】有
【予備審査請求】未請求
【全頁数】18
(21)【出願番号】特願2016-531957(P2016-531957)
(86)(22)【出願日】2014年8月25日
(85)【翻訳文提出日】2016年1月29日
(86)【国際出願番号】US2014052557
(87)【国際公開番号】WO2015031274
(87)【国際公開日】20150305
(31)【優先権主張番号】61/870,143
(32)【優先日】2013年8月26日
(33)【優先権主張国】US
(81)【指定国】 AP(BW,GH,GM,KE,LR,LS,MW,MZ,NA,RW,SD,SL,ST,SZ,TZ,UG,ZM,ZW),EA(AM,AZ,BY,KG,KZ,RU,TJ,TM),EP(AL,AT,BE,BG,CH,CY,CZ,DE,DK,EE,ES,FI,FR,GB,GR,HR,HU,IE,IS,IT,LT,LU,LV,MC,MK,MT,NL,NO,PL,PT,RO,RS,SE,SI,SK,SM,TR),OA(BF,BJ,CF,CG,CI,CM,GA,GN,GQ,GW,KM,ML,MR,NE,SN,TD,TG),AE,AG,AL,AM,AO,AT,AU,AZ,BA,BB,BG,BH,BN,BR,BW,BY,BZ,CA,CH,CL,CN,CO,CR,CU,CZ,DE,DK,DM,DO,DZ,EC,EE,EG,ES,FI,GB,GD,GE,GH,GM,GT,HN,HR,HU,ID,IL,IN,IR,IS,JP,KE,KG,KN,KP,KR,KZ,LA,LC,LK,LR,LS,LT,LU,LY,MA,MD,ME,MG,MK,MN,MW,MX,MY,MZ,NA,NG,NI,NO,NZ,OM,PA,PE,PG,PH,PL,PT,QA,RO,RS,RU,RW,SA,SC,SD,SE,SG,SK,SL,SM,ST,SV,SY,TH,TJ,TM,TN,TR,TT,TZ,UA,UG
(71)【出願人】
【識別番号】510149482
【氏名又は名称】ヴイエムウェア インコーポレイテッド
【氏名又は名称原語表記】VMware,Inc.
(74)【代理人】
【識別番号】100105957
【弁理士】
【氏名又は名称】恩田 誠
(74)【代理人】
【識別番号】100068755
【弁理士】
【氏名又は名称】恩田 博宣
(74)【代理人】
【識別番号】100142907
【弁理士】
【氏名又は名称】本田 淳
(72)【発明者】
【氏名】ツェン、ハオチャン
(72)【発明者】
【氏名】シンガラヴェル、レーニン
(72)【発明者】
【氏名】アガーワル、シルピ
(72)【発明者】
【氏名】ヘクト、ダニエル マイケル
(72)【発明者】
【氏名】スミス、ギャレット
(57)【要約】
ホストコンピュータは、複数の仮想マシンの実行をサポートする仮想化ソフトウェアを有し、仮想化ソフトウェアは仮想マシンのそれぞれに仮想マシンモニタを含み、各仮想マシンモニタは対応する仮想マシンの仮想中央演算処理装置(CPU)をエミュレートする。仮想マシンモニタは、対応する仮想マシンから第1の中止命令を受信し、仮想マシンが待ち時間の影響を受けやすいか否かを判断することにより、仮想マシンの仮想CPUの実行を中止する。仮想マシンが待ち時間の影響を受けやすい場合、仮想CPUが実行される物理的CPUを中止する第2の中止命令が、仮想マシンモニタから発行される。仮想マシンが待ち時間の影響を受けやすくない場合、仮想CPUがアイドル状態であることを示すシステムコールが、ホストコンピュータで実行中のカーネルに対して実行される。
【特許請求の範囲】
【請求項1】
複数の仮想マシンの実行をサポートする仮想化ソフトウェアを有するホストコンピュータであって、前記仮想化ソフトウェアは、前記複数の仮想マシンのそれぞれの仮想マシンモニタを含み、各仮想マシンモニタは、対応する仮想マシンの仮想中央演算処理装置(CPU)をエミュレートする、前記ホストコンピュータにおいて、仮想マシンの仮想中央演算処理装置の実行を中止する方法であって、
対応する仮想マシンから仮想マシンモニタにおいて第1の中止命令を受信するステップと、
前記仮想マシンが待ち時間の影響を受けやすいか否かを前記仮想マシンモニタによって判断するステップと、
前記仮想マシンが待ち時間の影響を受けやすい場合、前記仮想マシンモニタから、前記仮想中央演算処理装置が実行される物理的中央演算処理装置を中止する第2の中止命令を発行するステップと、
前記仮想マシンが待ち時間の影響を受けやすくない場合、前記仮想中央演算処理装置がアイドル状態であることを示すシステムコールを前記ホストコンピュータで実行中のカーネルに対して実行するステップとを備える、方法。
【請求項2】
前記第1の中止命令は、前記仮想マシンで実行中のゲストオペレーティングシステムによって発行される、請求項1に記載の方法。
【請求項3】
前記仮想マシンが待ち時間の影響を受けやすい場合、前記仮想中央演算処理装置は、前記物理的中央演算処理装置において排他的モードで実行される、請求項1に記載の方法。
【請求項4】
前記仮想マシンが待ち時間の影響を受けやすいか否かを判断するステップは、
前記仮想マシンの待ち時間感度インジケータを読み出すステップと、
前記仮想マシンの中央演算処理装置エンタイトルメント値を読み出すステップと、
前記待ち時間感度インジケータが所定の値を有するか否かを判断するステップと、
前記中央演算処理装置エンタイトルメント値が最大値であるか否かを判断するステップとを含む、請求項1に記載の方法。
【請求項5】
前記システムコールは、カーネル中央演算処理装置スケジューラに対して行われる、請求項1に記載の方法。
【請求項6】
前記カーネル中央演算処理装置スケジューラは、前記システムコールに応答して、前記仮想中央演算処理装置をスケジュール解除する、請求項5に記載の方法。
【請求項7】
前記システムコールに応答して、前記カーネル中央演算処理装置スケジューラは、前記物理的中央演算処理装置を前記仮想中央演算処理装置から割り振り解除し、前記物理的中央演算処理装置を他のタスクに割り振る、請求項6に記載の方法。
【請求項8】
ホストコンピュータによって実行可能な命令を含む非一時的なコンピュータ可読媒体であって、前記ホストコンピュータは、複数の仮想マシンの実行をサポートする仮想化ソフトウェアを有し、前記仮想化ソフトウェアは、前記複数の仮想マシンの各々の仮想マシンモニタを含み、各仮想マシンモニタは、対応する仮想マシンの仮想中央演算処理装置(CPU)をエミュレートし、前記命令は、実行されると、前記ホストコンピュータに仮想マシの仮想中央演算処理装置の実行を中止する方法を実行させ、前記方法は、
対応する仮想マシンから仮想マシンモニタにおいて第1の中止命令を受信するステップと、
前記仮想マシンが待ち時間の影響を受けやすいか否かを前記仮想マシンモニタによって判断するステップと、
前記仮想マシンが待ち時間の影響を受けやすい場合、前記仮想マシンモニタから、前記仮想中央演算処理装置が実行される物理的中央演算処理装置を中止する第2の中止命令を発行するステップと、
前記仮想マシンが待ち時間の影響を受けやすくない場合、前記仮想中央演算処理装置がアイドル状態であることを示すシステムコールを前記ホストコンピュータで実行中のカーネルに対して実行するステップとを備える、コンピュータ可読媒体。
【請求項9】
前記第1の中止命令は、前記仮想マシンで実行中のゲストオペレーティングシステムによって発行される、請求項8に記載のコンピュータ可読媒体。
【請求項10】
前記仮想マシンが待ち時間の影響を受けやすい場合、前記仮想中央演算処理装置は、前記物理的中央演算処理装置において排他的モードで実行される、請求項8に記載のコンピュータ可読媒体。
【請求項11】
前記仮想マシンが待ち時間の影響を受けやすいか否かを判断するステップは、
前記仮想マシンの待ち時間感度インジケータを読み出すステップと、
前記仮想マシンの中央演算処理装置エンタイトルメント値を読み出すステップと、
前記待ち時間感度インジケータが所定の値を有するか否かを判断するステップと、
前記中央演算処理装置エンタイトルメント値が最大値であるか否かを判断するステップとを含む、請求項8に記載のコンピュータ可読媒体。
【請求項12】
前記システムコールは、カーネル中央演算処理装置スケジューラに対して行われる、請求項8に記載のコンピュータ可読媒体。
【請求項13】
前記カーネル中央演算処理装置スケジューラは、前記システムコールに応答して、前記仮想中央演算処理装置をスケジュール解除する、請求項12に記載のコンピュータ可読媒体。
【請求項14】
前記システムコールに応答して、前記カーネル中央演算処理装置スケジューラは、前記物理的中央演算処理装置を前記仮想中央演算処理装置から割り振り解除し、前記物理的中央演算処理装置を他のタスクに割り振る、請求項13に記載のコンピュータ可読媒体。
【請求項15】
仮想化計算システムであって、
複数の仮想マシンの実行をサポートする仮想化ソフトウェアを有するホストコンピュータと、
カーネルスケジューラと、
前記複数の仮想マシンのそれぞれの仮想マシンモニタであって、各仮想マシンモニタは、対応する仮想マシンの仮想中央演算処理装置(CPU)をエミュレートし、各仮想マシンモニタは、仮想マシンの仮想中央演算処理装置の実行を中止する方法を実行するように構成される、前記仮想マシンモニタと
を備え、前記方法は、
対応する仮想マシンから仮想マシンモニタにおいて第1の中止命令を受信するステップと、
前記仮想マシンが待ち時間の影響を受けやすいか否かを前記仮想マシンモニタによって判断するステップと、
前記仮想マシンが待ち時間の影響を受けやすい場合、前記仮想マシンモニタから、前記仮想中央演算処理装置が実行される物理的中央演算処理装置を中止する第2の中止命令を発行するステップと、
前記仮想マシンが待ち時間の影響を受けやすくない場合、前記仮想中央演算処理装置がアイドル状態であることを示すシステムコールを前記ホストコンピュータで実行中のカーネルに対して実行するステップとを備える、システム。
【請求項16】
前記第1の中止命令は、前記仮想マシンで実行中のゲストオペレーティングシステムによって発行される、請求項15に記載のシステム。
【請求項17】
前記仮想マシンが待ち時間の影響を受けやすい場合、前記仮想中央演算処理装置は、前記物理的中央演算処理装置において排他的モードで実行される、請求項15に記載のシステム。
【請求項18】
前記仮想マシンが待ち時間の影響を受けやすいか否かを判断するステップは、
前記仮想マシンの待ち時間感度インジケータを読み出すステップと、
前記仮想マシンの中央演算処理装置エンタイトルメント値を読み出すステップと、
前記待ち時間感度インジケータが所定の値を有するか否かを判断するステップと、
前記中央演算処理装置エンタイトルメント値が最大値であるか否かを判断するステップとを含む、請求項15に記載のシステム。
【請求項19】
前記システムコールは、カーネル中央演算処理装置スケジューラに対して行われる、請求項15に記載のシステム。
【請求項20】
前記カーネル中央演算処理装置スケジューラは、前記システムコールに応答して、前記仮想中央演算処理装置をスケジュール解除し、前記物理的中央演算処理装置を前記仮想中央演算処理装置から割り振り解除し、前記物理的中央演算処理装置を他のタスクに割り振る、請求項19に記載のシステム。
【発明の詳細な説明】
【背景技術】
【0001】
「待ち時間の影響を受けやすい(latency sensitive : 待ち時間感度)」ものとして特徴付けられたアプリケーションは通常、アプリケーションが実行される計算環境によってもたらされる実行遅延及びジッタ(すなわち、予測不能性)の影響を非常に受けやすい。待ち時間の影響を受けやすいアプリケーションの例としては金融取引システムが挙げられ、金融取引システムは通常、証券価格設定又は取引の実行及び決済等の機能を実行する際、瞬時応答時間を必要とする。
【0002】
実行遅延の一原因は、システムカーネル、特に、システムカーネルにおいて実行されるカーネルスケジューラである。システム及びユーザタスクのスケジューリング及びスケジューリング解除は、幾つかの方法で待ち時間の一因となる。第1に、実行に向けてスケジュールされたタスクは、特定の中央演算処理装置(CPU)のキュー内でかなりの時間量を費やしてから、そのCPUでの実行に向けてディスパッチされ得る。さらに、タスクは、実行されると、より高い優先度のタスクによってプリエンプトされ得る。
【発明の概要】
【発明が解決しようとする課題】
【0003】
(仮想マシン用に物理的CPUをエミュレートする)仮想CPUが、仮想マシンのゲストオペレーティングシステムによって中止される場合、仮想CPUの実行は、物理的CPUで中止される。これは通常、カーネルスケジューラが、幾つかの物理的プロセッサでの仮想CPUの実行をプリエンプトし、後で実行するために仮想CPUに対応するタスクをキューに入れることによって達成される。仮想CPUが再び実行可能な状態になると、仮想CPUタスクは通常、同じ又は他のCPUの実行キューに配置されて、そのCPUで続けて実行される。カーネルスケジューラが、仮想CPUをプリエンプトすること及び仮想CPUが実行可能な状態になったときに仮想CPUを再びキューに入れることの両方による介入が、待ち時間の原因であり、プリエンプトされた仮想CPUで実行中の待ち時間の影響を受けやすいアプリケーションに問題を生じさせるおそれがある。
【課題を解決するための手段】
【0004】
ホストコンピュータでの仮想マシンの仮想CPUの実行を中止する方法が提供され、ホストコンピュータは、複数の仮想マシンの実行をサポートする仮想化ソフトウェアを有し、仮想化ソフトウェアは仮想マシンのそれぞれに仮想マシンモニタを含み、各仮想マシンモニタは、対応する仮想マシンの仮想中央演算処理装置(CPU)をエミュレートする。本方法は、対応する仮想マシンから仮想マシンモニタにおいて第1の中止命令を受信するステップと、仮想マシンが待ち時間の影響を受けやすいか否かを仮想マシンモニタによって判断するステップとを含む。本方法は、仮想マシンが待ち時間の影響を受けやすい場合、仮想マシンモニタから、仮想CPUが実行される物理的CPUを中止する第2の中止命令を発行するステップを更に含む。本方法は、仮想マシンが待ち時間の影響を受けやすくない場合、仮想CPUがアイドル状態であることを示すシステムコールをホストコンピュータで実行中のカーネルに対して実行するステップを更に含む。
【0005】
更なる実施形態は、実行されると、ホストコンピュータに上記方法の1つ又は複数の態様を実施させる命令を含む非一時的コンピュータ可読媒体並びにホストコンピュータと、カーネルスケジューラと、上記方法の1つ又は複数の態様を実施するように構成された仮想マシンモニタとを含む仮想化計算システムを提供する。
【図面の簡単な説明】
【0006】
図1】1つ又は複数の実施形態が実施され得る仮想化計算環境を示す図である。
図2】実施形態による、待ち時間感度情報を記憶するテーブルを示すブロック図である。
図3】1つ又は複数の実施形態による、待ち時間の影響を非常に受けやすい仮想マシンによって発行された中止命令の処理を示す図である。
図4】1つ又は複数の実施形態による、待ち時間の影響を非常に受けやすい仮想CPUを中止する方法を示す流れ図である。
【発明を実施するための形態】
【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〜110を含む。示される各VM110は1つ又は複数のアプリケーション111の実行をサポートし、各アプリケーション111は特定のゲストOS112の制御下で実行される。アプリケーション111は、例えば、ワードプロセッサ又はスプレッドシートプログラム(spreadsheet programs)等のユーザレベル(非カーネル)プログラムである。示される各ゲストOS112は、マイクロソフト社(Microsoft Corp.)からの任意のバージョンのウィンドウズ(Windows)(登録商標)オペレーティングシステム、リナックス(Linux)(登録商標)オペレーティングシステム、又はアップル社(Apple, Inc.)からのMac OS(登録商標)X等のよく知られた市販のオペレーティングシステムの1つであり得る。アプリケーション及びゲストOSがVM毎に異なり得ることに留意されたい。したがって、VM110内のアプリケーション111は、ゲストOS112としてウィンドウズ(Windows)(登録商標)7の制御下で実行されるマイクロソフト(Microsoft)のワード(Word)(登録商標)及びエクセル(Excel)(登録商標)アプリケーションを含み得る。これとは対照的に、VM110内のアプリケーション111は、ゲストOS112としてMacOS(登録商標)Xの制御下で実行されるサファリ(Safari)(登録商標)ウェブブラウザを含み得る。
【0011】
図1に示されるように、各VM110〜110及びユーザプログラム115は、本明細書ではハイパーバイザ130と呼ばれるハイパーバイザ構成要素と通信する。
ハイパーバイザ130は、図1に示されるように、コンピュータホスト100でプロセスを実行するためのオペレーティングシステムプラットフォームを提供する。ハイパーバイザ130は、コンピュータホスト100内の全てのハードウェアデバイスを制御し、そこで実行される全てのアプリケーションのシステムリソースを管理する。ハイパーバイザ130が提供するコア機能は、特に、コンソールサービス、ファイルシステムサービス、デバイスドライバ、及びリソーススケジューリングである。さらに、ハイパーバイザ130は、ホストコンピュータでの1つ又は複数の仮想マシンのインスタンス化を提供するソフトウェア構成要素を実施する。
【0012】
図1の実施形態に示されるように、ハイパーバイザ130は仮想マシンモニタ(VMM)131〜131を含む。各VMM131は実行中のVM110に対応する。したがって、VMM131はVM110に対応し、VMM131はVM110に対応し、以下同様である。各VMM131は、対応する仮想マシンのゲストOSに仮想ハードウェアプラットフォームを提供するソフトウェアレイヤである。対応するVMが、ハイパーバイザ130のカーネル構成要素(図1ではカーネル136として示される)によって提供されるサービスにアクセスするのは、特定のVMM131を通してである。カーネル136によって実行される機能は、特に、メモリ管理、ネットワーキング及び記憶スタックの提供、及びプロセススケジューリングである。
【0013】
図1での各VMM131は、対応するVM110の仮想ハードウェアプラットフォームを実施する。実施される仮想ハードウェアプラットフォームの構成要素は、特に、1つ又は複数の仮想中央演算処理装置(又はVCPU)125である。図1では、VMM131はVCPU125を実施し、VMM131はVCPU125を実施し、以下同様である。各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〜145を有する。図に示されるように、カーネルスケジューラ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及びVM110にそれぞれ対応するVM ID210及び210のエントリを有する。
【0025】
VM ID210毎に、待ち時間感度テーブル155は2つの値を記憶する。第1の値は待ち時間感度インジケータである。このインジケータは2つの別個の値(Y又はN等)を有し、この値は、対応する仮想マシンが待ち時間高感度であるか否かを示す。他の実施形態では、待ち時間感度インジケータは3つ以上の値(例えば、高、中、低、又は普通)を有し、対応する仮想マシンの異なる程度の待ち時間感度の指定を提供する。図2では、(VM110に対応する)VM ID210は、待ち時間感度インジケータがNに設定されているため、待ち時間高感度ではない仮想マシンを識別する。他方、(VM110に対応する)VM ID210は、対応する待ち時間感度インジケータがYに設定されているため、待ち時間高感度である仮想マシンを識別する。例えば、VM110は、リアルタイム金融取引アプリケーションを実行する仮想マシンであり、一方、VM110は、通常、瞬時応答時間を必要とせず、一般に、仮想化計算環境で生じるジッタによる影響を受けないバッチ処理アプリケーション(課金システム等)を実行する仮想マシンであり得る。
【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によって識別されるように)VM110は、40パーセント(%)のエンタイトルメント値を有し、物理的CPUの40%がVM110に関連付けられたVCPU(すなわち、VCPU125)に確保されることを意味する。この例では、VM110が1つのみのVCP125を有すると仮定されることに留意されたい。しかし、VM110が2つ以上のVCPUを有する場合、それらのVCPUのそれぞれは、1つの物理的CPUの確保容量の40%を共有する。
【0029】
図2を参照すると、(VM ID210によって識別されるように)VM110は、100%の対応するエンタイトルメント値を有する。したがって、ホストは、物理的CPUの容量の100%をVM110に確保する。
【0030】
1つ又は複数の実施形態によれば、仮想マシンが待ち時間高感度であり、且つ最大エンタイトルメント値を有する場合、その仮想マシンには、1つ又は複数の物理的CPUへの排他的アフィニティ(exclusive affinity)が認められる。例えば、VM110が1つの仮想CPU VCPU125を有すると仮定すると、VM110(又は特に、VCPU125)には、コンピュータホスト100内の1つの物理的CPU(すなわち、PCPU145〜145の1つ)への排他的アフィニティが付与される。他方、VM110が2つの仮想CPUを有する場合、両方の仮想CPUに物理的CPUへの排他的アフィニティが付与されるように、VM ID210の待ち時間感度テーブル155内のエンタイトルメント値は、200%に設定される(すなわち、VM110に対応する1組のVCPU125内の各仮想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及びゲストOS112等)は、仮想マシンが実行する追加のタスクを有するか否かを検出するように構成される。仮想マシンが実行する追加のタスクを有さない場合、仮想マシン内のゲストオペレーティングシステムは、「仮想」中止命令を発行し得る。すなわち、ゲストオペレーティングシステムは、仮想マシンの1つ又は複数の仮想CPUに中止(HLT又はMWAIT等)命令を発行し得る。これは、仮想マシンがいかなる有用タスクも実行してないときに電力を節減するために行われる。
【0034】
仮想マシンのゲストオペレーティングシステムが中止命令を仮想CPUに発行する場合、命令は対応するVMMによって受信され処理される。仮想マシンが待ち時間高感度ではない場合、VMMは、中止された仮想CPUの実行に前に割り振られていた任意の物理的CPUを割り振り解除する(deallocate)ようにカーネルに命令する。この状況は図3に示され、VM110で実行中のゲストOS112は、(310で示される)VCPU125を中止する中止命令を発行する。図2に示される待ち時間感度テーブル155に記憶される情報に基づいて、VM110が待ち時間高感度仮想マシンではないことに留意されたい。これは、(VM110に対応する)VM ID210の待ち時間感度インジケータがNに設定されていること、及びVM ID210のエンタイトルメント値が最大値(例えば、100%)ではないことに起因する。したがって、VMM131は、中止命令を受信し、中止命令に応答して、(図3では315として示される)カーネルコールを行い、VCPU125がアイドルであることをカーネルスケジューラ135に通信する。
【0035】
カーネルコール315に応答して、カーネルスケジューラ135は、VCPU125から、VCPU125が現在実行中のあらゆる物理的CPUを割り振り解除する。このプロセスは、図3において矢印320によって示されている。例えば、図2において、タスク300が、現在、PCPU145で実行中のタスクであると仮定する。さらに、タスク300はVCPU125に対応する。すなわち、タスク300は、物理的CPU PCPU145でのVCPU125の実行を表す。カーネルコール315に応答して、カーネルスケジューラ135は、(点線で示される)PCPU145での実行からタスク300を割り振り解除する。これは、CPU資源を必要とする他のタスクの実行に向けてPCPU145を解放する。図3に示されるように、タスク300が、PCPU145での実行にカーネルスケジューラ135によって選択される。仮想中止要求310、カーネルコール315、及びスケジューリングタスク320の処理がそれぞれ、物理的CPU資源を消費し、したがって、待ち時間の一因となることに留意されたい。さらに、(例えば、ソフトウェア割り込みを受信することにより)VCPU125がタスクを実行する準備ができると、カーネルスケジューラ135は物理的CPUでの実行に向けてVCPUを再スケジューリングする必要があり、これは待ち時間の更なる原因である。
【0036】
VM110とは対照的に、VM110は待ち時間高感度仮想マシンである。これは、(VM110に対応する)VM ID210の待ち時間感度インジケータがYに設定されていること、及びVM ID210のエンタイトルメント値が最大値(すなわち、100%)に設定されていることに起因する。この場合、ゲストOS112が中止命令(すなわち、HLT、MWAIT、又は同等の命令)をVCPU125に発行すると、VMM131は命令をインターセプトする(intercept)。次に、VMM131は、VM110が待ち時間高感度であると判断し、したがって、対応するVCPUがコンピュータホスト100の1つ又は複数の物理的CPUに排他的アフィニティを有する状態で実行される。例えば、図3では、VMM131は、VCPU125が、PCPU145に排他的アフィニティを有して実行されると判断する。したがって、VCPU125の中止を行うために、VM131は、物理的中止命令(例えば、物理的HLT、MWAIT、又は同等の命令)を物理的CPU PCPU145に発行する。待ち時間高感度VM110の場合、VMM131が、VCPU125がアイドルであることを通知するカーネルコールを行わないことに留意されたい。むしろ、中止命令がPCPU145に直接発行され、このことは、(VCPU125に対応し、PCPU145で実行されているものとして示されている)タスク300からPCPU145を割り振り解除せずに、そのタスク300を中止するという効果がある。したがって、VCPU125が、中止命令の受信に続けて割り込みを受ける場合、PCPU145は、カーネルスケジューラ135が対応するいかなるタスクもスケジュールする必要もなく、VCPU125に対する処理を即座に開始することが可能である。したがって、非待ち時間高感度VM110に提示される待ち時間は、待ち時間高感度VM110に対しては存在しない。
【0037】
図4は、1つ又は複数の実施形態による、待ち時間高感度仮想マシンの仮想CPUを中止する方法400を示す流れ図である。示されるように、方法400のステップは、仮想マシンモニタ(図3に示されるVMM131又はVMM131等)及びカーネルスケジューラ(カーネルスケジューラ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つの構成要素として提示される構造及び機能は、別個の構成要素として実施され得る。これら及び他の変形、変更、追加、及び改善は、添付の特許請求の範囲内にあり得る。
図1
図2
図3
図4
【国際調査報告】