JP2017518589A - 仮想化プラットホームによって割込みを処理する方法および関連デバイス - Google Patents

仮想化プラットホームによって割込みを処理する方法および関連デバイス Download PDF

Info

Publication number
JP2017518589A
JP2017518589A JP2016574176A JP2016574176A JP2017518589A JP 2017518589 A JP2017518589 A JP 2017518589A JP 2016574176 A JP2016574176 A JP 2016574176A JP 2016574176 A JP2016574176 A JP 2016574176A JP 2017518589 A JP2017518589 A JP 2017518589A
Authority
JP
Japan
Prior art keywords
target
virtual
vcpu
pcpus
interrupt
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.)
Pending
Application number
JP2016574176A
Other languages
English (en)
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of JP2017518589A publication Critical patent/JP2017518589A/ja
Pending legal-status Critical Current

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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • 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
    • 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
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage

Abstract

本発明の実施形態は、仮想化プラットホームによって割込みを処理する方法および関連デバイスを提供し、この方法は、第jの物理入出力デバイス内で第iの物理割込みが生じた場合、U個の標的pCPUから第nのpCPUを判定するステップと、第nのpCPUを使用して第iの物理割込みを処理するステップと、第iの物理割込みに応じて第iの仮想割込みを判定するステップと、V個の標的vCPUから第mのvCPUを判定するステップとを含み、その結果、第kのVMが第mのvCPUを使用して第iの仮想割込みを実行する。上記の技術的解決策によれば、vCPUが類似性を有するpCPUが、このvCPUによって処理される仮想割込みに対応する物理割込みを処理するために使用されるpCPUではないために引き起こされる余剰IPIによるVM−Exitは、実質上回避されることが可能であり、それによってコンテキストスイッチの回数を実質上低減させ、pCPUに対して仮想マシンによって引き起こされる干渉を低減させる。

Description

