專利名稱:虛擬機(jī)功耗測(cè)量和管理的制作方法
虛擬機(jī)功耗測(cè)量和管理
背景技術(shù):
數(shù)據(jù)中心、云計(jì)算基礎(chǔ)設(shè)施、計(jì)算集群、企業(yè)計(jì)算工具和高性能計(jì)算工具在將工作負(fù)載運(yùn)行在共享物理服務(wù)器上的同時(shí),越來(lái)越多地使用虛擬機(jī)來(lái)隔離工作負(fù)載。虛擬機(jī)是對(duì)計(jì)算設(shè)備的仿真,其嚴(yán)格意義上是軟件但像物理計(jì)算設(shè)備那樣運(yùn)作。這意味著一個(gè)或多個(gè)虛擬機(jī)可駐留在單個(gè)物理主機(jī)服務(wù)器上。然而,在運(yùn)行在虛擬機(jī)上的客戶端和全部軟件看來(lái),每個(gè)虛擬機(jī)是獨(dú)立的服務(wù)器。虛擬化(或使用虛擬機(jī))允許將多個(gè)應(yīng)用安全地置于單個(gè)物理主機(jī)服務(wù)器上,因?yàn)槊總€(gè)應(yīng)用在其“虛擬”計(jì)算機(jī)內(nèi)部運(yùn)行,并且不影響其他應(yīng)用。這允許服務(wù)器資源被更好地利用,并且降低所需的服務(wù)器的數(shù)量以及托管它們(諸如電力和冷卻)的操作成本。因此,虛擬化是管理計(jì)算資源的高效技術(shù),并正在數(shù)據(jù)中心和大規(guī)模計(jì)算工具中獲得廣泛的接受。數(shù)據(jù)中心和其他計(jì)算工具經(jīng)常監(jiān)視服務(wù)器的功率使用,以便正確地管理功率容量和分布。功率測(cè)量結(jié)果數(shù)據(jù)還用于制定若干手動(dòng)和自動(dòng)的功率管理決策。事實(shí)上,功率計(jì) 量在數(shù)據(jù)中心中是如此的廣泛,以至于功率分配單元(PDU)、電源板、服務(wù)器電源都供應(yīng)測(cè)量功率所需的功率計(jì)量?jī)x器,并且在新服務(wù)器中,甚至是服務(wù)器主板已經(jīng)包含了測(cè)量功率所需的功率計(jì)量?jī)x器。測(cè)量物理服務(wù)器中的功耗的另一種方法是將功率計(jì)量?jī)x器連接到服務(wù)器。物理服務(wù)器的功耗可通過(guò)計(jì)量被供應(yīng)給服務(wù)器的電量來(lái)測(cè)量。然而,虛擬機(jī)是在軟件中被創(chuàng)建的,并且不存在將功率表連接到虛擬機(jī)的簡(jiǎn)單方法。這使得測(cè)量虛擬機(jī)的功耗非常困難。用于物理服務(wù)器的技術(shù)僅能報(bào)告服務(wù)器的總的功率提取。但是,它們無(wú)法用于測(cè)量駐留在單個(gè)物理主機(jī)服務(wù)器上的多個(gè)虛擬機(jī)中每一個(gè)的單獨(dú)功耗。事實(shí)上,單純地使用硬件方案無(wú)法測(cè)量虛擬機(jī)的功耗。測(cè)量虛擬機(jī)的功耗的能力是重要的。用戶或服務(wù)器管理器不能測(cè)量每臺(tái)虛擬機(jī)所使用的功率。出于若干理由,測(cè)量該功率是有用的。例如,如果虛擬機(jī)正在使用過(guò)量的功率,則它可能必須被關(guān)閉或被遷移到具有額外能力的不同的電源電路。另外,軟件開(kāi)發(fā)者可測(cè)量出它們的軟件在被運(yùn)行于物理服務(wù)器上時(shí)消耗了多少能量,但無(wú)法在軟件運(yùn)行在虛擬機(jī)上時(shí)測(cè)量該能量。無(wú)法測(cè)量功率使用削弱了開(kāi)發(fā)者優(yōu)化軟件以得到更低功耗的能力。測(cè)量虛擬機(jī)功耗的另一個(gè)用途是基于功率使用向用戶返還費(fèi)用。諸如在云計(jì)算中使用的共享物理服務(wù)器允許多個(gè)用戶在共享的物理基礎(chǔ)設(shè)施上運(yùn)行虛擬機(jī)。物理服務(wù)器的所有者可能希望基于功率使用向虛擬機(jī)用戶收費(fèi)。而虛擬機(jī)功率計(jì)量的另一個(gè)用途、以及下面更詳細(xì)地描述的一個(gè)用途產(chǎn)生于虛擬機(jī)功率設(shè)限。功率設(shè)限允許電力基礎(chǔ)設(shè)施的過(guò)度預(yù)訂,并帶來(lái)功率容量的更高效的利用率。然而,當(dāng)前的功率設(shè)限技術(shù)被設(shè)計(jì)用于物理服務(wù)器,而無(wú)法在被應(yīng)用到虛擬機(jī)時(shí)很好地工作。例如,對(duì)物理服務(wù)器的功率進(jìn)行設(shè)限導(dǎo)致了對(duì)在該服務(wù)器上托管的全部虛擬機(jī)的設(shè)限。這破壞了虛擬機(jī)所提供的工作負(fù)載的隔離,并可使得使用虛擬化的益處受挫。因此,大規(guī)模計(jì)算工具中功率管理的主要組件之一是對(duì)功率的可視性。然而,越來(lái)越多地在數(shù)據(jù)中心中使用的虛擬化機(jī)器正缺少這種能力。使用虛擬機(jī)允許安全地隔離多個(gè)處于相同位置的工作負(fù)載,使得多個(gè)工作負(fù)載能在更少的服務(wù)器上被合并,并且?guī)?lái)被改善的資源利用率。然而,缺少對(duì)虛擬機(jī)功率使用的可見(jiàn)性帶走了在無(wú)虛擬化的情況下可用的服務(wù)器功率計(jì)量的許多好處。
發(fā)明內(nèi)容
提供本發(fā)明內(nèi)容以便以簡(jiǎn)化形式介紹將在以下詳細(xì)描述中進(jìn)一步描述的一些概念。本發(fā)明內(nèi)容并不旨在標(biāo)識(shí)所要求保護(hù)主題的關(guān)鍵特征或必要特征,也不旨在用于限制所要求保護(hù)主題的范圍。虛擬機(jī)功率計(jì)量系統(tǒng)和方法的各實(shí)施例測(cè)量各個(gè)虛擬機(jī)的功耗。功耗計(jì)量通常用在物理服務(wù)器上,以制定若干功率管理和操作決策。虛擬機(jī)功率計(jì)量系統(tǒng)和方法的各實(shí)施例允許在虛擬機(jī)上也能作出這樣的決策。一般的想法是測(cè)量整個(gè)物理主機(jī)服務(wù)器的功耗的功率表測(cè)量被轉(zhuǎn)換成各個(gè)虛擬機(jī)功率表,該虛擬機(jī)功率表測(cè)量駐留在主機(jī)服務(wù)器上的每個(gè)單獨(dú)虛擬機(jī)的功耗。虛擬機(jī)功 率計(jì)量系統(tǒng)和方法的各實(shí)施例將與任意數(shù)量的虛擬機(jī)一同工作,并且跨多個(gè)物理主機(jī)服務(wù)器工作。了解單個(gè)虛擬機(jī)的功耗對(duì)于在數(shù)據(jù)中心或任一虛擬化服務(wù)器中制定的若干功率管理決策來(lái)說(shuō)是有用的。例如,虛擬機(jī)功率計(jì)量可用于虛擬機(jī)功率設(shè)限,以允許虛擬化環(huán)境中的功率過(guò)度預(yù)訂??梢詧?zhí)行該虛擬機(jī)管理設(shè)限,而不破壞隔離屬性。各個(gè)虛擬機(jī)功耗測(cè)量結(jié)果還可用于跟蹤跨越多個(gè)虛擬機(jī)的活動(dòng)(諸如,搜索查詢)的功耗。虛擬機(jī)功率計(jì)量系統(tǒng)和方法的各實(shí)施例不需要供應(yīng)功率模型的硬件。在進(jìn)行中得知所需要的任何信息。該系統(tǒng)和方法的各實(shí)施例自動(dòng)地學(xué)習(xí)將硬件(或資源)使用(諸如,中央處理單元(CPU)使用、磁盤使用、存儲(chǔ)器使用、網(wǎng)絡(luò)使用等)與功耗相關(guān)的功率模型。隨后跟蹤每個(gè)虛擬機(jī)的硬件使用以推斷該虛擬機(jī)的功耗。該系統(tǒng)和方法的各實(shí)施例在兩大步驟中計(jì)算該功耗。第一,使用物理主機(jī)服務(wù)器的總功耗以及特定虛擬機(jī)的資源利用率來(lái)生成并訓(xùn)練功率模型。資源利用率是對(duì)虛擬機(jī)正在使用多少資源的判定。將這些資源利用率相加以發(fā)現(xiàn)虛擬機(jī)的總的資源利用率。生成將總的資源利用率與總功耗相關(guān)的功率模型。該系統(tǒng)和方法的各實(shí)施例還在該步驟期間確定最優(yōu)功率模型系數(shù)。這通過(guò)確定由虛擬機(jī)正在使用的資源的數(shù)量N來(lái)實(shí)現(xiàn)。生成并求解具有N個(gè)未知數(shù)的一系列N個(gè)等式,以獲得最優(yōu)功率模型系數(shù)。該系統(tǒng)和方法的各實(shí)施例還包括功率模型學(xué)習(xí)技術(shù),其中所學(xué)到的模型對(duì)于在每個(gè)虛擬機(jī)內(nèi)部托管的工作負(fù)載是唯一的。這說(shuō)明了在功率使用中工作負(fù)載之間可被發(fā)現(xiàn)的差距,即使工作負(fù)載具有相同或看起來(lái)相似的資源使用。第二,該系統(tǒng)和方法的各實(shí)施例計(jì)算虛擬機(jī)所使用的能量。可使用若干實(shí)施例來(lái)計(jì)算該能量。一個(gè)實(shí)施例使用虛擬機(jī)所使用的資源的百分比,并隨后將這些百分比相加以獲得該虛擬機(jī)的功耗。在其他實(shí)施例中,按照單位而不是百分比來(lái)測(cè)量所使用的資源。作為示例,僅舉數(shù)例,所測(cè)量的資源可包括CPU、存儲(chǔ)器、磁盤、網(wǎng)卡和風(fēng)扇。在這些實(shí)施例中,可通過(guò)考慮主機(jī)服務(wù)器的CPU頻率來(lái)擴(kuò)充功率模型。該系統(tǒng)和方法的各實(shí)施例還可用于獲得特定活動(dòng)的功耗?;顒?dòng)可以是服務(wù)、請(qǐng)求(諸如,web搜索查詢)、電子郵件遞送、網(wǎng)頁(yè)檢索、數(shù)據(jù)庫(kù)操作、或文件更新。即使該活動(dòng)是跨多個(gè)虛擬機(jī)并且跨多個(gè)主機(jī)服務(wù)器,也可以計(jì)算該活動(dòng)的功耗。確定活動(dòng)時(shí)間段,該活動(dòng)時(shí)間段是在計(jì)算基礎(chǔ)設(shè)施上該活動(dòng)為活躍的時(shí)間段。該系統(tǒng)和方法的各實(shí)施例隨后通過(guò)將各個(gè)活動(dòng)時(shí)間段期間在該活動(dòng)上工作的每個(gè)虛擬機(jī)的功耗相加以獲得總的活動(dòng)功耗,來(lái)計(jì)算功耗。應(yīng)當(dāng)注意,替換實(shí)施例也是可能的,并且此處所討論的步驟和元素可取決于特定實(shí)施例而改變、添加或消除。這些替換實(shí)施例包括可使用的替換步驟和替換元素,以及可做出的結(jié)構(gòu)上的改變,而不脫離本發(fā)明的范圍。
現(xiàn)在參考附圖,在全部附圖中,相同的參考標(biāo)號(hào)表示相應(yīng)的部分圖I是示出在主機(jī)服務(wù)器計(jì)算設(shè)備上實(shí)現(xiàn)的虛擬機(jī)功率計(jì)量系統(tǒng)和方法的各實(shí) 施例的綜合概述的框圖。圖2是示出在圖I所示的虛擬機(jī)功率計(jì)量系統(tǒng)和方法的各實(shí)施例中使用的模塊和數(shù)據(jù)的框圖。圖3是示出圖I和2所示的虛擬機(jī)功率計(jì)量系統(tǒng)的各實(shí)施例的總體操作的流程圖。圖4是示出圖2所示的功率模型訓(xùn)練模塊的各實(shí)施例的操作細(xì)節(jié)的流程圖。圖5是示出圖2所示的能量計(jì)算模塊的第一實(shí)施例的操作細(xì)節(jié)的流程圖。圖6是示出圖2所示的能量計(jì)算模塊的第二實(shí)施例的操作細(xì)節(jié)的流程圖。圖7是示出圖2所示的功率設(shè)限模塊的各實(shí)施例的操作細(xì)節(jié)的流程圖。圖8示出了其中可實(shí)現(xiàn)圖1-7所示的虛擬機(jī)功率計(jì)量系統(tǒng)和方法的各實(shí)施例的合適的計(jì)算系統(tǒng)環(huán)境的一個(gè)示例。
具體實(shí)施例方式在以下對(duì)虛擬機(jī)功率計(jì)量系統(tǒng)和方法的各實(shí)施例的描述中,對(duì)附圖進(jìn)行了參考,附圖形成了該描述的一部分,并且其中作為說(shuō)明示出了可實(shí)施虛擬機(jī)功率計(jì)量系統(tǒng)和方法的各實(shí)施例的一個(gè)具體示例??梢岳斫?,可以利用其他實(shí)施例,并且可以作出結(jié)構(gòu)上的改變而不背離所要求保護(hù)的主題的范圍。I.功率計(jì)量概念由于沒(méi)有硬件功率測(cè)量設(shè)備可被連接到單個(gè)虛擬機(jī),因此,虛擬機(jī)功率計(jì)量系統(tǒng)和方法從資源使用來(lái)推斷能量。原則上,虛擬機(jī)功率計(jì)量系統(tǒng)和方法跟蹤軟件中每臺(tái)虛擬機(jī)所使用的資源,并且隨后通過(guò)利用各個(gè)資源的功率模型將資源使用轉(zhuǎn)換成能量。對(duì)于該方法,系統(tǒng)和方法跟蹤對(duì)全部硬件資源的使用,諸如CPU核、磁盤陣列、存儲(chǔ)體(memory bank)、網(wǎng)卡和圖形卡。跟蹤資源使用包括確定資源處于什么功率狀態(tài),以及它為什么樣的虛擬機(jī)工作。如果系統(tǒng)和方法根據(jù)哪一個(gè)虛擬機(jī)正在使用資源來(lái)正確地標(biāo)記每個(gè)資源,并還在該期間(通常是幾微秒或毫秒)測(cè)量功率提取,則該系統(tǒng)和方法可計(jì)算每臺(tái)虛擬機(jī)的活動(dòng)能量使用?;顒?dòng)能量可被定義為資源在代表某個(gè)虛擬機(jī)或系統(tǒng)工作時(shí)所消耗的能量。
除活動(dòng)能量以外,系統(tǒng)還使用某些空閑能量和共享能量。作為示例,對(duì)于CPU,空閑能量可包括對(duì)于活動(dòng)狀態(tài)之間的小的持續(xù)時(shí)間,在睡眠狀態(tài)中消耗的能量。共享能量包括當(dāng)所執(zhí)行的工作對(duì)多個(gè)虛擬機(jī)有益時(shí)資源所使用的能量,諸如在來(lái)自多個(gè)虛擬機(jī)的輸入/輸出操作之前在磁盤加速自旋上消耗的能量。無(wú)論任一虛擬機(jī)是否在運(yùn)行,空閑能量的某些都被消耗,而空閑能量的一部分受到虛擬機(jī)是否存在的影響。例如,虛擬機(jī)的空閑時(shí)間段之間的持續(xù)時(shí)間可能影響在空閑時(shí)間期間更深的睡眠狀態(tài)是否被處理器采用??臻e和共享能量可被分開(kāi)地報(bào)告,或者依賴于將如何使用計(jì)量信息,與虛擬機(jī)的活動(dòng)能量使用相等地或成比例地在虛擬機(jī)之間被劃分。對(duì)于下面詳細(xì)地討論的功率設(shè)限應(yīng)用,分開(kāi)地報(bào)告最有效。因此,跟蹤虛擬機(jī)能量歸結(jié)于兩個(gè)挑戰(zhàn)。第一,微秒或毫秒粒度的功率測(cè)量;應(yīng)當(dāng)每隔幾微秒確定每個(gè)資源的瞬時(shí)功率,因?yàn)槭褂觅Y源的虛擬機(jī)可能(依賴于用于上下文切換的時(shí)間段)每隔幾微秒就改變。這可能導(dǎo)致組件使用和功率狀態(tài)改變。
第二,標(biāo)記每個(gè)單獨(dú)的虛擬機(jī)的資源使用。必須確定哪個(gè)虛擬機(jī)負(fù)責(zé)使用每個(gè)資源。理想地,這個(gè)過(guò)程不需要操縱在虛擬機(jī)內(nèi)部運(yùn)行的應(yīng)用源代碼,因?yàn)槠脚_(tái)開(kāi)發(fā)者可能無(wú)法對(duì)其進(jìn)行訪問(wèn),并且在實(shí)踐中,要求應(yīng)用開(kāi)發(fā)者操縱其源代碼不可能衡量。為了解決第一個(gè)挑戰(zhàn),系統(tǒng)和方法的各實(shí)施例利用將資源的軟件可觀察狀態(tài)與其功率使用相關(guān)的功率模型。如果能以微秒粒度來(lái)觀察狀態(tài)改變,則能推斷在該精細(xì)的時(shí)間刻度的功率使用。觀察功率狀態(tài)是不同尋常的,并且必須作出若干近似。例如,在方法和系統(tǒng)的某些實(shí)施例中可能無(wú)法完全知道資源狀態(tài),諸如處理器內(nèi)子組件的時(shí)鐘選通、或磁盤陣列內(nèi)機(jī)械運(yùn)動(dòng)的確切特性。另外,可能不存在對(duì)平臺(tái)內(nèi)某些硬件資源的功率狀態(tài)(諸如,硬件控制的設(shè)備功率狀態(tài)、或圖形處理活動(dòng))的可視性。在觀察資源狀態(tài)之后,下一個(gè)步驟是使用其功率模型來(lái)確定該狀態(tài)中的功率使用。然而,功率模型不容易獲得。系統(tǒng)和方法的各實(shí)施例就地構(gòu)建功率模型。為了解決第二個(gè)挑戰(zhàn),系統(tǒng)和方法的各實(shí)施例利用關(guān)于調(diào)度虛擬機(jī)的資源的知識(shí)。同樣,缺少對(duì)全部資源的完整的可視性,并且必須進(jìn)行操縱開(kāi)銷和準(zhǔn)確性之間的折衷。II.系統(tǒng)概覽圖I是示出在主機(jī)服務(wù)器計(jì)算設(shè)備110上實(shí)現(xiàn)的虛擬機(jī)功率計(jì)量系統(tǒng)100和方法的各實(shí)施例的綜合概述的框圖。一般而言,虛擬機(jī)功率計(jì)量系統(tǒng)100和方法的各實(shí)施例確定在主機(jī)服務(wù)器計(jì)算設(shè)備110上運(yùn)行的各個(gè)虛擬機(jī)的功耗,而不需要專用硬件。虛擬機(jī)功率計(jì)量系統(tǒng)100的各實(shí)施例駐留在主機(jī)服務(wù)器計(jì)算設(shè)備110上。主機(jī)服務(wù)器計(jì)算設(shè)備110表示物理服務(wù)器。一個(gè)或多個(gè)虛擬機(jī)120由主機(jī)服務(wù)器計(jì)算設(shè)備110來(lái)托管。這些一個(gè)或多個(gè)虛擬機(jī)120可被表示為VMpVM2...到VMn,其中N是虛擬機(jī)的數(shù)量。功率跟蹤模塊130測(cè)量全部的系統(tǒng)功率,或者由主機(jī)服務(wù)器計(jì)算設(shè)備110消耗的總功率。在某些實(shí)施例中,功率跟蹤模塊130代表軟件驅(qū)動(dòng)器,從主機(jī)服務(wù)器計(jì)算設(shè)備110主板上的可用的功率傳感器讀取全部的系統(tǒng)功耗。資源跟蹤模塊140代表跟蹤虛擬機(jī)的資源使用的系統(tǒng)管理程序性能計(jì)數(shù)器。系統(tǒng)管理程序(也被稱為虛擬機(jī)管理器)是允許多個(gè)操作系統(tǒng)在主機(jī)計(jì)算機(jī)上并發(fā)地運(yùn)行的管理軟件。資源跟蹤模塊140跟蹤主機(jī)服務(wù)器計(jì)算設(shè)備110的資源。為了保持虛擬機(jī)功率計(jì)量系統(tǒng)100的各實(shí)施例可用于現(xiàn)有的系統(tǒng)管理程序,系統(tǒng)100的各實(shí)施例使用現(xiàn)有的系統(tǒng)管理程序性能計(jì)數(shù)器。然而,在系統(tǒng)和方法的某些實(shí)施例中,與現(xiàn)有系統(tǒng)管理程序的可用性不是必需時(shí),可添加額外的性能計(jì)數(shù)器和工具以監(jiān)視資源使用。系統(tǒng)100的各實(shí)施例處理該信息以計(jì)算并輸出每臺(tái)虛擬機(jī)150的功耗。圖2是示出在圖I所示的虛擬機(jī)功率計(jì)量系統(tǒng)100和方法的各實(shí)施例中使用的模塊和數(shù)據(jù)的框圖。一般而言,虛擬機(jī)功率計(jì)量系統(tǒng)100的各實(shí)施例包括用于虛擬機(jī)中功率測(cè)量和管理的模塊。更具體地,虛擬機(jī)功率計(jì)量系統(tǒng)100的各實(shí)施例包括功率模型訓(xùn)練模塊200,該功率模型訓(xùn)練模塊200基于來(lái)自功率跟蹤模塊130和資源跟蹤模塊140的信息來(lái)生成功率模型。在模塊200的某些實(shí)施例中,該功率模型還通過(guò)考慮中央處理單元(CPU)的頻率來(lái)細(xì)化。系統(tǒng)100的各實(shí)施例還包括能量計(jì)算模塊210,該能量計(jì)算模塊210使用該功率模型來(lái)計(jì)算一個(gè)或多個(gè)虛擬機(jī)120中每一個(gè)的功耗。如下面所解釋的,該模塊的各實(shí)施例使用至少兩個(gè)實(shí)施例來(lái)獲得功耗。結(jié)果是每個(gè)單獨(dú)的虛擬機(jī)150的功耗。功率設(shè)限模塊220使用該信息來(lái)按需提供每臺(tái)虛擬機(jī)的功率限制。
功率模型訓(xùn)練模塊200使用主機(jī)服務(wù)器230的總的功率使用和資源利用率測(cè)量結(jié)果240來(lái)生成功率模型250。如下面詳細(xì)地解釋的,采用多個(gè)測(cè)量結(jié)果來(lái)獲得一系列功率模型等式。對(duì)該系列等式求解以發(fā)現(xiàn)最優(yōu)功率模型系數(shù)260。能量計(jì)算模塊210使用功率跟蹤模塊130信息、資源跟蹤模塊140信息、和最優(yōu)功率模型系數(shù)260來(lái)計(jì)算一個(gè)或多個(gè)虛擬機(jī)120中每一個(gè)的功耗。存在能量計(jì)算模塊210的兩個(gè)實(shí)施例,如圖2中虛線所示。能量計(jì)算模塊210的第一個(gè)實(shí)施例使用虛擬機(jī)資源百分比來(lái)進(jìn)行計(jì)算270。在該實(shí)施例中,虛擬機(jī)中每一個(gè)所使用的系數(shù)是相同的。例如,如果兩個(gè)虛擬機(jī)都使用10% CPU(并且沒(méi)有其他資源),則它們的能量使用將是相同的。能量計(jì)算模塊210的第二個(gè)實(shí)施例使用虛擬機(jī)資源百分比和虛擬機(jī)專用的功率模型來(lái)進(jìn)行計(jì)算280。在該實(shí)施例中,作為示例,即使兩個(gè)虛擬機(jī)中每一個(gè)都使用10% CPU,但能量使用可能不同,因?yàn)橐粋€(gè)虛擬機(jī)可能在執(zhí)行浮點(diǎn)運(yùn)算,而另一個(gè)虛擬機(jī)可能在執(zhí)行定點(diǎn)運(yùn)算(這兩個(gè)運(yùn)算使用CPU的不同的子單元,并因此可能使用不同量的能量)。下面討論這兩個(gè)實(shí)施例的數(shù)學(xué)細(xì)節(jié)。這兩個(gè)實(shí)施例都通過(guò)使用功率模型擴(kuò)充模塊290稍微增加功率模型的復(fù)雜度來(lái)細(xì)化。功率模型擴(kuò)充模塊290通過(guò)考慮主機(jī)服務(wù)器計(jì)算設(shè)備110的中央處理單元(CPU)的頻率來(lái)擴(kuò)充功率模型。結(jié)果是每個(gè)單獨(dú)的虛擬機(jī)150的功耗。該結(jié)果隨后由功率設(shè)限模塊220用來(lái)對(duì)每個(gè)虛擬機(jī)所使用的功率進(jìn)行設(shè)限。下面詳細(xì)地討論功率設(shè)限過(guò)程的細(xì)節(jié)。III.操作概覽計(jì)算基礎(chǔ)設(shè)施(諸如數(shù)據(jù)中心)中的計(jì)算活動(dòng)通常包括由在不同的物理機(jī)器上托管的多個(gè)虛擬機(jī)或服務(wù)器角色所執(zhí)行的多個(gè)任務(wù)。例如,搜索查詢可首先被web前端服務(wù)(也被稱為web前端服務(wù)器角色)接收,并可被主存在虛擬機(jī)內(nèi)部。隨后,該搜索查詢可由多個(gè)搜索數(shù)據(jù)檢索服務(wù)器、廣告服務(wù)器、和內(nèi)容呈現(xiàn)服務(wù)器來(lái)處理。處理的結(jié)果被收集并被發(fā)送給用戶。作為另一個(gè)示例,活動(dòng)可包括接收特定用戶的電子郵件。首先,(可能在虛擬機(jī)內(nèi)部托管的)傳入電子郵件服務(wù)器角色將接收該消息,并確定該消息的正確的用戶賬戶。病毒掃描服務(wù)器可以檢查該電子郵件消息的內(nèi)容。垃圾郵件過(guò)濾服務(wù)器也可以檢查該消息的內(nèi)容。隨后,存儲(chǔ)服務(wù)器可將該消息置于其存儲(chǔ)中。每一情形中的活動(dòng)包括多個(gè)分布式服務(wù)器角色上的能量支出,服務(wù)器角色中的某些可在同一機(jī)器上被托管,而某些可在不同的機(jī)器上。期望確定活動(dòng)作為整體所使用的能量。圖3是示出圖I和2所示的虛擬機(jī)功率計(jì)量系統(tǒng)100的各實(shí)施例的總體操作的流程圖。一般而言,虛擬機(jī)功率計(jì)量系統(tǒng)100和方法的各實(shí)施例確定單獨(dú)活動(dòng)的能量使用,該單獨(dú)活動(dòng)可被分布在若干虛擬機(jī)上。活動(dòng)被定義為服務(wù)或請(qǐng)求。例如,搜索查詢是具有可驗(yàn)證的起始和結(jié)束的活動(dòng)。參考圖3,該方法通過(guò)選擇要確定其功耗的活動(dòng)(框300)來(lái)開(kāi)始。該活動(dòng)跨越多個(gè)物理主機(jī)服務(wù)器中每一個(gè)上的至少一個(gè)虛擬機(jī)。接下來(lái),當(dāng)首先在虛擬機(jī)上初始化該活動(dòng)時(shí),生成一起始事件(框310)。該起始事件標(biāo)記開(kāi)始跟蹤該活動(dòng)所使用的每個(gè)資源(框320)。當(dāng)活動(dòng)使用特定的虛擬機(jī)時(shí),確定在活動(dòng)使用期間相關(guān)虛擬機(jī)的能量使用(或功耗)(框 330)。
應(yīng)當(dāng)注意,活動(dòng)可在不同的時(shí)間、在不同的虛擬機(jī)上開(kāi)始和結(jié)束。例如,在剛給出的電子郵件的示例中,虛擬機(jī)可在時(shí)間T1開(kāi)始對(duì)電子郵件進(jìn)行病毒掃描,并在時(shí)間T2結(jié)束掃描。另一個(gè)虛擬機(jī)隨后可在時(shí)間T3開(kāi)始對(duì)同一電子郵件進(jìn)行垃圾郵件的分析,并在時(shí)間T4結(jié)束該分析。可使用下面詳細(xì)地描述的虛擬機(jī)功率計(jì)量方法來(lái)確定每個(gè)虛擬機(jī)的功耗。這生成在所選擇的活動(dòng)上工作的每個(gè)虛擬機(jī)的功耗測(cè)量結(jié)果。隨著活動(dòng)進(jìn)行,將跨多個(gè)服務(wù)器角色使用的能量相加以生成該活動(dòng)所使用的總能量。系統(tǒng)100的各實(shí)施例隨后確定并標(biāo)記該活動(dòng)在其中被終止的結(jié)束事件(框340)。該結(jié)束事件可以是履行搜索請(qǐng)求,或者標(biāo)記該活動(dòng)被完成或被終止并呈現(xiàn)給用戶的時(shí)間的某些其它事件?;顒?dòng)時(shí)間段被定義為起始事件和結(jié)束事件之間的時(shí)間量(框350)。另外,不是虛擬機(jī)功率計(jì)量方法所跟蹤的計(jì)算基礎(chǔ)設(shè)施的一部分的設(shè)備可能消耗一些能量。這些可包括冷卻計(jì)算工具和這些外圍設(shè)備的儀器。如下估計(jì)在這些設(shè)備中使用的能量。系統(tǒng)100的各實(shí)施例確定在活動(dòng)時(shí)間段期間被使用、但未被跟蹤的設(shè)備的總功耗(框 360)。使用硬件功率計(jì)量或使用(基于規(guī)范和數(shù)據(jù)表或就地學(xué)到的)已知的功率模型來(lái)測(cè)量這些設(shè)備所使用的總能量。隨后確定由所選擇的活動(dòng)在活動(dòng)時(shí)間段期間所使用的總功耗的部分(框370)??偰芰靠稍谌炕顒?dòng)間被均等地分配、按其執(zhí)行時(shí)間的比率或按先前計(jì)算的它們?cè)谔摂M機(jī)內(nèi)消耗的能量的比率被劃分。系統(tǒng)100的各實(shí)施例隨后對(duì)所選擇的活動(dòng)在活動(dòng)時(shí)間段期間的功耗求和,以獲得總的活動(dòng)功耗(框380)。具體而言,對(duì)在活動(dòng)時(shí)間段期間為該活動(dòng)工作的每個(gè)虛擬機(jī)的功耗測(cè)量結(jié)果、以及在活動(dòng)時(shí)間段期間所使用的未被跟蹤設(shè)備的功耗的部分求和。這產(chǎn)生總的活動(dòng)功耗,或活動(dòng)中所使用的全部虛擬機(jī)上的活動(dòng)執(zhí)行中使用的功耗,無(wú)論虛擬機(jī)駐留在哪個(gè)物理主機(jī)服務(wù)器上。隨后輸出總的活動(dòng)功耗(框390)。上面的討論使用術(shù)語(yǔ)“能量使用”和“功耗”。這些可以能量為單位(諸如,焦耳或千瓦時(shí))來(lái)報(bào)告。還可使用功率單位(諸如瓦特),就已提取的功率來(lái)報(bào)告功耗。在報(bào)告是就功率而言的情形中,可以提供表示在單位時(shí)間間隔期間提取的功率的時(shí)間序列??偟幕顒?dòng)功耗可被報(bào)告為每個(gè)虛擬機(jī)活動(dòng)的以能量為單位的單個(gè)數(shù)字,或者在活動(dòng)時(shí)間段期間每個(gè)虛擬機(jī)的以能量為單元的單個(gè)數(shù)字?;蛘?,總的活動(dòng)功耗可被報(bào)告為活動(dòng)時(shí)間段期間以功率為單位的具有多個(gè)值的時(shí)間序列。 IV.系統(tǒng)和操作細(xì)節(jié)現(xiàn)在將討論虛擬機(jī)功率計(jì)量系統(tǒng)100和方法的各實(shí)施例的系統(tǒng)和操作細(xì)節(jié)。這些實(shí)施例包括功率模型訓(xùn)練模塊200、能量計(jì)算模塊210、功率模型擴(kuò)充模塊290和功率設(shè)限模塊220的各個(gè)實(shí)施例。現(xiàn)在將詳細(xì)討論該系統(tǒng)和這些模塊中的每一個(gè)的操作細(xì)節(jié)。IV. A.功率樽型訓(xùn)練樽塊功率模型訓(xùn)練模塊200生成用于確定虛擬機(jī)功耗的功率模型。圖4是示出圖2所示的功率模型訓(xùn)練模塊200的各實(shí)施例的操作細(xì)節(jié)的流程圖。方法通過(guò)輸入總功耗來(lái)開(kāi)始(框400)。這由功率跟蹤模塊130來(lái)報(bào)告。換言之,主機(jī)服務(wù)器計(jì)算設(shè)備110向功率跟蹤模 塊120報(bào)告所使用的總功率。另一個(gè)輸入是對(duì)虛擬機(jī)正在使用多少給定資源進(jìn)行分解(框410)。該信息由資源跟蹤模塊140來(lái)報(bào)告?!百Y源”可以是主機(jī)服務(wù)器計(jì)算設(shè)備110的計(jì)算機(jī)基礎(chǔ)設(shè)施的一部分的任一組件。例如,資源可以是處理器(諸如,中央處理單元(CPU))、磁盤、存儲(chǔ)器等。資源跟蹤模塊140確定虛擬機(jī)正在利用每個(gè)資源中的多少(被稱為“資源利用率”)。隨后對(duì)每個(gè)資源的資源利用率求和,以獲得總的資源利用率(框420)。主機(jī)服務(wù)器計(jì)算設(shè)備110包括將這些資源分配到駐留在其上的任意虛擬機(jī)的主機(jī)操作系統(tǒng)(未示出)。例如,主機(jī)操作系統(tǒng)可認(rèn)為虛擬機(jī)能得到多達(dá)CPU儲(chǔ)蓄的30%。當(dāng)主機(jī)操作系統(tǒng)保留了這30%時(shí),它還跟蹤到該虛擬機(jī)當(dāng)前正在使用它被分配的CPU存儲(chǔ)的30%中的17%。因此,主機(jī)操作系統(tǒng)既要強(qiáng)調(diào)它絕不超出30%,又要跟蹤該虛擬機(jī)當(dāng)前正在使用什么。為駐留在主機(jī)服務(wù)器計(jì)算設(shè)備110上的每個(gè)虛擬機(jī)完成以上操作。以此方式,主機(jī)服務(wù)器計(jì)算設(shè)備110向資源跟蹤模塊給出關(guān)于每個(gè)虛擬機(jī)正在使用一個(gè)資源中的多少的信息。令M表示資源的數(shù)量,并令N表示觀察的數(shù)量。對(duì)于物理服務(wù)器中M數(shù)量個(gè)資源中的每一個(gè),模塊200的各實(shí)施例確定將全部虛擬機(jī)相加的總的資源率(框430)。一般而言,基于每個(gè)虛擬機(jī)的資源利用率來(lái)生成功率模型。這通過(guò)取得每個(gè)資源的利用率并將虛擬機(jī)正使用的全部資源相加以獲得總的資源利用率來(lái)完成。在數(shù)學(xué)上,假設(shè)存在由虛擬機(jī)正在使用的三個(gè)資源,并且%、a2和a3是最優(yōu)功率模型系統(tǒng),它們均是常數(shù)。隨后功率模型將資源利用率與總功耗(TPC)如下相關(guān)
Q1* (CPU利用率)+ a2* (磁盤利用率)+ a3^ (網(wǎng)絡(luò)利用率)=TPCo在理論上,如果對(duì)資源利用率的三個(gè)不同的值進(jìn)行總功耗的三個(gè)不同的測(cè)量,則我們具有三個(gè)等式和三個(gè)未知數(shù)。因此,模塊200的各實(shí)施例確定由虛擬機(jī)正在使用的M數(shù)量個(gè)資源。可對(duì)一系列M個(gè)等式求解以確定M個(gè)未知數(shù)。然而,在實(shí)踐中,系統(tǒng)的大多數(shù)實(shí)施例收集N個(gè)測(cè)量結(jié)果,其中N大于M。擬合模型的已知方法(諸如線性回歸)隨后用于確定將最佳擬合N個(gè)等式的M個(gè)變量的值。使用大于M的N有助于克服測(cè)量結(jié)果噪聲和這些變化。具體而言,模塊200的各實(shí)施例以資源利用率的N個(gè)不同組合對(duì)主機(jī)服務(wù)器計(jì)算設(shè)備110的總功耗進(jìn)行N數(shù)量個(gè)測(cè)量(框440)。這給出一系列N個(gè)等式和M個(gè)未知數(shù)。隨后對(duì)該系列N個(gè)等式求解以獲得M數(shù)量個(gè)最優(yōu)功率模型系統(tǒng)(框450)。接下來(lái),模塊200的各實(shí)施例生成功率模型(框460),該功率模型將每個(gè)資源的利用率與功耗相關(guān)。這使用M個(gè)系數(shù)來(lái)表示,該系數(shù)將每個(gè)資源的利用率與功耗相關(guān)。該功率模型用于測(cè)量虛擬機(jī)所使用的功率。概念上,通過(guò)跟蹤該虛擬機(jī)所使用的硬件資源(諸如CPU、磁盤、存儲(chǔ)器、網(wǎng)絡(luò)等)來(lái)測(cè)量該虛擬機(jī)所使用的功率。模塊200的各實(shí)施例的輸出是最優(yōu)功率模型系數(shù)(框470)。下面的示例演示了如何可獲得功率模型以及如何可跟蹤每個(gè)硬件資源上的資源使用。將CPU作為第一資源考慮,并且假設(shè)在單個(gè)物理主機(jī)服務(wù)器上托管被表示為VM1JM2到VMn的多個(gè)虛擬機(jī)。隨后,假設(shè)從時(shí)間段h到t2,VM1使用N-核CPU的兩個(gè)核。假設(shè)這兩個(gè)核的每一個(gè)被用至容量的70%。假設(shè)沒(méi)有虛擬機(jī)在使用CPU時(shí),其功率使用為Pidle。另外,假設(shè)當(dāng)完全使用一個(gè)核 時(shí),功耗為Pi^+P-e,并且當(dāng)一個(gè)核被用至X#利用率時(shí),功耗為Pidle+(Xl/l00)*PeOTe。假設(shè)全部核I到n的利用率被表示為xi、x2、…、xN。于是,在數(shù)學(xué)上,功率使用可被寫為Pcpu=Pidie+ (x/lOO) *Pcore+ (x2/100) *Pcore+…+ (xN/100) *Pcore。上面的等式是CPU的功率模型的一個(gè)示例。該功率模型將(利用百分比X1, X2,...,Xn所表示的)使用與功率使用相關(guān)。注意,這是功率模型的一個(gè)示例。還可以使用更復(fù)雜的模型,該模型不僅包括每個(gè)核的利用率,還包括由處理器執(zhí)行的指令的類型以及其他更詳細(xì)的信息。繼續(xù)上面的示例,虛擬機(jī)使用兩個(gè)核的70%時(shí),上面的功率模型可用于說(shuō)明在時(shí)間與t2之間,虛擬機(jī)以速率Pvmicpu= (70/100) *Pcore+ (70/100) *Pcore提取CPU中的功率。類似地,使用其他硬件組件(諸如磁盤、存儲(chǔ)器、網(wǎng)絡(luò)等)的功率模型,可以計(jì)算每個(gè)組件的虛擬機(jī)所提取的功率。隨后將每個(gè)組件所提取的功率相加以獲得虛擬機(jī)所提取的總功率。在上面的示例中,CPU的Pidle未被分配給虛擬機(jī)。無(wú)論虛擬機(jī)是否存在,用戶都可將Pidle認(rèn)為是被浪費(fèi)的功率,并由此感到不需要它。其他用戶可以認(rèn)為Pidle被消耗在維護(hù)由于虛擬機(jī)而被需要的服務(wù)器上。在該情形中,Pidle可被添加到虛擬機(jī)所提取的功率中,此功率或者使用服務(wù)器在全部虛擬機(jī)之間均等地被劃分,或者按它們所提取的其他功率的比率成比例地被劃分?,F(xiàn)在將討論各種各樣的系統(tǒng)資源的某些實(shí)際的功率模型。功率模型訓(xùn)練模塊200的各實(shí)施例使用這些模型將資源利用率與主機(jī)服務(wù)器計(jì)算設(shè)備110的總功耗相關(guān),并由此測(cè)量虛擬機(jī)所使用的功率。IV. A. I. CPU的實(shí)際功率樽型CPU的功率使用依賴于若干因素,諸如活動(dòng)的處理器內(nèi)部的子單元、被執(zhí)行的專用指令、芯片上的高速緩存使用、處理器是否具有動(dòng)態(tài)電壓頻率縮放(DVFS)、隨時(shí)間的睡眠狀態(tài)使用、以及所使用的(被表示為P-狀態(tài)的)頻率。為了精確,只有DVFS頻率狀態(tài)被稱為P-狀態(tài),而DFS狀態(tài)被稱為節(jié)流(或T-狀態(tài))。在本文中,P-狀態(tài)用于表示全部頻率級(jí)別,因?yàn)樵诒旧舷挛闹?,區(qū)別是不相關(guān)的??墒褂醚h(huán)準(zhǔn)確模擬器來(lái)獲得考慮了這些因素的準(zhǔn)確的功率估計(jì)。然而,那需要處理器的完整的體系結(jié)構(gòu)模型并具有較高的處理開(kāi)銷,使其不適于運(yùn)行時(shí)虛擬機(jī)功率計(jì)量。
一個(gè)較輕量的替換方案是跟蹤處理器狀態(tài),該狀態(tài)捕捉主要的功率使用變化。假設(shè)存在被表示為PO、Pl. . . Pm的m個(gè)P-狀態(tài),它們表示漸進(jìn)地更低的頻率。當(dāng)處理器未在主動(dòng)地執(zhí)行任何線程時(shí),它進(jìn)入被稱為C-狀態(tài)的低功率睡眠狀態(tài)。按照慣例,CO用于表示活動(dòng)狀態(tài),并且Cl、C2. . . Cn表示漸進(jìn)地更深的睡眠狀態(tài),其中n是睡眠狀態(tài)的數(shù)量(通常11£ {3,...,6})。假設(shè)處理器在時(shí)間t所使用的瞬時(shí)功率是Pepu(t)。假設(shè)功率僅依賴于P-狀態(tài)和C-狀態(tài),它可由在時(shí)間處t的頻率p (t)和睡眠狀態(tài)c (t)的每個(gè)不同組合中的常數(shù)來(lái)表示Pcpu(t) = kp(t),c(t)(I)其中kp,。表示P-狀態(tài)與C-狀態(tài)組合p,c中所使用的功率。如果有可能用每個(gè)P-狀態(tài)和C-狀態(tài)變化來(lái)測(cè)量Pmi (t),則得知kp,。的值將是容易的。微秒粒度的測(cè)量在專門操縱的主板上是可行的,但在實(shí)際平臺(tái)上不行。相反,可以以更粗略的時(shí)間粒度(按秒的次序)來(lái)測(cè)量功率。因此,功率模型訓(xùn)練模塊200的各實(shí)施例在較長(zhǎng)的持續(xù)時(shí)間T內(nèi)集成上面的功率模型,例如
f 凡/%>,c * AT1pse(2)
Oy), c其中ATp,。表示在持續(xù)時(shí)間T期間在狀態(tài){p,c}中花費(fèi)的時(shí)間,并且對(duì)全部(p,c)組合求和。隨后,上面的等式可被如下表達(dá)為實(shí)際系統(tǒng)上可用的可觀察到的量。對(duì)于給定的P-狀態(tài),在全部睡眠狀態(tài)Cl及更高狀態(tài)中消耗的能量可被近似為kp-iMp,因?yàn)橄鄬?duì)于作出的其他近似而言,差是較小的。活動(dòng)能量是Ivait5令Eot^T)表示T期間功率的集成。同樣,P-狀態(tài)改變是緩慢的,并且系統(tǒng)管理程序計(jì)數(shù)器通常允許以間隔T的更新,使得P-狀態(tài)在T期間是不變的。則,假設(shè)持續(xù)時(shí)間T的單個(gè)P-狀態(tài)p,產(chǎn)生[_8] Ecpu(T) =kp,C0ucpu(p)T+(l-ucpu(p))kp,slMPT(3)= (kp, co-kp, sleep) Ucpu (p) T+kp> sleepT (4)其中,uCPU(p)表示T期間在固定的P-狀態(tài)p中處理器是活動(dòng)的時(shí)間百分比。令
Q (P) (kp,⑶ ^p, sleep
)。還令最低頻率狀態(tài)中的睡眠狀態(tài)能量kpm,slf;e;p被表不為Y cm idle,并且睡眠狀態(tài)能量中向更高頻率的增長(zhǎng)被表示為、則,出于方便,取T=I秒 Ecpu = a (P)Ucpu(P) +Y (P) +Ycpu, idle (5)其中Umi(P)如系統(tǒng)管理程序性能計(jì)數(shù)器一樣易得,并且因此可用在實(shí)際平臺(tái)上以監(jiān)視處理器狀態(tài)。如果模型參數(shù)是已知的,則可以估計(jì)處理器能量。下面詳細(xì)地描述了得知參數(shù)a (p) , y (p)和YOT,idle的方法,以及其他資源的功率模型。向相關(guān)的虛擬機(jī)分配CPU使用需要考慮虛擬機(jī)所使用的確切的芯片資源,包括共享的高速緩存和處理組件。虛擬機(jī)功率計(jì)量系統(tǒng)100的各實(shí)施例使用輕量方法,該方法簡(jiǎn)單地跟蹤虛擬機(jī)在處理器核上何時(shí)是活動(dòng)的(通過(guò)跟蹤每個(gè)核的上下文切換是可能的)??稍谔摂M機(jī)于處理器上是活動(dòng)的持續(xù)時(shí)間期間使用等式(I)來(lái)跟蹤所使用的能量。處理器上下文切換事件對(duì)許多類型的系統(tǒng)管理程序是可用的。就更易得的性能計(jì)數(shù)器、被表示為uCPU,A (p)的虛擬機(jī)A的處理器利用率而言的重寫,并且假設(shè)P-狀態(tài)在間隔T期間保持不變,被表示為Emi, A的虛擬機(jī)A的能量使用可被寫為_(kāi)4] Ecpuj A = a (p) ucpUj A(p)(6)再一次,取T=I秒。注意,(消耗在睡眠狀態(tài)中的)處理器空閑能量不包括在上面的討論中,因?yàn)楣β誓P陀?xùn)練模塊200的各實(shí)施例分開(kāi)地對(duì)其進(jìn)行報(bào)告。IV. A. 2.存儲(chǔ)器的實(shí)際功率模型存儲(chǔ)器能量使用的真實(shí)估計(jì)可使用其硬件設(shè)計(jì)的循環(huán)準(zhǔn)確模擬。然而,先前的存儲(chǔ)器功率模型已經(jīng)發(fā)現(xiàn)影響存儲(chǔ)器能量使用的關(guān)鍵因素是讀和寫吞吐量。雖然已經(jīng)嘗試了外部工具來(lái)準(zhǔn)確地捕捉存儲(chǔ)器吞吐量,但存儲(chǔ)器吞吐量的低開(kāi)銷估計(jì)是大多數(shù)處理器中可用的最后一級(jí)高速緩存(LLC)未中計(jì)數(shù)器。使用該度量,存儲(chǔ)器功耗可被寫為Ellem ⑴一a memNLLCM ⑴ + Y mem(7)其中Efa(T)表示存儲(chǔ)器在持續(xù)時(shí)間T中所使用的能量,Nmm(T)是在T期間LLC未中的數(shù)量,并且《_和Ym是線性模型參數(shù)。 由于模塊200的各實(shí)施例使用LLC未中作為對(duì)吞吐量的近似,因此與每個(gè)虛擬機(jī)相對(duì)應(yīng)的未中被跟蹤。在單核系統(tǒng)上,模塊200的各實(shí)施例可在虛擬機(jī)具有處理器上的活動(dòng)上下文期間分配LLC未中,作為該虛擬機(jī)的LLC未中。于是,虛擬機(jī)A所使用的存儲(chǔ)器能量變?yōu)镋jlenlj A (T) — a memNLLCM, A⑶其中,與等式(7)中相同,并且N^m, _表示虛擬機(jī)在處理器上為活動(dòng)期間的LLC未中的數(shù)量。IV. A. 3.磁盤的實(shí)際功率樽型雖然已經(jīng)開(kāi)發(fā)了用于磁盤的若干功率模型,但是該子系統(tǒng)仍然是最難建模的。由于缺少對(duì)硬盤的功率狀態(tài)的可視性以及磁盤的硬件高速緩存的影響而產(chǎn)生了困難。另外,在數(shù)據(jù)中心服務(wù)器中,磁盤主要用于RAID陣列,并且甚至當(dāng)使用RAID-O時(shí),只有RAID控制器硬件控制物理磁盤,而系統(tǒng)管理程序僅能看到邏輯驅(qū)動(dòng)器。為了便于實(shí)現(xiàn),功率模型訓(xùn)練模塊200的某些實(shí)施例可僅使用系統(tǒng)管理程序可觀察的參數(shù)。替換的實(shí)施例是可能的,諸如RAID控制器被修改為展示關(guān)于磁盤功率狀態(tài)和機(jī)械運(yùn)動(dòng)的更多細(xì)節(jié)。系統(tǒng)管理程序可觀察被讀和寫的字節(jié)數(shù)量、以及對(duì)那些讀和寫的服務(wù)次數(shù)。然而,對(duì)于各個(gè)虛擬機(jī),當(dāng)前的系統(tǒng)管理程序僅跟蹤被讀和寫的字節(jié)。這些用于磁盤能量模型,該模型可被如下寫為Enisk (T) — a rbbR+a wbbw+Y disk (9)其中Ellisk(T)表示磁盤在持續(xù)時(shí)間T消耗的能量,而\和bw分別是在間隔T期間被讀和寫的字節(jié)量。a參數(shù)和Ydisk是要得知的模型參數(shù)。該模型包括近似,因?yàn)樵赗AID控制器外部不可見(jiàn)的磁盤加速/減速自旋動(dòng)作未被捕捉??勺兊淖孕俣任幢徊蹲?,但是由于多速度磁盤不常用于數(shù)據(jù)中心,因此這不是嚴(yán)重的問(wèn)題。對(duì)于其他資源,功率模型訓(xùn)練模塊200的各實(shí)施例跟蹤等式(9)中各個(gè)虛擬機(jī)的磁盤使用參數(shù)。磁盤活動(dòng)發(fā)生的時(shí)間通常與虛擬機(jī)在處理器上為活動(dòng)的時(shí)間不相同,因?yàn)橄到y(tǒng)管理程序可批處理IO中斷并緩沖IO操作。因此,IO操作需要在系統(tǒng)管理程序中被顯式地跟蹤,來(lái)代替在虛擬機(jī)的活動(dòng)上下文期間查看存儲(chǔ)系統(tǒng)活動(dòng)。幸運(yùn)的是,許多系統(tǒng)管理程序已經(jīng)執(zhí)行了該跟蹤的大部分,并可用于分開(kāi)地報(bào)告每個(gè)虛擬機(jī)的IO活動(dòng)。這生成了下面的特定虛擬機(jī)A的磁盤能量模型EDisk,A = arb*br,A+awbbw,A (10)其中、4和&4分別表示虛擬機(jī)A讀和寫的字節(jié)量。另外,已經(jīng)發(fā)現(xiàn)了磁盤讀和寫的能量間的差是可忽略的,并且由此公共參數(shù),如h。,可用于表示被讀和寫的字節(jié)之和。這將模型改變?yōu)镋nisk (T) — a iobjo+ Y Disk(11)對(duì)于上面描述的各實(shí)施例,可使用下面的公式來(lái)計(jì)算虛擬機(jī)磁盤能量EDisk,A = a io*bio,A(12)IV. A. 4.其他咨源
發(fā)現(xiàn)由于其他資源的功率使用的動(dòng)態(tài)范圍較小,并且不需要在功率模型訓(xùn)練模塊200的全部實(shí)施例中對(duì)它們建模。然而,將那些資源的靜態(tài)能量使用包括在模型的系統(tǒng)空閑能量中。這些資源中的某些對(duì)于在其他平臺(tái)上建模是重要的。某些較慢的網(wǎng)卡例如不會(huì)示出網(wǎng)絡(luò)活動(dòng)的能量使用中的較寬的變化,但較高速度的卡確實(shí)在驅(qū)動(dòng)物理介質(zhì)中使用更多的能量,而且該能量可能隨網(wǎng)絡(luò)活動(dòng)而變化。用使用多個(gè)這樣卡的服務(wù)器來(lái)對(duì)物理能量建模將因此是重要的。許多服務(wù)器不會(huì)改變它們的風(fēng)扇速度,但是如果使用可變速度的風(fēng)扇,則它們對(duì)動(dòng)態(tài)能量的貢獻(xiàn)可被建模??稍谀承?shí)施例中考慮的另一個(gè)效果是供電效率隨著所提取的功率改變而改變。IV. A. 5.功率樽型參數(shù)訓(xùn)練等式(5)、(7)和(11)中的功率模型使用由a和Y表示的、需要在服務(wù)器上就地得知的特定系數(shù)。真實(shí)的平臺(tái)不允許分開(kāi)地測(cè)量Emi(T)、EM ⑴和Ellisk(T),而只允許測(cè)量Esys(T)所表示的全部系統(tǒng)功率。將量Estati。⑴定義為表示由系統(tǒng)中的未建模資源所使用的能量。于是,與之前一樣假設(shè)T=l,等式可被寫為Esys = Ecpu+EMem+EDisk+Estatic= a (p) Ucpu (p) + Y (p) + Y cpu, idie+ a 隱Nllcm+ Y mem+ a iobio+ y disk+Estatic(13)關(guān)于等式(13)的以下各點(diǎn)值得注意并導(dǎo)致用于實(shí)際實(shí)現(xiàn)的少許修改。首先,在上面的求和中,由于常量ePU,idl—sjPEstati。不具有跨觀察變化的任何可觀察的參數(shù),因此無(wú)法從Esys的測(cè)量結(jié)果中得知它們各個(gè)的值。它們的和可因此被表示為單個(gè)常量。第二,注意Umi(P)的大小是0和I之間的分?jǐn)?shù),而Nua^Pbi。則取上億數(shù)量級(jí)的值。關(guān)于數(shù)值的穩(wěn)定性,可相對(duì)于在系統(tǒng)上觀察到的N^m和bi()的最大值對(duì)它們進(jìn)行歸一化,使得a參數(shù)被調(diào)整到類似的大小。在學(xué)習(xí)中使用的最終等式因此變成Esys = a (p) Ucpu (p) + Y (p) + a 隱Unieni+ a ioudisk+ Y(14)其中uM和Udisk分別表示Nmm和bi()的經(jīng)歸一化的值??偠灾?存在m*2+3個(gè)未知的模型參數(shù)斜;=1 affleffl) a io)和Y,其中m是P-狀態(tài)的數(shù)量,以及沒(méi)有額外工具的實(shí)際硬件上可用的四個(gè)可觀察量Esys、uCPU、uM和udisk。取可觀察量的多個(gè)觀察允許使用具有普通的最小平方估計(jì)的學(xué)習(xí)技術(shù)(諸如線性回歸)來(lái)估計(jì)模型參數(shù)。功率模型訓(xùn)練模塊200的輸出是最優(yōu)功率模型系數(shù)260。IV. B.能暈計(jì)算模塊能量計(jì)算模塊210使用來(lái)自功率模型訓(xùn)練模塊200的最優(yōu)功率模型系數(shù)來(lái)獲得虛擬機(jī)的功耗。具體而言,已得知的系數(shù)值用于等式(6)、(8)和(12),并且對(duì)已計(jì)算的資源能量求和以確定每個(gè)VM的能量使用。事實(shí)上,如果需要,可分開(kāi)地報(bào)告虛擬機(jī)在每個(gè)資源上使用的能量。存在能量計(jì)算模塊210的兩個(gè)實(shí)施例?,F(xiàn)在將討論這些實(shí)施例中的每一個(gè)。IV. B. I.能暈計(jì)算的第一個(gè)實(shí)施例能量計(jì)算的第一個(gè)實(shí)施例跟蹤資源百分比以獲得虛擬機(jī)的功耗。圖5是示出圖2所示的能量計(jì)算模塊210的第一個(gè)實(shí)施例的操作細(xì)節(jié)的流程圖。方法通過(guò)輸入最優(yōu)功率模型系數(shù)來(lái)開(kāi)始(框500)。該方法還輸入虛擬機(jī)所使用的每個(gè)資源的百分比(框510)。
隨后將每個(gè)資源乘以其對(duì)應(yīng)的最優(yōu)功率模型系數(shù)以獲得中間資源結(jié)果(框520)。隨后將中間資源結(jié)果的每一個(gè)相加以獲得虛擬機(jī)的功耗(框530)。例如,對(duì)于每個(gè)虛擬機(jī),該虛擬機(jī)所使用的CPU資源的百分比加上該虛擬機(jī)所使用的磁盤資源的百分比,以此類推,將全部資源相加。模塊210的輸出是虛擬機(jī)的功耗(框540)。該第一個(gè)實(shí)施例通過(guò)受控工作負(fù)載在等式(14)中生成功率狀態(tài)的線性獨(dú)立的組合,該受控工作負(fù)載導(dǎo)致各種資源功率狀態(tài)被使用。該方法是基本方法并具有最低的開(kāi)銷,因?yàn)橐粋€(gè)工作負(fù)載用于訓(xùn)練。然而,受控工作負(fù)載可能不以表示真實(shí)工作負(fù)載的方式來(lái)使用處理器和其他資源。IV. B. 2.能暈計(jì)算的第二個(gè)實(shí)施例能量計(jì)算的第二個(gè)實(shí)施例相比第一個(gè)實(shí)施例跟蹤更具體的信息。該第二個(gè)實(shí)施例是第一個(gè)實(shí)施例的變型,使得等式稍微更具體。我們跟蹤為虛擬機(jī)工作的CPU%,而非僅跟蹤資源百分比。這考慮了虛擬機(jī)正在進(jìn)行的工作的類型。這帶來(lái)更復(fù)雜的等式,該等式考慮了每個(gè)虛擬機(jī)正在進(jìn)行的工作的特性。圖6是示出圖2所示的能量計(jì)算模塊210的第二個(gè)實(shí)施例的操作細(xì)節(jié)的流程圖。方法通過(guò)輸入最優(yōu)功率模型系數(shù)來(lái)開(kāi)始(框600)。另外,該方法輸入為特定虛擬機(jī)工作的CPU的百分比(框610)。接下來(lái),模塊210的各實(shí)施例使用最優(yōu)功率模型系數(shù)來(lái)計(jì)算虛擬機(jī)專用的系數(shù)(框620)。例如,情況可能是VM1正在使用CPU的10% (例如,10瓦特),而VM2正在使用CPU的10%(例如,12瓦特)。第二個(gè)實(shí)施例將這個(gè)也考慮進(jìn)來(lái)。這意味著第二個(gè)實(shí)施例還使用虛擬機(jī)專用的系數(shù),使得a !,VMi是為VM1工作的a i值,a 1;VM2是為VM2工作的a i值,以此類推。換言之,每一個(gè)\用于第一個(gè)資源(諸如,CPU資源),并且%用于第二個(gè)資源(諸如,磁盤資源),以此類推。隨后將每個(gè)CPU百分比和資源百分比乘以其對(duì)應(yīng)的虛擬機(jī)專用系數(shù)以獲得中間資源結(jié)果(框630)。隨后將中間資源結(jié)果的每一個(gè)相加以獲得虛擬機(jī)的功耗(框640)。模塊210的輸出是虛擬機(jī)的功耗(框650)。功率模型擴(kuò)充模塊290通過(guò)考慮CPU可按不同頻率運(yùn)行的事實(shí)來(lái)擴(kuò)充上面的功率模型。功率擴(kuò)充模塊290用于克服上面說(shuō)明的兩個(gè)實(shí)施例的準(zhǔn)確性限制。功率擴(kuò)充模塊290的一般想法是分開(kāi)地得知每個(gè)虛擬機(jī)的模型參數(shù)(或最優(yōu)功率模型系數(shù))。由于對(duì)于給定的工作負(fù)載,未觀察的功率狀態(tài)與已觀察的功率狀態(tài)高度相關(guān),因此基于少量已觀察狀態(tài)的模型將更準(zhǔn)確地捕捉功率使用。事實(shí)上,有了功率模型擴(kuò)充模塊290,即使由于跨處理器的可移植性限制而未捕捉用于LLC未中的處理器計(jì)數(shù)器,這簡(jiǎn)單地變成對(duì)于給定的工作負(fù)載,可與已觀察到的狀態(tài)相關(guān)的另一個(gè)未觀察到的狀態(tài)。V.功率計(jì)量應(yīng)用虛擬機(jī)功率計(jì)量系統(tǒng)100和方法包括上面說(shuō)明的虛擬機(jī)功率計(jì)量技術(shù)。這些虛擬機(jī)功率計(jì)量技術(shù)可用于各種功率管理決策?,F(xiàn)在將討論這些功率管理決策和應(yīng)用之一,即功率設(shè)限。V. A.功率設(shè)限樽塊功率設(shè)限模塊220使用用虛擬機(jī)的功率設(shè)限技術(shù)的上述技術(shù)為每個(gè)虛擬機(jī)計(jì)算的功耗。該虛擬機(jī)功率設(shè)限允許在功率過(guò)度預(yù)訂電路中托管虛擬機(jī),導(dǎo)致功率供應(yīng)成本中的明顯優(yōu)勢(shì)。
為了更好地解釋功率設(shè)限模塊220的操作,將首先描述用于(沒(méi)有虛擬機(jī)的)物理服務(wù)器的過(guò)度預(yù)訂電路中的功率設(shè)限概念。假設(shè)對(duì)服務(wù)器評(píng)級(jí)以得到功率PMt。隨后,常規(guī)所供應(yīng)的功率分布電路將具有足夠的功率容量向連接到該電路的全部服務(wù)器供應(yīng)PMt。然而,如果服務(wù)器的每個(gè)組件(CPU、磁盤、主板芯片組、存儲(chǔ)器等)同時(shí)被用到全功率,則被評(píng)級(jí)得到PMt的服務(wù)器只能使用PMt。實(shí)際上,這不會(huì)發(fā)生。當(dāng)CPU忙于訪問(wèn)存儲(chǔ)器時(shí),磁盤可能未被完全使用,而當(dāng)CPU忙于處理數(shù)據(jù)時(shí),存儲(chǔ)器可能未被完全使用。實(shí)際的工作負(fù)載因此使用比pMt更低的功率。假設(shè)要在服務(wù)器上執(zhí)行的軟件的任意組合所使用的實(shí)際功率的最大值由Part來(lái)表示。則可使用有能力僅向每個(gè)服務(wù)器供應(yīng)Part的功率分布單元。由于Pact比Prat更低,因此功率電路被認(rèn)為是過(guò)度預(yù)訂的,因?yàn)橛锌赡?雖然不太可能)超出功率容量。例如,如果執(zhí)行軟件的某些意外的組合,該組合同時(shí)使用比任何之前測(cè)量到的軟件組合都更多的資源,則可能超出容量。如果超出了功率容量,則電路斷路器將斷路,使該電路所服務(wù)的多個(gè)服務(wù)器停止工作。這顯然不是所期望的。因此,期望如果服務(wù)器被供應(yīng)用于Pac;t功率容量,則它保持在Paet以內(nèi)。確保每個(gè)物理服務(wù)器保持在Paet以內(nèi)的方法作為功率設(shè)限是已知的。通常,它被實(shí)現(xiàn)在服務(wù)器主板的固件中。當(dāng)服務(wù)器超出Pd時(shí),它的資源使用被節(jié)流(例如,CPU頻率可被降低)以將功率使用保持在Pm以下。然而,上面的功率設(shè)限方法不會(huì)直接地應(yīng)用到虛擬機(jī)。如在本文檔中更早提到的,如果通過(guò)對(duì)服務(wù)器中的物理資源(諸如CPU頻率)節(jié)流來(lái)對(duì)托管多個(gè)虛擬機(jī)的物理服務(wù)器進(jìn)行設(shè)限,則它可導(dǎo)致多個(gè)虛擬機(jī)被節(jié)流,即使只有一個(gè)超出其功率評(píng)級(jí)的虛擬機(jī)。顯然,期望分開(kāi)地實(shí)施每個(gè)虛擬機(jī)上的功率容量限制。功率設(shè)限模塊220使用上面描述的虛擬機(jī)計(jì)量信息來(lái)啟用虛擬機(jī)的功率設(shè)限。圖7是示出圖2所示的功率設(shè)限模塊220的各實(shí)施例的操作細(xì)節(jié)的流程圖。首先,監(jiān)視每個(gè)虛擬機(jī)的功率使用(框700)。測(cè)量該虛擬機(jī)提取的峰值功率(框710),并將虛擬機(jī)置于物理服務(wù)器上,使得它們峰值的總和小于或等于分配給該服務(wù)器的功率容量(框720)。接下來(lái),作出關(guān)于虛擬機(jī)是否已經(jīng)超出其功率預(yù)算的判定(框730)。若否,則不采取動(dòng)作(框740)。若是,則當(dāng)虛擬機(jī)已經(jīng)超出(或?qū)⒁?其功率預(yù)算時(shí),模塊290檢查該超出是否將導(dǎo)致物理服務(wù)器的功率預(yù)算被超出(框750)。如果虛擬機(jī)中的一些正超出其預(yù)算但足夠多的其他虛擬機(jī)在其預(yù)算以下操作,使得物理服務(wù)器作為整體處于所分配的功率容量限制以下,則不存在電路斷路器斷路的危險(xiǎn)。在該情形中,不需要采取動(dòng)作(框740)。另一方面,如果一個(gè)或多個(gè)虛擬機(jī)正超出其容量預(yù)算,使得托管那些虛擬機(jī)的物理服務(wù)器已經(jīng)超出了(或?qū)⒁?其被分配的功率容量,則在各個(gè)虛擬機(jī)上采取適當(dāng)?shù)膭?dòng)作以降低該服務(wù)器上的功率使用(框760)。注意,不對(duì)整個(gè)服務(wù)器節(jié)流(與現(xiàn)有技術(shù)不同)。適當(dāng)?shù)膭?dòng)作包括多個(gè)選項(xiàng)之一。注意,以下選項(xiàng)中的每一個(gè)在圖7中被示為用虛線箭頭被連接以便指示可以使用四個(gè)選項(xiàng)中的任一個(gè)。第一個(gè)選項(xiàng)是將正超出其功率預(yù)算的虛擬機(jī)節(jié)流到允許服務(wù)器處于其被分配的容量以內(nèi)的功率水平(框765)。節(jié)流可通過(guò)降低分配給該VM的CPU時(shí)間量來(lái)實(shí)現(xiàn)。第二個(gè)選項(xiàng)是允許虛擬機(jī)以更高的功率操作,但是對(duì)某些其它較低優(yōu)先級(jí)的虛擬機(jī)節(jié)流以降低總的功率使用(框770)。例如,可以允許生成受益的虛擬機(jī)運(yùn)行在其預(yù)算之上,而臨時(shí)地節(jié)流某些后臺(tái)任務(wù)。第三個(gè)選項(xiàng)是將一個(gè)或多個(gè)虛擬機(jī)從該服務(wù)器遷移到具有多余容量的另一個(gè)服務(wù)器(框775)。第四個(gè)選項(xiàng)是關(guān)閉一個(gè)或多個(gè)虛擬機(jī)以在稍后執(zhí)行(框780)。未在圖7中示出的附加選項(xiàng)包括減少正被提交給虛擬機(jī)的請(qǐng)求的數(shù)量,以及提高在具有多余功 率容量的其他服務(wù)器上的虛擬機(jī)的數(shù)量。在功率設(shè)限模塊220的其他實(shí)施例中,使用上面方法的變型。實(shí)際上,虛擬機(jī)(或在虛擬機(jī)上主存的應(yīng)用)具有可變的用戶負(fù)載。峰值用戶負(fù)載僅發(fā)生于一天中的較短時(shí)間段,而在其他時(shí)間,它們運(yùn)行在峰值以下。實(shí)際上,虛擬機(jī)功率使用的和的峰值比功率使用的峰值的和更低。同樣,共享一個(gè)服務(wù)器的多個(gè)虛擬機(jī)的峰值負(fù)載可在不同的時(shí)間發(fā)生。因此,功率設(shè)限模塊220的某些實(shí)施例分配比峰值低的功率容量級(jí)別,而不是分配峰值負(fù)載的功率容量。當(dāng)超出服務(wù)器功率容量時(shí),使用與上面的方法相類似的適當(dāng)?shù)膭?dòng)作(諸如,節(jié)流各個(gè)VMjf VM遷移到其他服務(wù)器等)。V. B.分布式活動(dòng)的能量計(jì)量計(jì)算基礎(chǔ)設(shè)施(諸如數(shù)據(jù)中心)中的計(jì)算活動(dòng)通常包括由在不同的物理機(jī)器上托管的多個(gè)虛擬機(jī)或服務(wù)器角色所執(zhí)行的多個(gè)任務(wù)。例如,搜索查詢可首先被web前端服務(wù)(也被稱為web前端服務(wù)器角色)接收,并可被主存在虛擬機(jī)內(nèi)部。隨后,該搜索查詢可由多個(gè)搜索數(shù)據(jù)檢索服務(wù)器、廣告服務(wù)器、和內(nèi)容呈現(xiàn)服務(wù)器來(lái)處理。處理的結(jié)果被收集并被發(fā)送給用戶。作為另一個(gè)示例,活動(dòng)可包括接收特定用戶的電子郵件。首先,(可能在虛擬機(jī)內(nèi)部托管的)傳入電子郵件服務(wù)器角色將接收該消息,并確定該消息的正確的用戶賬戶。病毒掃描服務(wù)器可以檢查該電子郵件消息的內(nèi)容。垃圾郵件過(guò)濾服務(wù)器也可以檢查該消息的內(nèi)容。隨后,存儲(chǔ)服務(wù)器可將該消息置于其存儲(chǔ)中。每一情形中的活動(dòng)包括多個(gè)分布式服務(wù)器角色上的能量支出,服務(wù)器角色中的某些可在同一機(jī)器上被托管,而某些可在不同的機(jī)器上。期望確定活動(dòng)作為整體所使用的能量。虛擬機(jī)功率計(jì)量系統(tǒng)100和方法還包括各實(shí)施例確定可被分布在若干虛擬機(jī)上的單獨(dú)活動(dòng)的能量使用的技術(shù)?;顒?dòng)被定義為服務(wù)或請(qǐng)求。例如,搜索查詢是具有可驗(yàn)證的起始和結(jié)束的活動(dòng)。具體而言,當(dāng)對(duì)活動(dòng)進(jìn)行初始化時(shí),生成一事件。這開(kāi)始了對(duì)活動(dòng)所使用的每個(gè)資源的跟蹤。例如,當(dāng)活動(dòng)使用特定的服務(wù)器角色時(shí),使用監(jiān)視虛擬機(jī)的能量使用的先前描述過(guò)的方法來(lái)確定在該活動(dòng)使用的持續(xù)期間相關(guān)的服務(wù)器角色的能量使用。如上所述,活動(dòng)可在不同的時(shí)間、在不同的虛擬機(jī)上開(kāi)始和結(jié)束。隨著活動(dòng)進(jìn)行,向上添加跨多個(gè)服務(wù)器角色使用的能量以生成該活動(dòng)所使用的總能量。另外,不是虛擬機(jī)功率計(jì)量方法所跟蹤的計(jì)算基礎(chǔ)設(shè)施的一部分的設(shè)備可能消耗一些能量。這些可包括冷卻計(jì)算工具和這些外圍設(shè)備的儀器。如下估計(jì)在這些設(shè)備中使用的能量。使用硬件功率計(jì)量或使用(基于規(guī)范和數(shù)據(jù)表或就地得知的)已知的功率模型來(lái)測(cè)量那些設(shè)備所使用的總能量。則使用監(jiān)視虛擬機(jī)功率計(jì)量方法可訪問(wèn)的計(jì)算基礎(chǔ)設(shè)施的方法來(lái)跟蹤計(jì)算工具所服務(wù)的總的活動(dòng)工作負(fù)載。隨后在由計(jì)算基礎(chǔ)設(shè)施執(zhí)行的全部活動(dòng)間分配總的功耗??偰芰靠稍谌炕顒?dòng)間被均等地分配、按其執(zhí)行時(shí)間的比率或按先前計(jì)算的它們?cè)谔摂M機(jī)內(nèi)消耗的能量的比率被劃分。此處呈現(xiàn)的技術(shù)使用術(shù)語(yǔ)“能量使用”或“功耗”。這些可按能量單位(諸如,焦耳或千瓦時(shí))來(lái)報(bào)告。還可使用功率單位(諸如瓦特),就已提取的功率來(lái)報(bào)告功耗。在報(bào)告是就功率而言的情形中,可以提供表示在單位時(shí)間間隔期間提取的功率的時(shí)間序列。VI.示例件操作環(huán)塏
虛擬機(jī)功率計(jì)量系統(tǒng)100和方法的各實(shí)施例被設(shè)計(jì)成在計(jì)算環(huán)境中操作。以下討論旨在提供其中可實(shí)現(xiàn)虛擬機(jī)功率計(jì)量系統(tǒng)100和方法的各實(shí)施例的一個(gè)合適的計(jì)算環(huán)境的簡(jiǎn)要概括描述。圖8示出了其中可實(shí)現(xiàn)圖1-7所示的虛擬機(jī)功率計(jì)量系統(tǒng)100和方法的各實(shí)施例的合適的計(jì)算系統(tǒng)環(huán)境的一個(gè)示例。計(jì)算系統(tǒng)環(huán)境800只是合適計(jì)算環(huán)境的一個(gè)示例,而非意在暗示對(duì)本發(fā)明使用范圍或功能有任何限制。也不應(yīng)將計(jì)算環(huán)境800解釋為對(duì)該示例性操作環(huán)境中示出的任一組件或其組合有任何依賴性或要求。虛擬機(jī)功率計(jì)量系統(tǒng)100和方法的各實(shí)施例可用眾多其它通用或?qū)S糜?jì)算系統(tǒng)環(huán)境或配置來(lái)操作。適用于虛擬機(jī)功率計(jì)量系統(tǒng)100和方法的各實(shí)施例的眾所周知的計(jì)算系統(tǒng)、環(huán)境和/或配置的示例包括但不限于,個(gè)人計(jì)算機(jī)、服務(wù)器計(jì)算機(jī)、諸如蜂窩電話和PDA等手持式(包括智能電話)、膝上型或移動(dòng)計(jì)算機(jī)或通信設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、機(jī)頂盒、可編程消費(fèi)電子產(chǎn)品、網(wǎng)絡(luò)PC、小型計(jì)算機(jī)、大型計(jì)算機(jī)、包括任一上述系統(tǒng)或設(shè)備的分布式計(jì)算環(huán)境等等。虛擬機(jī)功率計(jì)量系統(tǒng)100和方法的各實(shí)施例可在諸如程序模塊等由計(jì)算機(jī)執(zhí)行的計(jì)算機(jī)可執(zhí)行指令的一般上下文中描述。一般而言,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等。虛擬機(jī)功率計(jì)量系統(tǒng)100和方法的各實(shí)施例也可以在其中任務(wù)由通過(guò)通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備來(lái)執(zhí)行的分布式計(jì)算環(huán)境中實(shí)踐。在分布式計(jì)算環(huán)境中,程序模塊可以位于包括存儲(chǔ)器存儲(chǔ)設(shè)備在內(nèi)的本地和遠(yuǎn)程計(jì)算機(jī)存儲(chǔ)介質(zhì)中。參考圖8,用于虛擬機(jī)功率計(jì)量系統(tǒng)100和方法的各實(shí)施例的示例性系統(tǒng)包括計(jì)算機(jī)810形式的通用計(jì)算設(shè)備。計(jì)算機(jī)810的組件可包括但不限于,處理單元820(諸如中央處理單元,CPU)、系統(tǒng)存儲(chǔ)器830以及將包括系統(tǒng)存儲(chǔ)器的各類系統(tǒng)組件耦合至處理單元820的系統(tǒng)總線821。系統(tǒng)總線821可以是若干類型的總線結(jié)構(gòu)中的任一種,包括使用各種總線體系結(jié)構(gòu)中的任一種的存儲(chǔ)器總線或存儲(chǔ)器控制器、外圍總線、以及局部總線。作為示例而非限制,這樣的體系結(jié)構(gòu)包括工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu)(ISA)總線、微通道體系結(jié)構(gòu)(MCA)總線、增強(qiáng)型ISA (EISA)總線、視頻電子標(biāo)準(zhǔn)協(xié)會(huì)(VESA)局部總線,以及也稱為夾層(Mezzanine)總線的外圍部件互連(PCI)總線。
計(jì)算機(jī)810通常包括各種計(jì)算機(jī)可讀介質(zhì)。計(jì)算機(jī)可讀介質(zhì)可以是可由計(jì)算機(jī)810訪問(wèn)的任一可用介質(zhì),并包括易失性和非易失性介質(zhì)、可移動(dòng)和不可移動(dòng)介質(zhì)。作為示例而非限制,計(jì)算機(jī)可讀介質(zhì)可包括計(jì)算機(jī)存儲(chǔ)介質(zhì)和通信介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括以用于儲(chǔ)存諸如計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù)等信息的任何方法或技術(shù)實(shí)現(xiàn)的易失性和非易失性、可移動(dòng)和不可移動(dòng)介質(zhì)。計(jì)算機(jī)存儲(chǔ)介質(zhì)包括但不限于,RAM、R0M、EEPR0M、閃存或其他存儲(chǔ)器技術(shù)、CD-ROM、數(shù)字多功能盤(DVD )或其他光盤存儲(chǔ)、磁盒、磁帶、磁盤存儲(chǔ)或其他磁存儲(chǔ)設(shè)備、或可以用來(lái)儲(chǔ)存所期望的信息并可由計(jì)算機(jī)810訪問(wèn)的任一其他介質(zhì)。作為示例而非限制,通信介質(zhì)包括諸如有線網(wǎng)絡(luò)或直接線連接之類的有線介質(zhì),以及諸如聲學(xué)、RF、紅外及其他無(wú)線介質(zhì)之類的無(wú)線介質(zhì)。以上的任何組合也應(yīng)包括在計(jì)算機(jī)可讀介質(zhì)的范圍內(nèi)。系統(tǒng)存儲(chǔ)器830包括易失性和/或非易失性存儲(chǔ)器形式的計(jì)算機(jī)存儲(chǔ)介質(zhì),如只讀存儲(chǔ)器(ROM) 831和隨機(jī)存取存儲(chǔ)器(RAM) 832?;据斎?輸出系統(tǒng)833 (BIOS)包括如在啟動(dòng)時(shí)幫助在計(jì)算機(jī)810內(nèi)的元件之間傳輸信息的基本例程,它通常儲(chǔ)存在ROM 831 中。RAM 832通常包含處理單元820可立即訪問(wèn)和/或當(dāng)前正在操作的數(shù)據(jù)和/或程序模塊。作為示例而非限制,圖8示出了操作系統(tǒng)834、應(yīng)用程序835、其他程序模塊836和程序數(shù)據(jù)837。計(jì)算機(jī)810也可以包括其他可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)。僅作為示例,圖8示出了從不可移動(dòng)、非易失性磁介質(zhì)中讀取或向其寫入的硬盤驅(qū)動(dòng)器841,從可移動(dòng)、非易失性磁盤852中讀取或向其寫入的磁盤驅(qū)動(dòng)器851,以及從諸如⑶ROM或其他光學(xué)介質(zhì)等可移動(dòng)、非易失性光盤856中讀取或向其寫入的光盤驅(qū)動(dòng)器855??稍谑纠圆僮鳝h(huán)境中使用的其他可移動(dòng)/不可移動(dòng)、易失性/非易失性計(jì)算機(jī)存儲(chǔ)介質(zhì)包括但不限于,磁帶盒、閃存卡、數(shù)字多功能盤、數(shù)字錄像帶、固態(tài)RAM、固態(tài)ROM等。硬盤驅(qū)動(dòng)器841通常通過(guò)諸如接口 840之類的不可移動(dòng)存儲(chǔ)器接口連接到系統(tǒng)總線821,并且磁盤驅(qū)動(dòng)器851和光盤驅(qū)動(dòng)器855通常通過(guò)諸如接口 850之類的可移動(dòng)存儲(chǔ)器接口連接到系統(tǒng)總線821。以上討論并在圖8中示出的驅(qū)動(dòng)器及其相關(guān)聯(lián)的計(jì)算機(jī)存儲(chǔ)介質(zhì)為計(jì)算機(jī)810提供了對(duì)計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其他數(shù)據(jù)的存儲(chǔ)。在圖8中,例如,硬盤驅(qū)動(dòng)器841被示為存儲(chǔ)操作系統(tǒng)844、應(yīng)用程序845、其他程序模塊846和程序數(shù)據(jù)847。注意,這些組件可與操作系統(tǒng)834、應(yīng)用程序835、其他程序模塊836和程序數(shù)據(jù)837相同,也可與它們不同。在此操作系統(tǒng)844、應(yīng)用程序845、其他程序模塊846以及程序數(shù)據(jù)847被給予了不同的編號(hào),以說(shuō)明至少它們是不同的副本。用戶可以通過(guò)輸入設(shè)備,如鍵盤862和定點(diǎn)設(shè)備861,通常指鼠標(biāo)、跟蹤球或觸摸板,以及觸摸面板或觸摸屏(未示出),向計(jì)算機(jī)810輸入命令和信息(或數(shù)據(jù))。其他輸入設(shè)備(未示出)可包括話筒、操縱桿、游戲手柄、圓盤式衛(wèi)星天線、掃描儀、無(wú)線電接收機(jī)或電視或廣播視頻接收機(jī)等等。這些和其他輸入設(shè)備通常通過(guò)耦合至系統(tǒng)總線821的用戶輸入接口 860連接至處理單元820,但是也可以通過(guò)其他接口和總線結(jié)構(gòu)連接,如并行端口、游戲端口或通用串行總線(USB)。監(jiān)視器891或其他類型的顯示設(shè)備也通過(guò)諸如視頻接口 890之類的接口連接至系統(tǒng)總線821。除了監(jiān)視器以外,計(jì)算機(jī)還可包括諸如揚(yáng)聲器897和打印機(jī)896之類的其他外圍輸出設(shè)備,它們可通過(guò)輸出外圍接口 895來(lái)連接。計(jì)算機(jī)810可使用到一個(gè)或多個(gè)遠(yuǎn)程計(jì)算機(jī)(諸如,遠(yuǎn)程計(jì)算機(jī)880)的邏輯連接而在聯(lián)網(wǎng)環(huán)境中操作。遠(yuǎn)程計(jì)算機(jī)880可以是個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對(duì)等設(shè)備或其他常見(jiàn)網(wǎng)絡(luò)節(jié)點(diǎn),并且通常包括許多或所有以上相對(duì)計(jì)算機(jī)810所描述的元件,但在圖8中僅示出了存儲(chǔ)器存儲(chǔ)設(shè)備881。圖8中所描繪的邏輯連接包括局域網(wǎng)(LAN)871和廣域網(wǎng)(WAN)873,但還可包括其他網(wǎng)絡(luò)。此類聯(lián)網(wǎng)環(huán)境在辦公室、企業(yè)范圍的計(jì)算機(jī)網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和因特網(wǎng)中是常見(jiàn)的。當(dāng)在LAN聯(lián)網(wǎng)環(huán)境中使用時(shí),計(jì)算機(jī)810通過(guò)網(wǎng)絡(luò)接口或適配器870連接到LAN871。當(dāng)在WAN聯(lián)網(wǎng)環(huán)境中使用時(shí),計(jì)算機(jī)810通常包括調(diào)制解調(diào)器872或用于通過(guò)諸如因特網(wǎng)等WAN 873建立通信的其他手段。調(diào)制解調(diào)器872可以是內(nèi)置的或外置的,可經(jīng)由用戶輸入接口 860或其他適當(dāng)?shù)臋C(jī)制連接到系統(tǒng)總線821。在聯(lián)網(wǎng)環(huán)境中,相對(duì)于計(jì)算機(jī)810所示的程序模塊或其部分可被存儲(chǔ)在遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備中。作為示例而非限制,圖8示出了遠(yuǎn)程應(yīng)用程序885駐留在存儲(chǔ)器設(shè)備881上。應(yīng)當(dāng)理解,所示的網(wǎng)絡(luò)連接是示例性的,并且可使用在計(jì)算機(jī)之間建立通信鏈路的其他手段。 以上詳細(xì)描述是出于圖示和描述的目的而提出的。鑒于上述教導(dǎo),許多修改和變型都是可能的。它并不旨在是窮盡性的,也不旨在將此處所公開(kāi)的主題限于所公開(kāi)的精確形式。盡管用結(jié)構(gòu)特征和/或方法動(dòng)作專用的語(yǔ)言描述了本主題,但可以理解,所附權(quán)利要求書(shū)中定義的主題不必限于上述具體特征或動(dòng)作。相反,上述具體特征和動(dòng)作是作為實(shí)現(xiàn)所附權(quán)利要求書(shū)的示例性形式來(lái)公開(kāi)的。
權(quán)利要求
1.一種在計(jì)算設(shè)備上實(shí)現(xiàn)的方法,用于計(jì)算跨駐留于物理主機(jī)服務(wù)器上的至少一個(gè)虛擬機(jī)而發(fā)生的活動(dòng)的功耗,包括 將活動(dòng)時(shí)間段定義為在起始事件與結(jié)束事件之間流逝的時(shí)間量; 在所述活動(dòng)時(shí)間段期間跟蹤用于所述活動(dòng)的每個(gè)虛擬機(jī)上的每個(gè)資源; 計(jì)算在所述活動(dòng)上工作的每個(gè)虛擬機(jī)在所述活動(dòng)時(shí)間段期間的功耗,以獲得功耗測(cè)量結(jié)果; 將在所述活動(dòng)上工作的每個(gè)虛擬機(jī)在所述活動(dòng)時(shí)間段期間的功耗測(cè)量結(jié)果相加,以獲得總的活動(dòng)功耗;以及 輸出表示所述活動(dòng)消耗的總功耗的所述總的活動(dòng)功耗。
2.如權(quán)利要求I所述的方法,其特征在于,還包括 計(jì)算將虛擬機(jī)的總的資源利用率與所述主機(jī)服務(wù)器的總功耗相關(guān)的功率模型;以及 使用所述功率模型以及最優(yōu)功率模型系數(shù)來(lái)計(jì)算所述虛擬機(jī)的功耗。
3.如權(quán)利要求I所述的方法,其特征在于,還包括 計(jì)算在所述活動(dòng)時(shí)間段期間被使用但未作為資源被跟蹤的設(shè)備的總功耗;以及確定未被跟蹤設(shè)備的所述總功耗的一部分,所述部分在所述活動(dòng)時(shí)間段期間被用于所述活動(dòng)中。
4.如權(quán)利要求2所述的方法,其特征在于,還包括將在所述活動(dòng)上工作的每個(gè)虛擬機(jī)的功耗測(cè)量結(jié)果、以及在所述活動(dòng)時(shí)間段期間所使用的所述未被跟蹤設(shè)備的功耗的所述部分相加,以獲得總的活動(dòng)功耗。
5.如權(quán)利要求4所述的方法,其特征在于,還包括 當(dāng)在所述活動(dòng)在所述虛擬機(jī)上被初始化時(shí),生成起始事件;以及 當(dāng)所述活動(dòng)被終止并被呈現(xiàn)給用戶時(shí),確定并標(biāo)記結(jié)束事件。
6.如權(quán)利要求2所述的方法,其特征在于,還包括 確定每個(gè)虛擬機(jī)所使用的每個(gè)資源的百分比; 將每個(gè)資源百分比乘以其對(duì)應(yīng)的最優(yōu)功率模型系數(shù),以獲得每個(gè)虛擬機(jī)的中間資源結(jié)果;以及 將每個(gè)虛擬機(jī)的所述中間資源結(jié)果的每一個(gè)相加,以獲得每個(gè)虛擬機(jī)的單個(gè)功耗。
7.如權(quán)利要求2所述的計(jì)算機(jī)實(shí)現(xiàn)的方法,其特征在于,還包括 確定為每個(gè)虛擬機(jī)工作的中央處理單元(CPU)的百分比;以及 使用所述最優(yōu)功率模型系數(shù)來(lái)計(jì)算每個(gè)虛擬機(jī)的每個(gè)資源的虛擬機(jī)專用的系數(shù)。
8.一種在計(jì)算設(shè)備上實(shí)現(xiàn)的方法,用于單獨(dú)地控制駐留于物理主機(jī)服務(wù)器上的多個(gè)虛擬機(jī)的功耗,包括 使用所述計(jì)算設(shè)備執(zhí)行以下動(dòng)作 監(jiān)視所述主機(jī)服務(wù)器上的每個(gè)虛擬機(jī)的功耗; 測(cè)量所述主機(jī)服務(wù)器上的每個(gè)虛擬機(jī)所提取的峰值功耗; 確定所述多個(gè)虛擬機(jī)中的任一個(gè)是否已經(jīng)超出其功率預(yù)算; 若是,則確定所述主機(jī)服務(wù)器的功率預(yù)算是否已被超出;以及 若是,則將所述虛擬機(jī)中至少一個(gè)的功耗降至所述主機(jī)服務(wù)器的總功耗。
9.如權(quán)利要求10所述的方法,其特征在于,還包括基于每個(gè)虛擬機(jī)的已測(cè)量的峰值功耗來(lái)定位所述主機(jī)服務(wù)器上的虛擬機(jī)。
10.如權(quán)利要求10所述的方法,其特征在于,還包括 生成功率模型,所述功率模型將所述多個(gè)虛擬機(jī)中每一個(gè)的總的資源利用率與所述主機(jī)服務(wù)器的總功耗相關(guān); 使用所述功率模型來(lái)獲得最優(yōu)功率模型系數(shù);以及 使用所述功率模型以及所述最優(yōu)功率模型系數(shù)來(lái)計(jì)算所述多個(gè)虛擬機(jī)中每一個(gè)的功耗。
11.如權(quán)利要求10所述的方法,其特征在于,還包括降低超出其功率預(yù)算的每個(gè)虛擬機(jī)的功耗,以便不超出所述主機(jī)服務(wù)器的功率預(yù)算。
12.如權(quán)利要求10所述的方法,其特征在于,還包括降低在所述主機(jī)服務(wù)器上駐留的每個(gè)較低優(yōu)先級(jí)的虛擬機(jī)的功耗,以便不超出所述主機(jī)服務(wù)器的功率預(yù)算,其中與已經(jīng)超出其功率預(yù)算的虛擬機(jī)相比,所述較低優(yōu)先級(jí)的虛擬機(jī)具有較低的優(yōu)先級(jí)。
13.如權(quán)利要求10所述的方法,其特征在于,還包括關(guān)閉已經(jīng)超出其功率預(yù)算的所述虛擬機(jī)中的一個(gè)或多個(gè),以便不超出所述主機(jī)服務(wù)器的功率預(yù)算。
14.如權(quán)利要求10所述的方法,其特征在于,還包括將一個(gè)或多個(gè)虛擬機(jī)遷移到另一個(gè)服務(wù)器,以便不超出所述主機(jī)服務(wù)器的功率預(yù)算。
全文摘要
虛擬機(jī)功率計(jì)量系統(tǒng)和方法的各實(shí)施例測(cè)量各個(gè)虛擬機(jī)的功耗。物理主機(jī)服務(wù)器的功率表測(cè)量被轉(zhuǎn)換成測(cè)量駐留在主機(jī)服務(wù)器上的每個(gè)單獨(dú)虛擬機(jī)的功耗的各個(gè)虛擬機(jī)功率表。通過(guò)使用主機(jī)服務(wù)器的總功耗以及虛擬機(jī)的資源利用率生成功率模型,來(lái)計(jì)算虛擬機(jī)功耗。使用該功率模型來(lái)計(jì)算最優(yōu)功率模型系數(shù)。使用兩個(gè)實(shí)施例之一來(lái)計(jì)算虛擬機(jī)使用的能量。該系統(tǒng)和方法的各實(shí)施例還可用于獲得特定活動(dòng)(諸如,服務(wù)、請(qǐng)求或搜索查詢)的功耗。另外,虛擬機(jī)功率計(jì)量可用于虛擬機(jī)功率設(shè)限,以允許虛擬化環(huán)境中的功率過(guò)度預(yù)訂。
文檔編號(hào)G06F9/44GK102770826SQ201180011019
公開(kāi)日2012年11月7日 申請(qǐng)日期2011年2月25日 優(yōu)先權(quán)日2010年2月26日
發(fā)明者A·A·巴塔查里亞, A·坎薩爾, D·C·伯格, J·劉 申請(qǐng)人:微軟公司