本発明の実施形態は、通信技術の分野に関し、より詳細には、仮想化プラットホームによって割込みを処理する方法および関連デバイスに関する。
仮想化技術は、底層のハードウェアデバイスが上層のオペレーティングシステムおよびアプリケーションプログラムから分離される非干渉化技術である。仮想化技術は、現在普及しているクラウドコンピューティング(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と第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の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のpCPU上で走るかどうかを容易かつ迅速に判定することができる。
図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のpCPU上で走るかどうかを容易かつ迅速に判定することができる。
図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のpCPU上で走るかどうかを容易かつ迅速に判定することができる。
図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のpCPU上で走るかどうかを容易かつ迅速に判定することができる。
図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のpCPU上で走るかどうかを容易かつ迅速に判定することができる。
図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のpCPU上で走るかどうかを容易かつ迅速に判定することができる。
上記の実施形態における方法のプロセスのすべてまたはいくつかは、関連ハードウェア(たとえば、プロセッサ)を指示するコンピュータプログラムによって実施されることがあることが、当業者には理解されよう。プログラムは、コンピュータ可読記憶媒体内に記憶されることがある。プログラムが走るとき、上記の実施形態における方法のプロセスが実行される。記憶媒体は、磁気ディスク、光ディスク、読取り専用メモリ(Read-Only Memory、ROM)、またはランダムアクセスメモリ(Random Access Memory、RAM)を含むことがある。
本明細書に開示される実施形態に記載される例と組み合わせて、電子ハードウェアまたはコンピュータソフトウェアおよび電子ハードウェアの組合せによって、ユニットおよびアルゴリズムステップが実施されることがあることが、当業者には認識されよう。これらの機能が、ハードウェアによって実行されるか、それともソフトウェアによって実行されるかは、技術的解決策の特定の適用および設計制約条件に依存する。当業者であれば、それぞれの特定の適用に対して、記載される機能を実施するために異なる方法を使用することがあるが、そのような実装は、本発明の範囲を超えると見なされるべきでない。
好都合かつ簡単な説明の目的のため、上記のシステム、装置、およびユニットの詳述される作業プロセスに関して、上記の方法実施形態における対応するプロセスが参照されてよく、詳細は本明細書に繰り返し記載されないことが、当業者にははっきりと理解されよう。
本出願に提供されるいくつかの実施形態では、開示されるシステム、装置、および方法が、他の態様でも実施されることがあることが、理解されるべきである。たとえば、記載される装置実施形態は、例示にすぎない。たとえば、ユニットの区分は、論理的な機能区分にすぎず、実際の実装では他の区分としてもよい。たとえば、複数のユニットまたは構成要素は、別のシステム内へ組み合わせられてよく、もしくは組み込まれてよく、またはいくつかの特徴は、無視されてよく、もしくは実行されなくてもよい。加えて、表示または議論された相互結合もしくは直接結合または通信接続は、いくつかのインターフェースを通って実施されることがある。装置またはユニット間の間接結合または通信接続は、電子、機械、または他の形式で実施されることがある。
別個の部分として記載されるユニットは、物理的に別個のものであっても、そうでなくてもよく、ユニットとして表示される部分は、物理ユニットであっても、そうでなくてもよく、1つの位置に配置されてよく、または複数のネットワークユニット上に分散されてもよい。ユニットのいくつかまたはすべては、実施形態の解決策の目的を実現するために、実際の必要に応じて選択されることがある。
加えて、本発明の実施形態における機能ユニットは、1つの処理ユニット内に組み込まれてよく、またはユニットはそれぞれ、物理的に単独で存在してよく、または2つ以上のユニットが、1つのユニット内へ組み込まれる。
これらの機能が、ソフトウェア機能ユニットの形で実施され、独立した製品として販売または使用されるとき、これらの機能は、コンピュータ可読記憶媒体内に記憶されることがある。そのような理解に基づいて、本質的に本発明の技術的解決策、または従来技術に寄与する部分、または技術的解決策のいくつかは、ソフトウェア製品の形で実施されることがある。ソフトウェア製品は、記憶媒体内に記憶され、本発明の実施形態に記載される方法のステップのすべてまたはいくつかを実行するようにコンピュータデバイス(パーソナルコンピュータ、サーバ、もしくはネットワークデバイスであることがある)またはプロセッサに指示するいくつかの命令を含む。上記の記憶媒体は、USBフラッシュドライブ、取外し可能ハードディスク、読取り専用メモリ(ROM、Read-Only Memory)、ランダムアクセスメモリ(RAM、Random Access Memory)、磁気ディスク、または光ディスクなど、プログラムコードを記憶することができる任意の媒体を含む。
上記の説明は、本発明の特有の実装形態にすぎず、本発明の保護範囲を限定することが意図されるものではない。本発明に開示される技術範囲内の当業者によれば容易に考えつくあらゆる変更または置換えは、本発明の保護範囲内に入るものとする。したがって、本発明の保護範囲は、特許請求の範囲の保護範囲内にあるものとする。