專(zhuān)利名稱(chēng):一種虛擬化環(huán)境下負(fù)載熱點(diǎn)檢測(cè)的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種熱點(diǎn)檢測(cè)方法,尤其是在虛擬化環(huán)境下對(duì)物理節(jié)點(diǎn)和虛擬機(jī)節(jié)點(diǎn)的熱點(diǎn)檢測(cè),屬于計(jì)算機(jī)操作系統(tǒng)與虛擬化技術(shù)領(lǐng)域。
背景技術(shù):
負(fù)載熱點(diǎn)檢測(cè)通常的步驟包括資源使用情況監(jiān)控及收集,負(fù)載量建模和計(jì)算,熱點(diǎn)檢測(cè)。在資源使用情況監(jiān)控階段,不管是針對(duì)物理節(jié)點(diǎn)還是物理節(jié)點(diǎn)之上的虛擬機(jī)節(jié)點(diǎn),需要監(jiān)控的重要度量尺度有CPU使用情況、最大內(nèi)存、內(nèi)存使用情況、網(wǎng)絡(luò)流量。 盡管在某些場(chǎng)合我們需要實(shí)時(shí)收集這些資源的使用情況,但通常來(lái)說(shuō),周期性地收集這些監(jiān)控?cái)?shù)據(jù),然后提交給熱點(diǎn)檢測(cè)器這就足夠了。在第二步驟,利用提交的監(jiān)控?cái)?shù)據(jù),負(fù)載熱點(diǎn)檢測(cè)器利用某種負(fù)載計(jì)算模型計(jì)算出各物理節(jié)點(diǎn)和其上的虛擬機(jī)節(jié)點(diǎn)的負(fù)載量。在最后一個(gè)步驟,負(fù)載熱點(diǎn)檢測(cè)器分析這些負(fù)載量,然后識(shí)別出熱點(diǎn),以供將來(lái)進(jìn)一步處理用。資源使用情況的監(jiān)控?cái)?shù)據(jù)對(duì)衡量負(fù)載量非常重要。然而相對(duì)于監(jiān)控物理節(jié)點(diǎn)的資源使用情況來(lái)說(shuō),監(jiān)控虛擬機(jī)的資源使用情況更為困難,尤其是對(duì)于虛擬機(jī)內(nèi)存使用情況的監(jiān)控。原因是物理節(jié)點(diǎn)的各資源使用情況能很容易被安裝在其上的監(jiān)控程序所獲取,只要該監(jiān)控程序有合法權(quán)限執(zhí)行、訪問(wèn)。不幸的是,對(duì)于虛擬機(jī)來(lái)說(shuō)并不是這樣。這是因?yàn)橐坏┨摂M機(jī)管理程序(VM hypervisor)如Xen創(chuàng)建了一個(gè)虛擬機(jī),安裝在該虛擬機(jī)之上的客戶(hù)操作系統(tǒng)將會(huì)接管分配給該虛擬機(jī)的所有物理資源。為了解決這個(gè)問(wèn)題,一個(gè)方法就是在虛擬機(jī)內(nèi)部安裝一個(gè)監(jiān)控程序,用來(lái)監(jiān)控各資源的使用情況,就像一個(gè)特洛伊木馬程序一樣,然后該監(jiān)控程序?qū)⑹占降谋O(jiān)控信息發(fā)送給一個(gè)如安裝在該虛擬機(jī)外部的物理機(jī)上的特定的收集程序。然而,這種機(jī)制非常不靈活,因?yàn)楝F(xiàn)在有許多不同的操作系統(tǒng),同一種操作系統(tǒng)又有著不同的版本,這會(huì)導(dǎo)致為不同版本的操作系統(tǒng)開(kāi)發(fā)不同的監(jiān)控程序。實(shí)際的負(fù)載熱點(diǎn)檢測(cè)也面臨一個(gè)挑戰(zhàn)性問(wèn)題,因?yàn)橐话銇?lái)說(shuō),大型數(shù)據(jù)中心都部署上千臺(tái)物理節(jié)點(diǎn),所以很容易產(chǎn)生大量的監(jiān)控?cái)?shù)據(jù)。如果用傳統(tǒng)的單節(jié)點(diǎn)處理這些數(shù)據(jù)將出現(xiàn)性能瓶頸,甚至造成機(jī)器崩潰。所以,如何高效地存儲(chǔ)且處理這些大量的監(jiān)控?cái)?shù)據(jù)是個(gè)挑戰(zhàn)性問(wèn)題。
發(fā)明內(nèi)容
本發(fā)明目的在于,提出一種應(yīng)用于虛擬化環(huán)境下的負(fù)載熱點(diǎn)檢測(cè)方法,可以克服傳統(tǒng)基于單機(jī)方式處理的性能瓶頸,以微小的開(kāi)銷(xiāo)來(lái)獲得更精確更靈活地衡量負(fù)載量。本發(fā)明先進(jìn)行資源監(jiān)控,再進(jìn)行負(fù)載熱點(diǎn)檢測(cè),所述的熱點(diǎn)指在于一段時(shí)間序列里,當(dāng)節(jié)點(diǎn)的負(fù)載超過(guò)閾值,且其次數(shù)達(dá)到預(yù)設(shè)的次數(shù)時(shí)的節(jié)點(diǎn)為熱點(diǎn)。所述資源監(jiān)控是在各物理節(jié)點(diǎn)上分別部署資源監(jiān)控模塊,各資源監(jiān)控模塊通過(guò) Xen Domain O得到每個(gè)虛擬機(jī)的全局頁(yè)目錄基址地址,各資源監(jiān)控模塊利用虛擬機(jī)的全局頁(yè)目錄基址地址遍歷虛擬機(jī)的地址空間,從而周期性地檢測(cè)各物理節(jié)點(diǎn)和虛擬機(jī)節(jié)點(diǎn)的資源使用情況。本發(fā)明首先將資源監(jiān)控程序部署在物理節(jié)點(diǎn)上作為Xen的一個(gè)工具來(lái)使用,資源監(jiān)控程序利用物理機(jī)上的宿主操作系統(tǒng)的管理內(nèi)存的機(jī)制來(lái)周期性的監(jiān)聽(tīng)各物理節(jié)點(diǎn)和虛擬機(jī)節(jié)點(diǎn)的資源使用情況。負(fù)載熱點(diǎn)檢測(cè)器利用MapReduce編程模型來(lái)檢測(cè),mapper讀取沉淀文件中的監(jiān)控?cái)?shù)據(jù),然后用特定的數(shù)學(xué)負(fù)載計(jì)算模型來(lái)計(jì)算各個(gè)物理節(jié)點(diǎn)和其上的虛擬機(jī)節(jié)點(diǎn)的負(fù)載情況,并作為mapper的輸出結(jié)果和reducer的輸入信息,reducer在讀取負(fù)載信息后,便開(kāi)始進(jìn)行熱點(diǎn)的檢測(cè),并識(shí)別出熱點(diǎn)。利用本發(fā)明的虛擬化環(huán)境下負(fù)載熱點(diǎn)檢測(cè)方法,通過(guò)在虛擬機(jī)管理程序級(jí)別上來(lái)掃描每個(gè)虛擬機(jī)的頁(yè)表和MapReduce編程模型來(lái)有效地監(jiān)控虛擬機(jī)的內(nèi)存使用率和有效地處理大量的監(jiān)控?cái)?shù)據(jù),進(jìn)而提高了虛擬化環(huán)境下負(fù)載熱點(diǎn)檢測(cè)的靈活性、可擴(kuò)展性、高效性。本發(fā)明資源監(jiān)控模塊包括步驟如下
1)獲取CR3,虛擬機(jī)的頁(yè)目錄基址寄存器;
2)通過(guò)CR3和虛擬機(jī)內(nèi)的線性地址的目錄地址部分獲得指示了頁(yè)表基址地址的相應(yīng)頁(yè)目錄項(xiàng);
3)將所述頁(yè)目錄項(xiàng)結(jié)合線性地址的頁(yè)地址部分,得到相應(yīng)的頁(yè)表項(xiàng);
4)檢查頁(yè)表項(xiàng)的存在位;當(dāng)存在位為真,則表示該頁(yè)面已經(jīng)被裝入內(nèi)存;當(dāng)存在位不為真,則表示該頁(yè)面未被裝入內(nèi)存。本發(fā)明在所述步驟4)后,還包括
步驟5)所述資源監(jiān)控模塊不斷檢測(cè)位于該虛擬機(jī)內(nèi)的線性地址空間,直到到達(dá)線性地址空間的末尾;
步驟6)所述資源監(jiān)控模塊用存在頁(yè)面的計(jì)數(shù)乘以頁(yè)面大小便可得出虛擬機(jī)所使用內(nèi)存的大小。在所述資源監(jiān)控模塊中還包括頁(yè)面計(jì)算器。負(fù)載熱點(diǎn)檢測(cè)包括衡量多維度的負(fù)載的檢測(cè)、熱點(diǎn)檢測(cè)和基于MapReduce的檢測(cè),其中
所述衡量多維度的負(fù)載的檢測(cè)包括CPU使用情況、最大內(nèi)存、已使用的內(nèi)存和網(wǎng)絡(luò)流量的度量尺度;度量尺度的綜合度量尺度,即負(fù)載量為Vol
其中,cpu, mem, network分別是各物理節(jié)點(diǎn)或虛擬機(jī)節(jié)點(diǎn)中CPU使用情況、最大內(nèi)存、 已使用的內(nèi)存和網(wǎng)絡(luò)流量的資源使用情況利用率,θι>執(zhí)和ft分別為各度量尺度的相應(yīng)權(quán)重;
所述熱點(diǎn)檢測(cè)為在一段時(shí)間序列里,各物理節(jié)點(diǎn)或虛擬機(jī)節(jié)點(diǎn)的負(fù)載量超過(guò)了預(yù)設(shè)的閾值Φ ;
所述基于MapReduce檢測(cè)是計(jì)算出每個(gè)物理節(jié)點(diǎn)和虛擬機(jī)節(jié)點(diǎn)的負(fù)載量,然后根據(jù)這些負(fù)載量識(shí)別出重負(fù)載,即熱點(diǎn);包括如下步驟A、映射階段,讀取每個(gè)節(jié)點(diǎn)在各個(gè)監(jiān)控時(shí)期的實(shí)際資源使用情況,根據(jù)負(fù)載模型分別計(jì)算出負(fù)載量;
B、負(fù)載量即為每個(gè)節(jié)點(diǎn)在各個(gè)監(jiān)控時(shí)期的對(duì)應(yīng)負(fù)載量,存儲(chǔ)在不同的中間文件;
C、規(guī)約階段,以這些負(fù)載量作為輸入,然后根據(jù)熱點(diǎn)檢測(cè)算法,識(shí)別出每個(gè)節(jié)點(diǎn)是否是
真正熱點(diǎn)。存儲(chǔ)在沉淀文件中的監(jiān)控?cái)?shù)據(jù)作為每個(gè)mapper的輸入文件,其中的map操作一行行地讀取文件中的內(nèi)容,對(duì)于每一行,它將對(duì)其內(nèi)容進(jìn)行切分,然后提取出 cpu, mem, network三個(gè)度量尺度,然后用改進(jìn)的負(fù)載數(shù)學(xué)模型計(jì)算出負(fù)載。規(guī)約階段時(shí),收集每個(gè)節(jié)點(diǎn)的ID和各個(gè)時(shí)期的負(fù)載信息,保存到中間文件中,作為規(guī)約操作的輸入文件;讀取由map操作生成的中間文件,然后對(duì)給定物理節(jié)點(diǎn)或虛擬機(jī)節(jié)點(diǎn)的各個(gè)時(shí)期的負(fù)載量進(jìn)行求和,并統(tǒng)計(jì)每個(gè)節(jié)點(diǎn)的負(fù)載超過(guò)預(yù)先設(shè)置的閾值的次數(shù)k_ vol,及總的負(fù)載量的個(gè)數(shù)Counter_iter ;利用通過(guò)判斷每個(gè)節(jié)點(diǎn)的負(fù)載超過(guò)預(yù)先設(shè)置的閾值的次數(shù)k_vol,識(shí)別出哪些節(jié)點(diǎn)是熱點(diǎn),然后收集這些信息進(jìn)行輸出。
圖I本發(fā)明的框架示意圖。圖2物理頁(yè)到機(jī)器頁(yè)的映射示意圖。圖3兩級(jí)頁(yè)表結(jié)構(gòu)示意圖。圖4 MapReduce并行編程模型示意圖。
具體實(shí)施例方式如圖I所示,是本發(fā)明實(shí)例所提供的技術(shù)框架100,包括兩個(gè)層次的內(nèi)容。第一層是資源監(jiān)控模塊,部署在各物理節(jié)點(diǎn)上,并于Xen Domain O內(nèi)部,作為Xen的一個(gè)工具來(lái)使用,用于周期性的監(jiān)聽(tīng)各物理節(jié)點(diǎn)和虛擬機(jī)節(jié)點(diǎn)的資源使用情況,第二層是負(fù)載熱點(diǎn)檢測(cè)器,用于計(jì)算每個(gè)物理節(jié)點(diǎn)和其上的虛擬機(jī)節(jié)點(diǎn)的負(fù)載量,進(jìn)而檢測(cè)出潛在的熱點(diǎn)。資源監(jiān)控程序101監(jiān)控的內(nèi)容包括CPU使用情況、最大內(nèi)存、已使用的內(nèi)存、 網(wǎng)絡(luò)流量等,所述的模塊主要致力于監(jiān)控虛擬機(jī)的內(nèi)存使用情況,其他的資源使用情況可以簡(jiǎn)單地利用已經(jīng)有的工具如Linux/Unix中的top, Xen中的XenMon。本發(fā)明的物理頁(yè)到機(jī)器頁(yè)的映射示意圖,如圖2所示。如圖3所示,基于X86 CPU的體系結(jié)構(gòu)只有兩級(jí)的頁(yè)表信息的情況,資源監(jiān)控模塊mond采用如下的方法首先獲取CR3301,虛擬機(jī)的頁(yè)目錄基址寄存器,然后通過(guò) CR3和虛擬機(jī)內(nèi)的線性地址302的目錄地址303部分,就可以獲得相應(yīng)的頁(yè)目錄項(xiàng)304,該頁(yè)目錄項(xiàng)指示了頁(yè)表基址地址305,然后結(jié)合線性地址的頁(yè)地址部分306,便可得到相應(yīng)的頁(yè)表項(xiàng)307。檢查頁(yè)表項(xiàng)的存在位308,如果存在位為真,則表示該頁(yè)面已經(jīng)被裝入內(nèi)存。因此利用這種方法,增加存在頁(yè)面的計(jì)數(shù)器。我們不斷檢測(cè)位于該虛擬機(jī)內(nèi)的線性地址空間, 直到到達(dá)線性地址空間的末尾。最后利用存在頁(yè)面的計(jì)數(shù)乘以頁(yè)面大小便可得出虛擬機(jī)所使用內(nèi)存的大小。負(fù)載熱點(diǎn)檢測(cè)器102提出了一個(gè)新的模型來(lái)橫量各度量尺度的負(fù)載量
權(quán)利要求
1.一種虛擬化環(huán)境下負(fù)載熱點(diǎn)檢測(cè)方法,其特征在于先進(jìn)行資源監(jiān)控,再進(jìn)行負(fù)載熱點(diǎn)檢測(cè),所述的熱點(diǎn)指在于一段時(shí)間序列里,當(dāng)節(jié)點(diǎn)的負(fù)載超過(guò)閾值,且其次數(shù)達(dá)到預(yù)設(shè)的次數(shù)時(shí)的節(jié)點(diǎn)為熱點(diǎn)。
2.根據(jù)權(quán)利要求I所述虛擬化環(huán)境下負(fù)載熱點(diǎn)檢測(cè)方法,其特征在于所述資源監(jiān)控是在各物理節(jié)點(diǎn)上分別部署資源監(jiān)控模塊,各資源監(jiān)控模塊通過(guò)Xen Domain O得到每個(gè)虛擬機(jī)的全局頁(yè)目錄基址地址,各資源監(jiān)控模塊利用虛擬機(jī)的全局頁(yè)目錄基址地址遍歷虛擬機(jī)的地址空間,從而周期性地檢測(cè)各物理節(jié)點(diǎn)和虛擬機(jī)節(jié)點(diǎn)的資源使用情況。
3.根據(jù)權(quán)利要求2所述虛擬化環(huán)境下負(fù)載熱點(diǎn)檢測(cè)方法,其特征在于資源監(jiān)控模塊包括步驟如下1)獲取CR3,虛擬機(jī)的頁(yè)目錄基址寄存器;2)通過(guò)CR3和虛擬機(jī)內(nèi)的線性地址的目錄地址部分獲得指示了頁(yè)表基址地址的相應(yīng)頁(yè)目錄項(xiàng);3)將所述頁(yè)目錄項(xiàng)結(jié)合線性地址的頁(yè)地址部分,得到相應(yīng)的頁(yè)表項(xiàng);4)檢查頁(yè)表項(xiàng)的存在位;當(dāng)存在位為真,則表示該頁(yè)面已經(jīng)被裝入內(nèi)存;當(dāng)存在位不為真,則表示該頁(yè)面未被裝入內(nèi)存。
4.根據(jù)權(quán)利要求3所述虛擬化環(huán)境下負(fù)載熱點(diǎn)檢測(cè)方法,其特征在于在所述步驟4) 后,還包括步驟5)所述資源監(jiān)控模塊不斷檢測(cè)位于該虛擬機(jī)內(nèi)的線性地址空間,直到到達(dá)線性地址空間的末尾;步驟6)所述資源監(jiān)控模塊用存在頁(yè)面的計(jì)數(shù)乘以頁(yè)面大小便可得出虛擬機(jī)所使用內(nèi)存的大小。
5.根據(jù)權(quán)利要求2或3所述虛擬化環(huán)境下負(fù)載熱點(diǎn)檢測(cè)方法,其特征在于在所述資源監(jiān)控模塊中還包括頁(yè)面計(jì)算器。
6.根據(jù)權(quán)利要求I所述虛擬化環(huán)境下負(fù)載熱點(diǎn)檢測(cè)方法,其特征在于負(fù)載熱點(diǎn)檢測(cè)包括衡量多維度的負(fù)載的檢測(cè)、熱點(diǎn)檢測(cè)和基于MapReduce的檢測(cè),其中所述衡量多維度的負(fù)載的檢測(cè)包括CPU使用情況、最大內(nèi)存、已使用的內(nèi)存和網(wǎng)絡(luò)流量的度量尺度;度量尺度的綜合度量尺度,即負(fù)載量為Vol : VbJ = β * cpu 十沒(méi).* 今 Q產(chǎn) network其中,cpu, mem, network分別是各物理節(jié)點(diǎn)或虛擬機(jī)節(jié)點(diǎn)中CPU使用情況、最大內(nèi)存、 已使用的內(nèi)存和網(wǎng)絡(luò)流量的資源使用情況利用率,Θ θ^βθ,分別為各度量尺度的相應(yīng)權(quán)重;所述熱點(diǎn)檢測(cè)為在一段時(shí)間序列里,各物理節(jié)點(diǎn)或虛擬機(jī)節(jié)點(diǎn)的負(fù)載量超過(guò)了預(yù)設(shè)的閾值Φ ;所述基于MapReduce檢測(cè)是計(jì)算出每個(gè)物理節(jié)點(diǎn)和虛擬機(jī)節(jié)點(diǎn)的負(fù)載量,然后根據(jù)這些負(fù)載量識(shí)別出重負(fù)載,即熱點(diǎn);包括如下步驟Α、映射階段,讀取每個(gè)節(jié)點(diǎn)在各個(gè)監(jiān)控時(shí)期的實(shí)際資源使用情況,根據(jù)負(fù)載模型分別計(jì)算出負(fù)載量;B、負(fù)載量即為每個(gè)節(jié)點(diǎn)在各個(gè)監(jiān)控時(shí)期的對(duì)應(yīng)負(fù)載量,存儲(chǔ)在不同的中間文件;C、規(guī)約階段,以這些負(fù)載量作為輸入,然后根據(jù)熱點(diǎn)檢測(cè)算法,識(shí)別出每個(gè)節(jié)點(diǎn)是否是真正熱點(diǎn)。
7.根據(jù)權(quán)利要求I所述虛擬化環(huán)境下負(fù)載熱點(diǎn)檢測(cè)方法,其特征在于存儲(chǔ)在沉淀文件中的監(jiān)控?cái)?shù)據(jù)作為每個(gè)mapper的輸入文件,其中的map操作一行行地讀取文件中的內(nèi)容, 對(duì)于每一行,它將對(duì)其內(nèi)容進(jìn)行切分,然后提取出cpu,mem, network三個(gè)度量尺度,然后用改進(jìn)的負(fù)載數(shù)學(xué)模型計(jì)算出負(fù)載。
8.根據(jù)權(quán)利要求6或7所述虛擬化環(huán)境下負(fù)載熱點(diǎn)檢測(cè)方法,其特征在于規(guī)約階段時(shí),收集每個(gè)節(jié)點(diǎn)的ID和各個(gè)時(shí)期的負(fù)載信息,保存到中間文件中,作為規(guī)約操作的輸入文件;讀取由map操作生成的中間文件,然后對(duì)給定物理節(jié)點(diǎn)或虛擬機(jī)節(jié)點(diǎn)的各個(gè)時(shí)期的負(fù)載量進(jìn)行求和,并統(tǒng)計(jì)每個(gè)節(jié)點(diǎn)的負(fù)載超過(guò)預(yù)先設(shè)置的閾值的次數(shù)k_vol,及總的負(fù)載量的個(gè)數(shù)counter_iter ;利用通過(guò)判斷每個(gè)節(jié)點(diǎn)的負(fù)載超過(guò)預(yù)先設(shè)置的閾值的次數(shù)k_vol, 識(shí)別出哪些節(jié)點(diǎn)是熱點(diǎn),然后收集這些信息進(jìn)行輸出。
全文摘要
一種虛擬化環(huán)境下負(fù)載熱點(diǎn)檢測(cè)方法,屬于計(jì)算機(jī)操作系統(tǒng)與虛擬化技術(shù)領(lǐng)域。先將資源監(jiān)控程序部署在物理節(jié)點(diǎn)上作為Xen的一個(gè)工具來(lái)使用,資源監(jiān)控程序利用操作系統(tǒng)管理內(nèi)存的機(jī)制來(lái)周期性的檢測(cè)各物理節(jié)點(diǎn)和虛擬機(jī)節(jié)點(diǎn)的資源使用情況。負(fù)載熱點(diǎn)檢測(cè)器基于MapReduce編程模型來(lái)實(shí)現(xiàn),mapper讀取沉淀文件中的監(jiān)控?cái)?shù)據(jù),然后用特定的負(fù)載計(jì)算模型來(lái)計(jì)算各個(gè)物理節(jié)點(diǎn)和其上的虛擬機(jī)節(jié)點(diǎn)的負(fù)載情況,并作為mapper的輸出結(jié)果和reducer的輸入信息,reducer在讀取負(fù)載信息后,便開(kāi)始進(jìn)行熱點(diǎn)的檢測(cè),識(shí)別出熱點(diǎn)。本方法提高了虛擬化環(huán)境下負(fù)載熱點(diǎn)檢測(cè)的效率、靈活性和可擴(kuò)展性。
文檔編號(hào)G06F11/30GK102609347SQ201210036130
公開(kāi)日2012年7月25日 申請(qǐng)日期2012年2月17日 優(yōu)先權(quán)日2012年2月17日
發(fā)明者向勁鋒, 周亞軍, 周哲博, 張旻, 胡博林, 雷州 申請(qǐng)人:江蘇南開(kāi)之星軟件技術(shù)有限公司