本発明の実施形態は、通信技術の分野に関し、より詳細には、仮想化プラットホームによって割込みを処理する方法および関連デバイスに関する。
仮想化技術は、底層のハードウェアデバイスが上層のオペレーティングシステムおよびアプリケーションプログラムから分離される非干渉化技術である。仮想化技術は、現在普及しているクラウドコンピューティング(Cloud Computing)プラットホームに対応する重要な底層技術の1つとして、物理デバイスの資源利用を大きく改善することがある。従来の物理サーバと比較されると、仮想マシンは、分離およびカプセル化に関してより良好な性能を有し、仮想マシン全体の情報を仮想ディスク画像(VDI、Virtual Disk Image)内に保存することがある。これは、仮想マシンに対するスナップショット、バックアップ、クローン、および分配などの動作を容易にすることがある。仮想化によってオーバヘッドが生成され、それによって、構成が同じ場合、仮想マシンの性能は、物理マシンの性能より低くなる。仮想マシンの性能をどのように実質上改善するかは、この分野で解決される必要のある問題である。
本発明の実施形態は、割込みオーバヘッドが仮想化プラットホームに与える影響を低減させ、それによって仮想マシンの性能を実質上改善することができる、仮想化プラットホームによって割込みを処理する方法および関連デバイスを提供する。
第1の態様によれば、本発明の一実施形態は、仮想化プラットホームによって割込みを処理する方法を提供し、この方法は計算ノードに適用され、計算ノードは、物理ハードウェア層と、物理ハードウェア層で走るホストHostと、Host上で走る少なくとも1つの仮想マシンVMと、少なくとも1つのVM上で仮想化された仮想ハードウェアとを含み、物理ハードウェア層はX個の物理中央処理装置pCPUおよびY個の物理入出力デバイスを含み、仮想ハードウェアはZ個の仮想中央処理装置vCPUを含み、Y個の物理入出力デバイスは第jの物理入出力デバイスを含み、少なくとも1つのVMは第kのVMを含み、第jの物理入出力デバイスは第kのVMに向き、この方法はHostによって実行され、この方法は、第jの物理入出力デバイス内で第iの物理割込みが生じた場合、U個の標的pCPUから第nのpCPUを判定するステップであって、U個の標的pCPUが、第iの物理割込みおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、V個の標的vCPUが、第kのVM上で仮想化された、第iの仮想割込みとの類似性関係を有するvCPUであり、第iの仮想割込みが第iの物理割込みに対応し、X個のpCPUがU個の標的pCPUを含み、Z個のvCPUがV個の標的vCPUを含む、判定するステップと、第nのpCPUを使用して第iの物理割込みを処理するステップと、第iの物理割込みに応じて第iの仮想割込みを判定するステップと、V個の標的vCPUから第mのvCPUを判定するステップであって、その結果、第kのVMが第mのvCPUを使用して第iの仮想割込みを実行する、判定するステップとを含み、X、Y、およびZは1より大きい正の整数であり、Uは1以上かつX以下の正の整数であり、Vは1以上かつZ以下の正の整数であり、i、j、k、m、およびnは正の整数である。
第1の態様を参照して、第1の態様の第1の可能な実装形態では、U個の標的pCPUと第iの物理割込みとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iの仮想割込みとの間の類似性関係は、V個の標的vCPUと第iの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUがU個の標的pCPU上で走ることができ、Uが1に等しい、判定するステップと、第iの仮想割込みに対応する第iの物理割込みを判定するステップと、第iの物理割込みとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iの物理割込みがU個の標的pCPUによって処理されることが可能である、判定するステップとによって判定される。
第1の態様を参照して、第1の態様の第2の可能な実装形態では、U個の標的pCPUと第iの物理割込みとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iの仮想割込みとの間の類似性関係は、V個の標的vCPUと第iの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUが複数の標的pCPU上で走ることができ、Uが1より大きくかつX以下の正の整数である、判定するステップと、第iの仮想割込みに対応する第iの物理割込みを判定するステップと、第iの物理割込みとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iの物理割込みがU個の標的pCPUによって処理されることが可能である、判定するステップとによって判定される。
第1の態様の第2の可能な実装形態を参照して、第1の態様の第3の可能な実装形態では、第iの物理割込みとU個の標的pCPUとの間の類似性関係が1対多数の類似性関係であるとき、V個の標的vCPUから第mのvCPUを判定するステップは、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップと、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在すると判定された場合、第nのpCPU上で走る1つの標的vCPUを第mのvCPUとして判定するステップ、またはV個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在しないと判定された場合、優先順位に応じてV個の標的vCPUからの1つの標的vCPUを第mのvCPUとして判定するステップとを含む。
第1の態様の第3の可能な実装形態を参照して、第1の態様の第4の可能な実装形態では、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップは、仮想割込み経路情報に応じて、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップを含み、仮想割込み経路情報は、U個の標的pCPUとU個の標的pCPU上で走る標的vCPUとの間の対応関係を含む。
第2の態様によれば、本発明の一実施形態は、仮想化プラットホームによって割込みを処理する方法を提供し、この方法は計算ノードに適用され、計算ノードは、物理ハードウェア層と、物理ハードウェア層で走るホストHostと、Host上で走るY個の仮想マシンVMと、Host上で走るY個の仮想ホストvhostカーネルスレッドと、少なくとも1つのVM上で仮想化された仮想ハードウェアとを含み、物理ハードウェア層はX個の物理中央処理装置pCPUを含み、仮想ハードウェアはZ個の仮想中央処理装置vCPUを含み、Y個のVMの各VMは準仮想化されたドライバvirtioデバイスを含み、Y個のVMは第kのVMを含み、第kのVMは第iのvirtioデバイスを含み、第iのvirtioデバイスはY個のvhostカーネルスレッドのうちの第jのvhostカーネルスレッドに対応し、この方法はHostによって実行され、この方法は、第jのvhostカーネルスレッドが第iのvhostスレッドをトリガする場合、U個の標的pCPUから第nのpCPUを判定するステップであって、U個の標的pCPUが、第iのvhostスレッドおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、V個の標的vCPUが、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みとの類似性関係を有するvCPUであり、第iのvirtioデバイスの仮想割込みが第iのvhostスレッドに対応し、X個のpCPUがU個の標的pCPUを含み、Z個のvCPUがV個の標的vCPUを含む、判定するステップと、第nのpCPUを使用して第iのvhostスレッドを処理するステップと、第iのvhostスレッドに応じて第iのvirtioデバイスの仮想割込みを判定するステップと、V個の標的vCPUから第mのvCPUを判定するステップであって、その結果、第kのVMが第mのvCPUを使用して第iのvirtioデバイスの仮想割込みを実行する、判定するステップとを含み、X、Y、およびZは1より大きい正の整数であり、Uは1以上かつX以下の正の整数であり、Vは1以上かつZ以下の正の整数であり、i、j、k、m、およびnは正の整数である。
第2の態様を参照して、第2の態様の第1の可能な実装形態では、U個の標的pCPUと第iのvhostスレッドとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係は、V個の標的vCPUと第iの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUがU個の標的pCPU上で走ることができ、Uが1に等しい、判定するステップと、第iのvirtioデバイスの仮想割込みに対応する第iのvhostスレッドを判定するステップと、第iのvhostスレッドとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iのvhostスレッドがU個の標的pCPUによって処理されることが可能である、判定するステップとによって判定される。
第2の態様を参照して、第2の態様の第2の可能な実装形態では、U個の標的pCPUと第iのvhostスレッドとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係は、V個の標的vCPUと第Iのvirtioデバイスの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUが複数の標的pCPU上で走ることができ、Uが1より大きくかつX以下の正の整数である、判定するステップと、第iのvirtioデバイスの仮想割込みに対応する第iのvhostスレッドを判定するステップと、第iのvhostスレッドとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iのvhostスレッドがU個の標的pCPUによって処理されることが可能である、判定するステップとによって判定される。
第2の態様の第2の可能な実装形態を参照して、第2の態様の第3の可能な実装形態では、第iのvhostスレッドとU個の標的pCPUとの間の類似性関係が1対多数の類似性関係であるとき、V個の標的vCPUから第mのvCPUを判定するステップは、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップと、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在すると判定された場合、第nのpCPU上で走る1つの標的vCPUを第mのvCPUとして判定するステップ、またはV個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在しないと判定された場合、優先順位に応じてV個の標的vCPUからの1つの標的vCPUを第mのvCPUとして判定するステップとを含む。
第2の態様の第3の可能な実装形態を参照して、第2の態様の第4の可能な実装形態では、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップは、virtioデバイスの仮想割込み経路情報に応じて、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップを含み、virtioデバイスの仮想割込み経路情報は、U個の標的pCPUとU個の標的pCPU上で走る標的vCPUとの間の対応関係を含む。
第3の態様によれば、本発明の一実施形態は、ホストHostを提供し、Hostは計算ノードに適用され、計算ノードは、物理ハードウェア層と、物理ハードウェア層で走るHostと、Host上で走る少なくとも1つの仮想マシンVMと、少なくとも1つのVM上で仮想化された仮想ハードウェアとを含み、物理ハードウェア層はX個の物理中央処理装置pCPUおよびY個の物理入出力デバイスを含み、仮想ハードウェアはZ個の仮想中央処理装置vCPUを含み、Y個の物理入出力デバイスは第jの物理入出力デバイスを含み、少なくとも1つのVMは第kのVMを含み、第jの物理入出力デバイスは第kのVMに向き、Hostは、第jの物理入出力デバイス内で第iの物理割込みが生じた場合、U個の標的pCPUから第nのpCPUを判定するように構成された第1の判定ユニットであって、U個の標的pCPUが、第iの物理割込みおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、V個の標的vCPUが、第kのVM上で仮想化された、第iの仮想割込みとの類似性関係を有するvCPUであり、第iの仮想割込みが第iの物理割込みに対応し、X個のpCPUがU個の標的pCPUを含み、Z個のvCPUがV個の標的vCPUを含む、第1の判定ユニットと、第nのpCPUを使用して第iの物理割込みを処理するように構成された第2の呼出しユニットと、第iの物理割込みに応じて第iの仮想割込みを判定するように構成された第3の判定ユニットと、V個の標的vCPUから第mのvCPUを判定するように構成された第4の判定ユニットであって、その結果、第kのVMが第mのvCPUを使用して第iの仮想割込みを実行する、第4の判定ユニットとを含み、X、Y、およびZは1より大きい正の整数であり、Uは1以上かつX以下の正の整数であり、Vは1以上かつZ以下の正の整数であり、i、j、k、m、およびnは正の整数である。
第3の態様を参照して、第3の態様の第1の可能な実装形態では、第1の判定ユニットは、V個の標的vCPUと第iの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUがU個の標的pCPU上で走ることができ、Uが1に等しい、判定するステップと、第iの仮想割込みに対応する第iの物理割込みを判定するステップと、第iの物理割込みとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iの物理割込みがU個の標的pCPUによって処理されることが可能である、判定するステップとを行うようにさらに構成される。
第3の態様を参照して、第3の態様の第2の可能な実装形態では、第1の判定ユニットは、V個の標的vCPUと第iの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUが複数の標的pCPU上で走ることができ、Uが1より大きくかつX以下の正の整数である、判定するステップと、第iの仮想割込みに対応する第iの物理割込みを判定するステップと、第iの物理割込みとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iの物理割込みがU個の標的pCPUによって処理されることが可能である、判定するステップとを行うようにさらに構成される。
第3の態様の第2の可能な実装形態を参照して、第3の態様の第3の可能な実装形態では、第4の判定ユニットは、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップと、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在すると判定された場合、第nのpCPU上で走る1つの標的vCPUを第mのvCPUとして判定するステップであって、その結果、第kのVMが第mのvCPUを使用して第iの仮想割込みを実行する、判定するステップ、またはV個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在しないと判定された場合、優先順位に応じてV個の標的vCPUからの1つの標的vCPUを第mのvCPUとして判定するステップであって、その結果、第kのVMが第mのvCPUを使用して第iの仮想割込みを実行する、判定するステップとを行うように特に構成される。
第3の態様の第3の可能な実装形態を参照して、第3の態様の第4の可能な実装形態では、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定する態様で、第4の判定ユニットは、仮想割込み経路情報に応じて、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するように特に構成され、仮想割込み経路情報は、U個の標的pCPUとU個の標的pCPU上で走る標的vCPUとの間の対応関係を含む。
第4の態様によれば、本発明の一実施形態は、ホストHostを提供し、Hostは計算ノードに適用され、計算ノードは、物理ハードウェア層と、物理ハードウェア層で走るHostと、Host上で走るY個の仮想マシンVMと、Host上で走るY個の仮想ホストvhostカーネルスレッドと、少なくとも1つのVM上で仮想化された仮想ハードウェアとを含み、物理ハードウェア層はX個の物理中央処理装置pCPUを含み、仮想ハードウェアはZ個の仮想中央処理装置vCPUを含み、X、Y、およびZは1より大きい正の整数であり、Y個のVMの各VMは準仮想化されたドライバvirtioデバイスを含み、Y個のVMは第kのVMを含み、第kのVMは第iのvirtioデバイスを含み、第iのvirtioデバイスはY個のvhostカーネルスレッドのうちの第jのvhostカーネルスレッドに対応し、Hostは、第jのvhostカーネルスレッドが第iのvhostスレッドをトリガする場合、U個の標的pCPUから第nのpCPUを判定するように構成された第1の判定ユニットであって、U個の標的pCPUが、第iのvhostスレッドおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、V個の標的vCPUが、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みとの類似性関係を有するvCPUであり、第iのvirtioデバイスの仮想割込みが第iのvhostスレッドに対応し、X個のpCPUがU個の標的pCPUを含み、Z個のvCPUがV個の標的vCPUを含む、第1の判定ユニットと、第nのpCPUを使用して第iのvhostスレッドを処理するように構成された第2の呼出しユニットと、第iのvhostスレッドに応じて第iのvirtioデバイスの仮想割込みを判定するように構成された第3の判定ユニットと、V個の標的vCPUから第mのvCPUを判定するように構成された第4の判定ユニットであって、その結果、第kのVMが第mのvCPUを使用して第iのvirtioデバイスの仮想割込みを実行する、第4の判定ユニットとを含み、X、Y、およびZは1より大きい正の整数であり、Uは1以上かつX以下の正の整数であり、Vは1以上かつZ以下の正の整数であり、i、j、k、m、およびnは正の整数である。
第4の態様を参照して、第4の態様の第1の可能な実装形態では、第1の判定ユニットは、V個の標的vCPUと第iの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUがU個の標的pCPU上で走ることができ、Uが1に等しい、判定するステップと、第iのvirtioデバイスの仮想割込みに対応する第iのvhostスレッドを判定するステップと、第iのvhostスレッドとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iのvhostスレッドがU個の標的pCPUによって処理されることが可能である、判定するステップとを行うようにさらに構成される。
第4の態様を参照して、第4の態様の第2の可能な実装形態では、第1の判定ユニットは、V個の標的vCPUと第iの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUが複数の標的pCPU上で走ることができ、Uが1より大きくかつX以下の正の整数である、判定するステップと、第iのvirtioデバイスの仮想割込みに対応する第iのvhostスレッドを判定するステップと、第iのvhostスレッドとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iのvhostスレッドがU個の標的pCPUによって処理されることが可能である、判定するステップとを行うようにさらに構成される。
第4の態様の第2の可能な実装形態を参照して、第4の態様の第3の可能な実装形態では、第4の判定ユニットは、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップと、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在すると判定された場合、第nのpCPU上で走る1つの標的vCPUを第mのvCPUとして判定するステップであって、その結果、第kのVMが第mのvCPUを使用して第iのvirtioデバイスの仮想割込みを実行する、判定するステップ、またはV個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在しないと判定された場合、優先順位に応じてV個の標的vCPUからの1つの標的vCPUを第mのvCPUとして判定するステップであって、その結果、第kのVMが第mのvCPUを使用して第iのvirtioデバイスの仮想割込みを実行する、判定するステップとを行うように特に構成される。
第4の態様の第3の可能な実装形態を参照して、第4の態様の第4の可能な実装形態では、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定する態様で、第4の判定ユニットは、virtioデバイスの仮想割込み経路情報に応じて、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するように特に構成され、virtioデバイスの仮想割込み経路情報は、U個の標的pCPUとU個の標的pCPU上で走る標的vCPUとの間の対応関係を含む。
第5の態様によれば、本発明の一実施形態は、計算ノードを提供し、計算ノードは、第jの物理入出力デバイスを含むY個の物理入出力デバイスと、X個の物理中央処理装置pCPUと、X個の物理中央処理装置pCPUのそれぞれおよびY個の物理入出力デバイスのそれぞれに接続されたメモリであって、X個の物理中央処理装置pCPUのうちの1または複数のpCPUが、メモリ内に記憶された動作命令を呼び出しまたは実行するように構成される、メモリと、ホストHostと、少なくとも1つの仮想マシンVMと、少なくとも1つの仮想マシンVM、上で仮想化された仮想ハードウェアとを含み、仮想ハードウェアはZ個の仮想中央処理装置vCPUを含み、少なくとも1つのVMは第kのVMを含み、第jの物理入出力デバイスは第kのVMに向き、Hostは、第jの物理入出力デバイス内で第iの物理割込みが生じた場合、U個の標的pCPUから第nのpCPUを判定するステップであって、U個の標的pCPUが、第iの物理割込みおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、V個の標的vCPUが、第kのVM上で仮想化された、第iの仮想割込みとの類似性関係を有するvCPUであり、第iの仮想割込みが第iの物理割込みに対応し、X個のpCPUがU個の標的pCPUを含み、Z個のvCPUがV個の標的vCPUを含み、Uが1以上かつX以下の正の整数であり、Vが1以上かつZ以下の正の整数である、判定するステップと、第nのpCPUを使用して第iの物理割込みを処理するステップと、第iの物理割込みに応じて第iの仮想割込みを判定するステップと、V個の標的vCPUから第mのvCPUを判定するステップであって、その結果、第kのVMが第mのvCPUを使用して第iの仮想割込みを実行する、判定するステップとを行うように構成され、i、j、k、m、およびnは正の整数である。
第5の態様を参照して、第5の態様の第1の可能な実装形態では、Hostは、U個の標的pCPUと第iの物理割込みとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iの仮想割込みとの間の類似性関係を、V個の標的vCPUと第iの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUがU個の標的pCPU上で走ることができ、Uが1に等しい、判定するステップと、第iの仮想割込みに対応する第iの物理割込みを判定するステップと、第iの物理割込みとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iの物理割込みがU個の標的pCPUによって処理されることが可能である、判定するステップとによって判定するようにさらに構成される。
第5の態様を参照して、第5の態様の第2の可能な実装形態では、Hostは、U個の標的pCPUと第iの物理割込みとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iの仮想割込みとの間の類似性関係を、V個の標的vCPUと第iの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUが複数の標的pCPU上で走ることができ、Uが1より大きくかつX以下の正の整数である、判定するステップと、第iの仮想割込みに対応する第iの物理割込みを判定するステップと、第iの物理割込みとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iの物理割込みがU個の標的pCPUによって処理されることが可能である、判定するステップとによって判定するようにさらに構成される。
第5の態様の第2の可能な実装形態を参照して、第5の態様の第3の可能な実装形態では、V個の標的vCPUから第mのvCPUを判定する態様で、Hostは、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップと、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在すると判定された場合、第nのpCPU上で走る1つの標的vCPUを第mのvCPUとして判定するステップ、またはV個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在しないと判定された場合、優先順位に応じてV個の標的vCPUからの1つの標的vCPUを第mのvCPUとして判定するステップとを行うように特に構成される。
第5の態様の第3の可能な実装形態を参照して、第5の態様の第4の可能な実装形態では、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定する態様で、Hostは、仮想割込み経路情報に応じて、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するように特に構成され、仮想割込み経路情報は、U個の標的pCPUとU個の標的pCPU上で走る標的vCPUとの間の対応関係を含む。
第6の態様によれば、本発明の一実施形態は、計算ノードを提供し、計算ノードは、X個の物理中央処理装置pCPUと、X個の物理中央処理装置pCPUに接続されたメモリであって、X個の物理中央処理装置pCPUのうちの1または複数のpCPUが、メモリ内に記憶された動作命令を呼び出しまたは実行するように構成される、メモリと、ホストHostと、Y個の仮想マシンVMと、Y個の仮想ホストvhostカーネルスレッドと、少なくとも1つのVM上で仮想化された仮想ハードウェアとを含み、仮想ハードウェアはZ個の仮想中央処理装置vCPUを含み、Y個のVMの各VMは準仮想化されたドライバvirtioデバイスを含み、Y個のVMは第kのVMを含み、第kのVMは第iのvirtioデバイスを含み、第iのvirtioデバイスはY個のvhostカーネルスレッドのうちの第jのvhostカーネルスレッドに対応し、Hostは、第jのvhostカーネルスレッドが第iのvhostスレッドをトリガする場合、U個の標的pCPUから第nのpCPUを判定するステップであって、U個の標的pCPUが、第iのvhostスレッドおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、V個の標的vCPUが、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みとの類似性関係を有するvCPUであり、第iのvirtioデバイスの仮想割込みが第iのvhostスレッドに対応し、X個のpCPUがU個の標的pCPUを含み、Z個のvCPUがV個の標的vCPUを含み、Uが1以上かつX以下の正の整数であり、Vが1以上かつZ以下の正の整数である、判定するステップと、第nのpCPUを使用して第iのvhostスレッドを処理するステップと、第iのvhostスレッドに応じて第iのvirtioデバイスの仮想割込みを判定するステップと、V個の標的vCPUから第mのvCPUを判定するステップであって、その結果、第kのVMが第mのvCPUを使用して第iのvirtioデバイスの仮想割込みを実行する、判定するステップとを行うように構成され、X、Y、およびZは1より大きい正の整数であり、Uは1以上かつX以下の正の整数であり、Vは1以上かつZ以下の正の整数であり、i、j、k、m、およびnは正の整数である。
第6の態様を参照して、第6の態様の第1の可能な実装形態では、Hostは、U個の標的pCPUと第iの物理割込みとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iの仮想割込みとの間の類似性関係を、V個の標的vCPUと第iの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUがU個の標的pCPU上で走ることができ、Uが1に等しい、判定するステップと、第iのvirtioデバイスの仮想割込みに対応する第iのvhostスレッドを判定するステップと、第iのvhostスレッドとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iのvhostスレッドがU個の標的pCPUによって処理されることが可能である、判定するステップとによって判定するようにさらに構成される。
第6の態様を参照して、第6の態様の第2の可能な実装形態では、Hostは、U個の標的pCPUと第iの物理割込みとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iの仮想割込みとの間の類似性関係を、V個の標的vCPUと第iの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUが複数の標的pCPU上で走ることができ、Uが1より大きくかつX以下の正の整数である、判定するステップと、第iのvirtioデバイスの仮想割込みに対応する第iのvhostスレッドを判定するステップと、第iのvhostスレッドとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iのvhostスレッドがU個の標的pCPUによって処理されることが可能である、判定するステップとによって判定するようにさらに構成される。
第6の態様の第2の可能な実装形態を参照して、第6の態様の第3の可能な実装形態では、V個の標的vCPUから第mのvCPUを判定する態様で、Hostは、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップと、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在すると判定された場合、第nのpCPU上で走る1つの標的vCPUを第mのvCPUとして判定するステップ、またはV個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在しないと判定された場合、優先順位に応じてV個の標的vCPUからの1つの標的vCPUを第mのvCPUとして判定するステップとを行うように特に構成される。
第6の態様の第3の可能な実装形態を参照して、第6の態様の第4の可能な実装形態では、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定する態様で、Hostは、virtioデバイスの仮想割込み経路情報に応じて、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するように特に構成され、virtioデバイスの仮想割込み経路情報は、U個の標的pCPUとU個の標的pCPU上で走る標的vCPUとの間の対応関係を含む。
本発明の実施形態の一態様では、第jの物理入出力デバイス内で第iの物理割込みが生じた場合、U個の標的pCPUから第nのpCPUが判定され、U個の標的pCPUは、第iの物理割込みおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、V個の標的vCPUは、第kのVM上で仮想化された、第iの仮想割込みとの類似性関係を有するvCPUであり、第iの仮想割込みは第iの物理割込みに対応し、X個のpCPUはU個の標的pCPUを含み、Z個のvCPUはV個の標的vCPUを含み、第nのpCPUは第iの物理割込みを処理するために使用され、第iの仮想割込みは第iの物理割込みに応じて判定され、V個の標的vCPUから第mのvCPUが判定され、その結果、第kのVMが第mのvCPUを使用して第iの仮想割込みを実行する。上記の技術的解決策によれば、vCPUが類似性を有するpCPUが、このvCPUによって処理される仮想割込みに対応する物理割込みを処理するために使用されるpCPUではないために引き起こされる余剰IPIによるVM−Exitは、実質上回避されることが可能であり、それによってコンテキストスイッチの回数を実質上低減させ、pCPUに対して仮想マシンによって引き起こされる干渉を低減させることが、理解されることが可能である。
本発明の実施形態の別の態様では、第jのvhostカーネルスレッドが第iのvhostスレッドをトリガする場合、U個の標的pCPUから第nのpCPUが判定され、U個の標的pCPUは、第iのvhostスレッドおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、V個の標的vCPUは、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みとの類似性関係を有するvCPUであり、第iのvirtioデバイスの仮想割込みは第iのvhostスレッドに対応し、X個のpCPUはU個の標的pCPUを含み、Z個のvCPUはV個の標的vCPUを含み、第nのpCPUは第iのvhostスレッドを処理するために使用され、第iのvirtioデバイスの仮想割込みは第iのvhostスレッドに応じて判定され、V個の標的vCPUから第mのvCPUが判定され、その結果、第kのVMが第mのvCPUを使用して第iのvirtioデバイスの仮想割込みを実行する。上記の技術的解決策によれば、vCPUが類似性を有するpCPUが、このvCPUによって処理される仮想割込みに対応する物理割込みを処理するために使用されるpCPUではないために引き起こされる余剰IPIによるVM−Exitは、実質上回避されることが可能であり、それによってコンテキストスイッチの回数を実質上低減させ、pCPUに対して仮想マシンによって引き起こされる干渉を低減させることが、理解されることが可能である。
本発明の実施形態における技術的解決策をより明確に説明するために、以下、本発明の実施形態について説明するために必要とされる添付の図面について簡単に紹介する。以下の説明の添付の図面は、本発明のいくつかの実施形態のみを示すことが明らかであり、当業者であれば創造的努力なくこれらの添付の図面から他の図面を導出することがある。
ダイレクトモードの概略図である。 フロント−バックエンドモードの概略図である。 本発明の一実施形態による仮想化プラットホームによって割込みを処理する方法の概略的な流れ図である。 本発明の一実施形態による仮想割込み、物理割込み、vCPU、およびpCPUの間の対応関係の概略図である。 本発明の一実施形態による仮想割込み、物理割込み、vCPU、およびpCPUの間の対応関係の別の概略図である。 本発明による仮想化プラットホームによって割込みを処理する別の方法の概略的な流れ図である。 本発明の一実施形態によるvirtioデバイスの仮想割込み、vhostスレッド、vCPU、およびpCPUの間の対応関係の概略図である。 本発明の一実施形態によるvirtioデバイスの仮想割込み、vhostスレッド、vCPU、およびpCPUの間の対応関係の別の概略図である。 本発明の一実施形態によるホストHostの構造ブロック図である。 本発明の一実施形態による別のホストHostの構造ブロック図である。 本発明の一実施形態による計算ノードの構造ブロック図である。 本発明の一実施形態による別の計算ノードの構造ブロック図である。
以下、本発明の実施形態における技術的解決策について、本発明の実施形態における添付の図面を参照して、はっきりと詳細に説明する。記載の実施形態は、本発明の実施形態のすべてではなくいくつかにすぎないことが明らかである。当業者であれば創造的努力なく本発明の実施形態に基づいて得られる他のすべての実施形態は、本発明の保護範囲内に入るものとする。
本発明の実施形態の理解を容易にするために、本発明の実施形態について説明するために紹介されることがあるいくつかの要素について、本明細書にまず説明される。
仮想マシン
仮想マシンソフトウェアを使用することによって、1つの物理計算ノード上で1または複数の計算ノードがシミュレートされることがある。物理計算ノードは、サーバ、デスクトップコンピュータ、携帯型コンピュータなどがありうる。シミュレートされた計算ノードは、仮想マシン(Virtual Machine、VM)と呼ばれる。物理計算ノードは、ホストと呼ばれる。仮想マシンは、本当の計算ノードのように動作することがある。仮想マシン上には、オペレーティングシステムおよびアプリケーションプログラムが導入されることがある。仮想マシンはまた、ネットワーク資源にアクセスしてもまたよい。仮想マシン上で走るオペレーティングシステムは、集合的に、仮想オペレーティングシステムと呼ばれる。プログラムは、本当の計算ノードのオペレーティングシステム内で走るように、仮想オペレーティングシステム内で走る。仮想ハードウェアは、仮想マシン上でさらに仮想化されることがある。具体的には、仮想化は、ホスト(Host)によってVM上で仮想中央処理装置(virtual Central Processing Unit、vCPU)などの仮想ハードウェアを仮想化することによって実施される。vCPUは、仮想マシン内で走るプログラムを処理するために使用される。1または複数のvCPUが、物理計算ノード内の1つの中央処理装置(Central Processing Unit、CPU)に対応することがある。物理計算ノード内のCPUは、物理CPU(physical CPU、pCPU)と呼ばれることがある。pCPUは、ゲスト(guest)状態およびホスト(host)状態を有することがある。仮想マシンが走っているとき、pCPUはゲスト状態にある。特殊な命令または外部からの割込みのため、pCPUは、ゲスト状態からホスト状態へ切り替わることがある。このプロセスは、仮想マシン出口(VM-Exit)と呼ばれることがある。
仮想デバイスの実装形態は、ダイレクトモードおよびフロント−バックエンドモードを含むことがある。
ダイレクトモード
パススルー(passthrough)モードとも呼ばれることがあるダイレクト(direct)モードは、ホストが特定の仮想マシンに対するデバイス分離を提供し、したがって特定の物理入出力デバイスが、特定の仮想マシンによって排他的に使用されることができることを意味する。ダイレクトモードでは、仮想割込みを処理するvCPUに対応するpCPUが、仮想割込みに対応する物理割込みを処理するpCPUと一貫しない場合、余剰プロセッサ間割込み(Inter-Processor Interrupt、IPI)によるVM−Exitが引き起こされる。
フロント−バックエンドモード
フロント−バックエンド(ドライバ分割)モードは、仮想デバイスドライバが、フロントエンドドライバおよびバックエンドドライバの協調によって実施されることを意味し、フロントエンドドライバは仮想マシン内にあり、バックエンドドライバはホスト内にある。フロントエンドドライバおよびバックエンドドライバは、メモリを共用してデータ伝送を実行する。ソフトウェアのみを使用することによってシミュレートされるデバイスと比較されると、フロント−バックエンド駆動モードは、より高い抽象レベルおよびより良好な性能を有する。フロント−バックエンドモードでは、各仮想マシンは、準仮想化されたドライバ(virtio)(略してvirtioデバイス)を使用するデバイスを有する。各virtioデバイスは、対応する仮想ホスト(vhost)カーネルスレッドを有し、vhostカーネルスレッドは、ホスト内で走る。vhostカーネルスレッドは、対応するvirtioデバイスのパケットを処理するために使用される。フロント−バックエンドモードでは、virtioデバイスの仮想割込みを処理するために使用されるvCPUに対応するpCPUが、virtioデバイスの仮想割込みに対応するvhostスレッドを処理するために使用されるpCPUと一貫しない場合、余剰IPIによるVM−Exitが引き起こされる。
図1は、ダイレクトモードの概略図である。図1に示されるように、計算ノード100内で、第1の仮想マシン101が、第1の物理入出力デバイス111を排他的に占有することがあり、第2の仮想マシン102が、第2の物理入出力デバイス112を排他的に占有することがある。図1に示されるダイレクトモードを使用する仮想マシンには、図3に示される方法が適用されることがある。
図2は、フロント−バックエンドモードの概略図である。図2に示されるように、計算ノード200内の第1のvirtioデバイス211が第1のvhostスレッド212に対応し、計算ノード200内の第2のvirtioデバイス221が第2のvhostスレッド222に対応し、第1のvirtioデバイスは第1の仮想マシン内のvirtioデバイスであり、第2のvirtioデバイスは第2の仮想マシン211内のvirtioデバイスである。図2に示されるフロント−バックエンドモードを使用する仮想マシンには、図6に示される方法が適用されることがある。
図3は、本発明の一実施形態による仮想化プラットホームによって割込みを処理する方法の概略的な流れ図である。この方法は計算ノードに適用され、計算ノードは、物理ハードウェア層と、物理ハードウェア層で走るホストHostと、Host上で走る少なくとも1つの仮想マシンVMと、少なくとも1つのVM上で仮想化された仮想ハードウェアとを含み、物理ハードウェア層はX個の物理中央処理装置pCPUおよびY個の物理入出力デバイスを含み、仮想ハードウェアはZ個の仮想中央処理装置vCPUを含み、X、Y、およびZは1より大きい正の整数であり、Y個の物理入出力デバイスは第jの物理入出力デバイスを含み、少なくとも1つのVMは第kのVMを含み、第jの物理入出力デバイスは第kのVMに向き、この方法はHostによって実行される。
301.第jの物理入出力デバイス内で第iの物理割込みが生じた場合、U個の標的pCPUから第nのpCPUを判定する。U個の標的pCPUは、第iの物理割込みおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、V個の標的vCPUは、第kのVM上で仮想化された、第iの仮想割込みとの類似性関係を有するvCPUであり、第iの仮想割込みは第iの物理割込みに対応し、X個のpCPUはU個の標的pCPUを含み、Z個のvCPUはV個の標的vCPUを含み、Uは1以上かつX以下の正の整数であり、Vは1以上かつZ以下の正の整数である。
302.第nのpCPUを使用して第iの物理割込みを処理する。
303.第iの物理割込みに応じて第iの仮想割込みを判定する。
304.V個の標的vCPUから第mのvCPUを判定し、その結果、第kのVMが第mのvCPUを使用して第iの仮想割込みを実行し、i、j、k、m、およびnは正の整数である。
本発明のこの実施形態では、第jの物理入出力デバイス内で第iの物理割込みが生じた場合、U個の標的pCPUから第nのpCPUが判定され、U個の標的pCPUは、第iの物理割込みおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、V個の標的vCPUは、第kのVM上で仮想化された、第iの仮想割込みとの類似性関係を有するvCPUであり、第iの仮想割込みは第iの物理割込みに対応し、X個のpCPUはU個の標的pCPUを含み、Z個のvCPUはV個の標的vCPUを含み、第nのpCPUは第iの物理割込みを処理するために使用され、第iの仮想割込みは第iの物理割込みに応じて判定され、V個の標的vCPUから第mのvCPUが判定され、その結果、第kのVMが第mのvCPUを使用して第iの仮想割込みを実行することが、理解されることができる。したがって、本発明のこの実施形態における方法によれば、vCPUが類似性を有するpCPUが、このvCPUによって処理される仮想割込みに対応する物理割込みを処理するために使用されるpCPUではないために引き起こされる余剰IPIによるVM−Exitは、実質上回避されることができ、それによってコンテキストスイッチの回数を実質上低減させ、pCPUに対して仮想マシンによって引き起こされる干渉を低減させる。
ホストは、仮想マシン管理プログラムを使用することによって、図3に示される方法を実施することがある。仮想マシン管理プログラムはまた、仮想マシンモニタ(Virtual Machine Monitor、VMM)またはハイパーバイザ(hypervisor)と呼ばれてもまたよい。典型的なVMMは、VMware ESX、XEN、KVM/Qemuなどである。
具体的には、pCPUが物理割込みとの類似性関係を有することは、このpCPUがこの物理割込みを処理することができることを示す。vCPUが仮想割込みとの類似性関係を有することは、このvCPUがこの仮想割込みを処理することができることを示す。pCPUがvCPUとの類似性関係を有することは、このpCPU上でこのvCPUが走ることができることを示す。したがって、U個の標的pCPUと第iの物理割込みとの間の類似性関係に応じて、U個の標的pCPUから第nのpCPUが判定される。
任意選択で、一実施形態として、U個の標的pCPUと第iの物理割込みとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iの仮想割込みとの間の類似性関係は、V個の標的vCPUと第iの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUがU個の標的pCPU上で走ることができ、Uが1に等しい、判定するステップと、第iの仮想割込みに対応する第iの物理割込みを判定するステップと、第iの物理割込みとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iの物理割込みがU個の標的pCPUによって処理されることが可能である、判定するステップとによって判定される。U個の標的pCPUと第iの物理割込みとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iの仮想割込みとの間の類似性関係は、事前設定および記憶されることがある。次いで、物理割込みが生じた場合、物理割込みおよび仮想割込みを処理するために、記憶された類似性関係に応じて、対応するpCPUおよびvCPUが発見されることがある。または、U個の標的pCPUと第iの物理割込みとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iの仮想割込みとの間の類似性関係が設定されている場合、対応する物理割込みおよび仮想割込みを処理するために、これらの類似性関係に応じて、対応するpCPUおよびvCPUが発見されることがある。この場合、第iの物理割込みが生じたとき、第iの物理割込みに対応する第iの仮想割込みを処理するために使用される第mのvCPUは、第iの物理割込みを処理する第nのpCPU上で走る。
任意選択で、別の実施形態として、U個の標的pCPUと第iの物理割込みとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iの仮想割込みとの間の類似性関係は、V個の標的vCPUと第iの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUが複数の標的pCPU上で走ることができ、Uが1より大きくかつX以下の正の整数である、判定するステップと、第iの仮想割込みに対応する第iの物理割込みを判定するステップと、第iの物理割込みとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iの物理割込みがU個の標的pCPUによって処理されることが可能である、判定するステップとによって判定される。U個の標的pCPUと第iの物理割込みとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iの仮想割込みとの間の類似性関係は、事前設定および記憶されることがある。次いで、物理割込みが生じた場合、物理割込みおよび仮想割込みを処理するために、記憶された類似性関係に応じて、対応するpCPUおよびvCPUが発見されることがある。または、U個の標的pCPUと第iの物理割込みとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iの仮想割込みとの間の類似性関係が設定されている場合、対応する物理割込みおよび仮想割込みを処理するために、これらの類似性関係に応じて、対応するpCPUおよびvCPUが発見されることがある。この場合、第iの物理割込みが生じたとき、第iの物理割込みに対応する第iの仮想割込みを処理するために使用される第mのvCPUは、物理ハードウェア層に位置するいかなるpCPU上で走るのでもなく、制限された数の判定されたpCPU上で走り、第iの物理割込みを処理する第nのpCPU上で走ることがある。
さらに、V個の標的vCPUが複数の標的pCPU上で走ることができるとき(言い換えれば、第iの物理割込みとU個の標的pCPUとの間の類似性関係が1対多数の類似性関係であるとき)、V個の標的vCPUから第mのvCPUを判定するステップは、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップと、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在すると判定された場合、第nのpCPU上で走る1つの標的vCPUを第mのvCPUとして判定するステップ、またはV個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在しないと判定された場合、優先順位に応じてV個の標的vCPUからの1つの標的vCPUを第mのvCPUとして判定するステップとを含む。この場合、仮想割込みを処理するために使用されるvCPUが、物理割込みを処理するために使用されるpCPU上で走る場合、vCPUが走るpCPUが、物理割込みを処理するpCPUとは異なるために引き起こされる余剰IPIによるVM−Exitは、生じないことがある。優先順位は、V個の標的vCPUの事前設定された優先度でありうる。優先度の選択はまた、各標的vCPUを選択する確率が同じになることを確実にするように、ラウンドロビン方策を使用することによって判定されてもまたよい。
さらに、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップは、仮想割込み経路情報に応じて、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップを含み、仮想割込み経路情報は、U個の標的pCPUとU個の標的pCPU上で走る標的vCPUとの間の対応関係を含む。このようにして、Hostは、第mのvCPUが第nのpCU上で走るかどうかを容易かつ迅速に判定することができる。
図4は、本発明の一実施形態による仮想割込み、物理割込み、vCPU、およびpCPUの間の対応関係の概略図である。図4に示されるように、第1の物理割込みが、第1の仮想割込みに対応する。第1の仮想割込みは、第4のvCPUとの類似性関係を有する。第4のvCPUは、第3のpCPUとの類似性関係を有する。この場合、第3のpCPUは、第1の物理割込みに結合されてよく、その結果、これら2つは、類似性関係を有する。第1の物理割込みが生じたとき、第3のpCPUは、第1の物理割込みを処理することがある。次いで、第1の物理割込みに対応する第1の仮想割込みおよび第1の仮想割込みを処理するために使用されるvCPUが発見される。第4のvCPUが第3のpCPU上で走るとき、第4のvCPUは、第1の物理割込みに対応する第1の仮想割込みを処理するために直接使用されることがある。このようにして、vCPUが走るpCPUが、物理割込みが生じたpCPUとは異なるために引き起こされる余剰IPIによるVM−Exitは、生じないことがある。
図5は、本発明の一実施形態による仮想割込み、物理割込み、vCPU、およびpCPUの間の対応関係の別の概略図である。図5に示されるように、第1の物理割込みは、第1の仮想割込みに対応する。第4のvCPUおよび第5のvCPUは、第3のpCPUおよび第4のpCPUの両方との類似性関係を有する。言い換えれば、第4のvCPUおよび第5のvCPUは、第3のpCPU上で走ることがあり、または第4のpCPU上で走ることがある。たとえば、第1の瞬間に、第4のvCPUは、第3のpCPU上で走り、第5のvCPUは、第4のpCPU上で走る。第2の瞬間に、第4のvCPUおよび第5のvCPUは、第3のpCPU上で同時に走ることがある。加えて、第4のvCPUおよび第5のvCPUは、第1の仮想割込みとの類似性関係を有する。すなわち、第1の仮想割込みは、第4のvCPUまたは第5のvCPUによって処理されることがある。この場合、第3のpCPUおよび第4のpCPUはどちらも、第1の物理割込みに結合されてよく、その結果、これら2つは、類似性関係を有する。第1の物理割込みが生じたとき、Hostは、第3のpCPUおよび第4のpCPUからpCPUを選択して、第1の物理割込みを処理することがある。次いで、Hostは、第1の物理割込みに対応する第1の仮想割込みおよび第1の仮想割込みを処理するために使用されるvCPUを発見し、このvCPUを使用して第1の仮想割込みを処理する。仮想割込みを処理するために使用されるvCPUは、物理割込みを処理するために使用されるpCPU上で走ることがある。したがって、vCPUが走るpCPUが、物理割込みが生じたpCPUとは異なるために引き起こされる余剰IPIによるVM−Exitは、生じないことがある。
図6は、本発明による仮想化プラットホームによって割込みを処理する別の方法の概略的な流れ図である。図6に示される方法は計算ノードに適用されることがある。計算ノードは、物理ハードウェア層と、物理ハードウェア層で走るホストHostと、Host上で走るY個の仮想マシンVMと、Host上で走るY個の仮想ホストvhostカーネルスレッドと、少なくとも1つのVM上で仮想化された仮想ハードウェアとを含み、物理ハードウェア層はX個の物理中央処理装置pCPUを含み、仮想ハードウェアはZ個の仮想中央処理装置vCPUを含み、X、Y、およびZは1より大きい正の整数であり、Y個のVMの各VMは準仮想化されたドライバvirtioデバイスを含み、Y個のVMは第kのVMを含み、第kのVMは第iのvirtioデバイスを含み、第iのvirtioデバイスはY個のvhostカーネルスレッドのうちの第jのvhostカーネルスレッドに対応し、この方法はHostによって実行される。
601.第jのvhostカーネルスレッドが第iのvhostスレッドをトリガする場合、U個の標的pCPUから第nのpCPUを判定する。U個の標的pCPUは、第iのvhostスレッドおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、V個の標的vCPUは、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みとの類似性関係を有するvCPUであり、第iのvirtioデバイスの仮想割込みは第iのvhostスレッドに対応し、X個のpCPUはU個の標的pCPUを含み、Z個のvCPUはV個の標的vCPUを含み、Uは1以上かつX以下の正の整数であり、Vは1以上かつZ以下の正の整数である。
602.第nのpCPUを使用して第iのvhostスレッドを処理する。
603.第iのvhostスレッドに応じて第iのvirtioデバイスの仮想割込みを判定する。
604.V個の標的vCPUから第mのvCPUを判定する。その結果、第kのVMが第mのvCPUを使用して第iのvirtioデバイスの仮想割込みを実行し、i、j、k、m、およびnは正の整数である。
本発明のこの実施形態では、第jのvhostカーネルスレッドが第iのvhostスレッドをトリガする場合、U個の標的pCPUから第nのpCPUが判定され、U個の標的pCPUは、第iのvhostスレッドおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、V個の標的vCPUは、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みとの類似性関係を有するvCPUであり、第iのvirtioデバイスの仮想割込みは第iのvhostスレッドに対応し、X個のpCPUはU個の標的pCPUを含み、Z個のvCPUはV個の標的vCPUを含み、第nのpCPUは第iのvhostスレッドを処理するために使用され、第iのvirtioデバイスの仮想割込みは第iのvhostスレッドに応じて判定され、V個の標的vCPUから第mのvCPUが判定され、その結果、第kのVMが第mのvCPUを使用して第iのvirtioデバイスの仮想割込みを実行する。上記の技術的解決策によれば、vCPUが類似性を有するpCPUが、このvCPUによって処理されるvirtioデバイスの仮想割込みに対応するvhostスレッドを処理するために使用されるpCPUではないために引き起こされる余剰IPIによるVM−Exitは、実質上回避されることが可能であり、それによってコンテキストスイッチの回数を実質上低減させ、pCPUに対して仮想マシンによって引き起こされる干渉を低減させることが、理解されることが可能である。
ホストは、仮想マシン管理プログラムを使用することによって、図6に示される方法を実施することがある。仮想マシン管理プログラムは、仮想マシンモニタ(Virtual Machine Monitor、VMM)またはハイパーバイザ(hypervisor)と呼ばれてもまたよい。典型的なVMMは、VMware ESX、XEN、KVM/Qemuなどである。
具体的には、pCPUがvhostスレッドとの類似性関係を有することは、このpCPUがこのvhostスレッドを処理することができることを示す。vCPUがvirtioデバイスの仮想割込みとの類似性関係を有することは、このvCPUがこのvirtioデバイスの仮想割込みを処理することができることを示す。pCPUがvCPUとの類似性関係を有することは、このpCPU上でこのvCPUが走ることができることを示す。したがって、U個の標的pCPUと第iの物理割込みとの間の類似性関係に応じて、U個の標的pCPUから第nのpCPUが判定される。
任意選択で、一実施形態として、U個の標的pCPUと第iのvhostスレッドとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係は、V個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUがU個の標的pCPU上で走ることができ、Uが1に等しい、判定するステップと、第iのvirtioデバイスの仮想割込みに対応する第iのvhostスレッドを判定するステップと、第iのvhostスレッドとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iのvhostスレッドがU個の標的pCPUによって処理されることが可能である、判定するステップとによって判定される。U個の標的pCPUと第iのvhostスレッドとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係は、事前設定および記憶されることがある。次いで、vhostスレッドが生じた場合、vhostスレッドおよびviritioデバイスの仮想割込みを処理するために、記憶された類似性関係に応じて、対応するpCPUおよびvCPUが発見されることがある。または、U個の標的pCPUと第iのvhostスレッドとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係が設定されている場合、対応するvhostスレッドおよびvirtioデバイスの対応する仮想割込みを処理するために、これらの類似性関係に応じて、対応するpCPUおよびvCPUが発見されることがある。この場合、第iのvhostスレッドが生じたとき、第iのvirtioデバイスの仮想割込みを処理するために使用される第mのvCPUは、第iのvhostスレッドを処理する第nのpCPU上で走り、第iのvirtioデバイスの仮想割込みは第iのvhostスレッドに対応する。
任意選択で、別の実施形態として、U個の標的pCPUと第iのvhostスレッドとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係は、V個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUが複数の標的pCPU上で走ることができ、Uが1より大きくかつX以下の正の整数である、判定するステップと、第iのvirtioデバイスの仮想割込みに対応する第iのvhostスレッドを判定するステップと、第iのvhostスレッドとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iのvhostスレッドがU個の標的pCPUによって処理されることが可能である、判定するステップとによって判定される。U個の標的pCPUと第iのvhostスレッドとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係は、事前設定および記憶されることがある。次いで、vhostスレッドが生じた場合、vhostスレッドおよびviritioデバイスの仮想割込みを処理するために、記憶された類似性関係に応じて、対応するpCPUおよびvCPUが発見されることがある。または、U個の標的pCPUと第iのvhostスレッドとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係が設定されている場合、対応するvhostスレッドおよびvirtioデバイスの対応する仮想割込みを処理するために、これらの類似性関係に応じて、対応するpCPUおよびvCPUが発見されることがある。この場合、第iのvhostスレッドが生じたとき、第iのvirtioデバイスの仮想割込みを処理するために使用される第mのvCPUは、物理ハードウェア層に位置するいかなるpCPU上で走るのでもなく、制限された数の判定されたpCPU上で走り、第iのvhostスレッドを処理する第nのpCPU上で走ることがあり、第iのvirtioデバイスの仮想割込みは第iのvhostスレッドに対応する。
さらに、V個の標的vCPUが複数の標的pCPU上で走ることができるとき(言い換えれば、第iのvhostスレッドとU個の標的pCPUとの間の類似性関係が1対多数の類似性関係であるとき)、V個の標的vCPUから第mのvCPUを判定するステップは、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップと、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在すると判定された場合、第nのpCPU上で走る1つの標的vCPUを第mのvCPUとして判定するステップ、またはV個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在しないと判定された場合、優先順位に応じてV個の標的vCPUからの1つの標的vCPUを第mのvCPUとして判定するステップとを含む。この場合、virtioデバイスの仮想割込みを処理するために使用されるvCPUが、vhostスレッドを処理するために使用されるpCPU上で走る場合、vCPUが走るpCPUが、vhostスレッドを処理するpCPUとは異なるために引き起こされる余剰IPIによるVM−Exitは、生じないことがある。優先順位は、V個の標的vCPUの事前設定された優先度でありうる。優先度の選択はまた、各標的vCPUを選択する確率が同じになることを確実にするように、ラウンドロビン方策を使用することによって判定されてもまたよい。
さらに、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップは、virtioデバイスの仮想割込み経路情報に応じて、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップを含み、virtioデバイスの仮想割込み経路情報は、U個の標的pCPUとU個の標的pCPU上で走る標的vCPUとの間の対応関係を含む。このようにして、Hostは、第mのvCPUが第nのpCU上で走るかどうかを容易かつ迅速に判定することができる。
図7は、本発明の一実施形態によるvirtioデバイスの仮想割込み、vhostスレッド、vCPU、およびpCPUの間の対応関係の概略図である。図7に示されるように、第1のvhostスレッドが、第1のvirtioデバイスの仮想割込みに対応する。第4のvCPUは、第1のvirtioデバイスの仮想割込みとの類似性関係を有する。第3のpCPUは、第4のvCPUとの類似性関係を有する。この場合、第1のvhostスレッドは、第3のpCPUに結合されてよく、その結果、これら2つは、類似性関係を有する。第1のvhostスレッドが生じたとき、第3のpCPUは、第1のvhostスレッドを処理することがある。次いで、第1のvirtioデバイスの仮想割込みおよび第1のvirtioデバイスの仮想割込みを処理するために使用されるvCPUが発見され、第1のvirtioデバイスの仮想割込みは、第1のvhostスレッドに対応する。第4のvCPUが第3のpCPU上で走るとき、第4のvCPUは、第1のvirtioデバイスの仮想割込みを処理するために直接使用されることがあり、第1のvirtioデバイスの仮想割込みは、第1のvhostスレッドに対応する。このようにして、vCPUが走るpCPUが、vhostスレッドが生じたpCPUとは異なるために引き起こされる余剰IPIによるVM−Exitは、生じないことがある。
図8は、本発明の一実施形態によるvirtioデバイスの仮想割込み、vhostスレッド、vCPU、およびpCPUの間の対応関係の別の概略図である。図8に示されるように、第1のvhostスレッドは、第1のvirtioデバイスの仮想割込みに対応する。第3のpCPUおよび第4のpCPUは、第4のvCPUおよび第5のvCPUの両方との類似性関係を有する。言い換えれば、第4のvCPUおよび第5のvCPUは、第3のpCPU上で走ることがあり、または第4のpCPU上で走ることがある。たとえば、第1の瞬間に、第4のvCPUは、第3のpCPU上で走り、第5のvCPUは、第4のpCPU上で走る。第2の瞬間に、第4のvCPUおよび第5のvCPUは、第3のpCPU上で同時に走ることがある。加えて、第4のvCPUおよび第5のvCPUは、第1のvirtioデバイスの仮想割込みとの類似性関係を有する。すなわち、第1のvirtioデバイスの仮想割込みは、第4のvCPUまたは第5のvCPUによって処理されることがある。この場合、第3のpCPUおよび第4のpCPUはどちらも、第1のvhostスレッドに結合されてよく、その結果、これら2つは、類似性関係を有する。次いで、第1のvhostスレッドが生じたとき、Hostは、第3のpCPUおよび第4のpCPUからpCPUを選択して、第1のvhostスレッドを処理することがある。次いで、Hostは、第1のvirtioデバイスの仮想割込みおよび第1のvirtioデバイスの仮想割込みを処理するために使用されるvCPUを発見し、このvCPUを使用して第1のvirtioデバイスの仮想割込みを処理し、第1のvirtioデバイスの仮想割込みは、第1のvhostスレッドに対応する。virtioデバイスの仮想割込みを処理するために使用されるvCPUは、vhostスレッドを処理するために使用されるpCPU上で走ることがある。したがって、vCPUが走るpCPUが、vhostスレッドが生じたpCPUとは異なるために引き起こされる余剰IPIによるVM−Exitは、生じないことがある。
図9は、本発明の一実施形態によるホストHostの構造ブロック図である。図9に示されるHost900は、図3に示されるすべてのステップを実行することができる。具体的には、Hostは計算ノードに適用され、計算ノードは、物理ハードウェア層と、物理ハードウェア層で走るHostと、Host上で走る少なくとも1つの仮想マシンVMと、少なくとも1つのVM上で仮想化された仮想ハードウェアとを含み、物理ハードウェア層はX個の物理中央処理装置pCPUおよびY個の物理入出力デバイスを含み、仮想ハードウェアはZ個の仮想中央処理装置vCPUを含み、X、Y、およびZは1より大きい正の整数であり、Y個の物理入出力デバイスは第jの物理入出力デバイスを含み、少なくとも1つのVMは第kのVMを含み、第jの物理入出力デバイスは第kのVMに向き、Hostは、第1の判定ユニット901、第2の呼出しユニット902、第3の判定ユニット903、および第4の判定ユニット904を含む。
第1の判定ユニット901は、第jの物理入出力デバイス内で第iの物理割込みが生じた場合、U個の標的pCPUから第nのpCPUを判定するように構成され、U個の標的pCPUは、第iの物理割込みおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、V個の標的vCPUは、第kのVM上で仮想化された、第iの仮想割込みとの類似性関係を有するvCPUであり、第iの仮想割込みは第iの物理割込みに対応し、X個のpCPUはU個の標的pCPUを含み、Z個のvCPUはV個の標的vCPUを含み、Uは1以上かつX以下の正の整数であり、Vは1以上かつZ以下の正の整数である。
第2の呼出しユニット902は、第nのpCPUを使用して第iの物理割込みを処理するように構成される。
第3の判定ユニット903は、第iの物理割込みに応じて第iの仮想割込みを判定するように構成される。
第4の判定ユニット904は、V個の標的vCPUから第mのvCPUを判定するように構成され、その結果、第kのVMが第mのvCPUを使用して第iの仮想割込みを実行し、i、j、k、m、およびnは正の整数である。
本発明のこの実施形態におけるHostによれば、第jの物理入出力デバイス内で第iの物理割込みが生じた場合、U個の標的pCPUから第nのpCPUが判定され、U個の標的pCPUは、第iの物理割込みおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、V個の標的vCPUは、第kのVM上で仮想化された、第iの仮想割込みとの類似性関係を有するvCPUであり、第iの仮想割込みは第iの物理割込みに対応し、X個のpCPUはU個の標的pCPUを含み、Z個のvCPUはV個の標的vCPUを含み、第nのpCPUは第iの物理割込みを処理するために使用され、第iの仮想割込みは第iの物理割込みに応じて判定され、V個の標的vCPUから第mのvCPUが判定され、その結果、第kのVMが第mのvCPUを使用して第iの仮想割込みを実行することが、理解されることが可能である。したがって、図9に示されるHostによれば、vCPUが類似性を有するpCPUが、このvCPUによって処理される仮想割込みに対応する物理割込みを処理するために使用されるpCPUではないために引き起こされる余剰IPIによるVM−Exitは、実質上回避されることが可能であり、それによってコンテキストスイッチの回数を実質上低減させ、pCPUに対して仮想マシンによって引き起こされる干渉を低減させる。
任意選択で、一実施形態として、第1の判定ユニット901は、V個の標的vCPUと第iの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUがU個の標的pCPU上で走ることができ、Uが1に等しい、判定するステップと、第iの仮想割込みに対応する第iの物理割込みを判定するステップと、第iの物理割込みとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iの物理割込みがU個の標的pCPUによって処理されることが可能である、判定するステップとを行うようにさらに構成される。このようにして、U個の標的pCPUと第iの物理割込みとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iの仮想割込みとの間の類似性関係が判定されることがある。この場合、第iの物理割込みが生じたとき、第iの物理割込みに対応する第iの仮想割込みを処理するために使用される第mのvCPUは、第iの物理割込みを処理する第nのpCPU上で走る。
任意選択で、別の実施形態として、第1の判定ユニット901は、V個の標的vCPUと第iの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUが複数の標的pCPU上で走ることができ、Uが1より大きくかつX以下の正の整数である、判定するステップと、第iの仮想割込みに対応する第iの物理割込みを判定するステップと、第iの物理割込みとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iの物理割込みがU個の標的pCPUによって処理されることが可能である、判定するステップとを行うようにさらに構成される。このようにして、U個の標的pCPUと第iの物理割込みとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iの仮想割込みとの間の類似性関係が判定されることがある。この場合、第iの物理割込みが生じたとき、第iの物理割込みに対応する第iの仮想割込みを処理するために使用される第mのvCPUは、物理ハードウェア層に位置するいかなるpCPU上で走るのでもなく、制限された数の判定されたpCPU上で走り、第iの物理割込みを処理する第nのpCPU上で走ることがある。
さらに、V個の標的vCPUが複数の標的pCPU上で走ることができるとき(言い換えれば、第iの物理割込みとU個の標的pCPUとの間の類似性関係が1対多数の類似性関係であるとき)、第4の判定ユニット904は、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップと、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在すると判定された場合、第nのpCPU上で走る1つの標的vCPUを第mのvCPUとして判定するステップであって、その結果、第kのVMが第mのvCPUを使用して第iの仮想割込みを実行する、判定するステップ、またはV個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在しないと判定された場合、優先順位に応じてV個の標的vCPUからの1つの標的vCPUを第mのvCPUとして判定するステップであって、その結果、第kのVMが第mのvCPUを使用して第iの仮想割込みを実行する、判定するステップとを行うように特に構成される。この場合、仮想割込みを処理するために使用されるvCPUが、物理割込みを処理するために使用されるpCPU上で走る場合、vCPUが走るpCPUが、物理割込みが生じたpCPUとは異なるために引き起こされる余剰IPIによるVM−Exitは、生じないことがある。優先順位は、V個の標的vCPUの事前設定された優先度でありうる。優先度の選択はまた、各標的vCPUを選択する確率が同じになることを確実にするように、ラウンドロビン方策を使用することによって判定されることがある。したがって、vCPUが類似性を有するpCPUが、このvCPUによって処理される仮想割込みに対応する物理割込みを処理するために使用されるpCPUではないために引き起こされる余剰IPIによるVM−Exitは、最大限回避されることが可能であり、それによってコンテキストスイッチの回数を実質上低減させ、pCPUに対して仮想マシンによって引き起こされる干渉を低減させる。
さらに、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定する態様で、第4の判定ユニット904は、仮想割込み経路情報に応じて、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するように特に構成され、仮想割込み経路情報は、U個の標的pCPUとU個の標的pCPU上で走る標的vCPUとの間の対応関係を含む。このようにして、Hostは、第mのvCPUが第nのpCU上で走るかどうかを容易かつ迅速に判定することができる。
図10は、本発明の一実施形態による別のホストHostの構造ブロック図である。図10に示されるHost1000は、図6に示されるすべてのステップを実行することができる。Host1000は計算ノードに適用され、計算ノードは、物理ハードウェア層と、物理ハードウェア層で走るHostと、Host上で走るY個の仮想マシンVMと、Host上で走るY個の仮想ホストvhostカーネルスレッドと、少なくとも1つのVM上で仮想化された仮想ハードウェアとを含み、物理ハードウェア層はX個の物理中央処理装置pCPUを含み、仮想ハードウェアはZ個の仮想中央処理装置vCPUを含み、X、Y、およびZは1より大きい正の整数であり、Y個のVMの各VMは準仮想化されたドライバvirtioデバイスを含み、Y個のVMは第kのVMを含み、第kのVMは第iのvirtioデバイスを含み、第iのvirtioデバイスはY個のvhostカーネルスレッドの第jのvhostカーネルスレッドに対応し、Hostは、第1の判定ユニット1001、第2の呼出しユニット1002、第3の判定ユニット1003、および第4の判定ユニット1005を含む。
第1の判定ユニット1001は、第jのvhostカーネルスレッドが第iのvhostスレッドをトリガする場合、U個の標的pCPUから第nのpCPUを判定するように構成され、U個の標的pCPUは、第iのvhostスレッドおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、V個の標的vCPUは、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みとの類似性関係を有するvCPUであり、第iのvirtioデバイスの仮想割込みは第iのvhostスレッドに対応し、X個のpCPUはU個の標的pCPUを含み、Z個のvCPUはV個の標的vCPUを含み、Uは1以上かつX以下の正の整数であり、Vは1以上かつZ以下の正の整数である。
第2の呼出しユニット1002は、第nのpCPUを使用して第iのvhostスレッドを処理するように構成される。
第3の判定ユニット1003は、第iのvhostスレッドに応じて第iのvirtioデバイスの仮想割込みを判定するようにさらに構成される。
第4の判定ユニット1004は、V個の標的vCPUから第mのvCPUを判定するようにさらに構成され、その結果、第kのVMが第mのvCPUを使用して第iのvirtioデバイスの仮想割込みを実行し、i、j、k、m、およびnは正の整数である。
本発明のこの実施形態で提供されるホストHostによれば、第jのvhostカーネルスレッドが第iのvhostスレッドをトリガする場合、U個の標的pCPUから第nのpCPUが判定され、U個の標的pCPUは、第iのvhostスレッドおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、V個の標的vCPUは、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みとの類似性関係を有するvCPUであり、第iのvirtioデバイスの仮想割込みは第iのvhostスレッドに対応し、X個のpCPUはU個の標的pCPUを含み、Z個のvCPUはV個の標的vCPUを含み、第nのpCPUは第iのvhostスレッドを処理するために使用され、第iのvirtioデバイスの仮想割込みは第iのvhostスレッドに応じて判定され、V個の標的vCPUから第mのvCPUが判定され、その結果、第kのVMが第mのvCPUを使用して第iのvirtioデバイスの仮想割込みを実行することが、理解されることが可能である。したがって、図10に示されるHostによれば、vCPUが類似性を有するpCPUが、このvCPUによって処理されるvirtioデバイスの仮想割込みに対応するvhostスレッドを処理するために使用されるpCPUではないために引き起こされる余剰IPIによるVM−Exitは、実質上回避されることが可能であり、それによってコンテキストスイッチの回数を実質上低減させ、pCPUに対して仮想マシンによって引き起こされる干渉を低減させる。
任意選択で、一実施形態として、第1の判定ユニット1001は、V個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUがU個の標的pCPU上で走ることができ、Uが1に等しい、判定するステップと、第iのvirtioデバイスの仮想割込みに対応する第iのvhostスレッドを判定するステップと、第iのvhostスレッドとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iのvhostスレッドがU個の標的pCPUによって処理されることが可能である、判定するステップとを行うようにさらに構成される。U個の標的pCPUと第iのvhostスレッドとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係は、事前設定および記憶されることがある。次いで、vhostスレッドが生じた場合、vhostスレッドおよびviritioデバイスの仮想割込みを処理するために、記憶された類似性関係に応じて、対応するpCPUおよびvCPUが発見されることがある。または、U個の標的pCPUと第iのvhostスレッドとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係が設定されている場合、対応するvhostスレッドおよびvirtioデバイスの対応する仮想割込みを処理するために、これらの類似性関係に応じて、対応するpCPUおよびvCPUが発見されることがある。この場合、第iのvhostスレッドが生じたとき、第iのvirtioデバイスの仮想割込みを処理するために使用される第mのvCPUは、第iのvhostスレッドを処理する第nのpCPU上で走り、第iのvirtioデバイスの仮想割込みは第iのvhostスレッドに対応する。
任意選択で、別の実施形態として、第1の判定ユニット1001は、V個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUが複数の標的pCPU上で走ることができ、Uが1より大きくかつX以下の正の整数である、判定するステップと、第iのvirtioデバイスの仮想割込みに対応する第iのvhostスレッドを判定するステップと、第iのvhostスレッドとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iのvhostスレッドがU個の標的pCPUによって処理されることが可能である、判定するステップとを行うようにさらに構成される。U個の標的pCPUと第iのvhostスレッドとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係は、事前設定および記憶されることがある。次いで、vhostスレッドが生じた場合、vhostスレッドおよびviritioデバイスの仮想割込みを処理するために、記憶された類似性関係に応じて、対応するpCPUおよびvCPUが発見されることがある。または、U個の標的pCPUと第iのvhostスレッドとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係が設定されている場合、対応するvhostスレッドおよびvirtioデバイスの対応する仮想割込みを処理するために、これらの類似性関係に応じて、対応するpCPUおよびvCPUが発見されることがある。この場合、第iのvhostスレッドが生じたとき、第iのvirtioデバイスの仮想割込みを処理するために使用される第mのvCPUは、物理ハードウェア層に位置するいかなるpCPU上で走るのでもなく、制限された数の判定されたpCPU上で走り、第iのvhostスレッドを処理する第nのpCPU上で走ることがあり、第iのvirtioデバイスの仮想割込みは第iのvhostスレッドに対応する。
さらに、V個の標的vCPUが複数の標的pCPU上で走ることができるとき(言い換えれば、第iのvhostスレッドとU個の標的pCPUとの間の類似性関係が1対多数の類似性関係であるとき)、第4の判定ユニット1004は、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップと、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在すると判定された場合、第nのpCPU上で走る1つの標的vCPUを第mのvCPUとして判定するステップであって、その結果、第kのVMが第mのvCPUを使用して第iのvirtioデバイスの仮想割込みを実行する、判定するステップ、またはV個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在しないと判定された場合、優先順位に応じてV個の標的vCPUからの1つの標的vCPUを第mのvCPUとして判定するステップであって、その結果、第kのVMが第mのvCPUを使用して第iのvirtioデバイスの仮想割込みを実行する、判定するステップとを行うように特に構成される。この場合、virtioデバイスの仮想割込みを処理するために使用されるvCPUが、vhostスレッドを処理するために使用されるpCPU上で走る場合、vCPUが走るpCPUが、vhostスレッドを処理するpCPUとは異なるために引き起こされる余剰IPIによるVM−Exitは、生じないことがある。優先順位は、V個の標的vCPUの事前設定された優先度でありうる。優先度の選択はまた、各標的vCPUを選択する確率が同じになることを確実にするように、ラウンドロビン方策を使用することによって判定されてもまたよい。したがって、vCPUが類似性を有するpCPUが、このvCPUによって処理される仮想割込みに対応する物理割込みを処理するために使用されるpCPUではないために引き起こされる余剰IPIによるVM−Exitは、最大限回避されることが可能であり、それによってコンテキストスイッチの回数を実質上低減させ、pCPUに対して仮想マシンによって引き起こされる干渉を低減させる。
さらに、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定する態様で、第4の判定ユニット1004は、virtioデバイスの仮想割込み経路情報に応じて、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するように特に構成され、virtioデバイスの仮想割込み経路情報は、U個の標的pCPUとU個の標的pCPU上で走る標的vCPUとの間の対応関係を含む。このようにして、Hostは、第mのvCPUが第nのpCU上で走るかどうかを容易かつ迅速に判定することができる。このようにして、Hostは、第mのvCPUが第nのpCU上で走るかどうかを容易かつ迅速に判定することができる。
図11は、本発明の一実施形態による計算ノードの構造ブロック図である。図11に示される計算ノードは、図3に示されるすべてのステップを実行することができる。計算ノードは、第jの物理入出力デバイスを含むY個の物理入出力デバイス1101と、X個の物理中央処理装置pCPU1102と、X個の物理中央処理装置pCPUのそれぞれおよびY個の物理入出力デバイスのそれぞれに接続されたメモリ1103であって、X個の物理中央処理装置pCPUのうちの1または複数のpCPUが、メモリ1103内に記憶された動作命令を呼び出しまたは実行するように構成される、メモリ1103と、ホストHostと、少なくとも1つの仮想マシンVMと、少なくとも1つの仮想マシンVM上で仮想化された仮想ハードウェアとを含み、仮想ハードウェアはZ個の仮想中央処理装置vCPUを含み、少なくとも1つのVMは第kのVMを含み、第jの物理入出力デバイスは第kのVMに向き、Hostは、
第jの物理入出力デバイス内で第iの物理割込みが生じた場合、U個の標的pCPUから第nのpCPUを判定するステップであって、U個の標的pCPUが、第iの物理割込みおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、V個の標的vCPUが、第kのVM上で仮想化された、第iの仮想割込みとの類似性関係を有するvCPUであり、第iの仮想割込みが第iの物理割込みに対応し、X個のpCPUがU個の標的pCPUを含み、Z個のvCPUがV個の標的vCPUを含む、判定するステップと、
第nのpCPUを使用して第iの物理割込みを処理するステップと、
第iの物理割込みに応じて第iの仮想割込みを判定するステップと、
V個の標的vCPUから第mのvCPUを判定するステップであって、その結果、第kのVMが第mのvCPUを使用して第iの仮想割込みを実行する、判定するステップとを行うように構成され、X、Y、およびZは1より大きい正の整数であり、Uは1以上かつX以下の正の整数であり、Vは1以上かつZ以下の正の整数であり、i、j、k、m、およびnは正の整数である。
本発明のこの実施形態における計算ノードによれば、第jの物理入出力デバイス内で第iの物理割込みが生じた場合、U個の標的pCPUから第nのpCPUが判定され、U個の標的pCPUは、第iの物理割込みおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、V個の標的vCPUは、第kのVM上で仮想化された、第iの仮想割込みとの類似性関係を有するvCPUであり、第iの仮想割込みは第iの物理割込みに対応し、X個のpCPUはU個の標的pCPUを含み、Z個のvCPUはV個の標的vCPUを含み、第nのpCPUは第iの物理割込みを処理するために使用され、第iの仮想割込みは第iの物理割込みに応じて判定され、V個の標的vCPUから第mのvCPUが判定され、その結果、第kのVMが第mのvCPUを使用して第iの仮想割込みを実行することが、理解されることが可能である。したがって、図11に示される計算ノードによれば、vCPUが類似性を有するpCPUが、このvCPUによって処理される仮想割込みに対応する物理割込みを処理するために使用されるpCPUではないために引き起こされる余剰IPIによるVM−Exitは、実質上回避されることが可能であり、それによってコンテキストスイッチの回数を実質上低減させ、pCPUに対して仮想マシンによって引き起こされる干渉を低減させる。
任意選択で、一実施形態として、Hostは、U個の標的pCPUと第iの物理割込みとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iの仮想割込みとの間の類似性関係を、V個の標的vCPUと第iの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUがU個の標的pCPU上で走ることができ、Uが1に等しい、判定するステップと、第iの仮想割込みに対応する第iの物理割込みを判定するステップと、第iの物理割込みとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iの物理割込みがU個の標的pCPUによって処理されることが可能である、判定するステップとによって判定するようにさらに構成される。U個の標的pCPUと第iの物理割込みとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iの仮想割込みとの間の類似性関係は、事前設定および記憶されることがある。次いで、物理割込みが生じた場合、物理割込みおよび仮想割込みを処理するために、記憶された類似性関係に応じて、対応するpCPUおよびvCPUが発見されることがある。または、U個の標的pCPUと第iの物理割込みとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iの仮想割込みとの間の類似性関係が設定されている場合、対応する物理割込みおよび仮想割込みを処理するために、これらの類似性関係に応じて、対応するpCPUおよびvCPUが発見されることがある。この場合、第iの物理割込みが生じたとき、第iの物理割込みに対応する第iの仮想割込みを処理するために使用される第mのvCPUは、第iの物理割込みを処理する第nのpCPU上で走る。
任意選択で、別の実施形態として、Hostは、U個の標的pCPUと第iの物理割込みとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iの仮想割込みとの間の類似性関係を、V個の標的vCPUと第iの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUが複数の標的pCPU上で走ることができ、Uが1より大きくかつX以下の正の整数である、判定するステップと、第iの仮想割込みに対応する第iの物理割込みを判定するステップと、第iの物理割込みとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iの物理割込みがU個の標的pCPUによって処理されることが可能である、判定するステップとによって判定するようにさらに構成される。U個の標的pCPUと第iの物理割込みとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iの仮想割込みとの間の類似性関係は、事前設定および記憶されることがある。次いで、物理割込みが生じた場合、物理割込みおよび仮想割込みを処理するために、記憶された類似性関係に応じて、対応するpCPUおよびvCPUが発見されることがある。または、U個の標的pCPUと第iの物理割込みとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iの仮想割込みとの間の類似性関係が設定されている場合、対応する物理割込みおよび仮想割込みを処理するために、これらの類似性関係に応じて、対応するpCPUおよびvCPUが発見されることがある。この場合、第iの物理割込みが生じたとき、第iの物理割込みに対応する第iの仮想割込みを処理するために使用される第mのvCPUは、物理ハードウェア層に位置するいかなるpCPU上で走るのでもなく、制限された数の判定されたpCPU上で走り、第iの物理割込みを処理する第nのpCPU上で走ることがある。
さらに、V個の標的vCPUが複数の標的pCPU上で走ることができるとき(言い換えれば、第iの物理割込みとU個の標的pCPUとの間の類似性関係が1対多数の類似性関係であるとき)、V個の標的vCPUから第mのvCPUを判定する態様で、Hostは、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップと、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在すると判定された場合、第nのpCPU上で走る1つの標的vCPUを第mのvCPUとして判定するステップ、またはV個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在しないと判定された場合、優先順位に応じてV個の標的vCPUからの1つの標的vCPUを第mのvCPUとして判定するステップとを行うように特に構成される。この場合、仮想割込みを処理するために使用されるvCPUが、物理割込みを処理するために使用されるpCPU上で走る場合、vCPUが走るpCPUが、物理割込みが生じたpCPUとは異なるために引き起こされる余剰IPIによるVM−Exitは、生じないことがある。優先順位は、V個の標的vCPUの事前設定された優先度でありうる。優先度の選択はまた、各標的vCPUを選択する確率が同じになることを確実にするように、ラウンドロビン方策を使用することによって判定されてもまたよい。したがって、vCPUが類似性を有するpCPUが、このvCPUによって処理される仮想割込みに対応する物理割込みを処理するために使用されるpCPUではないために引き起こされる余剰IPIによるVM−Exitは、最大限回避されることが可能であり、それによってコンテキストスイッチの回数を実質上低減させ、pCPUに対して仮想マシンによって引き起こされる干渉を低減させる。
さらに、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定する態様で、Hostは、仮想割込み経路情報に応じて、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するように特に構成され、仮想割込み経路情報は、U個の標的pCPUとU個の標的pCPU上で走る標的vCPUとの間の対応関係を含む。このようにして、Hostは、第mのvCPUが第nのpCU上で走るかどうかを容易かつ迅速に判定することができる。
図12は、本発明の一実施形態による別の計算ノードの構造ブロック図である。図12に示される計算ノード1200は、図6に示されるすべてのステップを実行することができる。計算ノード1200は、X個の物理中央処理装置pCPU1201と、X個の物理中央処理装置pCPUに接続されたメモリ1202であって、X個の物理中央処理装置pCPUのうちの1または複数のpCPUが、メモリ1202内に記憶された動作命令を呼び出しまたは実行するように構成される、メモリ1202と、ホストHostと、Y個の仮想マシンVMと、Y個の仮想ホストvhostカーネルスレッドと、少なくとも1つのVM上で仮想化された仮想ハードウェアとを含み、仮想ハードウェアはZ個の仮想中央処理装置vCPUを含み、Y個のVMの各VMは準仮想化されたドライバvirtioデバイスを含み、Y個のVMは第kのVMを含み、第kのVMは第iのvirtioデバイスを含み、第iのvirtioデバイスはY個のvhostカーネルスレッドのうちの第jのvhostカーネルスレッドに対応し、Hostは、
第jのvhostカーネルスレッドが第iのvhostスレッドをトリガする場合、U個の標的pCPUから第nのpCPUを判定するステップであって、U個の標的pCPUが、第iのvhostスレッドおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、V個の標的vCPUが、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みとの類似性関係を有するvCPUであり、第iのvirtioデバイスの仮想割込みが第iのvhostスレッドに対応し、X個のpCPUがU個の標的pCPUを含み、Z個のvCPUがV個の標的vCPUを含む、判定するステップと、
第nのpCPUを使用して第iのvhostスレッドを処理するステップと、
第iのvhostスレッドに応じて第iのvirtioデバイスの仮想割込みを判定するステップと、
V個の標的vCPUから第mのvCPUを判定するステップであって、その結果、第kのVMが第mのvCPUを使用して第iのvirtioデバイスの仮想割込みを実行する、判定するステップとを行うように構成され、X、Y、およびZは1より大きい正の整数であり、Uは1以上かつX以下の正の整数であり、Vは1以上かつZ以下の正の整数であり、i、j、k、m、およびnは正の整数である。
本発明のこの実施形態における計算ノードによれば、第jのvhostカーネルスレッドが第iのvhostスレッドをトリガする場合、U個の標的pCPUから第nのpCPUが判定され、U個の標的pCPUは、第iのvhostスレッドおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、V個の標的vCPUは、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みとの類似性関係を有するvCPUであり、第iのvirtioデバイスの仮想割込みは第iのvhostスレッドに対応し、X個のpCPUはU個の標的pCPUを含み、Z個のvCPUはV個の標的vCPUを含み、第nのpCPUは第iのvhostスレッドを処理するために使用され、第iのvirtioデバイスの仮想割込みは第iのvhostスレッドに応じて判定され、V個の標的vCPUから第mのvCPUが判定され、その結果、第kのVMが第mのvCPUを使用して第iのvirtioデバイスの仮想割込みを実行する。したがって、図12に示される計算ノードによれば、vCPUが類似性を有するpCPUが、このvCPUによって処理されるvirtioデバイスの仮想割込みに対応するvhostスレッドを処理するために使用されるpCPUではないために引き起こされる余剰IPIによるVM−Exitは、実質上回避されることが可能であり、それによってコンテキストスイッチの回数を実質上低減させ、pCPUに対して仮想マシンによって引き起こされる干渉を低減させる。
任意選択で、一実施形態として、Hostは、U個の標的pCPUと第iの物理割込みとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係を、V個の標的vCPUと第iの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUがU個の標的pCPU上で走ることができ、Uが1に等しい、判定するステップと、第iのvirtioデバイスの仮想割込みに対応する第iのvhostスレッドを判定するステップと、第iのvhostスレッドとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iのvhostスレッドがU個の標的pCPUによって処理されることが可能である、判定するステップとによって判定するようにさらに構成される。U個の標的pCPUと第iのvhostスレッドとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係は、事前設定および記憶されることがある。次いで、vhostスレッドが生じた場合、vhostスレッドおよびviritioデバイスの仮想割込みを処理するために、記憶された類似性関係に応じて、対応するpCPUおよびvCPUが発見されることがある。または、U個の標的pCPUと第iのvhostスレッドとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係が設定されている場合、対応するvhostスレッドおよびvirtioデバイスの対応する仮想割込みを処理するために、これらの類似性関係に応じて、対応するpCPUおよびvCPUが発見されることがある。この場合、第iのvhostスレッドが生じたとき、第iのvirtioデバイスの仮想割込みを処理するために使用される第mのvCPUは、第iのvhostスレッドを処理する第nのpCPU上で走り、第iのvirtioデバイスの仮想割込みは第iのvhostスレッドに対応する。
任意選択で、別の実施形態として、Hostは、U個の標的pCPUと第iの物理割込みとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iの仮想割込みとの間の類似性関係を、V個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUが複数の標的pCPU上で走ることができ、Uが1より大きくかつX以下の正の整数である、判定するステップと、第iのvirtioデバイスの仮想割込みに対応する第iのvhostスレッドを判定するステップと、第iのvhostスレッドとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iのvhostスレッドがU個の標的pCPUによって処理されることが可能である、判定するステップとによって判定するようにさらに構成される。U個の標的pCPUと第iのvhostスレッドとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係は、事前設定および記憶されることがある。次いで、vhostスレッドが生じた場合、vhostスレッドおよびviritioデバイスの仮想割込みを処理するために、記憶された類似性関係に応じて、対応するpCPUおよびvCPUが発見されることがある。または、U個の標的pCPUと第iのvhostスレッドとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係が設定されている場合、対応するvhostスレッドおよびvirtioデバイスの対応する仮想割込みを処理するために、これらの類似性関係に応じて、対応するpCPUおよびvCPUが発見されることがある。この場合、第iのvhostスレッドが生じたとき、第iのvirtioデバイスの仮想割込みを処理するために使用される第mのvCPUは、物理ハードウェア層に位置するいかなるpCPU上で走るのでもなく、制限された数の判定されたpCPU上で走り、第iのvhostスレッドを処理する第nのpCPU上で走ることがあり、第iのvirtioデバイスの仮想割込みは、第iのvhostスレッドに対応する。
さらに、V個の標的vCPUが複数の標的pCPU上で走ることができるとき(言い換えれば、第iのvhostスレッドとU個の標的pCPUとの間の類似性関係が1対多数の類似性関係であるとき)、V個の標的vCPUから第mのvCPUを判定する態様で、Hostは、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップと、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在すると判定された場合、第nのpCPU上で走る1つの標的vCPUを第mのvCPUとして判定するステップであって、その結果、第kのVMが第mのvCPUを使用して第iのvirtioデバイスの仮想割込みを実行する、判定するステップ、またはV個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在しないと判定された場合、優先順位に応じてV個の標的vCPUからの1つの標的vCPUを第mのvCPUとして判定するステップであって、その結果、第kのVMが第mのvCPUを使用して第iのvirtioデバイスの仮想割込みを実行する、判定するステップとを行うように特に構成される。この場合、virtioデバイスの仮想割込みを処理するために使用されるvCPUが、vhostスレッドを処理するために使用されるpCPU上で走る場合、vCPUが走るpCPUが、vhostスレッドを処理するpCPUとは異なるために引き起こされる余剰IPIによるVM−Exitは、生じないことがある。優先順位は、V個の標的vCPUの事前設定された優先度でありうる。優先度の選択はまた、各標的vCPUを選択する確率が同じになることを確実にするように、ラウンドロビン方策を使用することによって判定されてもまたよい。したがって、vCPUが類似性を有するpCPUが、このvCPUによって処理される仮想割込みに対応する物理割込みを処理するために使用されるpCPUではないために引き起こされる余剰IPIによるVM−Exitは、最大限回避されることが可能であり、それによってコンテキストスイッチの回数を実質上低減させ、pCPUに対して仮想マシンによって引き起こされる干渉を低減させる。
さらに、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定する態様で、Hostは、virtioデバイスの仮想割込み経路情報に応じて、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するように特に構成され、virtioデバイスの仮想割込み経路情報は、U個の標的pCPUとU個の標的pCPU上で走る標的vCPUとの間の対応関係を含む。このようにして、Hostは、第mのvCPUが第nのpCU上で走るかどうかを容易かつ迅速に判定することができる。
上記の実施形態における方法のプロセスのすべてまたはいくつかは、関連ハードウェア(たとえば、プロセッサ)を指示するコンピュータプログラムによって実施されることがあることが、当業者には理解されよう。プログラムは、コンピュータ可読記憶媒体内に記憶されることがある。プログラムが走るとき、上記の実施形態における方法のプロセスが実行される。記憶媒体は、磁気ディスク、光ディスク、読取り専用メモリ(Read-Only Memory、ROM)、またはランダムアクセスメモリ(Random Access Memory、RAM)を含むことがある。
本明細書に開示される実施形態に記載される例と組み合わせて、電子ハードウェアまたはコンピュータソフトウェアおよび電子ハードウェアの組合せによって、ユニットおよびアルゴリズムステップが実施されることがあることが、当業者には認識されよう。これらの機能が、ハードウェアによって実行されるか、それともソフトウェアによって実行されるかは、技術的解決策の特定の適用および設計制約条件に依存する。当業者であれば、それぞれの特定の適用に対して、記載される機能を実施するために異なる方法を使用することがあるが、そのような実装は、本発明の範囲を超えると見なされるべきでない。
好都合かつ簡単な説明の目的のため、上記のシステム、装置、およびユニットの詳述される作業プロセスに関して、上記の方法実施形態における対応するプロセスが参照されてよく、詳細は本明細書に繰り返し記載されないことが、当業者にははっきりと理解されよう。
本出願に提供されるいくつかの実施形態では、開示されるシステム、装置、および方法が、他の態様でも実施されることがあることが、理解されるべきである。たとえば、記載される装置実施形態は、例示にすぎない。たとえば、ユニットの区分は、論理的な機能区分にすぎず、実際の実装では他の区分としてもよい。たとえば、複数のユニットまたは構成要素は、別のシステム内へ組み合わせられてよく、もしくは組み込まれてよく、またはいくつかの特徴は、無視されてよく、もしくは実行されなくてもよい。加えて、表示または議論された相互結合もしくは直接結合または通信接続は、いくつかのインターフェースを通って実施されることがある。装置またはユニット間の間接結合または通信接続は、電子、機械、または他の形式で実施されることがある。
別個の部分として記載されるユニットは、物理的に別個のものであっても、そうでなくてもよく、ユニットとして表示される部分は、物理ユニットであっても、そうでなくてもよく、1つの位置に配置されてよく、または複数のネットワークユニット上に分散されてもよい。ユニットのいくつかまたはすべては、実施形態の解決策の目的を実現するために、実際の必要に応じて選択されることがある。
加えて、本発明の実施形態における機能ユニットは、1つの処理ユニット内に組み込まれてよく、またはユニットはそれぞれ、物理的に単独で存在してよく、または2つ以上のユニットが、1つのユニット内へ組み込まれる。
これらの機能が、ソフトウェア機能ユニットの形で実施され、独立した製品として販売または使用されるとき、これらの機能は、コンピュータ可読記憶媒体内に記憶されることがある。そのような理解に基づいて、本質的に本発明の技術的解決策、または従来技術に寄与する部分、または技術的解決策のいくつかは、ソフトウェア製品の形で実施されることがある。ソフトウェア製品は、記憶媒体内に記憶され、本発明の実施形態に記載される方法のステップのすべてまたはいくつかを実行するようにコンピュータデバイス(パーソナルコンピュータ、サーバ、もしくはネットワークデバイスであることがある)またはプロセッサに指示するいくつかの命令を含む。上記の記憶媒体は、USBフラッシュドライブ、取外し可能ハードディスク、読取り専用メモリ(ROM、Read-Only Memory)、ランダムアクセスメモリ(RAM、Random Access Memory)、磁気ディスク、または光ディスクなど、プログラムコードを記憶することができる任意の媒体を含む。
上記の説明は、本発明の特有の実装形態にすぎず、本発明の保護範囲を限定することが意図されるものではない。本発明に開示される技術範囲内の当業者によれば容易に考えつくあらゆる変更または置換えは、本発明の保護範囲内に入るものとする。したがって、本発明の保護範囲は、特許請求の範囲の保護範囲内にあるものとする。
本発明の実施形態は、通信技術の分野に関し、より詳細には、仮想化プラットホームによって割込みを処理する方法および関連デバイスに関する。
仮想化技術は、底層のハードウェアデバイスが上層のオペレーティングシステムおよびアプリケーションプログラムから分離される非干渉化技術である。仮想化技術は、現在普及しているクラウドコンピューティング(Cloud Computing)プラットホームに対応する重要な底層技術の1つとして、物理デバイスの資源利用を大きく改善することがある。従来の物理サーバと比較されると、仮想マシンは、分離およびカプセル化に関してより良好な性能を有し、仮想マシン全体の情報を仮想ディスク画像(VDI、Virtual Disk Image)内に保存することがある。これは、仮想マシンに対するスナップショット、バックアップ、クローン、および分配などの動作を容易にすることがある。仮想化によってオーバヘッドが生成され、それによって、構成が同じ場合、仮想マシンの性能は、物理マシンの性能より低くなる。仮想マシンの性能をどのように実質上改善するかは、この分野で解決される必要のある問題である。
本発明の実施形態は、割込みオーバヘッドが仮想化プラットホームに与える影響を低減させ、それによって仮想マシンの性能を実質上改善することができる、仮想化プラットホームによって割込みを処理する方法および関連デバイスを提供する。
第1の態様によれば、本発明の一実施形態は、仮想化プラットホームによって割込みを処理する方法を提供し、この方法は計算ノードに適用され、計算ノードは、物理ハードウェア層と、物理ハードウェア層で走るホストHostと、Host上で走る少なくとも1つの仮想マシンVMと、少なくとも1つのVM上で仮想化された仮想ハードウェアとを含み、物理ハードウェア層はX個の物理中央処理装置pCPUおよびY個の物理入出力デバイスを含み、仮想ハードウェアはZ個の仮想中央処理装置vCPUを含み、Y個の物理入出力デバイスは第jの物理入出力デバイスを含み、少なくとも1つのVMは第kのVMを含み、第jの物理入出力デバイスは第kのVMに向き、この方法はHostによって実行され、この方法は、第jの物理入出力デバイス内で第iの物理割込みが生じた場合、U個の標的pCPUから第nのpCPUを判定するステップであって、U個の標的pCPUが、第iの物理割込みおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、V個の標的vCPUが、第kのVM上で仮想化された、第iの仮想割込みとの類似性関係を有するvCPUであり、第iの仮想割込みが第iの物理割込みに対応し、X個のpCPUがU個の標的pCPUを含み、Z個のvCPUがV個の標的vCPUを含む、判定するステップと、第nのpCPUを使用して第iの物理割込みを処理するステップと、第iの物理割込みに応じて第iの仮想割込みを判定するステップと、V個の標的vCPUから第mのvCPUを判定するステップであって、その結果、第kのVMが第mのvCPUを使用して第iの仮想割込みを実行する、判定するステップとを含み、X、Y、およびZは1より大きい正の整数であり、Uは1以上かつX以下の正の整数であり、Vは1以上かつZ以下の正の整数であり、i、j、k、m、およびnは正の整数である。
第1の態様を参照して、第1の態様の第1の可能な実装形態では、U個の標的pCPUと第iの物理割込みとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iの仮想割込みとの間の類似性関係は、V個の標的vCPUと第iの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUがU個の標的pCPU上で走ることができ、Uが1に等しい、判定するステップと、第iの仮想割込みに対応する第iの物理割込みを判定するステップと、第iの物理割込みとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iの物理割込みがU個の標的pCPUによって処理されることが可能である、判定するステップとによって判定される。
第1の態様を参照して、第1の態様の第2の可能な実装形態では、U個の標的pCPUと第iの物理割込みとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iの仮想割込みとの間の類似性関係は、V個の標的vCPUと第iの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUが複数の標的pCPU上で走ることができ、Uが1より大きくかつX以下の正の整数である、判定するステップと、第iの仮想割込みに対応する第iの物理割込みを判定するステップと、第iの物理割込みとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iの物理割込みがU個の標的pCPUによって処理されることが可能である、判定するステップとによって判定される。
第1の態様の第2の可能な実装形態を参照して、第1の態様の第3の可能な実装形態では、第iの物理割込みとU個の標的pCPUとの間の類似性関係が1対多数の類似性関係であるとき、V個の標的vCPUから第mのvCPUを判定するステップは、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップと、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在すると判定された場合、第nのpCPU上で走る1つの標的vCPUを第mのvCPUとして判定するステップ、またはV個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在しないと判定された場合、優先順位に応じてV個の標的vCPUからの1つの標的vCPUを第mのvCPUとして判定するステップとを含む。
第1の態様の第3の可能な実装形態を参照して、第1の態様の第4の可能な実装形態では、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップは、仮想割込み経路情報に応じて、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップを含み、仮想割込み経路情報は、U個の標的pCPUとU個の標的pCPU上で走る標的vCPUとの間の対応関係を含む。
第2の態様によれば、本発明の一実施形態は、仮想化プラットホームによって割込みを処理する方法を提供し、この方法は計算ノードに適用され、計算ノードは、物理ハードウェア層と、物理ハードウェア層で走るホストHostと、Host上で走るY個の仮想マシンVMと、Host上で走るY個の仮想ホストvhostカーネルスレッドと、少なくとも1つのVM上で仮想化された仮想ハードウェアとを含み、物理ハードウェア層はX個の物理中央処理装置pCPUを含み、仮想ハードウェアはZ個の仮想中央処理装置vCPUを含み、Y個のVMの各VMは準仮想化されたドライバvirtioデバイスを含み、Y個のVMは第kのVMを含み、第kのVMは第iのvirtioデバイスを含み、第iのvirtioデバイスはY個のvhostカーネルスレッドのうちの第jのvhostカーネルスレッドに対応し、この方法はHostによって実行され、この方法は、第jのvhostカーネルスレッドが第iのvhostスレッドをトリガする場合、U個の標的pCPUから第nのpCPUを判定するステップであって、U個の標的pCPUが、第iのvhostスレッドおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、V個の標的vCPUが、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みとの類似性関係を有するvCPUであり、第iのvirtioデバイスの仮想割込みが第iのvhostスレッドに対応し、X個のpCPUがU個の標的pCPUを含み、Z個のvCPUがV個の標的vCPUを含む、判定するステップと、第nのpCPUを使用して第iのvhostスレッドを処理するステップと、第iのvhostスレッドに応じて第iのvirtioデバイスの仮想割込みを判定するステップと、V個の標的vCPUから第mのvCPUを判定するステップであって、その結果、第kのVMが第mのvCPUを使用して第iのvirtioデバイスの仮想割込みを実行する、判定するステップとを含み、X、Y、およびZは1より大きい正の整数であり、Uは1以上かつX以下の正の整数であり、Vは1以上かつZ以下の正の整数であり、i、j、k、m、およびnは正の整数である。
第2の態様を参照して、第2の態様の第1の可能な実装形態では、U個の標的pCPUと第iのvhostスレッドとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係は、V個の標的vCPUと第iの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUがU個の標的pCPU上で走ることができ、Uが1に等しい、判定するステップと、第iのvirtioデバイスの仮想割込みに対応する第iのvhostスレッドを判定するステップと、第iのvhostスレッドとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iのvhostスレッドがU個の標的pCPUによって処理されることが可能である、判定するステップとによって判定される。
第2の態様を参照して、第2の態様の第2の可能な実装形態では、U個の標的pCPUと第iのvhostスレッドとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係は、V個の標的vCPUと第のvirtioデバイスの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUが複数の標的pCPU上で走ることができ、Uが1より大きくかつX以下の正の整数である、判定するステップと、第iのvirtioデバイスの仮想割込みに対応する第iのvhostスレッドを判定するステップと、第iのvhostスレッドとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iのvhostスレッドがU個の標的pCPUによって処理されることが可能である、判定するステップとによって判定される。
第2の態様の第2の可能な実装形態を参照して、第2の態様の第3の可能な実装形態では、第iのvhostスレッドとU個の標的pCPUとの間の類似性関係が1対多数の類似性関係であるとき、V個の標的vCPUから第mのvCPUを判定するステップは、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップと、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在すると判定された場合、第nのpCPU上で走る1つの標的vCPUを第mのvCPUとして判定するステップ、またはV個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在しないと判定された場合、優先順位に応じてV個の標的vCPUからの1つの標的vCPUを第mのvCPUとして判定するステップとを含む。
第2の態様の第3の可能な実装形態を参照して、第2の態様の第4の可能な実装形態では、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップは、virtioデバイスの仮想割込み経路情報に応じて、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップを含み、virtioデバイスの仮想割込み経路情報は、U個の標的pCPUとU個の標的pCPU上で走る標的vCPUとの間の対応関係を含む。
第3の態様によれば、本発明の一実施形態は、ホストHostを提供し、Hostは計算ノードに適用され、計算ノードは、物理ハードウェア層と、物理ハードウェア層で走るHostと、Host上で走る少なくとも1つの仮想マシンVMと、少なくとも1つのVM上で仮想化された仮想ハードウェアとを含み、物理ハードウェア層はX個の物理中央処理装置pCPUおよびY個の物理入出力デバイスを含み、仮想ハードウェアはZ個の仮想中央処理装置vCPUを含み、Y個の物理入出力デバイスは第jの物理入出力デバイスを含み、少なくとも1つのVMは第kのVMを含み、第jの物理入出力デバイスは第kのVMに向き、Hostは、第jの物理入出力デバイス内で第iの物理割込みが生じた場合、U個の標的pCPUから第nのpCPUを判定するように構成された第1の判定ユニットであって、U個の標的pCPUが、第iの物理割込みおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、V個の標的vCPUが、第kのVM上で仮想化された、第iの仮想割込みとの類似性関係を有するvCPUであり、第iの仮想割込みが第iの物理割込みに対応し、X個のpCPUがU個の標的pCPUを含み、Z個のvCPUがV個の標的vCPUを含む、第1の判定ユニットと、第nのpCPUを使用して第iの物理割込みを処理するように構成された第2の呼出しユニットと、第iの物理割込みに応じて第iの仮想割込みを判定するように構成された第3の判定ユニットと、V個の標的vCPUから第mのvCPUを判定するように構成された第4の判定ユニットであって、その結果、第kのVMが第mのvCPUを使用して第iの仮想割込みを実行する、第4の判定ユニットとを含み、X、Y、およびZは1より大きい正の整数であり、Uは1以上かつX以下の正の整数であり、Vは1以上かつZ以下の正の整数であり、i、j、k、m、およびnは正の整数である。
第3の態様を参照して、第3の態様の第1の可能な実装形態では、第1の判定ユニットは、V個の標的vCPUと第iの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUがU個の標的pCPU上で走ることができ、Uが1に等しい、判定するステップと、第iの仮想割込みに対応する第iの物理割込みを判定するステップと、第iの物理割込みとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iの物理割込みがU個の標的pCPUによって処理されることが可能である、判定するステップとを行うようにさらに構成される。
第3の態様を参照して、第3の態様の第2の可能な実装形態では、第1の判定ユニットは、V個の標的vCPUと第iの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUが複数の標的pCPU上で走ることができ、Uが1より大きくかつX以下の正の整数である、判定するステップと、第iの仮想割込みに対応する第iの物理割込みを判定するステップと、第iの物理割込みとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iの物理割込みがU個の標的pCPUによって処理されることが可能である、判定するステップとを行うようにさらに構成される。
第3の態様の第2の可能な実装形態を参照して、第3の態様の第3の可能な実装形態では、第4の判定ユニットは、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップと、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在すると判定された場合、第nのpCPU上で走る1つの標的vCPUを第mのvCPUとして判定するステップであって、その結果、第kのVMが第mのvCPUを使用して第iの仮想割込みを実行する、判定するステップ、またはV個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在しないと判定された場合、優先順位に応じてV個の標的vCPUからの1つの標的vCPUを第mのvCPUとして判定するステップであって、その結果、第kのVMが第mのvCPUを使用して第iの仮想割込みを実行する、判定するステップとを行うように特に構成される。
第3の態様の第3の可能な実装形態を参照して、第3の態様の第4の可能な実装形態では、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定する態様で、第4の判定ユニットは、仮想割込み経路情報に応じて、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するように特に構成され、仮想割込み経路情報は、U個の標的pCPUとU個の標的pCPU上で走る標的vCPUとの間の対応関係を含む。
第4の態様によれば、本発明の一実施形態は、ホストHostを提供し、Hostは計算ノードに適用され、計算ノードは、物理ハードウェア層と、物理ハードウェア層で走るHostと、Host上で走るY個の仮想マシンVMと、Host上で走るY個の仮想ホストvhostカーネルスレッドと、少なくとも1つのVM上で仮想化された仮想ハードウェアとを含み、物理ハードウェア層はX個の物理中央処理装置pCPUを含み、仮想ハードウェアはZ個の仮想中央処理装置vCPUを含み、X、Y、およびZは1より大きい正の整数であり、Y個のVMの各VMは準仮想化されたドライバvirtioデバイスを含み、Y個のVMは第kのVMを含み、第kのVMは第iのvirtioデバイスを含み、第iのvirtioデバイスはY個のvhostカーネルスレッドのうちの第jのvhostカーネルスレッドに対応し、Hostは、第jのvhostカーネルスレッドが第iのvhostスレッドをトリガする場合、U個の標的pCPUから第nのpCPUを判定するように構成された第1の判定ユニットであって、U個の標的pCPUが、第iのvhostスレッドおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、V個の標的vCPUが、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みとの類似性関係を有するvCPUであり、第iのvirtioデバイスの仮想割込みが第iのvhostスレッドに対応し、X個のpCPUがU個の標的pCPUを含み、Z個のvCPUがV個の標的vCPUを含む、第1の判定ユニットと、第nのpCPUを使用して第iのvhostスレッドを処理するように構成された第2の呼出しユニットと、第iのvhostスレッドに応じて第iのvirtioデバイスの仮想割込みを判定するように構成された第3の判定ユニットと、V個の標的vCPUから第mのvCPUを判定するように構成された第4の判定ユニットであって、その結果、第kのVMが第mのvCPUを使用して第iのvirtioデバイスの仮想割込みを実行する、第4の判定ユニットとを含み、X、Y、およびZは1より大きい正の整数であり、Uは1以上かつX以下の正の整数であり、Vは1以上かつZ以下の正の整数であり、i、j、k、m、およびnは正の整数である。
第4の態様を参照して、第4の態様の第1の可能な実装形態では、第1の判定ユニットは、V個の標的vCPUと第iの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUがU個の標的pCPU上で走ることができ、Uが1に等しい、判定するステップと、第iのvirtioデバイスの仮想割込みに対応する第iのvhostスレッドを判定するステップと、第iのvhostスレッドとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iのvhostスレッドがU個の標的pCPUによって処理されることが可能である、判定するステップとを行うようにさらに構成される。
第4の態様を参照して、第4の態様の第2の可能な実装形態では、第1の判定ユニットは、V個の標的vCPUと第iの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUが複数の標的pCPU上で走ることができ、Uが1より大きくかつX以下の正の整数である、判定するステップと、第iのvirtioデバイスの仮想割込みに対応する第iのvhostスレッドを判定するステップと、第iのvhostスレッドとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iのvhostスレッドがU個の標的pCPUによって処理されることが可能である、判定するステップとを行うようにさらに構成される。
第4の態様の第2の可能な実装形態を参照して、第4の態様の第3の可能な実装形態では、第4の判定ユニットは、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップと、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在すると判定された場合、第nのpCPU上で走る1つの標的vCPUを第mのvCPUとして判定するステップであって、その結果、第kのVMが第mのvCPUを使用して第iのvirtioデバイスの仮想割込みを実行する、判定するステップ、またはV個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在しないと判定された場合、優先順位に応じてV個の標的vCPUからの1つの標的vCPUを第mのvCPUとして判定するステップであって、その結果、第kのVMが第mのvCPUを使用して第iのvirtioデバイスの仮想割込みを実行する、判定するステップとを行うように特に構成される。
第4の態様の第3の可能な実装形態を参照して、第4の態様の第4の可能な実装形態では、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定する態様で、第4の判定ユニットは、virtioデバイスの仮想割込み経路情報に応じて、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するように特に構成され、virtioデバイスの仮想割込み経路情報は、U個の標的pCPUとU個の標的pCPU上で走る標的vCPUとの間の対応関係を含む。
第5の態様によれば、本発明の一実施形態は、計算ノードを提供し、計算ノードは、第jの物理入出力デバイスを含むY個の物理入出力デバイスと、X個の物理中央処理装置pCPUと、X個の物理中央処理装置pCPUのそれぞれおよびY個の物理入出力デバイスのそれぞれに接続されたメモリであって、X個の物理中央処理装置pCPUのうちの1または複数のpCPUが、メモリ内に記憶された動作命令を呼び出しまたは実行するように構成される、メモリと、ホストHostと、少なくとも1つの仮想マシンVMと、少なくとも1つの仮想マシンVM、上で仮想化された仮想ハードウェアとを含み、仮想ハードウェアはZ個の仮想中央処理装置vCPUを含み、少なくとも1つのVMは第kのVMを含み、第jの物理入出力デバイスは第kのVMに向き、Hostは、第jの物理入出力デバイス内で第iの物理割込みが生じた場合、U個の標的pCPUから第nのpCPUを判定するステップであって、U個の標的pCPUが、第iの物理割込みおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、V個の標的vCPUが、第kのVM上で仮想化された、第iの仮想割込みとの類似性関係を有するvCPUであり、第iの仮想割込みが第iの物理割込みに対応し、X個のpCPUがU個の標的pCPUを含み、Z個のvCPUがV個の標的vCPUを含み、Uが1以上かつX以下の正の整数であり、Vが1以上かつZ以下の正の整数である、判定するステップと、第nのpCPUを使用して第iの物理割込みを処理するステップと、第iの物理割込みに応じて第iの仮想割込みを判定するステップと、V個の標的vCPUから第mのvCPUを判定するステップであって、その結果、第kのVMが第mのvCPUを使用して第iの仮想割込みを実行する、判定するステップとを行うように構成され、i、j、k、m、およびnは正の整数である。
第5の態様を参照して、第5の態様の第1の可能な実装形態では、Hostは、U個の標的pCPUと第iの物理割込みとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iの仮想割込みとの間の類似性関係を、V個の標的vCPUと第iの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUがU個の標的pCPU上で走ることができ、Uが1に等しい、判定するステップと、第iの仮想割込みに対応する第iの物理割込みを判定するステップと、第iの物理割込みとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iの物理割込みがU個の標的pCPUによって処理されることが可能である、判定するステップとによって判定するようにさらに構成される。
第5の態様を参照して、第5の態様の第2の可能な実装形態では、Hostは、U個の標的pCPUと第iの物理割込みとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iの仮想割込みとの間の類似性関係を、V個の標的vCPUと第iの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUが複数の標的pCPU上で走ることができ、Uが1より大きくかつX以下の正の整数である、判定するステップと、第iの仮想割込みに対応する第iの物理割込みを判定するステップと、第iの物理割込みとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iの物理割込みがU個の標的pCPUによって処理されることが可能である、判定するステップとによって判定するようにさらに構成される。
第5の態様の第2の可能な実装形態を参照して、第5の態様の第3の可能な実装形態では、V個の標的vCPUから第mのvCPUを判定する態様で、Hostは、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップと、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在すると判定された場合、第nのpCPU上で走る1つの標的vCPUを第mのvCPUとして判定するステップ、またはV個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在しないと判定された場合、優先順位に応じてV個の標的vCPUからの1つの標的vCPUを第mのvCPUとして判定するステップとを行うように特に構成される。
第5の態様の第3の可能な実装形態を参照して、第5の態様の第4の可能な実装形態では、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定する態様で、Hostは、仮想割込み経路情報に応じて、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するように特に構成され、仮想割込み経路情報は、U個の標的pCPUとU個の標的pCPU上で走る標的vCPUとの間の対応関係を含む。
第6の態様によれば、本発明の一実施形態は、計算ノードを提供し、計算ノードは、X個の物理中央処理装置pCPUと、X個の物理中央処理装置pCPUに接続されたメモリであって、X個の物理中央処理装置pCPUのうちの1または複数のpCPUが、メモリ内に記憶された動作命令を呼び出しまたは実行するように構成される、メモリと、ホストHostと、Y個の仮想マシンVMと、Y個の仮想ホストvhostカーネルスレッドと、少なくとも1つのVM上で仮想化された仮想ハードウェアとを含み、仮想ハードウェアはZ個の仮想中央処理装置vCPUを含み、Y個のVMの各VMは準仮想化されたドライバvirtioデバイスを含み、Y個のVMは第kのVMを含み、第kのVMは第iのvirtioデバイスを含み、第iのvirtioデバイスはY個のvhostカーネルスレッドのうちの第jのvhostカーネルスレッドに対応し、Hostは、第jのvhostカーネルスレッドが第iのvhostスレッドをトリガする場合、U個の標的pCPUから第nのpCPUを判定するステップであって、U個の標的pCPUが、第iのvhostスレッドおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、V個の標的vCPUが、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みとの類似性関係を有するvCPUであり、第iのvirtioデバイスの仮想割込みが第iのvhostスレッドに対応し、X個のpCPUがU個の標的pCPUを含み、Z個のvCPUがV個の標的vCPUを含み、Uが1以上かつX以下の正の整数であり、Vが1以上かつZ以下の正の整数である、判定するステップと、第nのpCPUを使用して第iのvhostスレッドを処理するステップと、第iのvhostスレッドに応じて第iのvirtioデバイスの仮想割込みを判定するステップと、V個の標的vCPUから第mのvCPUを判定するステップであって、その結果、第kのVMが第mのvCPUを使用して第iのvirtioデバイスの仮想割込みを実行する、判定するステップとを行うように構成され、X、Y、およびZは1より大きい正の整数であり、Uは1以上かつX以下の正の整数であり、Vは1以上かつZ以下の正の整数であり、i、j、k、m、およびnは正の整数である。
第6の態様を参照して、第6の態様の第1の可能な実装形態では、Hostは、U個の標的pCPUと第iのvhostスレッドとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係を、V個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUがU個の標的pCPU上で走ることができ、Uが1に等しい、判定するステップと、第iのvirtioデバイスの仮想割込みに対応する第iのvhostスレッドを判定するステップと、第iのvhostスレッドとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iのvhostスレッドがU個の標的pCPUによって処理されることが可能である、判定するステップとによって判定するようにさらに構成される。
第6の態様を参照して、第6の態様の第2の可能な実装形態では、Hostは、U個の標的pCPUと第iのvhostスレッドとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係を、V個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUが複数の標的pCPU上で走ることができ、Uが1より大きくかつX以下の正の整数である、判定するステップと、第iのvirtioデバイスの仮想割込みに対応する第iのvhostスレッドを判定するステップと、第iのvhostスレッドとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iのvhostスレッドがU個の標的pCPUによって処理されることが可能である、判定するステップとによって判定するようにさらに構成される。
第6の態様の第2の可能な実装形態を参照して、第6の態様の第3の可能な実装形態では、V個の標的vCPUから第mのvCPUを判定する態様で、Hostは、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップと、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在すると判定された場合、第nのpCPU上で走る1つの標的vCPUを第mのvCPUとして判定するステップ、またはV個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在しないと判定された場合、優先順位に応じてV個の標的vCPUからの1つの標的vCPUを第mのvCPUとして判定するステップとを行うように特に構成される。
第6の態様の第3の可能な実装形態を参照して、第6の態様の第4の可能な実装形態では、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定する態様で、Hostは、virtioデバイスの仮想割込み経路情報に応じて、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するように特に構成され、virtioデバイスの仮想割込み経路情報は、U個の標的pCPUとU個の標的pCPU上で走る標的vCPUとの間の対応関係を含む。
本発明の実施形態の一態様では、第jの物理入出力デバイス内で第iの物理割込みが生じた場合、U個の標的pCPUから第nのpCPUが判定され、U個の標的pCPUは、第iの物理割込みおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、V個の標的vCPUは、第kのVM上で仮想化された、第iの仮想割込みとの類似性関係を有するvCPUであり、第iの仮想割込みは第iの物理割込みに対応し、X個のpCPUはU個の標的pCPUを含み、Z個のvCPUはV個の標的vCPUを含み、第nのpCPUは第iの物理割込みを処理するために使用され、第iの仮想割込みは第iの物理割込みに応じて判定され、V個の標的vCPUから第mのvCPUが判定され、その結果、第kのVMが第mのvCPUを使用して第iの仮想割込みを実行する。上記の技術的解決策によれば、vCPUが類似性を有するpCPUが、このvCPUによって処理される仮想割込みに対応する物理割込みを処理するために使用されるpCPUではないために引き起こされる余剰IPIによるVM−Exitは、実質上回避されることが可能であり、それによってコンテキストスイッチの回数を実質上低減させ、pCPUに対して仮想マシンによって引き起こされる干渉を低減させることが、理解されることが可能である。
本発明の実施形態の別の態様では、第jのvhostカーネルスレッドが第iのvhostスレッドをトリガする場合、U個の標的pCPUから第nのpCPUが判定され、U個の標的pCPUは、第iのvhostスレッドおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、V個の標的vCPUは、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みとの類似性関係を有するvCPUであり、第iのvirtioデバイスの仮想割込みは第iのvhostスレッドに対応し、X個のpCPUはU個の標的pCPUを含み、Z個のvCPUはV個の標的vCPUを含み、第nのpCPUは第iのvhostスレッドを処理するために使用され、第iのvirtioデバイスの仮想割込みは第iのvhostスレッドに応じて判定され、V個の標的vCPUから第mのvCPUが判定され、その結果、第kのVMが第mのvCPUを使用して第iのvirtioデバイスの仮想割込みを実行する。上記の技術的解決策によれば、vCPUが類似性を有するpCPUが、このvCPUによって処理される仮想割込みに対応する物理割込みを処理するために使用されるpCPUではないために引き起こされる余剰IPIによるVM−Exitは、実質上回避されることが可能であり、それによってコンテキストスイッチの回数を実質上低減させ、pCPUに対して仮想マシンによって引き起こされる干渉を低減させることが、理解されることが可能である。
本発明の実施形態における技術的解決策をより明確に説明するために、以下、本発明の実施形態について説明するために必要とされる添付の図面について簡単に紹介する。以下の説明の添付の図面は、本発明のいくつかの実施形態のみを示すことが明らかであり、当業者であれば創造的努力なくこれらの添付の図面から他の図面を導出することがある。
ダイレクトモードの概略図である。 フロント−バックエンドモードの概略図である。 本発明の一実施形態による仮想化プラットホームによって割込みを処理する方法の概略的な流れ図である。 本発明の一実施形態による仮想割込み、物理割込み、vCPU、およびpCPUの間の対応関係の概略図である。 本発明の一実施形態による仮想割込み、物理割込み、vCPU、およびpCPUの間の対応関係の別の概略図である。 本発明による仮想化プラットホームによって割込みを処理する別の方法の概略的な流れ図である。 本発明の一実施形態によるvirtioデバイスの仮想割込み、vhostスレッド、vCPU、およびpCPUの間の対応関係の概略図である。 本発明の一実施形態によるvirtioデバイスの仮想割込み、vhostスレッド、vCPU、およびpCPUの間の対応関係の別の概略図である。 本発明の一実施形態によるホストHostの構造ブロック図である。 本発明の一実施形態による別のホストHostの構造ブロック図である。 本発明の一実施形態による計算ノードの構造ブロック図である。 本発明の一実施形態による別の計算ノードの構造ブロック図である。
以下、本発明の実施形態における技術的解決策について、本発明の実施形態における添付の図面を参照して、はっきりと詳細に説明する。記載の実施形態は、本発明の実施形態のすべてではなくいくつかにすぎないことが明らかである。当業者であれば創造的努力なく本発明の実施形態に基づいて得られる他のすべての実施形態は、本発明の保護範囲内に入るものとする。
本発明の実施形態の理解を容易にするために、本発明の実施形態について説明するために紹介されることがあるいくつかの要素について、本明細書にまず説明される。
仮想マシン
仮想マシンソフトウェアを使用することによって、1つの物理計算ノード上で1または複数の計算ノードがシミュレートされることがある。物理計算ノードは、サーバ、デスクトップコンピュータ、携帯型コンピュータなどがありうる。シミュレートされた計算ノードは、仮想マシ、VM呼ばれる。物理計算ノードは、ホストと呼ばれる。仮想マシンは、本当の計算ノードのように動作することがある。仮想マシン上には、オペレーティングシステムおよびアプリケーションプログラムが導入されることがある。仮想マシンはまた、ネットワーク資源にアクセスしてもまたよい。仮想マシン上で走るオペレーティングシステムは、集合的に、仮想オペレーティングシステムと呼ばれる。プログラムは、本当の計算ノードのオペレーティングシステム内で走るように、仮想オペレーティングシステム内で走る。仮想ハードウェアは、仮想マシン上でさらに仮想化されることがある。具体的には、仮想化は、ホスト(Host)によってVM上で仮想中央処理装置(virtual Central Processing Unit、vCPU)などの仮想ハードウェアを仮想化することによって実施される。vCPUは、仮想マシン内で走るプログラムを処理するために使用される。1または複数のvCPUが、物理計算ノード内の1つの中央処理装置(Central Processing Unit、CPU)に対応することがある。物理計算ノード内のCPUは、物理CPU(physical CPU、pCPU)と呼ばれることがある。pCPUは、ゲスト(guest)状態およびホスト(host)状態を有することがある。仮想マシンが走っているとき、pCPUはゲスト状態にある。特殊な命令または外部からの割込みのため、pCPUは、ゲスト状態からホスト状態へ切り替わることがある。このプロセスは、仮想マシン出口(VM-Exit)と呼ばれることがある。
仮想デバイスの実装形態は、ダイレクトモードおよびフロント−バックエンドモードを含むことがある。
ダイレクトモード
パススルー(passthrough)モードとも呼ばれることがあるダイレクト(direct)モードは、ホストが特定の仮想マシンに対するデバイス分離を提供し、したがって特定の物理入出力デバイスが、特定の仮想マシンによって排他的に使用されることができることを意味する。ダイレクトモードでは、仮想割込みを処理するvCPUに対応するpCPUが、仮想割込みに対応する物理割込みを処理するpCPUと一貫しない場合、余剰プロセッサ間割込み(Inter-Processor Interrupt、IPI)によるVM−Exitが引き起こされる。
フロント−バックエンドモード
フロント−バックエンド(ドライバ分割)モードは、仮想デバイスドライバが、フロントエンドドライバおよびバックエンドドライバの協調によって実施されることを意味し、フロントエンドドライバは仮想マシン内にあり、バックエンドドライバはホスト内にある。フロントエンドドライバおよびバックエンドドライバは、メモリを共用してデータ伝送を実行する。ソフトウェアのみを使用することによってシミュレートされるデバイスと比較されると、フロント−バックエンド駆動モードは、より高い抽象レベルおよびより良好な性能を有する。フロント−バックエンドモードでは、各仮想マシンは、準仮想化されたドライバ(virtio)(略してvirtioデバイス)を使用するデバイスを有する。各virtioデバイスは、対応する仮想ホスト(vhost)カーネルスレッドを有し、vhostカーネルスレッドは、ホスト内で走る。vhostカーネルスレッドは、対応するvirtioデバイスのパケットを処理するために使用される。フロント−バックエンドモードでは、virtioデバイスの仮想割込みを処理するために使用されるvCPUに対応するpCPUが、virtioデバイスの仮想割込みに対応するvhostスレッドを処理するために使用されるpCPUと一貫しない場合、余剰IPIによるVM−Exitが引き起こされる。
図1は、ダイレクトモードの概略図である。図1に示されるように、計算ノード100内で、第1の仮想マシン101が、第1の物理入出力デバイス111を排他的に占有することがあり、第2の仮想マシン102が、第2の物理入出力デバイス112を排他的に占有することがある。図1に示されるダイレクトモードを使用する仮想マシンには、図3に示される方法が適用されることがある。
図2は、フロント−バックエンドモードの概略図である。図2に示されるように、計算ノード200内の第1のvirtioデバイス211が第1のvhostスレッド212に対応し、計算ノード200内の第2のvirtioデバイス221が第2のvhostスレッド222に対応し、第1のvirtioデバイスは第1の仮想マシン内のvirtioデバイスであり、第2のvirtioデバイスは第2の仮想マシン内のvirtioデバイスである。図2に示されるフロント−バックエンドモードを使用する仮想マシンには、図6に示される方法が適用されることがある。
図3は、本発明の一実施形態による仮想化プラットホームによって割込みを処理する方法の概略的な流れ図である。この方法は計算ノードに適用され、計算ノードは、物理ハードウェア層と、物理ハードウェア層で走るホストHostと、Host上で走る少なくとも1つの仮想マシンVMと、少なくとも1つのVM上で仮想化された仮想ハードウェアとを含み、物理ハードウェア層はX個の物理中央処理装置pCPUおよびY個の物理入出力デバイスを含み、仮想ハードウェアはZ個の仮想中央処理装置vCPUを含み、X、Y、およびZは1より大きい正の整数であり、Y個の物理入出力デバイスは第jの物理入出力デバイスを含み、少なくとも1つのVMは第kのVMを含み、第jの物理入出力デバイスは第kのVMに向き、この方法はHostによって実行される。
301.第jの物理入出力デバイス内で第iの物理割込みが生じた場合、U個の標的pCPUから第nのpCPUを判定する。U個の標的pCPUは、第iの物理割込みおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、V個の標的vCPUは、第kのVM上で仮想化された、第iの仮想割込みとの類似性関係を有するvCPUであり、第iの仮想割込みは第iの物理割込みに対応し、X個のpCPUはU個の標的pCPUを含み、Z個のvCPUはV個の標的vCPUを含み、Uは1以上かつX以下の正の整数であり、Vは1以上かつZ以下の正の整数である。
302.第nのpCPUを使用して第iの物理割込みを処理する。
303.第iの物理割込みに応じて第iの仮想割込みを判定する。
304.V個の標的vCPUから第mのvCPUを判定し、その結果、第kのVMが第mのvCPUを使用して第iの仮想割込みを実行し、i、j、k、m、およびnは正の整数である。
本発明のこの実施形態では、第jの物理入出力デバイス内で第iの物理割込みが生じた場合、U個の標的pCPUから第nのpCPUが判定され、U個の標的pCPUは、第iの物理割込みおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、V個の標的vCPUは、第kのVM上で仮想化された、第iの仮想割込みとの類似性関係を有するvCPUであり、第iの仮想割込みは第iの物理割込みに対応し、X個のpCPUはU個の標的pCPUを含み、Z個のvCPUはV個の標的vCPUを含み、第nのpCPUは第iの物理割込みを処理するために使用され、第iの仮想割込みは第iの物理割込みに応じて判定され、V個の標的vCPUから第mのvCPUが判定され、その結果、第kのVMが第mのvCPUを使用して第iの仮想割込みを実行することが、理解されることができる。したがって、本発明のこの実施形態における方法によれば、vCPUが類似性を有するpCPUが、このvCPUによって処理される仮想割込みに対応する物理割込みを処理するために使用されるpCPUではないために引き起こされる余剰IPIによるVM−Exitは、実質上回避されることができ、それによってコンテキストスイッチの回数を実質上低減させ、pCPUに対して仮想マシンによって引き起こされる干渉を低減させる。
ホストは、仮想マシン管理プログラムを使用することによって、図3に示される方法を実施することがある。仮想マシン管理プログラムはまた、仮想マシンモニタ(Virtual Machine Monitor、VMM)またはハイパーバイザ(hypervisor)と呼ばれてもまたよい。典型的なVMMは、VMware ESX、XEN、KVM/Qemuなどである。
具体的には、pCPUが物理割込みとの類似性関係を有することは、このpCPUがこの物理割込みを処理することができることを示す。vCPUが仮想割込みとの類似性関係を有することは、このvCPUがこの仮想割込みを処理することができることを示す。pCPUがvCPUとの類似性関係を有することは、このpCPU上でこのvCPUが走ることができることを示す。したがって、U個の標的pCPUと第iの物理割込みとの間の類似性関係に応じて、U個の標的pCPUから第nのpCPUが判定される。
任意選択で、一実施形態として、U個の標的pCPUと第iの物理割込みとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iの仮想割込みとの間の類似性関係は、V個の標的vCPUと第iの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUがU個の標的pCPU上で走ることができ、Uが1に等しい、判定するステップと、第iの仮想割込みに対応する第iの物理割込みを判定するステップと、第iの物理割込みとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iの物理割込みがU個の標的pCPUによって処理されることが可能である、判定するステップとによって判定される。U個の標的pCPUと第iの物理割込みとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iの仮想割込みとの間の類似性関係は、事前設定および記憶されることがある。次いで、物理割込みが生じた場合、物理割込みおよび仮想割込みを処理するために、記憶された類似性関係に応じて、対応するpCPUおよびvCPUが発見されることがある。または、U個の標的pCPUと第iの物理割込みとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iの仮想割込みとの間の類似性関係が設定されている場合、対応する物理割込みおよび仮想割込みを処理するために、これらの類似性関係に応じて、対応するpCPUおよびvCPUが発見されることがある。この場合、第iの物理割込みが生じたとき、第iの物理割込みに対応する第iの仮想割込みを処理するために使用される第mのvCPUは、第iの物理割込みを処理する第nのpCPU上で走る。
任意選択で、別の実施形態として、U個の標的pCPUと第iの物理割込みとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iの仮想割込みとの間の類似性関係は、V個の標的vCPUと第iの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUが複数の標的pCPU上で走ることができ、Uが1より大きくかつX以下の正の整数である、判定するステップと、第iの仮想割込みに対応する第iの物理割込みを判定するステップと、第iの物理割込みとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iの物理割込みがU個の標的pCPUによって処理されることが可能である、判定するステップとによって判定される。U個の標的pCPUと第iの物理割込みとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iの仮想割込みとの間の類似性関係は、事前設定および記憶されることがある。次いで、物理割込みが生じた場合、物理割込みおよび仮想割込みを処理するために、記憶された類似性関係に応じて、対応するpCPUおよびvCPUが発見されることがある。または、U個の標的pCPUと第iの物理割込みとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iの仮想割込みとの間の類似性関係が設定されている場合、対応する物理割込みおよび仮想割込みを処理するために、これらの類似性関係に応じて、対応するpCPUおよびvCPUが発見されることがある。この場合、第iの物理割込みが生じたとき、第iの物理割込みに対応する第iの仮想割込みを処理するために使用される第mのvCPUは、物理ハードウェア層に位置するいかなるpCPU上で走るのでもなく、制限された数の判定されたpCPU上で走り、第iの物理割込みを処理する第nのpCPU上で走ることがある。
さらに、V個の標的vCPUが複数の標的pCPU上で走ることができるとき(言い換えれば、第iの物理割込みとU個の標的pCPUとの間の類似性関係が1対多数の類似性関係であるとき)、V個の標的vCPUから第mのvCPUを判定するステップは、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップと、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在すると判定された場合、第nのpCPU上で走る1つの標的vCPUを第mのvCPUとして判定するステップ、またはV個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在しないと判定された場合、優先順位に応じてV個の標的vCPUからの1つの標的vCPUを第mのvCPUとして判定するステップとを含む。この場合、仮想割込みを処理するために使用されるvCPUが、物理割込みを処理するために使用されるpCPU上で走る場合、vCPUが走るpCPUが、物理割込みを処理するpCPUとは異なるために引き起こされる余剰IPIによるVM−Exitは、生じないことがある。優先順位は、V個の標的vCPUの事前設定された優先度でありうる。優先度の選択はまた、各標的vCPUを選択する確率が同じになることを確実にするように、ラウンドロビン方策を使用することによって判定されてもまたよい。
さらに、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップは、仮想割込み経路情報に応じて、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップを含み、仮想割込み経路情報は、U個の標的pCPUとU個の標的pCPU上で走る標的vCPUとの間の対応関係を含む。このようにして、Hostは、第mのvCPUが第nのpCU上で走るかどうかを容易かつ迅速に判定することができる。
図4は、本発明の一実施形態による仮想割込み、物理割込み、vCPU、およびpCPUの間の対応関係の概略図である。図4に示されるように、第1の物理割込みが、第1の仮想割込みに対応する。第1の仮想割込みは、第4のvCPUとの類似性関係を有する。第4のvCPUは、第3のpCPUとの類似性関係を有する。この場合、第3のpCPUは、第1の物理割込みに結合されてよく、その結果、これら2つは、類似性関係を有する。第1の物理割込みが生じたとき、第3のpCPUは、第1の物理割込みを処理することがある。次いで、第1の物理割込みに対応する第1の仮想割込みおよび第1の仮想割込みを処理するために使用されるvCPUが発見される。第4のvCPUが第3のpCPU上で走るとき、第4のvCPUは、第1の物理割込みに対応する第1の仮想割込みを処理するために直接使用されることがある。このようにして、vCPUが走るpCPUが、物理割込みが生じたpCPUとは異なるために引き起こされる余剰IPIによるVM−Exitは、生じないことがある。
図5は、本発明の一実施形態による仮想割込み、物理割込み、vCPU、およびpCPUの間の対応関係の別の概略図である。図5に示されるように、第1の物理割込みは、第1の仮想割込みに対応する。第4のvCPUおよび第5のvCPUは、第3のpCPUおよび第4のpCPUの両方との類似性関係を有する。言い換えれば、第4のvCPUおよび第5のvCPUは、第3のpCPU上で走ることがあり、または第4のpCPU上で走ることがある。たとえば、第1の瞬間に、第4のvCPUは、第3のpCPU上で走り、第5のvCPUは、第4のpCPU上で走る。第2の瞬間に、第4のvCPUおよび第5のvCPUは、第3のpCPU上で同時に走ることがある。加えて、第4のvCPUおよび第5のvCPUは、第1の仮想割込みとの類似性関係を有する。すなわち、第1の仮想割込みは、第4のvCPUまたは第5のvCPUによって処理されることがある。この場合、第3のpCPUおよび第4のpCPUはどちらも、第1の物理割込みに結合されてよく、その結果、これら2つは、類似性関係を有する。第1の物理割込みが生じたとき、Hostは、第3のpCPUおよび第4のpCPUからpCPUを選択して、第1の物理割込みを処理することがある。次いで、Hostは、第1の物理割込みに対応する第1の仮想割込みおよび第1の仮想割込みを処理するために使用されるvCPUを発見し、このvCPUを使用して第1の仮想割込みを処理する。仮想割込みを処理するために使用されるvCPUは、物理割込みを処理するために使用されるpCPU上で走ることがある。したがって、vCPUが走るpCPUが、物理割込みが生じたpCPUとは異なるために引き起こされる余剰IPIによるVM−Exitは、生じないことがある。
図6は、本発明による仮想化プラットホームによって割込みを処理する別の方法の概略的な流れ図である。図6に示される方法は計算ノードに適用されることがある。計算ノードは、物理ハードウェア層と、物理ハードウェア層で走るホストHostと、Host上で走るY個の仮想マシンVMと、Host上で走るY個の仮想ホストvhostカーネルスレッドと、少なくとも1つのVM上で仮想化された仮想ハードウェアとを含み、物理ハードウェア層はX個の物理中央処理装置pCPUを含み、仮想ハードウェアはZ個の仮想中央処理装置vCPUを含み、X、Y、およびZは1より大きい正の整数であり、Y個のVMの各VMは準仮想化されたドライバvirtioデバイスを含み、Y個のVMは第kのVMを含み、第kのVMは第iのvirtioデバイスを含み、第iのvirtioデバイスはY個のvhostカーネルスレッドのうちの第jのvhostカーネルスレッドに対応し、この方法はHostによって実行される。
601.第jのvhostカーネルスレッドが第iのvhostスレッドをトリガする場合、U個の標的pCPUから第nのpCPUを判定する。U個の標的pCPUは、第iのvhostスレッドおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、V個の標的vCPUは、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みとの類似性関係を有するvCPUであり、第iのvirtioデバイスの仮想割込みは第iのvhostスレッドに対応し、X個のpCPUはU個の標的pCPUを含み、Z個のvCPUはV個の標的vCPUを含み、Uは1以上かつX以下の正の整数であり、Vは1以上かつZ以下の正の整数である。
602.第nのpCPUを使用して第iのvhostスレッドを処理する。
603.第iのvhostスレッドに応じて第iのvirtioデバイスの仮想割込みを判定する。
604.V個の標的vCPUから第mのvCPUを判定する。その結果、第kのVMが第mのvCPUを使用して第iのvirtioデバイスの仮想割込みを実行し、i、j、k、m、およびnは正の整数である。
本発明のこの実施形態では、第jのvhostカーネルスレッドが第iのvhostスレッドをトリガする場合、U個の標的pCPUから第nのpCPUが判定され、U個の標的pCPUは、第iのvhostスレッドおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、V個の標的vCPUは、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みとの類似性関係を有するvCPUであり、第iのvirtioデバイスの仮想割込みは第iのvhostスレッドに対応し、X個のpCPUはU個の標的pCPUを含み、Z個のvCPUはV個の標的vCPUを含み、第nのpCPUは第iのvhostスレッドを処理するために使用され、第iのvirtioデバイスの仮想割込みは第iのvhostスレッドに応じて判定され、V個の標的vCPUから第mのvCPUが判定され、その結果、第kのVMが第mのvCPUを使用して第iのvirtioデバイスの仮想割込みを実行する。上記の技術的解決策によれば、vCPUが類似性を有するpCPUが、このvCPUによって処理されるvirtioデバイスの仮想割込みに対応するvhostスレッドを処理するために使用されるpCPUではないために引き起こされる余剰IPIによるVM−Exitは、実質上回避されることが可能であり、それによってコンテキストスイッチの回数を実質上低減させ、pCPUに対して仮想マシンによって引き起こされる干渉を低減させることが、理解されることが可能である。
ホストは、仮想マシン管理プログラムを使用することによって、図6に示される方法を実施することがある。仮想マシン管理プログラムは、仮想マシンモニタ(Virtual Machine Monitor、VMM)またはハイパーバイザ(hypervisor)と呼ばれてもまたよい。典型的なVMMは、VMware ESX、XEN、KVM/Qemuなどである。
具体的には、pCPUがvhostスレッドとの類似性関係を有することは、このpCPUがこのvhostスレッドを処理することができることを示す。vCPUがvirtioデバイスの仮想割込みとの類似性関係を有することは、このvCPUがこのvirtioデバイスの仮想割込みを処理することができることを示す。pCPUがvCPUとの類似性関係を有することは、このpCPU上でこのvCPUが走ることができることを示す。したがって、U個の標的pCPUと第iのvhostスレッドとの間の類似性関係に応じて、U個の標的pCPUから第nのpCPUが判定される。
任意選択で、一実施形態として、U個の標的pCPUと第iのvhostスレッドとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係は、V個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUがU個の標的pCPU上で走ることができ、Uが1に等しい、判定するステップと、第iのvirtioデバイスの仮想割込みに対応する第iのvhostスレッドを判定するステップと、第iのvhostスレッドとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iのvhostスレッドがU個の標的pCPUによって処理されることが可能である、判定するステップとによって判定される。U個の標的pCPUと第iのvhostスレッドとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係は、事前設定および記憶されることがある。次いで、vhostスレッドが生じた場合、vhostスレッドおよびvirtioデバイスの仮想割込みを処理するために、記憶された類似性関係に応じて、対応するpCPUおよびvCPUが発見されることがある。または、U個の標的pCPUと第iのvhostスレッドとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係が設定されている場合、対応するvhostスレッドおよびvirtioデバイスの対応する仮想割込みを処理するために、これらの類似性関係に応じて、対応するpCPUおよびvCPUが発見されることがある。この場合、第iのvhostスレッドが生じたとき、第iのvirtioデバイスの仮想割込みを処理するために使用される第mのvCPUは、第iのvhostスレッドを処理する第nのpCPU上で走り、第iのvirtioデバイスの仮想割込みは第iのvhostスレッドに対応する。
任意選択で、別の実施形態として、U個の標的pCPUと第iのvhostスレッドとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係は、V個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUが複数の標的pCPU上で走ることができ、Uが1より大きくかつX以下の正の整数である、判定するステップと、第iのvirtioデバイスの仮想割込みに対応する第iのvhostスレッドを判定するステップと、第iのvhostスレッドとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iのvhostスレッドがU個の標的pCPUによって処理されることが可能である、判定するステップとによって判定される。U個の標的pCPUと第iのvhostスレッドとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係は、事前設定および記憶されることがある。次いで、vhostスレッドが生じた場合、vhostスレッドおよびvirtioデバイスの仮想割込みを処理するために、記憶された類似性関係に応じて、対応するpCPUおよびvCPUが発見されることがある。または、U個の標的pCPUと第iのvhostスレッドとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係が設定されている場合、対応するvhostスレッドおよびvirtioデバイスの対応する仮想割込みを処理するために、これらの類似性関係に応じて、対応するpCPUおよびvCPUが発見されることがある。この場合、第iのvhostスレッドが生じたとき、第iのvirtioデバイスの仮想割込みを処理するために使用される第mのvCPUは、物理ハードウェア層に位置するいかなるpCPU上で走るのでもなく、制限された数の判定されたpCPU上で走り、第iのvhostスレッドを処理する第nのpCPU上で走ることがあり、第iのvirtioデバイスの仮想割込みは第iのvhostスレッドに対応する。
さらに、V個の標的vCPUが複数の標的pCPU上で走ることができるとき(言い換えれば、第iのvhostスレッドとU個の標的pCPUとの間の類似性関係が1対多数の類似性関係であるとき)、V個の標的vCPUから第mのvCPUを判定するステップは、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップと、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在すると判定された場合、第nのpCPU上で走る1つの標的vCPUを第mのvCPUとして判定するステップ、またはV個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在しないと判定された場合、優先順位に応じてV個の標的vCPUからの1つの標的vCPUを第mのvCPUとして判定するステップとを含む。この場合、virtioデバイスの仮想割込みを処理するために使用されるvCPUが、vhostスレッドを処理するために使用されるpCPU上で走る場合、vCPUが走るpCPUが、vhostスレッドを処理するpCPUとは異なるために引き起こされる余剰IPIによるVM−Exitは、生じないことがある。優先順位は、V個の標的vCPUの事前設定された優先度でありうる。優先度の選択はまた、各標的vCPUを選択する確率が同じになることを確実にするように、ラウンドロビン方策を使用することによって判定されてもまたよい。
さらに、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップは、virtioデバイスの仮想割込み経路情報に応じて、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップを含み、virtioデバイスの仮想割込み経路情報は、U個の標的pCPUとU個の標的pCPU上で走る標的vCPUとの間の対応関係を含む。このようにして、Hostは、第mのvCPUが第nのpCU上で走るかどうかを容易かつ迅速に判定することができる。
図7は、本発明の一実施形態によるvirtioデバイスの仮想割込み、vhostスレッド、vCPU、およびpCPUの間の対応関係の概略図である。図7に示されるように、第1のvhostスレッドが、第1のvirtioデバイスの仮想割込みに対応する。第4のvCPUは、第1のvirtioデバイスの仮想割込みとの類似性関係を有する。第3のpCPUは、第4のvCPUとの類似性関係を有する。この場合、第1のvhostスレッドは、第3のpCPUに結合されてよく、その結果、これら2つは、類似性関係を有する。第1のvhostスレッドが生じたとき、第3のpCPUは、第1のvhostスレッドを処理することがある。次いで、第1のvirtioデバイスの仮想割込みおよび第1のvirtioデバイスの仮想割込みを処理するために使用されるvCPUが発見され、第1のvirtioデバイスの仮想割込みは、第1のvhostスレッドに対応する。第4のvCPUが第3のpCPU上で走るとき、第4のvCPUは、第1のvirtioデバイスの仮想割込みを処理するために直接使用されることがあり、第1のvirtioデバイスの仮想割込みは、第1のvhostスレッドに対応する。このようにして、vCPUが走るpCPUが、vhostスレッドが生じたpCPUとは異なるために引き起こされる余剰IPIによるVM−Exitは、生じないことがある。
図8は、本発明の一実施形態によるvirtioデバイスの仮想割込み、vhostスレッド、vCPU、およびpCPUの間の対応関係の別の概略図である。図8に示されるように、第1のvhostスレッドは、第1のvirtioデバイスの仮想割込みに対応する。第3のpCPUおよび第4のpCPUは、第4のvCPUおよび第5のvCPUの両方との類似性関係を有する。言い換えれば、第4のvCPUおよび第5のvCPUは、第3のpCPU上で走ることがあり、または第4のpCPU上で走ることがある。たとえば、第1の瞬間に、第4のvCPUは、第3のpCPU上で走り、第5のvCPUは、第4のpCPU上で走る。第2の瞬間に、第4のvCPUおよび第5のvCPUは、第3のpCPU上で同時に走ることがある。加えて、第4のvCPUおよび第5のvCPUは、第1のvirtioデバイスの仮想割込みとの類似性関係を有する。すなわち、第1のvirtioデバイスの仮想割込みは、第4のvCPUまたは第5のvCPUによって処理されることがある。この場合、第3のpCPUおよび第4のpCPUはどちらも、第1のvhostスレッドに結合されてよく、その結果、これら2つは、類似性関係を有する。次いで、第1のvhostスレッドが生じたとき、Hostは、第3のpCPUおよび第4のpCPUからpCPUを選択して、第1のvhostスレッドを処理することがある。次いで、Hostは、第1のvirtioデバイスの仮想割込みおよび第1のvirtioデバイスの仮想割込みを処理するために使用されるvCPUを発見し、このvCPUを使用して第1のvirtioデバイスの仮想割込みを処理し、第1のvirtioデバイスの仮想割込みは、第1のvhostスレッドに対応する。virtioデバイスの仮想割込みを処理するために使用されるvCPUは、vhostスレッドを処理するために使用されるpCPU上で走ることがある。したがって、vCPUが走るpCPUが、vhostスレッドが生じたpCPUとは異なるために引き起こされる余剰IPIによるVM−Exitは、生じないことがある。
図9は、本発明の一実施形態によるホストHostの構造ブロック図である。図9に示されるHost900は、図3に示されるすべてのステップを実行することができる。具体的には、Hostは計算ノードに適用され、計算ノードは、物理ハードウェア層と、物理ハードウェア層で走るHostと、Host上で走る少なくとも1つの仮想マシンVMと、少なくとも1つのVM上で仮想化された仮想ハードウェアとを含み、物理ハードウェア層はX個の物理中央処理装置pCPUおよびY個の物理入出力デバイスを含み、仮想ハードウェアはZ個の仮想中央処理装置vCPUを含み、X、Y、およびZは1より大きい正の整数であり、Y個の物理入出力デバイスは第jの物理入出力デバイスを含み、少なくとも1つのVMは第kのVMを含み、第jの物理入出力デバイスは第kのVMに向き、Hostは、第1の判定ユニット901、第2の呼出しユニット902、第3の判定ユニット903、および第4の判定ユニット904を含む。
第1の判定ユニット901は、第jの物理入出力デバイス内で第iの物理割込みが生じた場合、U個の標的pCPUから第nのpCPUを判定するように構成され、U個の標的pCPUは、第iの物理割込みおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、V個の標的vCPUは、第kのVM上で仮想化された、第iの仮想割込みとの類似性関係を有するvCPUであり、第iの仮想割込みは第iの物理割込みに対応し、X個のpCPUはU個の標的pCPUを含み、Z個のvCPUはV個の標的vCPUを含み、Uは1以上かつX以下の正の整数であり、Vは1以上かつZ以下の正の整数である。
第2の呼出しユニット902は、第nのpCPUを使用して第iの物理割込みを処理するように構成される。
第3の判定ユニット903は、第iの物理割込みに応じて第iの仮想割込みを判定するように構成される。
第4の判定ユニット904は、V個の標的vCPUから第mのvCPUを判定するように構成され、その結果、第kのVMが第mのvCPUを使用して第iの仮想割込みを実行し、i、j、k、m、およびnは正の整数である。
本発明のこの実施形態におけるHostによれば、第jの物理入出力デバイス内で第iの物理割込みが生じた場合、U個の標的pCPUから第nのpCPUが判定され、U個の標的pCPUは、第iの物理割込みおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、V個の標的vCPUは、第kのVM上で仮想化された、第iの仮想割込みとの類似性関係を有するvCPUであり、第iの仮想割込みは第iの物理割込みに対応し、X個のpCPUはU個の標的pCPUを含み、Z個のvCPUはV個の標的vCPUを含み、第nのpCPUは第iの物理割込みを処理するために使用され、第iの仮想割込みは第iの物理割込みに応じて判定され、V個の標的vCPUから第mのvCPUが判定され、その結果、第kのVMが第mのvCPUを使用して第iの仮想割込みを実行することが、理解されることが可能である。したがって、図9に示されるHostによれば、vCPUが類似性を有するpCPUが、このvCPUによって処理される仮想割込みに対応する物理割込みを処理するために使用されるpCPUではないために引き起こされる余剰IPIによるVM−Exitは、実質上回避されることが可能であり、それによってコンテキストスイッチの回数を実質上低減させ、pCPUに対して仮想マシンによって引き起こされる干渉を低減させる。
任意選択で、一実施形態として、第1の判定ユニット901は、V個の標的vCPUと第iの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUがU個の標的pCPU上で走ることができ、Uが1に等しい、判定するステップと、第iの仮想割込みに対応する第iの物理割込みを判定するステップと、第iの物理割込みとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iの物理割込みがU個の標的pCPUによって処理されることが可能である、判定するステップとを行うようにさらに構成される。このようにして、U個の標的pCPUと第iの物理割込みとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iの仮想割込みとの間の類似性関係が判定されることがある。この場合、第iの物理割込みが生じたとき、第iの物理割込みに対応する第iの仮想割込みを処理するために使用される第mのvCPUは、第iの物理割込みを処理する第nのpCPU上で走る。
任意選択で、別の実施形態として、第1の判定ユニット901は、V個の標的vCPUと第iの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUが複数の標的pCPU上で走ることができ、Uが1より大きくかつX以下の正の整数である、判定するステップと、第iの仮想割込みに対応する第iの物理割込みを判定するステップと、第iの物理割込みとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iの物理割込みがU個の標的pCPUによって処理されることが可能である、判定するステップとを行うようにさらに構成される。このようにして、U個の標的pCPUと第iの物理割込みとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iの仮想割込みとの間の類似性関係が判定されることがある。この場合、第iの物理割込みが生じたとき、第iの物理割込みに対応する第iの仮想割込みを処理するために使用される第mのvCPUは、物理ハードウェア層に位置するいかなるpCPU上で走るのでもなく、制限された数の判定されたpCPU上で走り、第iの物理割込みを処理する第nのpCPU上で走ることがある。
さらに、V個の標的vCPUが複数の標的pCPU上で走ることができるとき(言い換えれば、第iの物理割込みとU個の標的pCPUとの間の類似性関係が1対多数の類似性関係であるとき)、第4の判定ユニット904は、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップと、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在すると判定された場合、第nのpCPU上で走る1つの標的vCPUを第mのvCPUとして判定するステップであって、その結果、第kのVMが第mのvCPUを使用して第iの仮想割込みを実行する、判定するステップ、またはV個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在しないと判定された場合、優先順位に応じてV個の標的vCPUからの1つの標的vCPUを第mのvCPUとして判定するステップであって、その結果、第kのVMが第mのvCPUを使用して第iの仮想割込みを実行する、判定するステップとを行うように特に構成される。この場合、仮想割込みを処理するために使用されるvCPUが、物理割込みを処理するために使用されるpCPU上で走る場合、vCPUが走るpCPUが、物理割込みが生じたpCPUとは異なるために引き起こされる余剰IPIによるVM−Exitは、生じないことがある。優先順位は、V個の標的vCPUの事前設定された優先度でありうる。優先度の選択はまた、各標的vCPUを選択する確率が同じになることを確実にするように、ラウンドロビン方策を使用することによって判定されることがある。したがって、vCPUが類似性を有するpCPUが、このvCPUによって処理される仮想割込みに対応する物理割込みを処理するために使用されるpCPUではないために引き起こされる余剰IPIによるVM−Exitは、最大限回避されることが可能であり、それによってコンテキストスイッチの回数を実質上低減させ、pCPUに対して仮想マシンによって引き起こされる干渉を低減させる。
さらに、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定する態様で、第4の判定ユニット904は、仮想割込み経路情報に応じて、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するように特に構成され、仮想割込み経路情報は、U個の標的pCPUとU個の標的pCPU上で走る標的vCPUとの間の対応関係を含む。このようにして、Hostは、第mのvCPUが第nのpCU上で走るかどうかを容易かつ迅速に判定することができる。
図10は、本発明の一実施形態による別のホストHostの構造ブロック図である。図10に示されるHost1000は、図6に示されるすべてのステップを実行することができる。Host1000は計算ノードに適用され、計算ノードは、物理ハードウェア層と、物理ハードウェア層で走るHostと、Host上で走るY個の仮想マシンVMと、Host上で走るY個の仮想ホストvhostカーネルスレッドと、少なくとも1つのVM上で仮想化された仮想ハードウェアとを含み、物理ハードウェア層はX個の物理中央処理装置pCPUを含み、仮想ハードウェアはZ個の仮想中央処理装置vCPUを含み、X、Y、およびZは1より大きい正の整数であり、Y個のVMの各VMは準仮想化されたドライバvirtioデバイスを含み、Y個のVMは第kのVMを含み、第kのVMは第iのvirtioデバイスを含み、第iのvirtioデバイスはY個のvhostカーネルスレッドの第jのvhostカーネルスレッドに対応し、Hostは、第1の判定ユニット1001、第2の呼出しユニット1002、第3の判定ユニット1003、および第4の判定ユニット1004を含む。
第1の判定ユニット1001は、第jのvhostカーネルスレッドが第iのvhostスレッドをトリガする場合、U個の標的pCPUから第nのpCPUを判定するように構成され、U個の標的pCPUは、第iのvhostスレッドおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、V個の標的vCPUは、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みとの類似性関係を有するvCPUであり、第iのvirtioデバイスの仮想割込みは第iのvhostスレッドに対応し、X個のpCPUはU個の標的pCPUを含み、Z個のvCPUはV個の標的vCPUを含み、Uは1以上かつX以下の正の整数であり、Vは1以上かつZ以下の正の整数である。
第2の呼出しユニット1002は、第nのpCPUを使用して第iのvhostスレッドを処理するように構成される。
第3の判定ユニット1003は、第iのvhostスレッドに応じて第iのvirtioデバイスの仮想割込みを判定するようにさらに構成される。
第4の判定ユニット1004は、V個の標的vCPUから第mのvCPUを判定するようにさらに構成され、その結果、第kのVMが第mのvCPUを使用して第iのvirtioデバイスの仮想割込みを実行し、i、j、k、m、およびnは正の整数である。
本発明のこの実施形態で提供されるホストHostによれば、第jのvhostカーネルスレッドが第iのvhostスレッドをトリガする場合、U個の標的pCPUから第nのpCPUが判定され、U個の標的pCPUは、第iのvhostスレッドおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、V個の標的vCPUは、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みとの類似性関係を有するvCPUであり、第iのvirtioデバイスの仮想割込みは第iのvhostスレッドに対応し、X個のpCPUはU個の標的pCPUを含み、Z個のvCPUはV個の標的vCPUを含み、第nのpCPUは第iのvhostスレッドを処理するために使用され、第iのvirtioデバイスの仮想割込みは第iのvhostスレッドに応じて判定され、V個の標的vCPUから第mのvCPUが判定され、その結果、第kのVMが第mのvCPUを使用して第iのvirtioデバイスの仮想割込みを実行することが、理解されることが可能である。したがって、図10に示されるHostによれば、vCPUが類似性を有するpCPUが、このvCPUによって処理されるvirtioデバイスの仮想割込みに対応するvhostスレッドを処理するために使用されるpCPUではないために引き起こされる余剰IPIによるVM−Exitは、実質上回避されることが可能であり、それによってコンテキストスイッチの回数を実質上低減させ、pCPUに対して仮想マシンによって引き起こされる干渉を低減させる。
任意選択で、一実施形態として、第1の判定ユニット1001は、V個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUがU個の標的pCPU上で走ることができ、Uが1に等しい、判定するステップと、第iのvirtioデバイスの仮想割込みに対応する第iのvhostスレッドを判定するステップと、第iのvhostスレッドとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iのvhostスレッドがU個の標的pCPUによって処理されることが可能である、判定するステップとを行うようにさらに構成される。U個の標的pCPUと第iのvhostスレッドとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係は、事前設定および記憶されることがある。次いで、vhostスレッドが生じた場合、vhostスレッドおよびvirtioデバイスの仮想割込みを処理するために、記憶された類似性関係に応じて、対応するpCPUおよびvCPUが発見されることがある。または、U個の標的pCPUと第iのvhostスレッドとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係が設定されている場合、対応するvhostスレッドおよびvirtioデバイスの対応する仮想割込みを処理するために、これらの類似性関係に応じて、対応するpCPUおよびvCPUが発見されることがある。この場合、第iのvhostスレッドが生じたとき、第iのvirtioデバイスの仮想割込みを処理するために使用される第mのvCPUは、第iのvhostスレッドを処理する第nのpCPU上で走り、第iのvirtioデバイスの仮想割込みは第iのvhostスレッドに対応する。
任意選択で、別の実施形態として、第1の判定ユニット1001は、V個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUが複数の標的pCPU上で走ることができ、Uが1より大きくかつX以下の正の整数である、判定するステップと、第iのvirtioデバイスの仮想割込みに対応する第iのvhostスレッドを判定するステップと、第iのvhostスレッドとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iのvhostスレッドがU個の標的pCPUによって処理されることが可能である、判定するステップとを行うようにさらに構成される。U個の標的pCPUと第iのvhostスレッドとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係は、事前設定および記憶されることがある。次いで、vhostスレッドが生じた場合、vhostスレッドおよびvirtioデバイスの仮想割込みを処理するために、記憶された類似性関係に応じて、対応するpCPUおよびvCPUが発見されることがある。または、U個の標的pCPUと第iのvhostスレッドとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係が設定されている場合、対応するvhostスレッドおよびvirtioデバイスの対応する仮想割込みを処理するために、これらの類似性関係に応じて、対応するpCPUおよびvCPUが発見されることがある。この場合、第iのvhostスレッドが生じたとき、第iのvirtioデバイスの仮想割込みを処理するために使用される第mのvCPUは、物理ハードウェア層に位置するいかなるpCPU上で走るのでもなく、制限された数の判定されたpCPU上で走り、第iのvhostスレッドを処理する第nのpCPU上で走ることがあり、第iのvirtioデバイスの仮想割込みは第iのvhostスレッドに対応する。
さらに、V個の標的vCPUが複数の標的pCPU上で走ることができるとき(言い換えれば、第iのvhostスレッドとU個の標的pCPUとの間の類似性関係が1対多数の類似性関係であるとき)、第4の判定ユニット1004は、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップと、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在すると判定された場合、第nのpCPU上で走る1つの標的vCPUを第mのvCPUとして判定するステップであって、その結果、第kのVMが第mのvCPUを使用して第iのvirtioデバイスの仮想割込みを実行する、判定するステップ、またはV個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在しないと判定された場合、優先順位に応じてV個の標的vCPUからの1つの標的vCPUを第mのvCPUとして判定するステップであって、その結果、第kのVMが第mのvCPUを使用して第iのvirtioデバイスの仮想割込みを実行する、判定するステップとを行うように特に構成される。この場合、virtioデバイスの仮想割込みを処理するために使用されるvCPUが、vhostスレッドを処理するために使用されるpCPU上で走る場合、vCPUが走るpCPUが、vhostスレッドを処理するpCPUとは異なるために引き起こされる余剰IPIによるVM−Exitは、生じないことがある。優先順位は、V個の標的vCPUの事前設定された優先度でありうる。優先度の選択はまた、各標的vCPUを選択する確率が同じになることを確実にするように、ラウンドロビン方策を使用することによって判定されてもまたよい。したがって、vCPUが類似性を有するpCPUが、このvCPUによって処理される仮想割込みに対応する物理割込みを処理するために使用されるpCPUではないために引き起こされる余剰IPIによるVM−Exitは、最大限回避されることが可能であり、それによってコンテキストスイッチの回数を実質上低減させ、pCPUに対して仮想マシンによって引き起こされる干渉を低減させる。
さらに、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定する態様で、第4の判定ユニット1004は、virtioデバイスの仮想割込み経路情報に応じて、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するように特に構成され、virtioデバイスの仮想割込み経路情報は、U個の標的pCPUとU個の標的pCPU上で走る標的vCPUとの間の対応関係を含む。このようにして、Hostは、第mのvCPUが第nのpCU上で走るかどうかを容易かつ迅速に判定することができる
11は、本発明の一実施形態による計算ノードの構造ブロック図である。図11に示される計算ノードは、図3に示されるすべてのステップを実行することができる。計算ノードは、第jの物理入出力デバイスを含むY個の物理入出力デバイス1102と、X個の物理中央処理装置pCPU1102と、X個の物理中央処理装置pCPUのそれぞれおよびY個の物理入出力デバイスのそれぞれに接続されたメモリ1103であって、X個の物理中央処理装置pCPUのうちの1または複数のpCPUが、メモリ1103内に記憶された動作命令を呼び出しまたは実行するように構成される、メモリ1103と、ホストHostと、少なくとも1つの仮想マシンVMと、少なくとも1つの仮想マシンVM上で仮想化された仮想ハードウェアとを含み、仮想ハードウェアはZ個の仮想中央処理装置vCPUを含み、少なくとも1つのVMは第kのVMを含み、第jの物理入出力デバイスは第kのVMに向き、Hostは、
第jの物理入出力デバイス内で第iの物理割込みが生じた場合、U個の標的pCPUから第nのpCPUを判定するステップであって、U個の標的pCPUが、第iの物理割込みおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、V個の標的vCPUが、第kのVM上で仮想化された、第iの仮想割込みとの類似性関係を有するvCPUであり、第iの仮想割込みが第iの物理割込みに対応し、X個のpCPUがU個の標的pCPUを含み、Z個のvCPUがV個の標的vCPUを含む、判定するステップと、
第nのpCPUを使用して第iの物理割込みを処理するステップと、
第iの物理割込みに応じて第iの仮想割込みを判定するステップと、
V個の標的vCPUから第mのvCPUを判定するステップであって、その結果、第kのVMが第mのvCPUを使用して第iの仮想割込みを実行する、判定するステップとを行うように構成され、X、Y、およびZは1より大きい正の整数であり、Uは1以上かつX以下の正の整数であり、Vは1以上かつZ以下の正の整数であり、i、j、k、m、およびnは正の整数である。
本発明のこの実施形態における計算ノードによれば、第jの物理入出力デバイス内で第iの物理割込みが生じた場合、U個の標的pCPUから第nのpCPUが判定され、U個の標的pCPUは、第iの物理割込みおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、V個の標的vCPUは、第kのVM上で仮想化された、第iの仮想割込みとの類似性関係を有するvCPUであり、第iの仮想割込みは第iの物理割込みに対応し、X個のpCPUはU個の標的pCPUを含み、Z個のvCPUはV個の標的vCPUを含み、第nのpCPUは第iの物理割込みを処理するために使用され、第iの仮想割込みは第iの物理割込みに応じて判定され、V個の標的vCPUから第mのvCPUが判定され、その結果、第kのVMが第mのvCPUを使用して第iの仮想割込みを実行することが、理解されることが可能である。したがって、図11に示される計算ノードによれば、vCPUが類似性を有するpCPUが、このvCPUによって処理される仮想割込みに対応する物理割込みを処理するために使用されるpCPUではないために引き起こされる余剰IPIによるVM−Exitは、実質上回避されることが可能であり、それによってコンテキストスイッチの回数を実質上低減させ、pCPUに対して仮想マシンによって引き起こされる干渉を低減させる。
任意選択で、一実施形態として、Hostは、U個の標的pCPUと第iの物理割込みとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iの仮想割込みとの間の類似性関係を、V個の標的vCPUと第iの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUがU個の標的pCPU上で走ることができ、Uが1に等しい、判定するステップと、第iの仮想割込みに対応する第iの物理割込みを判定するステップと、第iの物理割込みとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iの物理割込みがU個の標的pCPUによって処理されることが可能である、判定するステップとによって判定するようにさらに構成される。U個の標的pCPUと第iの物理割込みとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iの仮想割込みとの間の類似性関係は、事前設定および記憶されることがある。次いで、物理割込みが生じた場合、物理割込みおよび仮想割込みを処理するために、記憶された類似性関係に応じて、対応するpCPUおよびvCPUが発見されることがある。または、U個の標的pCPUと第iの物理割込みとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iの仮想割込みとの間の類似性関係が設定されている場合、対応する物理割込みおよび仮想割込みを処理するために、これらの類似性関係に応じて、対応するpCPUおよびvCPUが発見されることがある。この場合、第iの物理割込みが生じたとき、第iの物理割込みに対応する第iの仮想割込みを処理するために使用される第mのvCPUは、第iの物理割込みを処理する第nのpCPU上で走る。
任意選択で、別の実施形態として、Hostは、U個の標的pCPUと第iの物理割込みとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iの仮想割込みとの間の類似性関係を、V個の標的vCPUと第iの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUが複数の標的pCPU上で走ることができ、Uが1より大きくかつX以下の正の整数である、判定するステップと、第iの仮想割込みに対応する第iの物理割込みを判定するステップと、第iの物理割込みとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iの物理割込みがU個の標的pCPUによって処理されることが可能である、判定するステップとによって判定するようにさらに構成される。U個の標的pCPUと第iの物理割込みとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iの仮想割込みとの間の類似性関係は、事前設定および記憶されることがある。次いで、物理割込みが生じた場合、物理割込みおよび仮想割込みを処理するために、記憶された類似性関係に応じて、対応するpCPUおよびvCPUが発見されることがある。または、U個の標的pCPUと第iの物理割込みとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iの仮想割込みとの間の類似性関係が設定されている場合、対応する物理割込みおよび仮想割込みを処理するために、これらの類似性関係に応じて、対応するpCPUおよびvCPUが発見されることがある。この場合、第iの物理割込みが生じたとき、第iの物理割込みに対応する第iの仮想割込みを処理するために使用される第mのvCPUは、物理ハードウェア層に位置するいかなるpCPU上で走るのでもなく、制限された数の判定されたpCPU上で走り、第iの物理割込みを処理する第nのpCPU上で走ることがある。
さらに、V個の標的vCPUが複数の標的pCPU上で走ることができるとき(言い換えれば、第iの物理割込みとU個の標的pCPUとの間の類似性関係が1対多数の類似性関係であるとき)、V個の標的vCPUから第mのvCPUを判定する態様で、Hostは、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップと、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在すると判定された場合、第nのpCPU上で走る1つの標的vCPUを第mのvCPUとして判定するステップ、またはV個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在しないと判定された場合、優先順位に応じてV個の標的vCPUからの1つの標的vCPUを第mのvCPUとして判定するステップとを行うように特に構成される。この場合、仮想割込みを処理するために使用されるvCPUが、物理割込みを処理するために使用されるpCPU上で走る場合、vCPUが走るpCPUが、物理割込みが生じたpCPUとは異なるために引き起こされる余剰IPIによるVM−Exitは、生じないことがある。優先順位は、V個の標的vCPUの事前設定された優先度でありうる。優先度の選択はまた、各標的vCPUを選択する確率が同じになることを確実にするように、ラウンドロビン方策を使用することによって判定されてもまたよい。したがって、vCPUが類似性を有するpCPUが、このvCPUによって処理される仮想割込みに対応する物理割込みを処理するために使用されるpCPUではないために引き起こされる余剰IPIによるVM−Exitは、最大限回避されることが可能であり、それによってコンテキストスイッチの回数を実質上低減させ、pCPUに対して仮想マシンによって引き起こされる干渉を低減させる。
さらに、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定する態様で、Hostは、仮想割込み経路情報に応じて、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するように特に構成され、仮想割込み経路情報は、U個の標的pCPUとU個の標的pCPU上で走る標的vCPUとの間の対応関係を含む。このようにして、Hostは、第mのvCPUが第nのpCU上で走るかどうかを容易かつ迅速に判定することができる。
図12は、本発明の一実施形態による別の計算ノードの構造ブロック図である。図12に示される計算ノード1200は、図6に示されるすべてのステップを実行することができる。計算ノード1200は、X個の物理中央処理装置pCPU1201と、X個の物理中央処理装置pCPUに接続されたメモリ1202であって、X個の物理中央処理装置pCPUのうちの1または複数のpCPUが、メモリ1202内に記憶された動作命令を呼び出しまたは実行するように構成される、メモリ1202と、ホストHostと、Y個の仮想マシンVMと、Y個の仮想ホストvhostカーネルスレッドと、少なくとも1つのVM上で仮想化された仮想ハードウェアとを含み、仮想ハードウェアはZ個の仮想中央処理装置vCPUを含み、Y個のVMの各VMは準仮想化されたドライバvirtioデバイスを含み、Y個のVMは第kのVMを含み、第kのVMは第iのvirtioデバイスを含み、第iのvirtioデバイスはY個のvhostカーネルスレッドのうちの第jのvhostカーネルスレッドに対応し、Hostは、
第jのvhostカーネルスレッドが第iのvhostスレッドをトリガする場合、U個の標的pCPUから第nのpCPUを判定するステップであって、U個の標的pCPUが、第iのvhostスレッドおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、V個の標的vCPUが、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みとの類似性関係を有するvCPUであり、第iのvirtioデバイスの仮想割込みが第iのvhostスレッドに対応し、X個のpCPUがU個の標的pCPUを含み、Z個のvCPUがV個の標的vCPUを含む、判定するステップと、
第nのpCPUを使用して第iのvhostスレッドを処理するステップと、
第iのvhostスレッドに応じて第iのvirtioデバイスの仮想割込みを判定するステップと、
V個の標的vCPUから第mのvCPUを判定するステップであって、その結果、第kのVMが第mのvCPUを使用して第iのvirtioデバイスの仮想割込みを実行する、判定するステップとを行うように構成され、X、Y、およびZは1より大きい正の整数であり、Uは1以上かつX以下の正の整数であり、Vは1以上かつZ以下の正の整数であり、i、j、k、m、およびnは正の整数である。
本発明のこの実施形態における計算ノードによれば、第jのvhostカーネルスレッドが第iのvhostスレッドをトリガする場合、U個の標的pCPUから第nのpCPUが判定され、U個の標的pCPUは、第iのvhostスレッドおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、V個の標的vCPUは、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みとの類似性関係を有するvCPUであり、第iのvirtioデバイスの仮想割込みは第iのvhostスレッドに対応し、X個のpCPUはU個の標的pCPUを含み、Z個のvCPUはV個の標的vCPUを含み、第nのpCPUは第iのvhostスレッドを処理するために使用され、第iのvirtioデバイスの仮想割込みは第iのvhostスレッドに応じて判定され、V個の標的vCPUから第mのvCPUが判定され、その結果、第kのVMが第mのvCPUを使用して第iのvirtioデバイスの仮想割込みを実行する。したがって、図12に示される計算ノードによれば、vCPUが類似性を有するpCPUが、このvCPUによって処理されるvirtioデバイスの仮想割込みに対応するvhostスレッドを処理するために使用されるpCPUではないために引き起こされる余剰IPIによるVM−Exitは、実質上回避されることが可能であり、それによってコンテキストスイッチの回数を実質上低減させ、pCPUに対して仮想マシンによって引き起こされる干渉を低減させる。
任意選択で、一実施形態として、Hostは、U個の標的pCPUと第iのvhostスレッドとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係を、V個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUがU個の標的pCPU上で走ることができ、Uが1に等しい、判定するステップと、第iのvirtioデバイスの仮想割込みに対応する第iのvhostスレッドを判定するステップと、第iのvhostスレッドとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iのvhostスレッドがU個の標的pCPUによって処理されることが可能である、判定するステップとによって判定するようにさらに構成される。U個の標的pCPUと第iのvhostスレッドとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係は、事前設定および記憶されることがある。次いで、vhostスレッドが生じた場合、vhostスレッドおよびvirtioデバイスの仮想割込みを処理するために、記憶された類似性関係に応じて、対応するpCPUおよびvCPUが発見されることがある。または、U個の標的pCPUと第iのvhostスレッドとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係が設定されている場合、対応するvhostスレッドおよびvirtioデバイスの対応する仮想割込みを処理するために、これらの類似性関係に応じて、対応するpCPUおよびvCPUが発見されることがある。この場合、第iのvhostスレッドが生じたとき、第iのvirtioデバイスの仮想割込みを処理するために使用される第mのvCPUは、第iのvhostスレッドを処理する第nのpCPU上で走り、第iのvirtioデバイスの仮想割込みは第iのvhostスレッドに対応する。
任意選択で、別の実施形態として、Hostは、U個の標的pCPUと第iのvhostスレッドとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係を、V個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係を判定するステップであって、V個の標的vCPUが、第kのVM上で仮想化された、第iのvirtioデバイスの仮想割込みを処理することができるvCPUである、判定するステップと、U個の標的pCPUを判定するステップであって、V個の標的vCPUが複数の標的pCPU上で走ることができ、Uが1より大きくかつX以下の正の整数である、判定するステップと、第iのvirtioデバイスの仮想割込みに対応する第iのvhostスレッドを判定するステップと、第iのvhostスレッドとU個の標的pCPUとの間の類似性関係を判定するステップであって、第iのvhostスレッドがU個の標的pCPUによって処理されることが可能である、判定するステップとによって判定するようにさらに構成される。U個の標的pCPUと第iのvhostスレッドとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係は、事前設定および記憶されることがある。次いで、vhostスレッドが生じた場合、vhostスレッドおよびvirtioデバイスの仮想割込みを処理するために、記憶された類似性関係に応じて、対応するpCPUおよびvCPUが発見されることがある。または、U個の標的pCPUと第iのvhostスレッドとの間の類似性関係、U個の標的pCPUとV個の標的vCPUとの間の類似性関係、およびV個の標的vCPUと第iのvirtioデバイスの仮想割込みとの間の類似性関係が設定されている場合、対応するvhostスレッドおよびvirtioデバイスの対応する仮想割込みを処理するために、これらの類似性関係に応じて、対応するpCPUおよびvCPUが発見されることがある。この場合、第iのvhostスレッドが生じたとき、第iのvirtioデバイスの仮想割込みを処理するために使用される第mのvCPUは、物理ハードウェア層に位置するいかなるpCPU上で走るのでもなく、制限された数の判定されたpCPU上で走り、第iのvhostスレッドを処理する第nのpCPU上で走ることがあり、第iのvirtioデバイスの仮想割込みは、第iのvhostスレッドに対応する。
さらに、V個の標的vCPUが複数の標的pCPU上で走ることができるとき(言い換えれば、第iのvhostスレッドとU個の標的pCPUとの間の類似性関係が1対多数の類似性関係であるとき)、V個の標的vCPUから第mのvCPUを判定する態様で、Hostは、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップと、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在すると判定された場合、第nのpCPU上で走る1つの標的vCPUを第mのvCPUとして判定するステップであって、その結果、第kのVMが第mのvCPUを使用して第iのvirtioデバイスの仮想割込みを実行する、判定するステップ、またはV個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在しないと判定された場合、優先順位に応じてV個の標的vCPUからの1つの標的vCPUを第mのvCPUとして判定するステップであって、その結果、第kのVMが第mのvCPUを使用して第iのvirtioデバイスの仮想割込みを実行する、判定するステップとを行うように特に構成される。この場合、virtioデバイスの仮想割込みを処理するために使用されるvCPUが、vhostスレッドを処理するために使用されるpCPU上で走る場合、vCPUが走るpCPUが、vhostスレッドを処理するpCPUとは異なるために引き起こされる余剰IPIによるVM−Exitは、生じないことがある。優先順位は、V個の標的vCPUの事前設定された優先度でありうる。優先度の選択はまた、各標的vCPUを選択する確率が同じになることを確実にするように、ラウンドロビン方策を使用することによって判定されてもまたよい。したがって、vCPUが類似性を有するpCPUが、このvCPUによって処理される仮想割込みに対応する物理割込みを処理するために使用されるpCPUではないために引き起こされる余剰IPIによるVM−Exitは、最大限回避されることが可能であり、それによってコンテキストスイッチの回数を実質上低減させ、pCPUに対して仮想マシンによって引き起こされる干渉を低減させる。
さらに、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定する態様で、Hostは、virtioデバイスの仮想割込み経路情報に応じて、V個の標的vCPUのうち第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するように構成され、virtioデバイスの仮想割込み経路情報は、U個の標的pCPUとU個の標的pCPU上で走る標的vCPUとの間の対応関係を含む。このようにして、Hostは、第mのvCPUが第nのpCU上で走るかどうかを容易かつ迅速に判定することができる。
上記の実施形態における方法のプロセスのすべてまたはいくつかは、関連ハードウェア(たとえば、プロセッサ)を指示するコンピュータプログラムによって実施されることがあることが、当業者には理解されよう。プログラムは、コンピュータ可読記憶媒体内に記憶されることがある。プログラムが走るとき、上記の実施形態における方法のプロセスが実行される。記憶媒体は、磁気ディスク、光ディスク、読取り専用メモリ(Read-Only Memory、ROM)、またはランダムアクセスメモリ(Random Access Memory、RAM)を含むことがある。
本明細書に開示される実施形態に記載される例と組み合わせて、電子ハードウェアまたはコンピュータソフトウェアおよび電子ハードウェアの組合せによって、ユニットおよびアルゴリズムステップが実施されることがあることが、当業者には認識されよう。これらの機能が、ハードウェアによって実行されるか、それともソフトウェアによって実行されるかは、技術的解決策の特定の適用および設計制約条件に依存する。当業者であれば、それぞれの特定の適用に対して、記載される機能を実施するために異なる方法を使用することがあるが、そのような実装は、本発明の範囲を超えると見なされるべきでない。
好都合かつ簡単な説明の目的のため、上記のシステム、装置、およびユニットの詳述される作業プロセスに関して、上記の方法実施形態における対応するプロセスが参照されてよく、詳細は本明細書に繰り返し記載されないことが、当業者にははっきりと理解されよう。
本出願に提供されるいくつかの実施形態では、開示されるシステム、装置、および方法が、他の態様でも実施されることがあることが、理解されるべきである。たとえば、記載される装置実施形態は、例示にすぎない。たとえば、ユニットの区分は、論理的な機能区分にすぎず、実際の実装では他の区分としてもよい。たとえば、複数のユニットまたは構成要素は、別のシステム内へ組み合わせられてよく、もしくは組み込まれてよく、またはいくつかの特徴は、無視されてよく、もしくは実行されなくてもよい。加えて、表示または議論された相互結合もしくは直接結合または通信接続は、いくつかのインターフェースを通って実施されることがある。装置またはユニット間の間接結合または通信接続は、電子、機械、または他の形式で実施されることがある。
別個の部分として記載されるユニットは、物理的に別個のものであっても、そうでなくてもよく、ユニットとして表示される部分は、物理ユニットであっても、そうでなくてもよく、1つの位置に配置されてよく、または複数のネットワークユニット上に分散されてもよい。ユニットのいくつかまたはすべては、実施形態の解決策の目的を実現するために、実際の必要に応じて選択されることがある。
加えて、本発明の実施形態における機能ユニットは、1つの処理ユニット内に組み込まれてよく、またはユニットはそれぞれ、物理的に単独で存在してよく、または2つ以上のユニットが、1つのユニット内へ組み込まれる。
これらの機能が、ソフトウェア機能ユニットの形で実施され、独立した製品として販売または使用されるとき、これらの機能は、コンピュータ可読記憶媒体内に記憶されることがある。そのような理解に基づいて、本質的に本発明の技術的解決策、または従来技術に寄与する部分、または技術的解決策のいくつかは、ソフトウェア製品の形で実施されることがある。ソフトウェア製品は、記憶媒体内に記憶され、本発明の実施形態に記載される方法のステップのすべてまたはいくつかを実行するようにコンピュータデバイス(パーソナルコンピュータ、サーバ、もしくはネットワークデバイスであることがある)またはプロセッサに指示するいくつかの命令を含む。上記の記憶媒体は、USBフラッシュドライブ、取外し可能ハードディスク、読取り専用メモリ(ROM、Read-Only Memory)、ランダムアクセスメモリ(RAM、Random Access Memory)、磁気ディスク、または光ディスクなど、プログラムコードを記憶することができる任意の媒体を含む。
上記の説明は、本発明の特有の実装形態にすぎず、本発明の保護範囲を限定することが意図されるものではない。本発明に開示される技術範囲内の当業者によれば容易に考えつくあらゆる変更または置換えは、本発明の保護範囲内に入るものとする。したがって、本発明の保護範囲は、特許請求の範囲の保護範囲内にあるものとする。

