專利名稱:一種虛擬機功耗測量方法
技術領域:
本發明涉及虛擬機技術領域,具體地說,本發明涉及一種虛擬機功耗測量方法。
背景技術:
云計算作為一種新興的計算模式,近年來已在科學計算、網絡服務、海量數據存儲等領域廣泛應用。虛擬機技術是支撐云計算的重要基石,它給數據中心的管理帶來了高效和便捷的優勢,降低了物理服務器所需的數目,提高了能源利用效率。虛擬化環境中,配置、任務分配、調度等管理的粒度由物理主機變成了虛擬機,所以有必要對虛擬機的能耗值進行監測,以作為管理和決策的依據。現有技術中,主要通過監控若干種資源(例如CPU、Cache、磁盤和內存等)的使用狀態,然后建立線性模型,進而動態實時地預測虛擬機的能耗。例如,現有的一種虛擬機實時能耗計量方法包括:采集每個虛擬機的CPU利用率、內存利用率、磁盤吞吐量、物理節點的實測能耗,匹配成訓練 向量;重復上一步,得到預定數量的、非線性的訓練向量,構建得到訓練向量集合;對訓練向量集合中的訓練向量進行線性擬合,采用最小二乘法計算分類三段模型的權重參數;在實際應用環境中,采集實際運行的虛擬機的CPU利用率、內存利用率、磁盤吞吐量,根據實際運行的虛擬機的數量和所有實際運行的虛擬機的CPU利用率之和,確定相應的分類三段模型及其權重參數,計算得到待監聽虛擬機以及物理服務器的能耗值。上述方案能夠在一定程度上解決估測虛擬機的能耗的問題,并且對部分符合線性模型的虛擬機的測量的準確性較高。然而,虛擬機的類型、運行環境及其負載多種多樣,其功耗并非總是呈現出線性特征。圖1示出了一個虛擬機的實測功耗與Cache失效率的關系圖,該試驗中主機配置為2個Xeon (R) E56456_core處理器(具有12個邏輯核),64GB內存,操作系統為Cent0S6.2x86_64,虛擬機管理器為KVM,在主機上僅運行I個虛擬機,該虛擬機配置為6個邏輯核,12GB內存,虛擬機上的負載為SPECCPU2006中的429.mcf,運行過程中CPU利用率固定。從圖1中可以看出,該虛擬機實測功耗與Cache失效率并非線性關系,此時采用的線性模型難以與實際情況相匹配,可能會導致虛擬機功耗的測量出現較大誤差。因此,上述基于線性模型的虛擬機功耗測量方法應用場景受到限制,尤其難以適應虛擬機的負載變化多樣的場景。綜上所述,當前迫切需要一種適用范圍廣且準確的虛擬機功耗測量方法。
發明內容
本發明的任務是提供一種適用范圍廣且準確的虛擬機功耗測量方法。為實現上述發明目的,本發明提供了一種虛擬機功耗測量方法,包括下列步驟:I)實時監測各虛擬機的CPU和內存使用狀態;2)根據每臺主機的二維查找表得出各虛擬機的動態功耗;一個所述二維查找表記錄一個特定虛擬機在一個特定主機上的在各種CPU和內存使用狀態下的虛擬機動態功耗。其中,所述二維查找表的建立方法包括下列步驟:
21)在某一主機上啟動第一個虛擬機時,監測該虛擬機的CPU和內存使用狀態以及相應的主機整體功耗,進而建立該主機對于所述第一個虛擬機的二維查找表;22)當前主機運行的所有虛擬機的二維查找表均已知的前提下,在當前主機上啟動一個新的虛擬機,監測該主機中各個虛擬機的CPU和內存使用狀態,以及相應的主機整體功耗,進而建立當前主機對于所述新的虛擬機的所述二維查找表。其中,所述CPU使用狀態用CPU利用率表征,所述內存使用狀態用Cache失效率表征。其中,所述Cache失效率為LLC失效率。其中,所述步驟21)中,主機整體功耗減去主機靜態功耗即為該虛擬機的動態功耗。其中,所述步驟22)中,新的虛擬機動態功耗=主機整體功耗-主機靜態功耗-其他虛擬機動態功耗,其中其他 虛擬機動態功耗根據所監測的其它虛擬機的CPU和內存使用狀態以及相應的二維查找表得出。其中,所述步驟21)和22)還包括:在建立虛擬機二維查找表的過程中,對虛擬機進行一定時間的采樣使其基本覆蓋CPU和內存使用狀態的變化范圍,然后再對二維查找表進行插值,得到完整的二維查找表。其中,對二維查找表進行插值的方法包括下列步驟:210)將已采集的數據填入二維查找表LUT中;211)將二維查找表LUT的第一行LUT [O][]全部填入O ;212)在二維查找表LUT所有擁有已確定值的行LUT[i_cpu][]中,對于每段連續的空白序列:a)若空白單元序列的前后鄰居單元均為已確定值,則以兩鄰居單元的平均值作為整個空白序列的值或者在兩鄰居單元之間進行線性插值;b)若只有惟一的鄰居單元為已確定值,以該鄰居單元的值作為整個空白單元序列的值;213)在二維查找表LUT第一列LUT[] [O]中,若最后一個單兀為空白,則以最后一個已確定的值填充之;214)在二維查找表LUT第一列LUT[] [O]中,對每段連續的空白單元序列,依據其兩個已確定鄰居單元的值進行線性插值;215)對所有僅有第一個單元確定的行LUT[i][],以該確定值填充整個行。與現有技術相比,本發明具有下列技術效果:1、本發明不受能耗模型的約束,能夠在負載變化多樣的情形下,準確地測出虛擬機的功耗。2、本發明能夠準確測出數據中心所運行的每個虛擬機的功耗,從而為云服務/數據中心平臺的功耗管理、定價等提供依據和便利,對促進相關行業的節能環保方面起到積極作用。
圖1示出了一個虛擬機的實測功耗與Cache失效率的關系圖2示出了本發明一個實施例的流程圖;圖3示出了本發明一個實施例中的二維查找表的結構示例;圖4(0) (5)示出了本發明一個實施例中二維查找表插值過程的示例;圖5示出了一個測試系統的方框示意圖;圖6示出了利用本發明一個實施例的虛擬機功耗測量方法所得出的兩個虛擬機的功耗評估值曲線;圖7示出了實際測量的主機功耗曲線與用兩個虛擬機的功耗評估值曲線所計算得出的主機功耗評估曲線。
具體實施例方式以下,結合附圖和實施例來詳細說明本發明。在當今的云服務/數據中心平臺中,虛擬機使用位于遠程的共享存儲是一種常用的配置。在這種配置下,各虛擬機在主機上的功耗變化主要受CPU和內存使用狀態的影響。CPU的使用狀態以CPU利用率表征,內存的使用狀態以Cache失效率表征(Cache的失效率是能夠直接觀測到的,·最終目的是表征內存的訪問情況。這里隱含了一種共識=Cache失效則要訪問內存)。在下面的實施例中,Cache失效率為LLC(Last Level Cache)失效率。為每個虛擬機建立一個二維查找表(Lookup Table,下文中縮寫為LUT),該表以CPU利用率和LLC失效率為輸入,分別表征CPU和內存的使用狀態,及CPU利用率和LLC失效率的組合所對應的動態功耗。基于這個二維查找表,就能不受能耗模型的約束,在負載變化多樣的情形下準確地測出虛擬機的功耗。一個虛擬機的能耗是由其靜態功耗和其動態功耗組成。靜態功耗是指在計算機上電但不進行任何操作時的能耗;動態功耗是指計算機執行指令或進行其他操作時的能耗。因此有公式(I):PvM ⑴-PvM ⑴—Static+PvM ⑴—dynamic (丄)其中PVM(i)代表第i個虛擬機的功耗,PVM(i)_static代表第i個虛擬機的靜態功耗,PvM(i)—dynamic 代表第i個虛擬機的動態功耗。另一方面,可以認為:在同一主機上各虛擬機均分主機的靜態功耗。因此有公式
(2):PvM ⑴—static—fVst—static/NvM (2)其中Pltost stati。代表整個主機的靜態功耗。再者,虛擬機的動態功耗與該虛擬機的資源使用狀態密切相關。為每臺虛擬機建立一個二維查找表LUT,該查找表以CPU利用率及LLC失效率為輸入,輸出該虛擬機當前狀態下的動態功耗。其中,各虛擬機的CPU利用率和LLC失效率可以通過管理程序的專用工具(如Linux下的top和perf工具)獲得。圖2示出了該實施例的虛擬機功耗測量方法的流程圖。如圖2所示,該實施例的虛擬機功耗測量方法包括下列步驟:步驟101:在某個主機上啟動第一個虛擬機時,監測該虛擬機的CPU利用率和LLC失效率,以及相應的主機整體功耗,根據所監測的數據建立第一個虛擬機在該主機上的二維查找表(LUT)。
每個虛擬機的二維查找表都是一個二維數組(如圖3所示)。該二維數組以i_cpu、i_llcmisses為索引。其中i_cpu為CPU利用率,單位可以為1% (即二維查找表中相鄰單元的CPU利用率的間隔為1%),范圍由分配給該虛擬機的內核數來決定,例如對于一個擁有四核的虛擬機,其范圍是O彡i_cpu<400 ;i_llcmisses為LLC失效率,單位為1,000,000次/s (即二維查找表中相鄰單元的LLC失效率的間隔為1,000, 000次/s),范圍為O彡i_llcmisses<500,該范圍可根據需求來調整。當主機上運行唯一一個虛擬機時,當前主機上只有此一臺虛擬機,則主機整體功耗減去主機靜態功耗即為該虛擬機的動態功耗。該虛擬機的動態功耗就是二維查找表中相應的 LUT[i_cpu] [i_llcmisses]值。步驟102:在當前主機運行的所有虛擬機的二維查找表均已知的前提下,在當前主機上啟動一個新的虛擬機,監測該主機中各個虛擬機的CPU利用率和LLC失效率,以及相應的主機整體功耗,根據所監測的數據建立這個新的虛擬機在該主機上的二維查找表。此時,當前主機上不止一臺虛擬機,對于新的虛擬機有:新的虛擬機動態功耗=主機整體功耗-主機靜態功耗-其他虛擬機動態功耗。其中,其他虛擬機動態功耗可根據實時監測的CPU利用率和LLC失效率,以及已掌握的各虛擬機的二維查找表得出。步驟103:實時監測各虛擬機的CPU利用率和LLC失效率,根據已知的二維查找表得出各虛擬機的動態功耗。步驟101和102中,在建立虛擬機二維查找表的過程中,需要對虛擬機進行一定時間的采樣,使其基本覆蓋資源使用的變化范圍,即所設定的CPU利用率和LLC失效率數據變化范圍。有時候,采樣的數據難以覆蓋二維查找表的全部位置,因此還需要對根據已采集的數據對二維查找表進行插值,得到完整的二維查找表。在一個優選實施例中,根據已采集的數據對二維查找表進行插值的方法如下:步驟200:將已采集的數據填入二維查找表LUT中,參考圖4(0);步驟201:將LUT的第一行LUT[O][]全部填入0,參考圖4(1);步驟202:在所有擁有已確定值的行LUT[i_cpu][]中,對于每段連續的空白單元序列:a)若空白單元序列的前后鄰居單元均為已確定值,則以兩鄰居單元的平均值作為整個空白單元序列的值;例如,圖示中的LUT [5] [4:5],以LUT [5] [3] (=8)和LUT [5] [6](=10)的平均值9填充,參考圖4(2);b)否則(即有惟一的鄰居單元且為已確定值),以該鄰居單元的值作為整個空白單元序列的值;例如,圖示中的LUT [3]
,以LUT [3] [3] (=5)填充,又如,圖示中的LUT [6][3:9],以 LUT[6] [10] (=11)填充,參考圖 4(2);步驟203:在第一列LUT [] [O]中,若最后一個單兀尚未確定,則以最后一個確定單元的值填充之。例如,圖示中LUT[11] [O] (=28)填充LUT[12]
,參考圖4(3);步驟204:在第一列LUT[] [O]中,對每段連續的空白單元序列,依據其兩個已確定鄰居單元的值進行線性插值,參考圖4(4);步驟205:對所 有僅有第一個單元確定的行LUT [i][],以該確定值填充整個行;例如,圖示中以 LUT[1] [O] (=1)填充 LUT[1] [1:9],參考圖 4(5)。
發明人組建了測試平臺對上述實施例進行了實際測試。參考圖5,測試平臺采用HUAffEI Tecal RH2285rack服務器作為主機,操作系統采用Cent0S6.2x86_64,其上具有KVM虛擬機,主機連接一臺NFS服務器。采用軟件平臺Benchmark: SPEC CPU2006進行測試。在測試時,首先在虛擬機vm-102運行povray并構建相應的LUT,然后在維持虛擬機vm_102運行的前提下,啟動虛擬機vm-101運行mcf并構建相應的LUT。最后,監測2個虛擬機的CPU利用率和LLC失效率,根據它們各自的LUT計算出功耗,該功耗為評估值,2個虛擬機的功耗評估值曲線如圖6所示。與此同時,還測試主機的總的功耗。將實測的主機的總的功耗曲線和用2個虛擬機的功耗評估值曲線計算的評估總功耗比較,其中Host-Measured曲線為實測的主機的總的功耗曲線,Host-Estimated曲線為用2個虛擬機的功耗評估值曲線計算的評估總功耗曲線,如圖7所示,可以看出,實測總功耗和評估總功耗的曲線基本重合,誤差很小。上述實施例的虛擬機功耗測量方法特別適合用于云服務/數據中心平臺。在大量的主機組成的機群中,同一個虛擬機會在不同的主機間遷移,因此虛擬機的功耗難以直接測量,而利用上述實施例的方案,可以分別為每個主機建立各虛擬機的二維查找表,在某一個虛擬機運行時,只要監測主機上該虛擬機的CPU和內存使用狀態,即可根據各主機的二維查找表估算出該虛擬機在不同主機的功耗,進行得出該虛擬機在整個機群的功耗,從而為云服務/數據中心平臺的功耗管理、定價等提供依據和便利,對促進相關行業的節能環保方面起到積極作用。另外,需要說明的是,對二維查找表進行插值的方法并不是唯一的,例如:步驟202)中的a)情況,即空白單元序列的前后鄰居均為已確定值,可以在兩鄰居單元之間的空白單元序列進行線性插值,這是本領域技術人員易于理解的。最后應說明的是,以上實施例僅用以描述本發明的技術方案而不是對本技術方法進行限制,本發明在 應用上可以延伸為其它的修改、變化、應用和實施例,并且因此認為所有這樣的修改、變化、應用、實施例都在本發明的精神和教導范圍內。
權利要求
1.一種虛擬機功耗測量方法,包括下列步驟: 1)實時監測各虛擬機的CPU和內存使用狀態; 2)根據每臺主機的二維查找表得出各虛擬機的動態功耗;一個所述二維查找表記錄一個特定虛擬機在一個特定主機上的在各種CPU和內存使用狀態下的虛擬機動態功耗。
2.根據權利要求1所述的虛擬機功耗測量方法,其特征在于,所述二維查找表的建立方法包括下列步驟: 21)在某一主機上啟動第一個虛擬機時,監測該虛擬機的CPU和內存使用狀態以及相應的主機整體功耗,進而建立該主機對于所述第一個虛擬機的二維查找表; 22)當前主機運行的所有虛擬機的二維查找表均已知的前提下,在當前主機上啟動一個新的虛擬機,監測該主機中各個虛擬機的CPU和內存使用狀態,以及相應的主機整體功耗,進而建立當前主機對于所述新的虛擬機的所述二維查找表。
3.根據權利要求 2所述的虛擬機功耗測量方法,其特征在于,所述CPU使用狀態用CPU利用率表征,所述內存使用狀態用Cache失效率表征。
4.根據權利要求3所述的虛擬機功耗測量方法,其特征在于,所述Cache失效率為LLC失效率。
5.根據權利要求2所述的虛擬機功耗測量方法,其特征在于,所述步驟21)中,主機整體功耗減去主機靜態功耗即為該虛擬機的動態功耗。
6.根據權利要求5所述的虛擬機功耗測量方法,其特征在于,所述步驟22)中,新的虛擬機動態功耗=主機整體功耗-主機靜態功耗-其他虛擬機動態功耗,其中其他虛擬機動態功耗根據所監測的其它虛擬機的CPU和內存使用狀態以及相應的二維查找表得出。
7.根據權利要求5所述的虛擬機功耗測量方法,其特征在于,所述步驟21)和22)還包括:在建立虛擬機二維查找表的過程中,對虛擬機進行一定時間的采樣使其基本覆蓋CPU和內存使用狀態的變化范圍,然后再對二維查找表進行插值,得到完整的二維查找表。
8.根據權利要求7所述的虛擬機功耗測量方法,其特征在于,對二維查找表進行插值的方法包括下列步驟: 210)將已采集的數據填入二維查找表LUT中; 211)將二維查找表LUT的第一行LUT[O][]全部填入O ; 212)在二維查找表LUT所有擁有已確定值的行LUT[i_cpu][]中,對于每段連續的空白序列: a)若空白單元序列的前后鄰居單元均為已確定值,則以兩鄰居單元的平均值作為整個空白序列的值或者在兩鄰居單元之間進行線性插值; b)若只有惟一的鄰居單元為已確定值,以該鄰居單元的值作為整個空白單元序列的值; .213 )在二維查找表LUT第一列LUT [] [O]中,若最后一個單元為空白,則以最后一個已確定的值填充之; .214)在二維查找表LUT第一列LUT[][O]中,對每段連續的空白單元序列,依據其兩個已確定鄰居單元的值進行線性插值; .215)對所有僅有第一個單元確定的行LUT[i][],以該確定值填充整個行。
全文摘要
本發明提供一種虛擬機功耗測量方法,包括下列步驟1)在某一主機上啟動第一個虛擬機時,監測該虛擬機的CPU和內存使用狀態以及相應的主機整體功耗,進而建立該主機對于所述第一個虛擬機的二維查找表;2)當前主機運行的所有虛擬機的二維查找表均已知的前提下,在當前主機上啟動一個新的虛擬機,監測該主機中各個虛擬機的CPU和內存使用狀態,以及相應的主機整體功耗,進而建立當前主機對于所述新的虛擬機的所述二維查找表;3)實時監測各虛擬機的CPU和內存使用狀態,根據已知的二維查找表得出各虛擬機的動態功耗。本發明不受能耗模型的約束,能夠在負載變化多樣的情形下準確測出虛擬機的功耗。
文檔編號G01R21/00GK103245829SQ20131019929
公開日2013年8月14日 申請日期2013年5月24日 優先權日2013年5月24日
發明者江志雄, 陸春陽, 馬崇亞, 姜志穎 申請人:中國科學院計算技術研究所, 北京中油瑞飛信息技術有限責任公司