本發(fā)明大體上涉及機(jī)器虛擬化,并且具體涉及用于調(diào)度虛擬中央處理單元(VCPU)的方法和系統(tǒng)。
發(fā)明概述
本文描述的本發(fā)明的實施例提供方法,該方法包括在支持通用寄存器和專用寄存器的多個物理處理核上運行多個處理任務(wù)。對處理任務(wù)使用專用寄存器的各自的使用等級進(jìn)行估計。基于專用寄存器的估計的使用等級,將物理處理核分配到處理任務(wù)。
在一些實施例中,分配物理處理核包括應(yīng)用調(diào)度準(zhǔn)則,該調(diào)度準(zhǔn)則目的在于減少每物理處理核的專用寄存器的使用。在實施例中,調(diào)度準(zhǔn)則目的在于減少使用任何給定的物理處理核上的專用寄存器的處理任務(wù)的最大數(shù)量。在另一個實施例中,調(diào)度準(zhǔn)則目的在于減少專用寄存器的保存和加載操作的數(shù)量。在又一個實施例中,調(diào)度準(zhǔn)則目的在于減少檢測操作的數(shù)量,該檢測操作檢測專用寄存器的使用。
在所公開的實施例中,估計使用等級包括向處理任務(wù)分配指示專用寄存器的使用等級的各自的分?jǐn)?shù),以及分配物理處理核包括根據(jù)分?jǐn)?shù)調(diào)度用于通過物理處理核執(zhí)行的處理任務(wù)。在各種實施例中,專用寄存器可以包括浮點單元(FPU)寄存器、單指令多數(shù)據(jù)(SIMD)寄存器和/或向量寄存器。在實施例中,運行處理任務(wù)包括運行虛擬機(jī)(VM)的虛擬中央處理單元(VCPU)。
在一些實施例中,多個物理處理核被包括在處理器中。在其他實施例中,多個物理處理核分布在多個物理主機(jī)上。在實施例中,將物理處理核分配到處理任務(wù)包括基于專用寄存器的估計的使用等級來確定將執(zhí)行處理任務(wù)的虛擬機(jī)(VM)放置在包括物理處理核的物理主機(jī)上。
根據(jù)本發(fā)明的實施例,本發(fā)明另外提供包括監(jiān)控模塊和調(diào)度模塊的裝置。監(jiān)控模塊被配置為監(jiān)控在支持通用寄存器和專用寄存器的多個物理處理核上運行的多個處理任務(wù),以及估計處理任務(wù)使用專用寄存器的各自的使用等級。調(diào)度模塊被配置為基于專用寄存器的估計的使用等級,將物理處理核分配到處理任務(wù)。
根據(jù)本發(fā)明的實施例,本發(fā)明還提供包括多個物理處理核和超級管理器的處理器。物理處理核支持通用寄存器和專用寄存器。超級管理器被配置為在物理處理核上運行多個處理任務(wù),估計處理任務(wù)使用專用寄存器的各自的使用等級,以及基于專用寄存器的估計的使用等級,將物理處理核分配到處理任務(wù)。
從結(jié)合附圖進(jìn)行的本發(fā)明的實施例的以下詳細(xì)描述,本發(fā)明將被更完全地理解,其中:
附圖簡述
圖1是根據(jù)本發(fā)明的實施例示意性示出計算機(jī)的框圖;
圖2是根據(jù)本發(fā)明的實施例示意性示出用于將VCPU分配到物理CPU核的方法的流程圖;以及
圖3是根據(jù)本發(fā)明的實施例示意性示出用于虛擬機(jī)(VM)放置的方法的流程圖。
實施例的詳細(xì)描述
概述
本文描述的本發(fā)明的實施例提供用于對潛在地使用通用寄存器和專用寄存器的處理任務(wù)的調(diào)度的改進(jìn)的方法和系統(tǒng)。在一些實施例中,計算機(jī)托管一個或多個虛擬機(jī)(VM),每個虛擬機(jī)包括一個或多個虛擬中央處理單元(VCPU)。計算機(jī)中的超級管理器將物理資源分配到各種VM,并且具體地將計算機(jī)的物理處理核分配到VCPU。
物理處理核支持通用寄存器和專用寄存器。專用寄存器可以包括例如,用于浮點計算的浮點單元(FPU)寄存器、用于SIMD操作的單指令多數(shù)據(jù)(SIMD)寄存器或用于向量計算的向量寄存器。
在大多數(shù)實際場景下,專用寄存器是由相對較少的軟件應(yīng)用使用的。然而,如果使用專用寄存器的VCPU被分配到相同的物理處理核,它們之間的上下文切換通常導(dǎo)致相當(dāng)大的開銷。這樣的上下文切換通常涉及將一個VCPU的上下文(包括專用寄存器內(nèi)容)存儲在隨機(jī)存取存儲器(RAM)中,并且從RAM加載另一個VCPU的上下文(包括專用寄存器內(nèi)容)。
在一些實施例中,超級管理器以減少或消除這種開銷的方式將VCPU分配到處理核。通常,超級管理器目的在于將使用專用寄存器的VCPU分配到不同的物理處理核。當(dāng)全分隔是不可能時,超級管理器的目的可以是在物理處理核中盡可能分布專用寄存器的使用,并且從而減少每物理處理核的專用寄存器的使用。在本文中對實現(xiàn)該目標(biāo)的各種調(diào)度方案進(jìn)行描述。
在實施例中,超級管理器監(jiān)控各種VCPU的操作,并且向每個VCPU分配指示VCPU使用專用寄存器的等級的分?jǐn)?shù)。在一個示例實現(xiàn)中,分?jǐn)?shù)包括單個位,例如,“1”為使用專用寄存器的VCPU以及“0”為沒有使用專用寄存器的VCPU。超級管理器然后基于分?jǐn)?shù)將VCPU分配到物理處理核。
本文描述的實施例主要指的是將VCPU分配到物理處理核,但所公開的技術(shù)可以與其他類型的處理任務(wù)一起使用。例如,本文描述的方法可以由操作系統(tǒng)用于將潛在地使用專用寄存器的軟件線程進(jìn)行調(diào)度。此外,處理核不一定需要駐留在單個計算機(jī)中。例如,所公開的技術(shù)可以用作將VM分配到物理主機(jī)的放置算法的部分。
系統(tǒng)描述
圖1是根據(jù)本發(fā)明的實施例示意性示出計算機(jī)20的框圖。計算機(jī)20包括中央處理單元(CPU)24,該中央處理單元24包括多個物理處理核28和隨機(jī)存取存儲器(RAM)30。物理處理核28在本文中還被稱為處理核,或者為簡潔起見簡稱為核。
超級管理器32將計算機(jī)20的物理資源分配到由該計算機(jī)托管的一個或多個虛擬機(jī)(VM)36。超級管理器32通常被實現(xiàn)為在CPU24上運行的軟件層。由超級管理器分配的物理資源可以包括例如,核28的資源、RAM30以及網(wǎng)絡(luò)通信或持久性存儲資源(未在圖中示出)。
在一些實施例中,每個VM36包括一個或多個虛擬CPU(VCPU)40,該VCPU仿真物理CPU的操作。在各種資源分配功能中,超級管理器32使用下面詳細(xì)描述的方法來將物理處理核28分配到VCPU40。在本示例中,超級管理器32包括VCPU監(jiān)控模塊44(還被稱為VCPU監(jiān)控器)以及VCPU調(diào)度模塊48(還被稱為VCPU調(diào)度器)。監(jiān)控模塊44監(jiān)控VCPU40的活動,并且評估每個VCPU使用專用寄存器(例如,F(xiàn)PU、SIMD和/或向量寄存器)的程度。調(diào)度模塊48基于該評估將核28分配到VCPU40。
可使用硬件/固件,諸如在一個或多個專用集成電路(ASIC)或現(xiàn)場可編程門陣列(FPGA)中實施計算機(jī)20的各種元件??商鎿Q地,一些計算機(jī)元件(諸如超級管理器32)可在軟件或使用硬件/固件和軟件元件的組合實施。在一些實施例中,CPU24和核28包括在軟件中編程以執(zhí)行本文描述的功能的一個或多個通用處理器??山?jīng)由網(wǎng)絡(luò)以電子形式將軟件下載到處理器,例如,或者所述軟件可以可選地或附加地被提供和/或存儲在非暫時性有形介質(zhì)上,諸如磁存儲器、光學(xué)存儲器或電子存儲器。
基于專用寄存器的使用的物理處理核到VCPU的分配
在一些實施例中,CPU24的核28支持至少兩種類型的寄存器,其在本文中被稱為通用寄存器和專用寄存器。通用寄存器用于大多數(shù)操作類型。雖然不是必須的,專用寄存器通常比通用寄存器具有更多的位并且專用于更復(fù)雜的操作。
專用寄存器可以包括例如,用于浮點計算的浮點單元(FPU)寄存器、用于SIMD操作的單指令多數(shù)據(jù)(SIMD)寄存器或用于向量計算的向量寄存器。專用寄存器的具體示例包括MMX、流式SIMD擴(kuò)展(SSE)、SSE2、SSE3、高級矢量擴(kuò)展(AVX)以及AVX2寄存器??商鎿Q地,所公開的技術(shù)可以與任何其它合適的專用寄存器一起使用。
通用寄存器可以包括例如,32位或64位寄存器。專用寄存器可以包括例如,80位、128位、256位或512位寄存器。純粹通過示例的方式給出上面的寄存器大小,并且可以在替換的實施例中使用任何其他合適的寄存器大小。
在大多數(shù)實際場景下,專用寄存器是由相對較少的軟件應(yīng)用使用的。然而,在某些情況下,使用專用寄存器的不同的VCPU40可以被分配到相同的核28。在這樣的情況下,超級管理器32的VCPU調(diào)度器48通過VCPU之間定期地上下文切換交替地將核28分配到VCPU。
在每個上下文切換操作中,調(diào)度器48通常暫停當(dāng)前正在執(zhí)行的VCPU,將該VCPU的上下文(包括專用寄存器內(nèi)容)存儲在RAM30中,從該RAM加載另一個VCPU的上下文(包括專用寄存器內(nèi)容),以及繼續(xù)新的VCPU的執(zhí)行。上下文切換操作導(dǎo)致相當(dāng)大的開銷,一定程度上是由于寄存器的大尺寸。
在一些實施例中,VCPU調(diào)度器48以減少或消除這種開銷的方式將VCPU40分配到核28。在這些實施例中,VCPU監(jiān)控器44估計各種VCPU40使用專用寄存器的使用等級,以及VCPU調(diào)度器48基于專用寄存器的估計的使用等級將核28分配到VCPU40。
通常,調(diào)度器48目的在于將使用專用寄存器的VCPU分配到不同的核。更普遍的是,調(diào)度器的目的可以是在核28中盡可能分布專用寄存器的使用,并且從而減少每核的專用寄存器的使用。
利用這種分配,降低了專用寄存器的VCPU之間的競爭的程度。這種分配還減少專用寄存器的加載/保存操作的數(shù)量以及陷阱的數(shù)量(在超級管理器和VM客戶操作系統(tǒng)之間的上下文切換用于檢測專用寄存器的使用并且按需加載/保存它們)。因此,提高了由超級管理器32實現(xiàn)的調(diào)度效率。
在各種實施例中,調(diào)度器48可以應(yīng)用各種合適的調(diào)度準(zhǔn)則,以便減少每核28的專用寄存器的加載/保存操作。在一個實施例中,調(diào)度準(zhǔn)則目的在于減少使用任何給定的核28上的專用寄存器的不同的VCPU40的最大數(shù)量。在另一個實施例中,調(diào)度準(zhǔn)則目的在于減少使用專用寄存器的VCPU之間的上下文切換操作的速率。
在一些實施例中,VCPU監(jiān)控器44監(jiān)控各種VCPU40的操作,并且向每個VCPU分配指示該VCPU使用專用寄存器的等級的分?jǐn)?shù)?;谠摲?jǐn)?shù),VCPU調(diào)度器48將VCPU40分配到核28。例如,調(diào)度器的目的可以是將分配給任何給定的核28的VCPU的分?jǐn)?shù)的最大總和進(jìn)行最小化。
監(jiān)控器44和調(diào)度器48可以使用任何合適類型的分?jǐn)?shù)來指示專用寄存器的使用的等級。在一個實施例中,分?jǐn)?shù)包括單個位,例如,“1”為使用專用寄存器的VCPU以及“0”為沒有使用專用寄存器的VCPU。替換的約定可以將“1”的分?jǐn)?shù)分配到廣泛地使用專用寄存器的VCPU,并且將“0”的分?jǐn)?shù)分配到幾乎沒有或根本沒有使用專用寄存器的VCPU。還能使用更高精度的分?jǐn)?shù),其還量化每個VCPU使用專用寄存器的程度。
圖2是根據(jù)本發(fā)明的實施例示意性示出用于將VCPU40分配到物理CPU核28的方法的流程圖。該方法在監(jiān)控步驟60處開始,VCPU監(jiān)控器44監(jiān)控VCPU40的活動,以及具體地監(jiān)控與專用寄存器的使用有關(guān)的活動。在得分步驟64處,監(jiān)控器44根據(jù)它們對專用寄存器的使用等級向VCPU分配各自的分?jǐn)?shù)。監(jiān)控器44向VCPU調(diào)度器48報告該分?jǐn)?shù)。
在調(diào)度步驟68處,基于該分?jǐn)?shù),VCPU調(diào)度器48將VCPU40分配到核28。在固定步驟72處,調(diào)度器48將每個VCPU40固定到其分配的核28。該方法循環(huán)回到步驟60,以便繼續(xù)監(jiān)控VCPU活動。在檢測到VCPU活動中的變化時,監(jiān)控器44可以適應(yīng)分?jǐn)?shù)中的一個或多個,并且這種適應(yīng)可以促使調(diào)度器48適應(yīng)VCPU40到核28的分配。
基于專用寄存器的使用的VM放置
在一些實施例中,本文描述的調(diào)度方案可以用于實現(xiàn)(或結(jié)合)放置過程,該放置過程決定如何將VM分配到包括由網(wǎng)絡(luò)連接的多個主機(jī)的計算機(jī)系統(tǒng)中的物理主機(jī)。通過使用所公開的技術(shù),集約利用專用寄存器的VM可以被放置在不同的主機(jī)上,以便提高整體系統(tǒng)性能。可通過計算機(jī)20的CPU的一個或多個或者通過一些其他合適的處理器來執(zhí)行這樣的放置過程。
在這些實施例中,計算機(jī)系統(tǒng)包括多個計算機(jī),諸如圖1的計算機(jī)20。每個計算機(jī)20(還被稱為主機(jī)或物理主機(jī))運行各自的超級管理器32。每個超級管理器32托管一個或多個VM36,每個VM包括一個或多個VCPU40。計算機(jī)系統(tǒng)運行放置過程,該放置過程決定如何將VM36分配到主機(jī)20。術(shù)語“放置”指的是VM的初始配置和操作的VM從一個主機(jī)到另一個主機(jī)的實時遷移。
圖3是根據(jù)本發(fā)明的實施例示意性示出用于VM放置的方法的流程圖。該方法在活動估計步驟80處開始,用各種計算機(jī)20的超級管理器32估計有關(guān)專用寄存器的使用的活動程度。在分?jǐn)?shù)分配步驟84處,超級管理器32根據(jù)它們對專用寄存器的使用等級向VCPU分配各自的分?jǐn)?shù)。
在放置步驟88處,基于該分?jǐn)?shù),放置過程將VM36分配到物理主機(jī)20。通常,該分配目的在于減少或最小化每主機(jī)的總分。給定的主機(jī)的總分可以被定義為例如,分配到該主機(jī)的所有的VM的VCPU的分?jǐn)?shù)的總和。
為了使用公開的技術(shù)(與VM遷移相反)來在最初放置VM,放置過程通常使用有關(guān)VM使用專用寄存器的先驗信息。例如,這樣的信息可以存儲在來自VM的過去激活的持久性存儲中。
作為另一個示例,討論中的VM可以是專用寄存器的使用是已知的另一個VM的克隆。放置過程可以假設(shè)兩個VM的使用是相似的。作為又一個示例,討論中的VM可以使用相同的圖像作為專用寄存器的使用是已知的另一個VM。在此情況下,放置過程也可以假設(shè)兩個VM的使用是相似的。
否則,放置過程可以在最初將VM放置在其中專用寄存器的使用是低的主機(jī)中。該示例證明VM的放置如何受其他VM的專用寄存器的使用的影響。
附加的實施例以及變型
在一些實施例中,由調(diào)度器48使用的調(diào)度準(zhǔn)則可以考慮附加的因素。附加的因素可包括例如,核28的性能約束或限制、VM36中的優(yōu)先級或任何其它合適的因素。
對于給定的VCPU40,調(diào)度器48可以建議幾個被分配給該VCPU的候選的核28,不一定是單個核。
本文描述的實施例主要指的是將VCPU分配到物理處理核,但所公開的技術(shù)可以與其他類型的處理任務(wù)一起使用。例如,本文描述的方法可以由操作系統(tǒng)(例如,VM的“裸機(jī)”操作系統(tǒng)或客戶操作系統(tǒng))用于將潛在地使用專用寄存器的軟件線程進(jìn)行調(diào)度。
將要理解的是,以上描述的實施例是通過示例的方式引用的,并且本發(fā)明不限于上文中已經(jīng)特別示出和描述的那些。相反,本發(fā)明的范圍包括上文所描述的各種特征以及本領(lǐng)域技術(shù)人員在閱讀以上描述之后將想到的且未在現(xiàn)有技術(shù)中公開的其變型和修改的組合和子組合。通過引用結(jié)合在本專利申請中的文檔被視為本申請的組成部分,除了在這些結(jié)合的文檔中定義的任何術(shù)語與本說明書中明確地或隱含地作出的定義沖突時,僅應(yīng)考慮本說明書中的定義。