Claims (30)

  1. 仮想化プラットホームによって割込みを処理する方法であって、前記方法は計算ノードに適用され、前記計算ノードは、物理ハードウェア層と、前記物理ハードウェア層で走るホストHostと、前記Host上で走る少なくとも1つの仮想マシンVMと、前記少なくとも1つのVM上で仮想化された仮想ハードウェアとを備え、前記物理ハードウェア層はX個の物理中央処理装置pCPUおよびY個の物理入出力デバイスを備え、前記仮想ハードウェアはZ個の仮想中央処理装置vCPUを備え、前記Y個の物理入出力デバイスは第jの物理入出力デバイスを備え、前記少なくとも1つのVMは第kのVMを備え、前記第jの物理入出力デバイスは前記第kのVMに向き、前記方法は前記Hostによって実行され、前記方法は、
    前記第jの物理入出力デバイス内で第iの物理割込みが生じた場合、U個の標的pCPUから第nのpCPUを判定するステップであって、前記U個の標的pCPUが、前記第iの物理割込みおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、前記V個の標的vCPUが、前記第kのVM上で仮想化された、第iの仮想割込みとの類似性関係を有するvCPUであり、前記第iの仮想割込みが前記第iの物理割込みに対応し、前記X個のpCPUが前記U個の標的pCPUを備え、前記Z個のvCPUが前記V個の標的vCPUを備える、判定するステップと、
    前記第nのpCPUを使用して前記第iの物理割込みを処理するステップと、
    前記第iの物理割込みに応じて前記第iの仮想割込みを判定するステップと、
    前記V個の標的vCPUから第mのvCPUを判定するステップであって、その結果、前記第kのVMが前記第mのvCPUを使用して前記第iの仮想割込みを実行する、判定するステップと
    を含み、
    X、Y、およびZは1より大きい正の整数であり、Uは1以上かつX以下の正の整数であり、Vは1以上かつZ以下の正の整数であり、i、j、k、m、およびnは正の整数であることを特徴とする方法。
  2. 前記U個の標的pCPUと前記第iの物理割込みとの間の前記類似性関係、前記U個の標的pCPUと前記V個の標的vCPUとの間の前記類似性関係、および前記V個の標的vCPUと前記第iの仮想割込みとの間の前記類似性関係は、
    前記V個の標的vCPUと前記第iの仮想割込みとの間の前記類似性関係を判定するステップであって、前記V個の標的vCPUが、前記第kのVM上で仮想化された、前記第iの仮想割込みを処理することができるvCPUである、判定するステップと、
    前記U個の標的pCPUを判定するステップであって、前記V個の標的vCPUが前記U個の標的pCPU上で走ることができ、Uが1に等しい、判定するステップと、
    前記第iの仮想割込みに対応する前記第iの物理割込みを判定するステップと、
    前記第iの物理割込みと前記U個の標的pCPUとの間の前記類似性関係を判定するステップであって、前記第iの物理割込みが前記U個の標的pCPUによって処理されることが可能である、判定するステップと
    によって判定されることを特徴とする請求項1に記載の方法。
  3. 前記U個の標的pCPUと前記第iの物理割込みとの間の前記類似性関係、前記U個の標的pCPUと前記V個の標的vCPUとの間の前記類似性関係、および前記V個の標的vCPUと前記第iの仮想割込みとの間の前記類似性関係は、
    前記V個の標的vCPUと前記第iの仮想割込みとの間の前記類似性関係を判定するステップであって、前記V個の標的vCPUが、前記第kのVM上で仮想化された、前記第iの仮想割込みを処理することができるvCPUである、判定するステップと、
    前記U個の標的pCPUを判定するステップであって、前記V個の標的vCPUが前記複数の標的pCPU上で走ることができ、Uが1より大きくかつX以下の正の整数である、判定するステップと、
    前記第iの仮想割込みに対応する前記第iの物理割込みを判定するステップと、
    前記第iの物理割込みと前記U個の標的pCPUとの間の前記類似性関係を判定するステップであって、前記第iの物理割込みが前記U個の標的pCPUによって処理されることが可能である、判定するステップと
    によって判定されることを特徴とする請求項1に記載の方法。
  4. 前記第iの物理割込みと前記U個の標的pCPUとの間の前記類似性関係が1対多数の類似性関係であるとき、前記V個の標的vCPUから前記第mのvCPUを判定する前記ステップは、
    前記V個の標的vCPUのうち前記第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップと、
    前記V個の標的vCPUのうち前記第nのpCPU上で走る少なくとも1つの標的vCPUが存在すると判定された場合、前記第nのpCPU上で走る1つの標的vCPUを前記第mのvCPUとして判定するステップと、
    前記V個の標的vCPUのうち前記第nのpCPU上で走る少なくとも1つの標的vCPUが存在しないと判定された場合、優先順位に応じて前記V個の標的vCPUからの1つの標的vCPUを前記第mのvCPUとして判定するステップと
    を含むことを特徴とする請求項3に記載の方法。
  5. 前記V個の標的vCPUのうち前記第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定する前記ステップは、
    仮想割込み経路情報に応じて、前記V個の標的vCPUのうち前記第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップを含み、前記仮想割込み経路情報は、前記U個の標的pCPUと前記U個の標的pCPU上で走る標的vCPUとの間の対応関係を含むことを特徴とする請求項4に記載の方法。
  6. 仮想化プラットホームによって割込みを処理する方法であって、前記方法は計算ノードに適用され、前記計算ノードは、物理ハードウェア層と、前記物理ハードウェア層で走るホストHostと、前記Host上で走るY個の仮想マシンVMと、前記Host上で走るY個の仮想ホストvhostカーネルスレッドと、前記少なくとも1つのVM上で仮想化された仮想ハードウェアとを備え、前記物理ハードウェア層はX個の物理中央処理装置pCPUを備え、前記仮想ハードウェアはZ個の仮想中央処理装置vCPUを備え、前記Y個のVMの各VMは準仮想化されたドライバvirtioデバイスを備え、前記Y個のVMは第kのVMを備え、前記第kのVMは第iのvirtioデバイスを備え、前記第iのvirtioデバイスは前記Y個のvhostカーネルスレッドのうちの第jのvhostカーネルスレッドに対応し、前記方法は前記Hostによって実行され、前記方法は、
    前記第jのvhostカーネルスレッドが第iのvhostスレッドをトリガする場合、U個の標的pCPUから第nのpCPUを判定するステップであって、前記U個の標的pCPUが、前記第iのvhostスレッドおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、前記V個の標的vCPUが、前記第kのVM上で仮想化された、前記第iのvirtioデバイスの仮想割込みとの類似性関係を有するvCPUであり、前記第iのvirtioデバイスの前記仮想割込みが前記第iのvhostスレッドに対応し、前記X個のpCPUが前記U個の標的pCPUを備え、前記Z個のvCPUが前記V個の標的vCPUを備える、判定するステップと、
    前記第nのpCPUを使用して前記第iのvhostスレッドを処理するステップと、
    前記第iのvhostスレッドに応じて前記第iのvirtioデバイスの前記仮想割込みを判定するステップと、
    前記V個の標的vCPUから第mのvCPUを判定するステップであって、その結果、前記第kのVMが前記第mのvCPUを使用して前記第iのvirtioデバイスの前記仮想割込みを実行する、判定するステップと
    を含み、
    X、Y、およびZは1より大きい正の整数であり、Uは1以上かつX以下の正の整数であり、Vは1以上かつZ以下の正の整数であり、i、j、k、m、およびnは正の整数であることを特徴とする方法。
  7. 前記U個の標的pCPUと前記第iのvhostスレッドとの間の前記類似性関係、前記U個の標的pCPUと前記V個の標的vCPUとの間の前記類似性関係、および前記V個の標的vCPUと前記第iのvirtioデバイスの仮想割込みとの間の前記類似性関係は、
    前記V個の標的vCPUと第iの仮想割込みとの間の前記類似性関係を判定するステップであって、前記V個の標的vCPUが、前記第kのVM上で仮想化された、前記第iのvirtioデバイスの前記仮想割込みを処理することができるvCPUである、判定するステップと、
    前記U個の標的pCPUを判定するステップであって、前記V個の標的vCPUが前記U個の標的pCPU上で走ることができ、Uが1に等しい、判定するステップと、
    前記第iのvirtioデバイスの前記仮想割込みに対応する前記第iのvhostスレッドを判定するステップと、
    前記第iのvhostスレッドと前記U個の標的pCPUとの間の前記類似性関係を判定するステップであって、前記第iのvhostスレッドが前記U個の標的pCPUによって処理されることが可能である、判定するステップと
    によって判定されることを特徴とする請求項6に記載の方法。
  8. 前記U個の標的pCPUと前記第iのvhostスレッドとの間の前記類似性関係、前記U個の標的pCPUと前記V個の標的vCPUとの間の前記類似性関係、および前記V個の標的vCPUと前記第iのvirtioデバイスの仮想割込みとの間の前記類似性関係は、
    前記V個の標的vCPUと前記第Iのvirtioデバイスの前記仮想割込みとの間の前記類似性関係を判定するステップであって、前記V個の標的vCPUが、前記第kのVM上で仮想化された、前記第iのvirtioデバイスの前記仮想割込みを処理することができるvCPUである、判定するステップと、
    前記U個の標的pCPUを判定するステップであって、前記V個の標的vCPUが前記複数の標的pCPU上で走ることができ、Uが1より大きくかつX以下の正の整数である、判定するステップと、
    前記第iのvirtioデバイスの前記仮想割込みに対応する前記第iのvhostスレッドを判定するステップと、
    前記第iのvhostスレッドと前記U個の標的pCPUとの間の前記類似性関係を判定するステップであって、前記第iのvhostスレッドが前記U個の標的pCPUによって処理されることが可能である、判定するステップと
    によって判定されることを特徴とする請求項6に記載の方法。
  9. 前記第iのvhostスレッドと前記U個の標的pCPUとの間の前記類似性関係が1対多数の類似性関係であるとき、前記V個の標的vCPUから前記第mのvCPUを判定する前記ステップは、
    前記V個の標的vCPUのうち前記第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップと、
    前記V個の標的vCPUのうち前記第nのpCPU上で走る少なくとも1つの標的vCPUが存在すると判定された場合、前記第nのpCPU上で走る1つの標的vCPUを前記第mのvCPUとして判定するステップ、または
    前記V個の標的vCPUのうち前記第nのpCPU上で走る少なくとも1つの標的vCPUが存在しないと判定された場合、優先順位に応じて前記V個の標的vCPUからの1つの標的vCPUを前記第mのvCPUとして判定するステップと
    を含むことを特徴とする請求項8に記載の方法。
  10. 前記V個の標的vCPUのうち前記第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定する前記ステップは、
    virtioデバイスの仮想割込み経路情報に応じて、前記V個の標的vCPUのうち前記第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップを含み、前記virtioデバイスの前記仮想割込み経路情報は、前記U個の標的pCPUと前記U個の標的pCPU上で走る標的vCPUとの間の対応関係を含むことを特徴とする請求項9に記載の方法。
  11. ホストHostであって、前記Hostは計算ノードに適用され、前記計算ノードは、物理ハードウェア層と、前記物理ハードウェア層で走る前記Hostと、前記Host上で走る少なくとも1つの仮想マシンVMと、前記少なくとも1つのVM上で仮想化された仮想ハードウェアとを備え、前記物理ハードウェア層はX個の物理中央処理装置pCPUおよびY個の物理入出力デバイスを備え、前記仮想ハードウェアはZ個の仮想中央処理装置vCPUを備え、前記Y個の物理入出力デバイスは第jの物理入出力デバイスを備え、前記少なくとも1つのVMは第kのVMを備え、前記第jの物理入出力デバイスは前記第kのVMに向き、前記Hostは、
    前記第jの物理入出力デバイス内で第iの物理割込みが生じた場合、U個の標的pCPUから第nのpCPUを判定するように構成された第1の判定ユニットであって、前記U個の標的pCPUが、前記第iの物理割込みおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、前記V個の標的vCPUが、前記第kのVM上で仮想化された、第iの仮想割込みとの類似性関係を有するvCPUであり、前記第iの仮想割込みが前記第iの物理割込みに対応し、前記X個のpCPUが前記U個の標的pCPUを備え、前記Z個のvCPUが前記V個の標的vCPUを備える、第1の判定ユニットと、
    前記第nのpCPUを使用して前記第iの物理割込みを処理するように構成された第2の呼出しユニットと、
    前記第iの物理割込みに応じて前記第iの仮想割込みを判定するように構成された第3の判定ユニットと、
    前記V個の標的vCPUから第mのvCPUを判定するように構成された第4の判定ユニットであって、その結果、前記第kのVMが前記第mのvCPUを使用して前記第iの仮想割込みを実行する、第4の判定ユニットと
    を備え、
    X、Y、およびZは1より大きい正の整数であり、Uは1以上かつX以下の正の整数であり、Vは1以上かつZ以下の正の整数であり、i、j、k、m、およびnは正の整数であることを特徴とするHost。
  12. 前記第1の判定ユニットは、前記V個の標的vCPUと前記第iの仮想割込みとの間の前記類似性関係を判定するステップであって、前記V個の標的vCPUが、前記第kのVM上で仮想化された、前記第iの仮想割込みを処理することができるvCPUである、判定するステップと、
    前記U個の標的pCPUを判定するステップであって、前記V個の標的vCPUが前記U個の標的pCPU上で走ることができ、Uが1に等しい、判定するステップと、
    前記第iの仮想割込みに対応する前記第iの物理割込みを判定するステップと、
    前記第iの物理割込みと前記U個の標的pCPUとの間の類似性関係を判定するステップであって、前記第iの物理割込みが前記U個の標的pCPUによって処理されることが可能である、判定するステップと
    を行うようにさらに構成されることを特徴とする請求項11に記載のHost。
  13. 前記第1の判定ユニットは、前記V個の標的vCPUと前記第iの仮想割込みとの間の前記類似性関係を判定するステップであって、前記V個の標的vCPUが、前記第kのVM上で仮想化された、前記第iの仮想割込みを処理することができるvCPUである、判定するステップと、
    前記U個の標的pCPUを判定するステップであって、前記V個の標的vCPUが前記複数の標的pCPU上で走ることができ、Uが1より大きくかつX以下の正の整数である、判定するステップと、
    前記第iの仮想割込みに対応する前記第iの物理割込みを判定するステップと、
    前記第iの物理割込みと前記U個の標的pCPUとの間の類似性関係を判定するステップであって、前記第iの物理割込みが前記U個の標的pCPUによって処理されることが可能である、判定するステップと
    を行うようにさらに構成されることを特徴とする請求項11に記載のHost。
  14. 前記第4の判定ユニットは、前記V個の標的vCPUのうち前記第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップと、
    前記V個の標的vCPUのうち前記第nのpCPU上で走る少なくとも1つの標的vCPUが存在すると判定された場合、前記第nのpCPU上で走る1つの標的vCPUを前記第mのvCPUとして判定するステップであって、その結果、前記第kのVMが前記第mのvCPUを使用して前記第iの仮想割込みを実行する、判定するステップ、または
    前記V個の標的vCPUのうち前記第nのpCPU上で走る少なくとも1つの標的vCPUが存在しないと判定された場合、優先順位に応じて前記V個の標的vCPUからの1つの標的vCPUを前記第mのvCPUとして判定するステップであって、その結果、前記第kのVMが前記第mのvCPUを使用して前記第iの仮想割込みを実行する、判定するステップと
    を行うように特に構成されることを特徴とする請求項13に記載のHost。
  15. 前記V個の標的vCPUのうち前記第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定する態様で、前記第4の判定ユニットは、仮想割込み経路情報に応じて、前記V個の標的vCPUのうち前記第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するように特に構成され、前記仮想割込み経路情報は、前記U個の標的pCPUと前記U個の標的pCPU上で走る標的vCPUとの間の対応関係を含む
    ことを特徴とする請求項14に記載のHost。
  16. ホストHostであって、前記Hostは計算ノードに適用され、前記計算ノードは、物理ハードウェア層と、前記物理ハードウェア層で走る前記Hostと、前記Host上で走るY個の仮想マシンVMと、前記Host上で走るY個の仮想ホストvhostカーネルスレッドと、前記少なくとも1つのVM上で仮想化された仮想ハードウェアとを備え、前記物理ハードウェア層はX個の物理中央処理装置pCPUを備え、前記仮想ハードウェアはZ個の仮想中央処理装置vCPUを備え、X、Y、およびZは1より大きい正の整数であり、前記Y個のVMの各VMは準仮想化されたドライバvirtioデバイスを備え、前記Y個のVMは第kのVMを備え、前記第kのVMは第iのvirtioデバイスを備え、前記第iのvirtioデバイスは前記Y個のvhostカーネルスレッドのうちの第jのvhostカーネルスレッドに対応し、前記Hostは、
    前記第jのvhostカーネルスレッドが第iのvhostスレッドをトリガする場合、U個の標的pCPUからの第nのpCPUを判定するように構成された第1の判定ユニットであって、前記U個の標的pCPUが、第iのvhostスレッドおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、前記V個の標的vCPUが、前記第kのVM上で仮想化された、前記第iのvirtioデバイスの仮想割込みとの類似性関係を有するvCPUであり、前記第iのvirtioデバイスの前記仮想割込みが前記第iのvhostスレッドに対応し、前記X個のpCPUが前記U個の標的pCPUを備え、前記Z個のvCPUが前記V個の標的vCPUを備える、第1の判定ユニットと、
    前記第nのpCPUを使用して前記第iのvhostスレッドを処理するように構成された第2の呼出しユニットと、
    前記第iのvhostスレッドに応じて前記第iのvirtioデバイスの前記仮想割込みを判定するように構成された第3の判定ユニットと、
    前記V個の標的vCPUから第mのvCPUを判定するように構成された第4の判定ユニットであって、その結果、前記第kのVMが前記第mのvCPUを使用して前記第iのvirtioデバイスの前記仮想割込みを実行する、第4の判定ユニットと
    を備え、
    X、Y、およびZは1より大きい正の整数であり、Uは1以上かつX以下の正の整数であり、Vは1以上かつZ以下の正の整数であり、i、j、k、m、およびnは正の整数であることを特徴とするHost。
  17. 前記第1の判定ユニットは、前記V個の標的vCPUと第iの仮想割込みとの間の前記類似性関係を判定するステップであって、前記V個の標的vCPUが、前記第kのVM上で仮想化された、前記第iのvirtioデバイスの前記仮想割込みを処理することができるvCPUである、判定するステップと、
    前記U個の標的pCPUを判定するステップであって、前記V個の標的vCPUが前記U個の標的pCPU上で走ることができ、Uが1に等しい、判定するステップと、
    前記第iのvirtioデバイスの前記仮想割込みに対応する前記第iのvhostスレッドを判定するステップと、
    前記第iのvhostスレッドと前記U個の標的pCPUとの間の類似性関係を判定するステップであって、前記第iのvhostスレッドが前記U個の標的pCPUによって処理されることが可能である、判定するステップと
    を行うようにさらに構成されることを特徴とする請求項16に記載のHost。
  18. 前記第1の判定ユニットは、前記V個の標的vCPUと前記第iの仮想割込みとの間の前記類似性関係を判定するステップであって、前記V個の標的vCPUが、前記第kのVM上で仮想化された、前記第iのvirtioデバイスの前記仮想割込みを処理することができるvCPUである、判定するステップと、
    前記U個の標的pCPUを判定するステップであって、前記V個の標的vCPUが前記複数の標的pCPU上で走ることができ、Uが1より大きくかつX以下の正の整数である、判定するステップと、
    前記第iのvirtioデバイスの前記仮想割込みに対応する前記第iのvhostスレッドを判定するステップと、
    前記第iのvhostスレッドと前記U個の標的pCPUとの間の類似性関係を判定するステップであって、前記第iのvhostスレッドが前記U個の標的pCPUによって処理されることが可能である、判定するステップと
    を行うようにさらに構成されることを特徴とする請求項16に記載のHost。
  19. 前記第4の判定ユニットは、前記V個の標的vCPUのうち前記第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップと、
    前記V個の標的vCPUのうち前記第nのpCPU上で走る少なくとも1つの標的vCPUが存在すると判定された場合、前記第nのpCPU上で走る1つの標的vCPUを前記第mのvCPUとして判定するステップであって、その結果、前記第kのVMが前記第mのvCPUを使用して前記第iのvirtioデバイスの前記仮想割込みを実行する、判定するステップ、または
    前記V個の標的vCPUのうち前記第nのpCPU上で走る少なくとも1つの標的vCPUが存在しないと判定された場合、優先順位に応じて前記V個の標的vCPUからの1つの標的vCPUを前記第mのvCPUとして判定するステップであって、その結果、前記第kのVMが前記第mのvCPUを使用して前記第iのvirtioデバイスの前記仮想割込みを実行する、判定するステップと
    を行うように特に構成されることを特徴とする請求項18に記載のHost。
  20. 前記V個の標的vCPUのうち前記第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定する態様で、
    前記第4の判定ユニットは、virtioデバイスの仮想割込み経路情報に応じて、前記V個の標的vCPUのうち前記第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するように特に構成され、前記virtioデバイスの前記仮想割込み経路情報は、前記U個の標的pCPUと前記U個の標的pCPU上で走る標的vCPUとの間の対応関係を含むことを特徴とする請求項19に記載のHost。
  21. 第jの物理入出力デバイスを備えるY個の物理入出力デバイスと、
    X個の物理中央処理装置pCPUと、
    前記X個の物理中央処理装置pCPUのそれぞれおよび前記Y個の物理入出力デバイスのそれぞれに接続されたメモリであって、前記X個の物理中央処理装置pCPUのうちの1または複数のpCPUが、前記メモリ内に記憶された動作命令を呼び出しまたは実行するように構成される、メモリと、ホストHostと、少なくとも1つの仮想マシンVと、前記少なくとも1つの仮想マシンVM上で仮想化された仮想ハードウェアと
    を備える計算ノードであって、
    前記仮想ハードウェアはZ個の仮想中央処理装置vCPUを備え、前記少なくとも1つのVMは第kのVMを備え、前記第jの物理入出力デバイスは前記第kのVMに向き、
    前記Hostは、
    前記第jの物理入出力デバイス内で第iの物理割込みが生じた場合、U個の標的pCPUから第nのpCPUを判定するステップであって、前記U個の標的pCPUが、前記第iの物理割込みおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、前記V個の標的vCPUが、前記第kのVM上で仮想化された、第iの仮想割込みとの類似性関係を有するvCPUであり、前記第iの仮想割込みが前記第iの物理割込みに対応し、前記X個のpCPUが前記U個の標的pCPUを備え、前記Z個のvCPUが前記V個の標的vCPUを備える、判定するステップと、
    前記第nのpCPUを使用して前記第iの物理割込みを処理するステップと、
    前記第iの物理割込みに応じて前記第iの仮想割込みを判定するステップと、
    前記V個の標的vCPUから第mのvCPUを判定するステップであって、その結果、前記第kのVMが前記第mのvCPUを使用して前記第iの仮想割込みを実行する、判定するステップと
    を行うように構成され、
    X、Y、およびZは1より大きい正の整数であり、Uは1以上かつX以下の正の整数であり、Vは1以上かつZ以下の正の整数であり、i、j、k、m、およびnは正の整数であることを特徴とする計算ノード。
  22. 前記Hostは、前記U個の標的pCPUと前記第iの物理割込みとの間の前記類似性関係、前記U個の標的pCPUと前記V個の標的vCPUとの間の前記類似性関係、および前記V個の標的vCPUと前記第iの仮想割込みとの間の前記類似性関係を、
    前記V個の標的vCPUと前記第iの仮想割込みとの間の類似性関係を判定するステップであって、前記V個の標的vCPUが、前記第kのVM上で仮想化された、前記第iの仮想割込みを処理することができるvCPUである、判定するステップと、
    前記U個の標的pCPUを判定するステップであって、前記V個の標的vCPUが前記U個の標的pCPU上で走ることができ、Uが1に等しい、判定するステップと、
    前記第iの仮想割込みに対応する前記第iの物理割込みを判定するステップと、
    前記第iの物理割込みと前記U個の標的pCPUとの間の前記類似性関係を判定するステップであって、前記第iの物理割込みが前記U個の標的pCPUによって処理されることが可能である、判定するステップと
    によって判定するようにさらに構成されることを特徴とする請求項21に記載の計算ノード。
  23. 前記Hostは、前記U個の標的pCPUと前記第iの物理割込みとの間の前記類似性関係、前記U個の標的pCPUと前記V個の標的vCPUとの間の前記類似性関係、および前記V個の標的vCPUと前記第iの仮想割込みとの間の前記類似性関係を、
    前記V個の標的vCPUと前記第iの仮想割込みとの間の前記類似性関係を判定するステップであって、前記V個の標的vCPUが、前記第kのVM上で仮想化された、前記第iの仮想割込みを処理することができるvCPUである、判定するステップと、
    前記U個の標的pCPUを判定するステップであって、前記V個の標的vCPUが前記複数の標的pCPU上で走ることができ、Uが1より大きくかつX以下の正の整数である、判定するステップと、
    前記第iの仮想割込みに対応する前記第iの物理割込みを判定するステップと、
    前記第iの物理割込みと前記U個の標的pCPUとの間の類似性関係を判定するステップであって、前記第iの物理割込みが前記U個の標的pCPUによって処理されることが可能である、判定するステップと
    によって判定するようにさらに構成されることを特徴とする請求項21に記載の計算ノード。
  24. 前記V個の標的vCPUから前記第mのvCPUを判定する態様で、前記Hostは、
    前記V個の標的vCPUのうち前記第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップと、
    前記V個の標的vCPUのうち前記第nのpCPU上で走る少なくとも1つの標的vCPUが存在すると判定された場合、前記第nのpCPU上で走る1つの標的vCPUを前記第mのvCPUとして判定するステップ、または
    前記V個の標的vCPUのうち前記第nのpCPU上で走る少なくとも1つの標的vCPUが存在しないと判定された場合、優先順位に応じて前記V個の標的vCPUからの1つの標的vCPUを前記第mのvCPUとして判定するステップと
    を行うように特に構成されることを特徴とする請求項23に記載の計算ノード。
  25. 前記V個の標的vCPUのうち前記第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定する態様で、前記Hostは、仮想割込み経路情報に応じて、前記V個の標的vCPUのうち前記第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するように特に構成され、前記仮想割込み経路情報は、前記U個の標的pCPUと前記U個の標的pCPU上で走る標的vCPUとの間の対応関係を含むことを特徴とする請求項24に記載の計算ノード。
  26. X個の物理中央処理装置pCPUと、
    前記X個の物理中央処理装置pCPUに接続されたメモリであって、前記X個の物理中央処理装置pCPUのうちの1または複数のpCPUが、前記メモリ内に記憶された動作命令を呼び出しまたは実行するように構成される、メモリと、ホストHostと、Y個の仮想マシンVMと、Y個の仮想ホストvhostカーネルスレッドと、前記少なくとも1つのVM上で仮想化された仮想ハードウェアとを備える計算ノードであって、前記仮想ハードウェアはZ個の仮想中央処理装置vCPUを備え、前記Y個のVMの各VMは準仮想化されたドライバvirtioデバイスを備え、前記Y個のVMは第kのVMを備え、前記第kのVMは第iのvirtioデバイスを備え、前記第iのvirtioデバイスは前記Y個のvhostカーネルスレッドのうちの第jのvhostカーネルスレッドに対応し、
    前記Hostは、
    前記第jのvhostカーネルスレッドが第iのvhostスレッドをトリガする場合、U個の標的pCPUから第nのpCPUを判定するステップであって、前記U個の標的pCPUが、前記第iのvhostスレッドおよびV個の標的vCPUの両方との類似性関係を有するpCPUであり、前記V個の標的vCPUが、前記第kのVM上で仮想化された、前記第iのvirtioデバイスの仮想割込みとの類似性関係を有するvCPUであり、前記第iのvirtioデバイスの前記仮想割込みが前記第iのvhostスレッドに対応し、前記X個のpCPUが前記U個の標的pCPUを備え、前記Z個のvCPUが前記V個の標的vCPUを備える、判定するステップと、
    前記第nのpCPUを使用して前記第iのvhostスレッドを処理するステップと、
    前記第iのvhostスレッドに応じて前記第iのvirtioデバイスの前記仮想割込みを判定するステップと、
    前記V個の標的vCPUから第mのvCPUを判定するステップであって、その結果、前記第kのVMが前記第mのvCPUを使用して前記第iのvirtioデバイスの前記仮想割込みを実行する、判定するステップと
    を行うように構成され、
    X、Y、およびZは1より大きい正の整数であり、Uは1以上かつX以下の正の整数であり、Vは1以上かつZ以下の正の整数であり、i、j、k、m、およびnは正の整数であることを特徴とする計算ノード。
  27. 前記Hostは、前記U個の標的pCPUと第iの物理割込みとの間の前記類似性関係、前記U個の標的pCPUと前記V個の標的vCPUとの間の前記類似性関係、および前記V個の標的vCPUと第iの仮想割込みとの間の前記類似性関係を、
    前記V個の標的vCPUと前記第iの仮想割込みとの間の前記類似性関係を判定するステップであって、前記V個の標的vCPUが、前記第kのVM上で仮想化された、前記第iのvirtioデバイスの前記仮想割込みを処理することができるvCPUである、判定するステップと、
    前記U個の標的pCPUを判定するステップであって、前記V個の標的vCPUが前記U個の標的pCPU上で走ることができ、Uが1に等しい、判定するステップと、
    前記第iのvirtioデバイスの前記仮想割込みに対応する前記第iのvhostスレッドを判定するステップと、
    前記第iのvhostスレッドと前記U個の標的pCPUとの間の前記類似性関係を判定するステップであって、前記第iのvhostスレッドが前記U個の標的pCPUによって処理されることが可能である、判定するステップと
    によって判定するようにさらに構成されることを特徴とする請求項26に記載の計算ノード。
  28. 前記Hostは、前記U個の標的pCPUと前記第iの物理割込みとの間の前記類似性関係、前記U個の標的pCPUと前記V個の標的vCPUとの間の前記類似性関係、および前記V個の標的vCPUと前記第iの仮想割込みとの間の前記類似性関係を、
    前記V個の標的vCPUと前記第iの仮想割込みとの間の前記類似性関係を判定するステップであって、前記V個の標的vCPUが、前記第kのVM上で仮想化された、前記第iのvirtioデバイスの仮想割込みを処理することができるvCPUである、判定するステップと、
    前記U個の標的pCPUを判定するステップであって、前記V個の標的vCPUが前記複数の標的pCPU上で走ることができ、Uが1より大きくかつX以下の正の整数である、判定するステップと、
    前記第iのvirtioデバイスの前記仮想割込みに対応する前記第iのvhostスレッドを判定するステップと、
    前記第iのvhostスレッドと前記U個の標的pCPUとの間の類似性関係を判定するステップであって、前記第iのvhostスレッドが前記U個の標的pCPUによって処理されることが可能である、判定するステップと
    によって判定するようにさらに構成されることを特徴とする請求項26に記載の計算ノード。
  29. 前記V個の標的vCPUから前記第mのvCPUを判定する態様で、前記Hostは、
    前記V個の標的vCPUのうち前記第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するステップと、
    前記V個の標的vCPUのうち前記第nのpCPU上で走る少なくとも1つの標的vCPUが存在すると判定された場合、前記第nのpCPU上で走る1つの標的vCPUを前記第mのvCPUとして判定するステップ、または
    前記V個の標的vCPUのうち前記第nのpCPU上で走る少なくとも1つの標的vCPUが存在しないと判定された場合、優先順位に応じて前記V個の標的vCPUからの1つの標的vCPUを前記第mのvCPUとして判定するステップと
    を行うように特に構成されることを特徴とする請求項28に記載の計算ノード。
  30. 前記V個の標的vCPUのうち前記第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定する態様で、前記Hostは、
    virtioデバイスの仮想割込み経路情報に応じて、前記V個の標的vCPUのうち前記第nのpCPU上で走る少なくとも1つの標的vCPUが存在するかどうかを判定するように特に構成され、前記virtioデバイスの前記仮想割込み経路情報は、前記U個の標的pCPUと前記U個の標的pCPU上で走る標的vCPUとの間の対応関係を含むことを特徴とする請求項29に記載の計算ノード。
