JP6381956B2 - 動的仮想マシンサイジング - Google Patents

動的仮想マシンサイジング Download PDF

Info

Publication number
JP6381956B2
JP6381956B2 JP2014093823A JP2014093823A JP6381956B2 JP 6381956 B2 JP6381956 B2 JP 6381956B2 JP 2014093823 A JP2014093823 A JP 2014093823A JP 2014093823 A JP2014093823 A JP 2014093823A JP 6381956 B2 JP6381956 B2 JP 6381956B2
Authority
JP
Japan
Prior art keywords
virtual
virtual machine
processors
processor
virtual processors
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.)
Active
Application number
JP2014093823A
Other languages
English (en)
Other versions
JP2014219977A (ja
JP2014219977A5 (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.)
VMware LLC
Original Assignee
VMware LLC
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 VMware LLC filed Critical VMware LLC
Publication of JP2014219977A publication Critical patent/JP2014219977A/ja
Publication of JP2014219977A5 publication Critical patent/JP2014219977A5/ja
Application granted granted Critical
Publication of JP6381956B2 publication Critical patent/JP6381956B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は概して、コンピュータとコンピュータシステムの分野に関する。いくつかの例では、本発明は、仮想コンピュータ環境における仮想マシンをホストする物理的コンピュータデバイスに関する。
物理的コンピュータデバイス上に仮想コンピュータ環境を設けることが知られている。仮想コンピュータ環境は、複数の仮想マシン(VM : virtual machine)ゲストが単一物理的プラットホーム上で実行され物理資源を共有できるようにし得る。いくつかの仮想コンピュータ環境は、使用のためにVMにより指定されるプロセッサの総数がホスト上で利用可能な物理的プロセッサの実際の数より多くなる方法でVMを構成できるようにする。これはCPUオーバーコミットメントと呼ばれ、より多くのVMを単一ホスト上に詰め込めるようにする。
さらに、仮想マシンには2つ以上の仮想CPUを割り振ることができ、ユーザに、複数のプロセスまたはマルチスレッドアプリケーションを生み出すアプリケーションを実行できるようにする。しかし、その作業負荷よりも多い仮想CPU(vCPU)により仮想マシンを構成することは、オーバーヘッドのためより多くの資源を使用する可能性があり、これにより高負荷システムの性能に影響を与えることになる。このシナリオの例としては、複数のvCPU仮想マシンにおいて実行するシングルスレッド作業負荷、または作業負荷が有効使用できるより多くのvCPUを有する仮想マシンにおいて実行するマルチスレッド作業負荷が挙げられる。
さらに、仮想マシンには通常、仮想マシンの配備時にCPU資源(およびメモリ資源)が割り振られ、これらの割り振りを変更することは通常、仮想マシンをオフラインにし、設定を再構成し、仮想マシンをオンラインに戻すことを含む。このプロセスはシステム管理者にとって時間がかかる可能性があり、仮想マシン上のサービスへのアクセスを妨げる。
C.A.ワルドスパージャー(C. A. Waldspurger)著、「VMware・ESX・サーバーのメモリリソース管理(Memory Resource Management in Vmware ESX Server)」、OSDIの第5回討論会の議事録("ln Proceedings of the 5th Symposium on OSDI)、ボストン、マサチューセッツ州、2002年12月9〜11日、インターネット<http://www.usenix.org/events/osdiO2/tech/waldspurger.html>、15ページ Z.ムワイカンボ、他著(Z. Mwaikambo, et al.,)、「リナックスカーネルホットプラグCPUサポート(Linux Kernel Hotplug CPU Support)」、オタワでのリナックス討論会(In Ottawa Linux Symposium)、第2巻、オタワ、オンタリオ州、カナダ、2004年7月21〜24日、16ページ K.アダムスおよびO.アジェセン(K. Adams and O.Agesen)著、「x86仮想化のソフトウェア技術およびハードウェア技術の比較(A Comparison of Software and Hardware Techniques for x86 Virtualization)」、オペレーションシステムのレビュー(Operating Systems Review)、40(5):2−13、2006年12月、ISSN O163-5980、12ページ VMware lnc.,、「ゲストオペレーティングシステム要求のタイマー割り込みのレート決定および変更(Determining and Changing the Rate of Timer lnterrupts a Guest Operating System Requests)」、インターネット<http://kb.vmware.com/kb/1005802>、更新:2011年1月25日、4ページ VMware lnc.,、「VMware・vSphere 5.0 のベスト動作の実行(Performance Best Practices for VMware vSphere 5.0)」、インターネット<http://www.vmware.com/pdf/Pert_Best_Practices_vSphere5.0.pdf>、改訂:2011年8月22日、76ページ
ここで、仮想コンピュータ環境を実現する際に物理的コンピュータプラットホームの資源をより効率的に使用することなど現在利用可能なコンピュータシステムを改善する要望がある。例示的実施形態の他の利点は以下に記載されるか、または本明細書の教示を実行することにより当業者らにより理解される。
本発明によると、添付の特許請求の範囲に記載されるコンピュータシステムと方法が提供される。本発明の他の特徴は従属請求項と以下の説明から明確になる。
本開示の実施形態は、ホストであってホスト上で実行する仮想マシンを有するホスト内のCPUを管理する方法を提供する。仮想マシンには複数の仮想CPUが割り振られる。本方法は、仮想マシンによるプロセッサ要求に基づき、仮想マシン用に活性化された仮想CPUの現在数よりも多い仮想CPUの目標数を決定することを含む。本方法はさらに、仮想マシンのゲストオペレーティングシステム内の優先プロセススレッドを立ち上げることを含む。優先プロセススレッドは、複数の仮想CPUのうちの第1の仮想CPUに関連付けられ、且つ停止命令を含む。本方法は、ゲストオペレーティングシステム内のゲストスケジューラの動作により、複数の仮想CPUのうちの第1の仮想CPUを使用して優先プロセススレッドを実行することを含む。本方法はさらに、ホスト内のハイパーバイザの動作により、第1の仮想CPUが停止命令を実行していることを検出することに応答して、ホストの1つまたは複数の物理的CPU上の第1の仮想CPUの実行をスケジュール解除することを含む。
実施形態が実施され得る仮想化コンピュータアーキテクチャを示すブロック図である。 仮想マシンの目標仮想CPUサイズを決定するために仮想化層により実行される工程を示す流れ図である。 カーネルスケジューラから目標仮想CPUサイズを受信することに応答して仮想マシンの目標仮想CPUサイズを実装するためにバルーンドライバにより実行される工程を示す流れ図である。 仮想CPUサイズがカーネルスケジューラから受信された目標仮想CPUサイズと同じである場合の、仮想マシンのゲストスケジューラによる仮想CPUへのスレッドのディスパッチングを示すブロック図である。 仮想CPUサイズがカーネルスケジューラから受信された目標仮想CPUサイズを超えた場合の、スレッドを複数の仮想CPUへディスパッチし、バルーンスレッドを1つの仮想CPUへディスパッチする仮想マシンのゲストスケジューラを示すブロック図である。
本開示の態様はプロセス、装置、システム、デバイス、コンピュータ読み取り可能媒体上の方法など多くの方法で実施されることができるということを理解すべきである。本開示のいくつかの実施形態について以下に説明する。
図1は、実施形態が実施され得る仮想化コンピュータアーキテクチャを表すコンピュータシステム100のブロック図を描写する。図示のように、コンピュータシステム100は、共通のハードウェアプラットホーム102上で実行し共通のハードウェアプラットホーム102を共有する複数の仮想マシン(VM)118〜118をホストする。ハードウェアプラットホーム102は、1つまたは複数の中央処理装置(CPU : central processing unit)104、ランダムアクセスメモリ(RAM : random access memory)106、1つまたは複数のネットワークインタフェース108、および固定記憶装置110など従来のコンピュータハードウェアの構成要素を含む。
以下では、ハイパーバイザ111と呼ばれる仮想化ソフトウェア層が、ハードウェアプラットホーム102上に設けられる。ハイパーバイザ111は、1つまたは複数のVM118〜118の並列インスタンス化と実行を可能にする。VM118とハイパーバイザ111との相互作用は、仮想マシンモニタ(VMM : virtual machine monitor)により容易にされる。各VMM134〜134は、対応するVM118〜118に割り当てられ、対応するVM118〜118を監視する。一実施形態では、ハイパーバイザ111は、米国カリフォルニア州パロアルトのVMware(商標)社から入手可能なVMwareのvSphere(登録商標)仮想化製品の商品として実装されるVMkernel(商標)であり得る。別の実施形態では、ホストオペレーティングシステムは、ハイパーバイザ111とハードウェアプラットホーム102との間に設けられる。このような実施形態では、ハイパーバイザ111は、ホストオペレーティングシステムにより提供される抽象化レベル上で動作する。
インスタンス化(instantiation)後、各VM118〜118は、ハイパーバイザ111の制御下で実行される物理的コンピュータプラットホームを隠蔽する(encapsulate)。VM118の仮想デバイス(virtual device)は、これらに限定しないが、1つまたは複数の仮想中央処理装置(virtual CPU)(vCPU)122〜122、仮想ランダムアクセスメモリ(vRAM)124、仮想ネットワークインタフェースアダプタ(vNIC)126、および仮想記憶装置(vStorage)128からなる仮想ハードウェアプラットホーム120内に具現される。仮想ハードウェアプラットホーム120は、アプリケーション132を実行することができるゲストオペレーティングシステム(ゲストOS)130の実装(installation)を支援する。ゲストOS130の例としては、マイクロソフトウインドウズ(登録商標)、リナックス(登録商標)などの周知の汎用オペレーティングシステムの任意のものが挙げられる。
図1に示す実施形態では、ゲストOS130は、複数のコンピュータタスク(プロセスと呼ばれる)が同じ期間中に行われ共通の処理資源を共有する方法であるマルチタスキング(multitasking)を支援するスケジューラ部品(ゲストスケジューラ133として描写される)を含む。ゲストスケジューラ133は、様々なアルゴリズム(例えばラウンドロビン(round-robin)、ファーストインファーストアウト、プリエンプティブスケジューリング(pre-emptive scheduling)など)を同時に使用することにより実行しコンピュータ資源(例えばvCPU122)にアクセスする複数のプロセスをスケジューリングしディスパッチするように構成される。例えば、ゲストスケジューラ133は、高い実行優先順位を有するプロセスが低い優先順位を有するプロセスよりも多くの時間を許可されるように、プロセスの優先順位を考慮することによりvCPU122へのアクセスを管理し得る。別の例では、マルチプロセッサ環境(例えば複数のvCPU122を有するVM)では、ゲストスケジューラ133は、他のvCPUよりビジー状態でないvCPU122へプロセスをディスパッチし得る。
上述のように、コンピュータシステム100内で実行するVM118は、1乃至多数のvCPU122〜122を有するように構成することができる(N個のvCPUを有するVMはN−ウェイ・仮想マシンと呼ばれることもある)。論述のために、本明細書で使用される「大きな」仮想マシンは多くのvCPUを有する仮想マシンを指し、本明細書で使用される「小さな」仮想マシンはわずかなvCPUを有する仮想マシンを指す。一実施形態では、VM118は、最大64のvCPUを有するように構成され得る。しかし、いくつかの場合には、多くのvCPU122を有するVM118は、内在する物理的CPU104の利用率、スループット、他の性能メトリックという点で、少ないvCPU122を有するVM118よりも低効率で動作し得る。多くの要因が、大きなN−ウェイ・VMの非効率に寄与し得る。未使用vCPUは、いくつかのゲストオペレーティングシステムにおいてタイマー割り込み(timer interrupt)を依然として実行し続ける。ゲストスケジューラ133は、シングルスレッド作業負荷を複数のvCPU間で不必要に移動し得、これによりキャッシュ局所性(cache locality)を失う。ゲストOS130は、非活性の期間中に、そうでなければ他の使用のために利用可能な資源を消費することになるアイドルループを実行し得る。VM内で実行するすべてのvCPUの仮想メモリについての一貫した見方を維持することは、ゲストOS130と内在するハイパーバイザ111の両方において追加資源を消費する可能性がある。このような問題のために、システム管理者は、最近のコンピュータアプリケーションの要求がより厳しくなり、ますます大きな仮想マシンを必要としたとしても、2−ウェイVMを超えるものを提供することに乗り気でないこともある。このVMサイジング問題は、VM効率(例えば、ユーザに8−ウェイ・VMを与えることで効率問題を引き起こす)とVM機能との間の矛盾を引き起こす(例えば、ユーザに2−ウェイ・VMを与えることで、大きなVMを必要とするハイエンドアプリケーションを要求する用途を排除する)。したがって、本開示の実施形態は、VMにより必要とされないvCPUを動的に「非活性化する」技術(本明細書ではCPUバルーニング(CPU ballooning)と呼ぶ)を提供する。これは、多くの仮想CPUを有する仮想マシンを実行する効率費用を発生することなく大きなN−ウェイ・仮想マシンを提供する。
本開示の実施形態は、ホストであってホスト上で実行する仮想マシンを有するホスト内のCPU資源を管理するためのCPUバルーニングとして知られた方法またはシステムを提供する。図1は、ゲストOS130下において設けられたバルーンドライバ131を描写する。一実施形態では、バルーンドライバ131は、ゲストOS130下で実行するデバイスドライバである。いくつかの実施形態では、バルーンドライバ131は定期的に実行する、すなわち、バルーンドライバ131はタイマーイベントによりトリガされるまでアイドル状態のままである。実行後、バルーンドライバ131は別のタイマーイベントにより再びトリガされるまでアイドル状態に戻る。タイマーイベントの頻度は管理者により設定され得る。バルーンドライバ131は、VM118による使用のために利用可能なvCPU122の数を調整するためにカーネルスケジューラ113から情報を得る。バルーンドライバ131は、VM118用に活性化されたvCPUの現在数のカウントを維持するように構成される。例えば、VM(例えばVM118)が最初に開始されると、バルーンドライバ131は、VM118に割り振られたvCPUの数と等しいvCPUの現在数のカウントを設定し、この設定にしたがって、以下に述べられる動作中にカウントをインクリメントおよびディクリメントする。
図1にさらに示すように、カーネルスケジューラ113は、ハイパーバイザ111の構成要素である。カーネルスケジューラ113は、所定時間にコンピュータシステム100上で実行する様々なプロセス間に物理的CPU104を割り振ることに関与する。本明細書で使用されるプロセスは、コンピュータプログラムを実行することである。例えば、カーネルスケジューラ113は、どのプロセスがCPU104(またはマルチプロセッサコンプレックスにおける多くのCPUのうちの任意のものの)上で実行されるべきかと、このようなプロセスが実行される順序と、どの実行プロセスが高い優先順位を有するプロセスによりプリエンプトされる(preempted)べきかとを判定し得る。そのスケジューリングの判定をなすために、カーネルスケジューラ113は、実行の準備ができている一組のプロセスと、現在実行中のプロセスのそれぞれの優先順位と、1つまたは複数のシステム資源を現在待っている一組のプロセスとを含む特定データを使用し得る。
物理的CPU104へのアクセスの管理に加えて、カーネルスケジューラ113は、本明細書に記載のいくつかの実施形態では、特定のVM118が所与時点で使用すべきvCPU122の目標数である目標vCPUサイズを決定するように構成される。この目標vCPUサイズは、例えばバックドア(backdoor)インタフェースに対する呼び出しを使用することによりゲストOS130のバルーンドライバ131へ伝達される(方向線114により描写される)。次に、バルーンドライバ131は、以下にさらに詳細に説明されるように、ゲストスケジューラ133がプロセスをディスパッチするvCPU122の数を調整するためにこの推奨(recommendation)を利用する。例えば、VM118が自由に有するvCPU122が十分に利用されない場合、バルーンドライバ131はVM118による使用のために利用可能なvCPU122の数を低減する。対照的に、カーネルスケジューラ113がVM118により使用されるvCPUの数を超えるVM118の目標vCPUサイズを与えると、バルーンドライバ131は、VM118による使用のために利用可能なvCPU122の数を増加しようと試みる。
図1の構成要素を説明するために使用される様々な用語、層、カテゴリ化は、それらの機能または本開示の精神または範囲から逸脱することなく異なる方法で参照され得るということを認識すべきである。例えば、VMM134〜134は、インスタンス化されたVM毎に別個のVMMが存在するのでVM118〜118とハイパーバイザ111間の別個の仮想化部品と考えられ得る。または、このようなVMMが仮想マシンのハードウェアエミュレーションの要素を含むので、各VMMは、その対応する仮想マシンの要素であると考えられ得る。このような代替概念では、例えば、仮想ハードウェアプラットホーム120として説明された概念的層はVMM134にマージされ得る。
図2は、特定のVMの目標vCPUサイズを決定する際にカーネルスケジューラ113により実行される工程を描写する流れ図である。図2に示すように、工程200では、VMにより要求されたvCPUの数がコンピュータシステム100の現在のシステム負荷に基づき決定される。一実施形態では、カーネルスケジューラ113は、式1に示すように、vCPUの要求数を決定する。
vCPUの要求数(すなわちdemandedvcpus)は、(1)VM118に関連付けられたすべてのvCPU122の全要求(すなわちdemandVM)と、(2)VM118に関連付けられたすべてのvCPU122の予想利用率(すなわちexpectedUtilRatioVM)とに基づく。
一実施形態では、vCPUの要求は、「奪われた」時間(stolen time)が無い場合にvCPUが消費することができる時間である。vCPUの奪われた時間は、準備時間、オーバーラップサイクル、パワーマネージメントに対する時間損失、ハイパースレッディング(Hyper-threading)により奪われた時間、および他の変数を含む。準備時間は、システムが他のvCPUを実行するのにビジーであるので、vCPUは実行可能であるが物理的vCPU上で実行するようにスケジュールされていない時間の量である。オーバーラップサイクルは、割り込みと、このvCPUの実行をプリエンプトしたボトムハーフ(BHs:bottom halves)とにより奪われた時間の量である。パワーマネージメントによる損失時間は、周波数スケーリングのための効率損失を表す。例えば、周波数が公称周波数の20パーセントまで落ちると、CPUの80パーセントが奪われたと考えられる。ハイパースレッディング(hyper-threading)に対する時間損失は、パートナーである物理的CPU上で実行する作業負荷により奪われた時間を表す。
vCPUの要求は、実際に使用されるサイクルの量と、「奪われた」サイクルが無い場合にvCPUが使用していたであろうサイクルの量とに基づき推定され得る。一実施形態によると、VM118に関連付けられたvCPUの全要求(すなわちdemandVM)は、式2のように計算される。
式2が示すように、vCPU122の要求は、(1)所定期間内にVM118内で実行するvCPU122により使用されるサイクルの百分率(すなわちCyclesUsedvcpu)、(2)所定期間にVM118内で実行するvCPU122から「奪われた」サイクルの百分率(すなわちCyclesStolenvcpu)、および(3)同じ期間に実行するための容量をvCPU122が有するサイクルの百分率(すなわちCyclesCapacityvcpu)に基づく。vCPU122により使用されるサイクルは、当該vCPU122が命令を実行するサイクルである。対照的に、vCPU122から奪われたサイクルは、vCPU122が実行すべき命令を有するサイクルであるが、例えばシステム負荷のためにそれらの命令を実行することからプリエンプトされる。奪われたサイクルの例としては、vCPU122は実行準備されたが、他のVMのプロセスを実行するコンピュータシステム100のためにディスパッチされなかったサイクルと、vCPU122が外部割り込みを処理するコンピュータシステム100によりプリエンプトされたサイクルとが挙げられる。最後に、vCPU122の容量(すなわちCyclesCapacityvcpu)は、vCPU122が「奪われた」サイクルが無い場合に所定期間にわたって消費する能力を有するサイクルの百分率である。さらに、VM118の要求(すなわちdemandVM)は、VM118内で実行するvCPU122の要求の合計である。
式2に示すように、使用されるサイクルの百分率(CyclesUsedvcpu)は、vCPU122の奪われたサイクルの百分率(CyclesStolenvcpu)とvCPUの所定期間にわたる容量(CycleCapacityvcpu)の積に加算され、その結果はvCPUの現在の要求(demandvcpu)として使用される。例えば、所定期間にわたるVM118内で実行するvCPU122により使用されるサイクルの百分率が30であり、所定期間にわたるvCPU122から奪われたサイクルの百分率が50であり、単一vCPU122の容量がその同じ期間にわたって40パーセントである場合、vCPU122の現在の要求は30+50×40%となり、50パーセントに等しい。
予想利用率(すなわちexpectedUtilRatioVM)は、ハイパーバイザ111によりインスタンス化されたVM毎に構成可能な値であり、VM118のvCPU122が有すべきかつ、許容可能な性能を依然として提供すべき利用率(百分率表現)を表す。予想利用率は、管理者によりVM118が構成されるときに設定され、VM118の実行中に変更され得る。例えば、予想利用率は、システム利用が70%以下のときにVM内で実行するアプリケーションが十分に動作し続け得るという判定に基づき、70%として構成され得る。
VM118上の現在の要求(demandVM)とVM118の予想利用率(expectedUtilRatioVM)が決定されると、カーネルスケジューラ113は、vCPU122の要求数(すなわちdemandedvcpus)を式1のように計算する。例えば、VM118が110%の現在要求と70%の予想利用率を有すると、vCPU122の要求数は2となる([110/70]=2であるので)。
工程210では、カーネルスケジューラ113は、VM用に構成されたvCPUの数とvCPUの準備時間の量とに基づき、所与のVMに付与されるvCPUの数を決定する。所与のVMの有効なCPU資源権利は、例えばVMを実行するシステムがオーバーコミットされた場合、またはVMの資源割振りが小さい場合、またはその両方の場合、その要求よりも小さくてもよい。したがって、このような場合には少ないvCPUを有するVMを実行する方が効率的であり得ると判定された。一実施形態では、カーネルスケジューラ113は、残りのvCPUが少ない準備時間を有するようにVM用の低減された数のvCPUを決定し、これにより、より効率的に実行する。
一実施形態では、カーネルスケジューラ113は、VM118に付与されるvCPUの有効数(すなわちentitledvcpus)を下記の式3により決定する。
いくつかの実施形態では、カーネルスケジューラ113は、VM118用に定義されるvCPU122の数(すなわちnumvcpus)(VM118が構成された時点で設定される)を最初に記録することにより、VM118に付与されるvCPU122の数(すなわちentitledvcpus)を決定する。次に、カーネルスケジューラ113は、VMのすべてのvCPUの準備時間の量を決定する。上述のように、準備時間は、VMが実行したいが実行するための物理的CPU資源が提供されていない時間である。一実施形態では、準備時間は百分率形式で表され得る、例えば、5%(すなわち0.05)の準備時間を有するVMは、利用可能なCPU資源を待つその最後のサンプル期間の5%をVMが費やしたことを意味する。したがって、一例では、8−ウェイ・VMがレディ(READY)状態に時間の200パーセントを費やせば、権利を付与されるCPUの数は6である(8−|2.00|=6であるので)。
工程220では、カーネルスケジューラ113は、vCPUの要求数(式1において計算されるdemandedvcpus)と特定のVMのvCPUの付与数(式3において計算されるentitledvcpus)とのうちの少ない方に基づいて、式4に記載されるように、特定のVM118の目標vCPUサイズ(すなわちtargetvcpus)を決定する。
図3は、その周期的実行サイクルのうちの1サイクル中にバルーンドライバ131により実行される工程を示す流れ図である。最初に、バルーンドライバ131はタイマーイベントによりトリガされた後「ウェイクアップする(wake up)」。工程300では、バルーンドライバ131は、ハイパーバイザ111(特にカーネルスケジューラ113を有する)と通信し、カーネルスケジューラ113がVM118用に計算した目標vCPUサイズを受信する。この目標vCPUサイズは、カーネルスケジューラ113の見積もりの際にVM118がその仮想ハードウェアプラットホーム120において使用すべきvCPU122の数を表す。次に、工程305では、バルーンドライバ131は、この目標vCPUサイズとVM118が現在使用しているvCPU122の数とを比較する。VM118が現在使用しているvCPU122の数が目標vCPUサイズを超える場合、工程320においてバルーンドライバ131は、受信された目標vCPUサイズに基づき1つまたは複数のバルーンスレッド(balloon thread)を立ち上げる。工程325では、バルーンドライバ131は、バルーンスレッドが実行することになる1つまたは複数のvCPU122を規定する(すなわち、バルーンドライバ131がスレッドをvCPU122に「ピン留めする(pin)」)。このとき、各バルーンスレッドは1つのvCPU122にピン留めされる。
一実施形態では、バルーンスレッドは、ゲストOS130のゲストスケジューラ133がvCPU122をスケジューリング目的のために利用不能と認識するように、特定のvCPU(例えばvCPU1)を占有するように構成されるスレッドである。いくつかの実施形態では、バルーンスレッドは、ゲストスケジューラ133が特定のvCPU上のバルーンスレッドの実行をプリエンプトも中断もし得ないように、ゲストOS130内で実行する他の処理に比べて高いプロセス優先順位を有する優先プロセススレッドである。いくつかの実施形態では、バルーンスレッドは、カーネルスレッド、軽量プロセス(LWP : lightweight process)、またはゲストOS130内で実行する他のプロセスであり得る。バルーンドライバ131はさらに、非活性化対象のvCPUへ「ピン留めされる」バルーンスレッドを構成し得る。例えば、バルーンドライバ131は、バルーンスレッドが特定のvCPUに拘束されるべきであるということをゲストスケジューラ133にシグナリングするプロセッサ親和性設定(processor affinity setting)をバルーンスレッドに対し設定し得る。バルーンスレッドは終了するまで実行を継続するように構成される。
一実施形態では、バルーンスレッドがピン留めされた特定のvCPU122はスケジュール解除されるべきであるということをハイパーバイザ111へ伝達するために、バルーンスレッドはさらに、アイドル命令を実行するように構成され得る。したがって、ハイパーバイザ111は、特定のvCPU122を維持するオーバーヘッドを発生しない。一例では、優先プロセススレッド(バルーンスレッド)は停止命令を含む。1つの特定の実施形態では、バルーンスレッドは、より多くの仕事を行う必要があるまで処理装置(例えばvCPU122)を停止させるコンピュータ命令を有し得る。これにより、処理装置は停止状態(すなわちレディ状態)に移行する。x86コンピュータアーキテクチャのバルーンスレッドの実施形態の例を以下の表1に擬似コードとして示す。
表1 バルーンスレッドのサンプル擬似コード
示されるように、バルーンスレッドは、HLT命令(より多くの仕事を行う必要があるまで処理装置を停止させるアセンブリ言語命令)を繰り返し発行するループとして(例えば、割り込み駆動型プロセッサ内で次の外部割り込みが発射されるまで)実施され得る。他の実施形態では、バルーンスレッドは、スリープモード、MONITOR、MWAITまたは他の機能的に等価な命令を含み得る。いくつかの実施形態では、ハイパーバイザ111は、アイドル命令を実行しているVM118上で実行する任意のゲストプロセスを検知し、アイドル命令が実行されている任意のvCPUを、物理的CPU上での実行からスケジュール解除するように構成される。これらの実施形態では、バルーンスレッド内のHLT命令は、バルーンスレッドを実行する特定のvCPU122がスケジュール解除され得るということをハイパーバイザ111のカーネルスケジューラ113へ伝達する役目を果たす。したがって、ゲストスケジューラ133の観点からは、立ち上げられたバルーンスレッドはvCPUを生じない高優先順位スレッドである。その一方で、カーネルスケジューラ113の観点からは、vCPUはバルーンスレッドのアイドルループにより停止され、物理的CPUからスケジュール解除され得る。
一実施形態では、バルーンドライバ131は、vCPUの目標数とvCPUの現在数との差を満たすためにある数のバルーンスレッドを立ち上げる。各バルーンスレッドを立ち上げ、ピン留めした後、バルーンドライバは、仮想マシン用に活性化されたvCPUの現在数のカウントを更新する。例えば、バルーンドライバ131は、立ち上げられたバルーンスレッド毎のVM用に活性化された仮想CPUの現在数のカウントをディクリメントし得る。
工程330では、バルーンドライバ131が、カーネルスケジューラ113から、VM118により現在使用中のvCPU122の数を超えるvCPU122の目標数を受信すると、工程340において、バルーンドライバ131は、以前に立ち上げられたバルーンスレッドがvCPU122の1つへピン留めされたかどうかを判定する。このようなバルーンスレッドが立ち上げられ、vCPU122上で現在実行中であれば、工程345において、バルーンドライバ131は、ゲストOS130内のバルーンスレッドの実行を停止(kill)する。この停止は、ゲストスケジューラ133の観点からは他のプロセスをスケジューリングするために当該vCPU122を解放することになる。さらに、バルーンドライバ131は、プロセススケジューリングのための追加のvCPU122を解放するために可能な限り多くのバルーンスレッドの実行を停止する。一実施形態では、バルーンスレッドを停止することに応答して、バルーンドライバは、仮想マシン用に活性化されたvCPUの現在数のカウントを更新する。例えば、バルーンドライバ131は、停止されたバルーンスレッド毎にVM用に活性化された仮想CPUの現在数のカウントをインクリメントし得る。
前述の工程を実行した後、バルーンドライバ131は、タイマー割り込みにより再びトリガされるまで、アイドル状態(すなわち「スリープ」)に戻る。
図4Aは、プロセスがゲストスケジューラ133によりスケジュールされ且つディスパッチされる4つの割り振られたvCPU122〜122を有するVM118のブロック図である。ゲストOS130のゲストスケジューラ133は、1つまたは複数のvCPU122〜122上でコンピュータ命令を実行するプロセス(すなわちスレッド)に時間を割り振る。図4Aに描写された領域402は、命令を実行する各vCPUにより費やされた時間の一部としての、各vCPUに関連付けられた要求の量を表す。示された例では、vCPUはプロセスとスレッドを実行するために使用される要求とサイクルの量が変化し得るということを認識すべきであるが、複数のvCPU間の負荷バランスはゲストスケジューラ133により行われ、各vCPUに対する同様な要求量を生じる。
図4Bは、4つのvCPU122〜122を有するVM118のブロック図である。4つのvCPU122〜122上では、VM118がハイパーバイザ111により推奨されたvCPU122の目標数よりも多くのvCPU122を利用しているとバルーンドライバ131が判定した場合、プロセスはゲストスケジューラ133によりスケジュールされてvCPU122〜122のうちの1つまたは複数へディスパッチされる。この例示では、バルーンドライバ131は、線408により描写するようにハイパーバイザ111と通信し(例えばバックドアコールを介し)、VM118が利用すべきvCPU122の目標数を受信する。バルーンドライバ131は、vCPU122のこの目標数と、VM118により活性化され且つVM118による使用のために利用可能であるvCPU122の現在数とを比較する。バルーンドライバ131は、使用中のvCPU122の現在数がvCPU122の目標数を超える場合、1つまたは複数のバルーンスレッド404を立ち上げる。示された例では、バルーンドライバ131は、VMのvCPUの目標数が3つのvCPUである(vCPUの現在数(例えば、初めに割り振られたよりも少ない)と判定し、1つのバルーンスレッド404を立ち上げる。
バルーンドライバ131は、非活性化対象の特定のvCPU(例えばvCPU122)に対するバルーンスレッド404のプロセッサ親和性を規定し、これによりバルーンスレッドをこのvCPUにピン留めする。さらに、バルーンスレッド404は、ゲストOS130上で実行する他のプロセスとスレッドに比較して高優先順位を有するカーネルスレッドであり得、したがって特定のvCPU122上の他のすべてのプロセスをプリエンプトする。したがって、ゲストスケジューラ133は、規定優先順位を有するvCPU122上にバルーンスレッド404をディスパッチする。いくつかの実施形態では、ゲストスケジューラ133は、vCPU4上に他のプロセスをディスパッチし得ないということを認識すべきである。バルーンスレッド404によるvCPU122の占有(これによってバルーンスレッド404がvCPU122のCPUサイクルのすべてを利用する)は図4Bでは領域406により描写される。ゲストスケジューラ133は、vCPU122上で前に実行していたそれらのプロセスとスレッドを含むプロセスとスレッドを残りの利用可能なvCPU122〜122上にディスパッチし再スケジュールする。図4Bに描写された領域410は、もはや利用可能でないvCPU122の結果としての各vCPU122、122、122に対する要求の増加を表す。したがって、本開示の実施形態は、VMをシャットダウンするかまたはオフラインにする必要無く、要求に基づきvCPUを効果的に非活性化した。
1つまたは複数の実施形態が理解の明確のために少し詳しく本明細書では説明されたが、いくつかの変更と修正が本開示の精神から逸脱することなくなされ得るということを認識すべきである。例えば、いくつかの実施形態では、ゲストオペレーティングシステム130は、オンラインおよびオフラインの動的CPUを支援するように構成され得る。このような実施形態では、バルーンスレッドを立ち上げるのではなく、バルーンドライバ131は、ゲストOS130内のVMのvCPUの数を調整するように構成され得る。一実施形態では、バルーンドライバ131は、目標vCPUサイズをデバイスドライバファイルシステム(例えばsysfs)へ書き込むこと(/sys/devices/system/cpu/cupid/online sysノードに対する変更など)により、リナックスゲストオペレーティングシステムを実行するVMのvCPUの数を調整し得る。
本明細書に記載の様々な実施形態は、コンピュータシステム内に格納されたデータに関わる様々なコンピュータ実施型動作を採用し得る。例えば、これらの動作は物理量の物理的操作を必要とし得る。通常、必ずしもではないが、これらの量は電気的または磁気的信号の形式を取り得、これらまたはその表現は格納され、転送され、合成され、比較され、またはそうでなければ操作されることができる。さらに、このような操作は、生成、付与、識別、判定、または比較などの用語でしばしば参照される。本開示の1つまたは複数の実施形態の一部をなす本明細書に記載の任意の動作は、有用な機械操作であり得る。加えて、本開示の1つまたは複数の実施形態はまた、これらの動作を実行するためのデバイスまたは装置に関する。上記装置は、特別に必要な目的のために特に構築され得る、またはコンピュータ内に格納されたコンピュータプログラムにより選択的に活性化または構成される汎用コンピュータデバイスであり得る。特に、様々な汎用マシンは本明細書の教示に従って書かれたコンピュータプログラムと共に使用され得るか、または必要な動作を実行するためにより専用化された装置を構築することがより便利な場合もある。
本明細書に記載の様々な実施形態は、携帯型デバイス、マイクロプロセッサシステム、マイクロプロセサベースまたはプログラム可能民生電子機器、ミニコンピュータ、メインフレームコンピュータなどを含む他のコンピュータシステム構成と共に実施され得る。
本開示の1つまたは複数の実施形態は、1つまたは複数のコンピュータプログラム、または1つまたは複数のコンピュータ読み取り可能媒体内に具現化された1つまたは複数のコンピュータプログラムモジュールとして実施され得る。用語「コンピュータ読み取り可能媒体」は、その後コンピュータシステムに入力されることができるデータを格納することができる任意のデータ記憶装置を指す。コンピュータ読み取り可能媒体は、コンピュータプログラムをコンピュータにより読まれることを可能にする方法で具現する任意の既存技術または今後開発される技術に基づき得る。コンピュータ読み取り可能媒体の例としては、ハードディスク駆動装置、ネットワーク付属記憶装置(NAS : network attached storage)、読み取り専用メモリ、ランダムアクセスメモリ(例えばフラッシュメモリ装置)、CD(コンパクトディスク)、CD−ROM、CD−RまたはCD−RW、DVD(デジタルバーサタイルディスク)、磁気テープ、他の光学的および非光学的データ記憶装置が挙げられる。コンピュータ読み取り可能媒体はまた、コンピュータ可読コードが分散された方法で格納され実行されるように、ネットワーク結合されたコンピュータシステム上に分散されることができる。
本開示の1つまたは複数の実施形態は理解の明確のために少し詳しく説明されたが、いくつかの変更と修正が本開示の範囲内でなされ得るということは明らかである。したがって、記載の実施形態は例示的であって限定的ではないと考えるべきであり、特許請求の範囲は本明細書に記載された詳細に限定されず、請求項の範囲と均等物のなかで修正され得る。特許請求の範囲において、要素および/または工程は特許請求の範囲に明示的に示されない限り動作の任意の特定の順序を意味しない。
様々な実施形態による仮想化システムは、ホストされた実施形態、ホストされない実施形態、またはこれら2つの差異をあいまいにする傾向がある実施形態として実施されてもよく、すべて想定される。さらに、様々な仮想化動作は、ハードウェアで完全にまたは部分的に実施され得る。例えば、ハードウェア実施形態は、非ディスクデータを安全にするために記憶装置アクセス要求の修正のための参照テーブルを採用し得る。
仮想化の程度にかかわらず、多くの変形、修正、追加、改良が可能である。したがって、仮想化ソフトウェアは、仮想化機能を実行するホスト、コンソール、またはゲストオペレーティングシステムの部品を含むことができる。単一インスタンスとして本明細書に記載の部品、動作、または構造に対し複数のインスタンスが設けられ得る。最後に、様々な部品、動作、データ記憶装置間の境界は多少任意的であり、特定の動作は特定の例示的構成の文脈の中で示されている。機能の他の割り振りが想定され、本開示の範囲に入り得る。一般的に、例示的構成において別個の部品として提示された構造と機能は組み合わせられた構造または部品として実現され得る。同様に、単一構成部品として提示された構造と機能は別々の部品として実現され得る。これらおよび他の変形形態、修正形態、追加形態、改良形態は添付特許請求の範囲に入り得る。
100 コンピュータシステム
102 ハードウェアプラットホーム
104 CPU
108 ネットワークインタフェース
110 記憶装置
111 ハイパーバイザ
113 カーネルスケジューラ
114 方向線
118 仮想マシン
120 仮想ハードウェアプラットホーム
122 仮想CPU
124 仮想ランダムアクセスメモリ
126 仮想ネットワークインタフェースアダプタ
128 仮想記憶装置
130 ゲストオペレーティングシステム
131 バルーンドライバ
132 アプリケーション
133 ゲストスケジューラ
134 仮想マシンモニタ
200、210、220、300、305、320、325、330、340、345 工程
402 要求の量
404 バルーンスレッド
406 占有領域
410 要求の増加
408 線

Claims (21)

  1. コンピュータシステムであって、
    少なくとも1つの物理プロセッサを含むハードウェア・プラットフォームと、
    前記ハードウェア・プラットフォームに設けられた仮想化層と、
    前記仮想化層により支援される仮想マシンとを
    含むコンピュータシステムにおいて、
    前記仮想マシンは、複数の仮想プロセッサを含み、
    前記仮想プロセッサは、該仮想プロセッサ上で実行するゲストオペレーティングシステムを有し、
    前記ゲストオペレーティングシステムは、前記仮想マシンによるプロセッサ要求に基づき、前記仮想マシンの仮想プロセッサの目標数が、前記仮想マシン用に活性化される仮想プロセッサの現在数よりも少ないことを判定するように構成され、
    前記ゲストオペレーティングシステムはさらに、前記ゲストオペレーティングシステム内に優先プロセススレッドを立ち上げるように構成され、
    前記優先プロセススレッドは、前記複数の仮想プロセッサのうちの第1の仮想プロセッサに関連付けられ、且つ停止命令を含み、
    前記ゲストオペレーティングシステムはさらに、ゲストスケジューラの動作によって、前記複数の仮想プロセッサのうちの前記第1の仮想プロセッサを使用して前記優先プロセススレッドを実行するように構成され、
    前記ゲストオペレーティングシステムはさらに、立ち上げられた優先プロセススレッドの量に基づき前記仮想マシン用に活性化された仮想プロセッサの前記現在数をディクリメントするように構成され、
    前記仮想化層は、前記仮想マシンの前記複数の仮想プロセッサの間のプロセッサの共有を管理するように構成され、
    前記仮想化層は、前記第1の仮想プロセッサが前記停止命令を実行していることを検知することに応答して、前記コンピュータシステムの前記物理プロセッサ上の前記第1の仮想プロセッサの実行をスケジュール解除するように構成される、コンピュータシステム。
  2. 前記優先プロセススレッドは、カーネルスレッドを含む、請求項1に記載のコンピュータシステム。
  3. 前記ゲストオペレーティングシステムはさらに、前記仮想マシンの仮想プロセッサの第2の目標数が、前記仮想マシン用に活性化された仮想プロセッサの前記現在数よりも多いことを判定し、前記ゲストオペレーティングシステム内の前記優先プロセススレッドの実行を停止するように構成される、請求項1に記載のコンピュータシステム。
  4. 仮想プロセッサの前記目標数は、前記仮想マシンの仮想プロセッサの要求数と前記仮想マシンの仮想プロセッサの付与数とのうち少ない方として決定される、請求項1に記載のコンピュータシステム。
  5. 前記仮想マシン用の仮想プロセッサの前記要求数は、前記仮想マシンに割り振られた前記複数の仮想プロセッサに対する全要求と前記仮想マシンの予想利用率とに基づき決定される、請求項に記載のコンピュータシステム。
  6. 前記仮想マシンの仮想プロセッサの前記付与数は、前記仮想マシンに割り振られた仮想プロセッサの数と前記仮想マシンに関連付けられた準備時間の量とに基づき決定される、請求項に記載のコンピュータシステム。
  7. 前記ゲストオペレーティングシステムはさらに、バックドアコールを介し前記仮想化層から仮想プロセッサの前記目標数を受信するように構成されるデバイスドライバを含む、請求項1に記載のコンピュータシステム。
  8. ホストコンピュータシステムを管理する方法であって、該ホストコンピュータシステムは、前記ホストコンピュータシステム上で実行する仮想マシンを有し、前記仮想マシンは、少なくとも1つの物理プロセッサを含むハードウェア・プラットフォームにインストールされた仮想化層により支援され、前記仮想マシンには複数の仮想プロセッサが割り振られる、前記方法において、
    前記仮想マシンによるプロセッサ要求に基づき、前記仮想マシン用の前記仮想プロセッサの目標数が、前記仮想マシン用に活性化された仮想プロセッサの現在数よりも少ないことを判定すること、
    前記仮想マシンのゲストオペレーティングシステム内の優先プロセススレッドを立ち上げることであって、前記優先プロセススレッドは、前記複数の仮想プロセッサのうちの第1の仮想プロセッサに関連付けられ、且つ停止命令を含む、前記優先プロセススレッドを立ち上げること、
    立ち上げられた優先プロセススレッドの量に基づき前記仮想マシン用に活性化された仮想プロセッサの前記現在数をディクリメントすること、
    前記ゲストオペレーティングシステム内のゲストスケジューラの動作により、前記複数の仮想プロセッサのうちの前記第1の仮想プロセッサを使用して前記優先プロセススレッドを実行すること、
    前記ホストコンピュータシステム内の仮想化層の動作により、前記第1の仮想プロセッサが前記停止命令を実行していることを検出することに応答して、前記ホストコンピュータシステムの1つまたは複数の物理プロセッサ上の前記第1の仮想プロセッサの実行をスケジュール解除することを備える、方法。
  9. 前記優先プロセススレッドは、カーネルスレッドを含む、請求項に記載の方法。
  10. 前記仮想マシンの仮想プロセッサの第2の目標数が、前記仮想マシン用に活性化された仮想プロセッサの前記現在数よりも多いことを判定すること、
    前記ゲストオペレーティングシステム内の前記優先プロセススレッドの実行を停止することをさらに備える、請求項に記載の方法。
  11. 仮想プロセッサの前記目標数を、前記仮想マシンの前記仮想プロセッサの要求数と前記仮想マシンの仮想プロセッサの付与数のうちの小さい方として決定することをさらに備える請求項に記載の方法。
  12. 前記仮想マシンの仮想プロセッサの前記要求数は、前記仮想マシンに割り振られた前記複数の仮想プロセッサに対する全要求と前記仮想マシンの予想利用率とに基づき決定される、請求項11に記載の方法。
  13. 前記仮想マシンの仮想プロセッサの前記付与数は、前記仮想マシンに割り振られた仮想プロセッサの数と前記仮想マシンに関連付けられた準備時間の量とに基づき決定される、請求項11に記載の方法。
  14. 前記ゲストオペレーティングシステムにおいて実行するデバイスドライバの動作により、バックドアコールを介しハイパーバイザから仮想プロセッサの前記目標数を受信することをさらに備える請求項に記載の方法。
  15. ホストコンピュータデバイスを管理するためのコンピュータ可読プログラムコードを格納した非一時的コンピュータ可読記憶媒体であって、該ホストコンピュータデバイスは、前記ホストコンピュータデバイス上で実行する仮想マシンを有し、前記仮想マシンは、少なくとも1つの物理プロセッサを含むハードウェア・プラットフォームにインストールされた仮想化層により支援され、前記仮想マシンには複数の仮想プロセッサが割り振られ、非一時的コンピュータ可読記憶媒体が、前記仮想マシンによるプロセッサ要求に基づき、仮想マシン用の仮想プロセッサの目標数が、前記仮想マシン用に活性化された仮想プロセッサの現在数よりも少ないことを判定するコンピュータ可読プログラムコードと、
    前記仮想マシンのゲストオペレーティングシステム内に優先プロセススレッドを立ち上げるコンピュータ可読プログラムコードであって、前記優先プロセススレッドは、前記複数の仮想プロセッサのうちの第1の仮想プロセッサに関連付けられ、且つ停止命令を含む、前記コンピュータ可読プログラムコードと、
    立ち上げられる優先プロセススレッドの量に基づき、前記仮想マシン用に活性化された仮想プロセッサの前記現在数をディクリメントするコンピュータ可読プログラムコードと、
    前記ゲストオペレーティングシステム内のゲストスケジューラの動作により、前記複数の仮想プロセッサのうちの前記第1の仮想プロセッサを使用して前記優先プロセススレッドを実行するコンピュータ可読プログラムコードと、
    前記ホストコンピュータデバイス内の仮想化層の動作により、前記第1の仮想プロセッサが前記停止命令を実行していることを検出することに応答して、前記ホストコンピュータデバイスの1つまたは複数の物理プロセッサ上の前記第1の仮想プロセッサの実行をスケジュール解除するコンピュータ可読プログラムコードとを備える、非一時的コンピュータ可読記憶媒体。
  16. 前記優先プロセススレッドは、カーネルスレッドを含む、請求項15に記載の非一時的コンピュータ可読記憶媒体。
  17. 前記非一時的コンピュータ可読記憶媒体は、
    前記仮想マシンの仮想プロセッサの第2の目標数が、前記仮想マシン用に活性化された仮想プロセッサの前記現在数よりも多いことを判定するコンピュータ可読プログラムコードと、
    前記ゲストオペレーティングシステムにおける前記優先プロセススレッドの実行を停止するコンピュータ可読プログラムコードとをさらに備える、請求項15に記載の非一時的コンピュータ可読記憶媒体。
  18. 仮想プロセッサの前記目標数を、前記仮想マシンの前記仮想プロセッサの要求数と前記仮想マシンの仮想プロセッサの付与数のうちの小さい方として決定するコンピュータ可読プログラムコードをさらに備える請求項15に記載の非一時的コンピュータ可読記憶媒体。
  19. 前記仮想マシンの仮想プロセッサの前記要求数は、前記仮想マシンに割り振られた前記複数の仮想プロセッサに対する全要求と前記仮想マシンの予想利用率とに基づき決定される、請求項18に記載の非一時的コンピュータ可読記憶媒体。
  20. 前記仮想マシンの仮想プロセッサの前記付与数は、前記仮想マシンに割り振られた仮想プロセッサの数と前記仮想マシンに関連付けられた準備時間の量とに基づき決定される、請求項18に記載の非一時的コンピュータ可読記憶媒体。
  21. 前記ゲストオペレーティングシステムにおいて実行するデバイスドライバの動作により、バックドアコールを介しハイパーバイザから仮想プロセッサの前記目標数を受信するコンピュータ可読プログラムコードをさらに備える請求項15に記載の非一時的コンピュータ可読記憶媒体。
JP2014093823A 2013-05-03 2014-04-30 動的仮想マシンサイジング Active JP6381956B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/886,360 US9785460B2 (en) 2013-05-03 2013-05-03 Dynamic virtual machine sizing
US13/886,360 2013-05-03

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2018144824A Division JP6646114B2 (ja) 2013-05-03 2018-08-01 動的仮想マシンサイジング

Publications (3)

Publication Number Publication Date
JP2014219977A JP2014219977A (ja) 2014-11-20
JP2014219977A5 JP2014219977A5 (ja) 2017-06-15
JP6381956B2 true JP6381956B2 (ja) 2018-08-29

Family

ID=50630656

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2014093823A Active JP6381956B2 (ja) 2013-05-03 2014-04-30 動的仮想マシンサイジング
JP2018144824A Active JP6646114B2 (ja) 2013-05-03 2018-08-01 動的仮想マシンサイジング

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2018144824A Active JP6646114B2 (ja) 2013-05-03 2018-08-01 動的仮想マシンサイジング

Country Status (4)

Country Link
US (3) US9785460B2 (ja)
EP (2) EP3435231B1 (ja)
JP (2) JP6381956B2 (ja)
AU (1) AU2014202257B2 (ja)

Families Citing this family (44)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9727361B2 (en) * 2013-12-12 2017-08-08 International Business Machines Corporation Closed-loop feedback mechanism for achieving optimum performance in a consolidated workload environment
US9405572B2 (en) * 2014-04-07 2016-08-02 International Business Machines Corporation Optimized resource allocation and management in a virtualized computing environment
US9280375B1 (en) * 2014-04-30 2016-03-08 Google Inc. Dynamically adjustable virtual machine
US10095606B2 (en) * 2014-06-20 2018-10-09 Red Hat Israel, Ltd. Guest-independent testing of guest firmware in virtualized systems
WO2016088220A1 (ja) * 2014-12-03 2016-06-09 株式会社日立製作所 計算機及び論理プロセッサの制御方法
US9734103B2 (en) * 2015-01-25 2017-08-15 Dell Products, L.P. Systems and methods for transforming a central processing unit (CPU) socket into a memory and/or input/output (I/O) expander
CN105988872B (zh) * 2015-02-03 2020-02-18 阿里巴巴集团控股有限公司 一种cpu资源分配的方法、装置及电子设备
CN104995604A (zh) * 2015-03-03 2015-10-21 华为技术有限公司 虚拟机的资源分配方法及装置
CN106155807A (zh) 2015-04-15 2016-11-23 阿里巴巴集团控股有限公司 一种实现资源调度的方法与设备
US9864640B2 (en) * 2015-08-14 2018-01-09 International Business Machines Corporation Controlling virtual machine density and placement distribution in a converged infrastructure resource pool
US9996393B2 (en) * 2015-11-19 2018-06-12 International Business Machines Corporation Dynamic virtual processor manager
US10372493B2 (en) * 2015-12-22 2019-08-06 Intel Corporation Thread and/or virtual machine scheduling for cores with diverse capabilities
US9977690B2 (en) 2016-05-23 2018-05-22 Red Hat Israel, Ltd. Hypervisor-visible guest thread management
US10102033B2 (en) 2016-05-26 2018-10-16 International Business Machines Corporation Method and system for performance ticket reduction
US10152341B2 (en) 2016-08-30 2018-12-11 Red Hat Israel, Ltd. Hyper-threading based host-guest communication
US10810032B2 (en) * 2017-02-22 2020-10-20 Red Hat, Inc. System and method for dynamic guest-controlled halt polling using a CPU governor
US10956193B2 (en) * 2017-03-31 2021-03-23 Microsoft Technology Licensing, Llc Hypervisor virtual processor execution with extra-hypervisor scheduling
WO2018227549A1 (en) * 2017-06-16 2018-12-20 Alibaba Group Holding Limited Determining processor utilization of multiprocessing system with virtualization
US11188392B2 (en) * 2017-09-20 2021-11-30 Algorithmia inc. Scheduling system for computational work on heterogeneous hardware
US20190278715A1 (en) * 2018-03-12 2019-09-12 Nutanix, Inc. System and method for managing distribution of virtual memory over multiple physical memories
US11169857B2 (en) 2018-05-25 2021-11-09 Red Hat, Inc. System and method for reserving a portion of CPU time for host execution
US10853115B2 (en) 2018-06-25 2020-12-01 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
US11099870B1 (en) 2018-07-25 2021-08-24 Amazon Technologies, Inc. Reducing execution times in an on-demand network code execution system using saved machine states
US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system
US11861386B1 (en) 2019-03-22 2024-01-02 Amazon Technologies, Inc. Application gateways in an on-demand network code execution system
US11106481B2 (en) 2019-04-19 2021-08-31 Red Hat, Inc. Safe hyper-threading for virtual machines
US11537424B2 (en) 2019-05-10 2022-12-27 Kontain Inc. Scalable and secure containers
US11119809B1 (en) 2019-06-20 2021-09-14 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
CN112256383B (zh) * 2019-07-22 2024-04-09 深信服科技股份有限公司 虚拟机的cpu核心数的调整方法、装置、设备及介质
US11294733B2 (en) * 2019-09-12 2022-04-05 Pivotal Software, Inc. Dynamic autoscaler for cloud platform
US11030015B2 (en) 2019-09-19 2021-06-08 International Business Machines Corporation Hardware and software resource optimization
CN110673928B (zh) * 2019-09-29 2021-12-14 天津卓朗科技发展有限公司 线程绑定方法、装置、存储介质及服务器
CN111143025B (zh) * 2019-11-22 2023-03-24 中国船舶工业系统工程研究院 一种针对实时虚拟机实例管理的方法
US11714682B1 (en) 2020-03-03 2023-08-01 Amazon Technologies, Inc. Reclaiming computing resources in an on-demand code execution system
US11231955B1 (en) * 2020-03-03 2022-01-25 Amazon Technologies, Inc. Dynamically reallocating memory in an on-demand code execution system
US11556371B2 (en) * 2020-03-24 2023-01-17 Red Hat, Inc. Hypervisor task execution management for virtual machines
US11740921B2 (en) * 2020-11-23 2023-08-29 Google Llc Coordinated container scheduling for improved resource allocation in virtual computing environment
CN112579257B (zh) * 2020-12-14 2024-02-23 深信服科技股份有限公司 一种虚拟中央处理器核心的调度方法、装置及相关设备
CN113434262A (zh) * 2021-08-30 2021-09-24 云宏信息科技股份有限公司 dom0调度方法、虚拟机运行方法、存储介质和计算机
US11968280B1 (en) 2021-11-24 2024-04-23 Amazon Technologies, Inc. Controlling ingestion of streaming data to serverless function executions
US12015603B2 (en) 2021-12-10 2024-06-18 Amazon Technologies, Inc. Multi-tenant mode for serverless code execution
US20230229473A1 (en) * 2022-01-18 2023-07-20 Vmware, Inc. Adaptive idling of virtual central processing unit
JP7394906B2 (ja) * 2022-03-30 2023-12-08 ソフトバンク株式会社 制御装置、プログラム、及び制御方法
KR20240015952A (ko) * 2022-07-28 2024-02-06 삼성전자주식회사 컴퓨팅 장치 및 그 동작 방법

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06274354A (ja) * 1993-03-12 1994-09-30 Internatl Business Mach Corp <Ibm> 破壊的なハードウェア動作を制御する方法及びシステム
US7433951B1 (en) * 2000-09-22 2008-10-07 Vmware, Inc. System and method for controlling resource revocation in a multi-guest computer system
US7765543B1 (en) * 2003-12-17 2010-07-27 Vmware, Inc. Selective descheduling of idling guests running on a host computer system
US7788461B2 (en) * 2004-04-15 2010-08-31 International Business Machines Corporation System and method for reclaiming allocated memory to reduce power in a data processing system
US8756605B2 (en) * 2004-12-17 2014-06-17 Oracle America, Inc. Method and apparatus for scheduling multiple threads for execution in a shared microprocessor pipeline
US7945913B2 (en) * 2006-01-19 2011-05-17 International Business Machines Corporation Method, system and computer program product for optimizing allocation of resources on partitions of a data processing system
US7702843B1 (en) * 2006-04-27 2010-04-20 Vmware, Inc. Determining memory conditions in a virtual machine
US7954099B2 (en) * 2006-05-17 2011-05-31 International Business Machines Corporation Demultiplexing grouped events into virtual event queues while in two levels of virtualization
US8671403B2 (en) * 2006-05-22 2014-03-11 Infosys Limited Pre-creating virtual machines in a grid environment
US8949295B2 (en) * 2006-09-21 2015-02-03 Vmware, Inc. Cooperative memory resource management via application-level balloon
US8127301B1 (en) * 2007-02-16 2012-02-28 Vmware, Inc. Scheduling selected contexts in response to detecting skew between coscheduled contexts
US8566835B2 (en) * 2007-12-13 2013-10-22 Hewlett-Packard Development Company, L.P. Dynamically resizing a virtual machine container
US8312456B2 (en) * 2008-05-30 2012-11-13 International Business Machines Corporation System and method for optimizing interrupt processing in virtualized environments
JP5469940B2 (ja) * 2009-07-13 2014-04-16 株式会社日立製作所 計算機システム、仮想計算機モニタ及び仮想計算機モニタのスケジューリング方法
US9037717B2 (en) * 2009-09-21 2015-05-19 International Business Machines Corporation Virtual machine demand estimation
US8752058B1 (en) * 2010-05-11 2014-06-10 Vmware, Inc. Implicit co-scheduling of CPUs
US8738333B1 (en) * 2010-05-25 2014-05-27 Vmware, Inc. Capacity and load analysis in a datacenter
US8943260B2 (en) * 2011-03-13 2015-01-27 International Business Machines Corporation Dynamic memory management in a virtualized computing environment
WO2012103728A1 (zh) * 2011-06-30 2012-08-09 华为技术有限公司 热点域虚拟机cpu调度方法及虚拟机系统
US9171139B2 (en) * 2011-08-05 2015-10-27 Vmware, Inc. Lock screens to access work environments on a personal mobile device
US9858095B2 (en) * 2012-09-17 2018-01-02 International Business Machines Corporation Dynamic virtual machine resizing in a cloud computing infrastructure
GB2508161A (en) * 2012-11-21 2014-05-28 Ibm Monitoring applications executing on a virtual machine and allocating the required resources to the virtual machine.
US9389894B1 (en) * 2014-10-15 2016-07-12 Google Inc. Flexible processor association for virtual machines

Also Published As

Publication number Publication date
EP2799990A2 (en) 2014-11-05
EP3435231A1 (en) 2019-01-30
AU2014202257A1 (en) 2014-11-20
US9785460B2 (en) 2017-10-10
US20180129526A1 (en) 2018-05-10
US20140331222A1 (en) 2014-11-06
JP6646114B2 (ja) 2020-02-14
AU2014202257B2 (en) 2015-09-17
US10430226B2 (en) 2019-10-01
JP2014219977A (ja) 2014-11-20
JP2018190454A (ja) 2018-11-29
EP2799990B1 (en) 2019-06-26
EP2799990A3 (en) 2016-07-27
US11797327B2 (en) 2023-10-24
US20190370053A1 (en) 2019-12-05
EP3435231B1 (en) 2020-11-18

Similar Documents

Publication Publication Date Title
JP6646114B2 (ja) 動的仮想マシンサイジング
US10073711B2 (en) Virtual machine monitor configured to support latency sensitive virtual machines
US9304803B2 (en) Cooperative application workload scheduling for a consolidated virtual environment
US8019861B2 (en) Speculative virtual machine resource scheduling
US20140245304A1 (en) Implicit co-scheduling of cpus
US9176787B2 (en) Preserving, from resource management adjustment, portions of an overcommitted resource managed by a hypervisor
CN107003713B (zh) 用于电力管理的逻辑分区的事件驱动的方法和系统
Suo et al. Preserving i/o prioritization in virtualized oses
JP2009223842A (ja) 仮想計算機制御プログラム及び仮想計算機システム
US11934890B2 (en) Opportunistic exclusive affinity for threads in a virtualized computing system
Shahabanath et al. K-TIER and Selective Backfilling Approach for Parallel Workload Scheduling In Cloud
Shinde et al. Concurrency Aware Dynamic Scheduler for Virtualized Environment

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170427

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170427

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20180220

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20180313

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20180613

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180625

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20180801

R150 Certificate of patent or registration of utility model

Ref document number: 6381956

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350