JP2016574176A 2014-06-20 2014-06-20 仮想化プラットホームによって割込みを処理する方法および関連デバイス Pending JP2017518589A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2014/080430 WO2015192381A1 (zh) 2014-06-20 2014-06-20 虚拟化平台处理中断方法和相关设备

Publications (1)

Publication Number Publication Date
JP2017518589A true JP2017518589A (ja) 2017-07-06

Family

ID=54934732

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016574176A Pending JP2017518589A (ja) 2014-06-20 2014-06-20 仮想化プラットホームによって割込みを処理する方法および関連デバイス

Country Status (6)

Country Link
US (1) US10169075B2 (ja)
EP (1) EP3147784A4 (ja)
JP (1) JP2017518589A (ja)
KR (1) KR101847518B1 (ja)
CN (1) CN106462451B (ja)
WO (1) WO2015192381A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113961147A (zh) * 2021-10-26 2022-01-21 江苏安超云软件有限公司 在云平台上从已删除的块中回收空间的方法及应用

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109144679B (zh) * 2017-06-27 2022-03-29 华为技术有限公司 中断请求的处理方法、装置及虚拟化设备
JP7196439B2 (ja) * 2018-07-03 2022-12-27 株式会社デンソー 仮想化環境におけるデバイスへのアクセス方法
US11204796B2 (en) 2019-04-11 2021-12-21 International Business Machines Corporation Dynamic assignment of interrupts based on input/output metrics
US11194611B2 (en) 2019-07-29 2021-12-07 International Business Machines Corporation Dynamic assignment of interrupts based on input/output metrics
US11068411B2 (en) 2019-07-29 2021-07-20 International Business Machines Corporation Reducing impact of context switches through dynamic memory-mapping overallocation
CN113934504A (zh) * 2020-06-29 2022-01-14 华为技术有限公司 一种系统以及中断处理方法
CN114371907A (zh) * 2020-10-15 2022-04-19 华为技术有限公司 一种芯片系统、处理虚拟中断的方法及相应装置
CN112817690B (zh) * 2021-01-22 2022-03-18 华东计算技术研究所(中国电子科技集团公司第三十二研究所) 一种面向arm架构虚拟化领域的中断虚拟化处理方法及系统
CN114625480A (zh) * 2022-03-17 2022-06-14 北京有竹居网络技术有限公司 数据处理方法、装置、可读介质以及计算设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010128911A (ja) * 2008-11-28 2010-06-10 Hitachi Ltd 仮想計算機の制御方法、仮想計算機の制御プログラム及び計算機装置
JP2013519169A (ja) * 2010-02-05 2013-05-23 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 割込みの仮想化

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7853960B1 (en) 2005-02-25 2010-12-14 Vmware, Inc. Efficient virtualization of input/output completions for a virtual device
US8286162B2 (en) 2005-12-30 2012-10-09 Intel Corporation Delivering interrupts directly to a virtual processor
CN100547571C (zh) * 2006-08-29 2009-10-07 联想(北京)有限公司 一种虚拟机系统及其硬件设备中断处理方法
US9164784B2 (en) * 2007-10-12 2015-10-20 International Business Machines Corporation Signalizing an external event using a dedicated virtual central processing unit
US7840839B2 (en) * 2007-11-06 2010-11-23 Vmware, Inc. Storage handling for fault tolerance in virtual machines
CN100527098C (zh) * 2007-11-27 2009-08-12 北京大学 一种虚拟机管理器的动态内存映射方法
US8234432B2 (en) 2009-01-26 2012-07-31 Advanced Micro Devices, Inc. Memory structure to store interrupt state for inactive guests
US9411624B2 (en) * 2011-11-22 2016-08-09 Red Hat Israel, Ltd. Virtual device interrupt hinting in a virtualization system
CN102799465B (zh) * 2012-06-30 2015-05-27 华为技术有限公司 分布式虚拟化系统的虚拟中断管理方法及装置
US9477505B2 (en) * 2012-08-14 2016-10-25 Oracle International Corporation Method for reducing the overhead associated with a virtual machine exit when handling instructions related to descriptor tables
CN103559087B (zh) * 2013-10-31 2017-11-28 华为技术有限公司 一种虚拟处理器之间的中断的实现方法、相关装置和系统
CN103699428A (zh) * 2013-12-20 2014-04-02 华为技术有限公司 一种虚拟网卡中断亲和性绑定的方法和计算机设备

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010128911A (ja) * 2008-11-28 2010-06-10 Hitachi Ltd 仮想計算機の制御方法、仮想計算機の制御プログラム及び計算機装置
JP2013519169A (ja) * 2010-02-05 2013-05-23 アドバンスト・マイクロ・ディバイシズ・インコーポレイテッド 割込みの仮想化

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113961147A (zh) * 2021-10-26 2022-01-21 江苏安超云软件有限公司 在云平台上从已删除的块中回收空间的方法及应用

Also Published As

Publication number Publication date
CN106462451A (zh) 2017-02-22
US10169075B2 (en) 2019-01-01
CN106462451B (zh) 2019-11-12
US20170102963A1 (en) 2017-04-13
EP3147784A4 (en) 2017-08-02
WO2015192381A1 (zh) 2015-12-23
KR20170016448A (ko) 2017-02-13
KR101847518B1 (ko) 2018-05-28
EP3147784A1 (en) 2017-03-29

Similar Documents

Publication Publication Date Title
US10169075B2 (en) Method for processing interrupt by virtualization platform, and related device
Desai et al. Hypervisor: A survey on concepts and taxonomy
US10691363B2 (en) Virtual machine trigger
KR101081907B1 (ko) 가상화 장치
US10678581B2 (en) Methods and apparatus to select virtualization environments during deployment
US11681544B2 (en) Interference-aware scheduling service for virtual GPU enabled systems
CN102591715B (zh) 一种使用多队列技术的虚拟机网络性能优化的实现方法
US10365936B2 (en) Idle processor management by guest in virtualized systems
EP3265910A1 (en) Methods and apparatus to select virtualization environments for migration
US20060294518A1 (en) Method, apparatus and system for a lightweight virtual machine monitor
JP2013516021A (ja) プロセッサコアのハイパーバイザ離隔
KR20160033517A (ko) 인터럽트 컨트롤러를 위한 하이브리드 가상화 방법
US10002016B2 (en) Configuration of virtual machines in view of response time constraints
US20170046275A1 (en) Associating cache memory with a work process
WO2012069276A1 (en) Device emulation in a virtualized computing environment
CN102307208A (zh) 基于云计算的虚拟机运行控制装置及其运行控制方法
WO2018040845A1 (zh) 一种计算资源调度方法及装置
US9766917B2 (en) Limited virtual device polling based on virtual CPU pre-emption
US20150186180A1 (en) Systems and methods for affinity dispatching based on network input/output requests
KR100928866B1 (ko) 가상 환경에서의 어플리케이션 실행 장치 및 방법
Peng et al. A throughput-oriented nvme storage virtualization with workload-aware management
US20170147377A1 (en) Lazy timer programming for virtual machines
Lee et al. A paravirtualized file system for accelerating file i/o
Dhargave et al. Evaluation of different Hypervisors Performances using Different Benchmarks
MARGESCU et al. Virtualization, the next step for online services

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170116

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20170116

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20171120

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20171212

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20180312

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20180511

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20180511

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20180814

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20181207