專利名稱:一種基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu)及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu)及方法。
背景技術(shù):
在過去,計算機的軟件系統(tǒng)(包括操作系統(tǒng)及運行其上的應(yīng)用軟件)性能一直受到軟件廠商和他們的顧客的關(guān)注,因為系統(tǒng)性能直接關(guān)聯(lián)到服務(wù)的品質(zhì)、軟件產(chǎn)品交易的成敗。一般,有兩種角度來看性能(performance)第一種角度是從應(yīng)用軟件造成的“結(jié)果”來看,即通常所謂“用戶體驗”的性能。 譬如可以在應(yīng)用中加入代碼,以測量從用戶鍵入回車開始,到頁面呈現(xiàn)出來為止的“響應(yīng)時間”。這些測量性能的代碼也可以與應(yīng)用軟件的功能結(jié)合,形成相當(dāng)復(fù)雜的性能監(jiān)視
(Performance Monitor) Couture 等人白勺美國專禾串 i青"enterprise application performance monitors” (申請?zhí)枮?US20080235075)就是一個例子。第二種角度是從影響軟件運行時性能的“原因”來看。造成軟件運行的根本原因當(dāng)然就是計算機芯片上的CPU、內(nèi)存、10、網(wǎng)絡(luò)等硬件資源。但過去因為無法直接從硬件測量性能,只好退而求其次的利用操作系統(tǒng)里的性能指令來測量進程等資源的性能。近年來有新的硬件監(jiān)視基礎(chǔ)工具,例如基于X86架構(gòu)的硬件寄存器,可以對CPU實施監(jiān)視,稱之為性能監(jiān)視機件(Performance Monitor Unit,以下簡稱PMU)。有關(guān)PMU的專利發(fā)明申請有不少,例如,Davidson 等人的美國專利申請“Hierarchical selection of direct and indirect counting events in a PMU” (申請?zhí)枮?US6718403)、Mericas 等人的美國專利申請“Simplified event selection for a PMU” (申請?zhí)枮?US7500138)和 Mericas 個人白勺美國專禾ll串i青"Method and product ofPMU for sampling all performance events generated by a processor”(申請?zhí)枮閁S20060167658)。其它非PMU,但也是基于硬件的性能監(jiān)視發(fā)明專利申請也不少,例如,F(xiàn)owles的美國專利申請“Processor performance monitoring”(申請?zhí)枮?US20060277395)、Kosche 的美國專利申請“Method and apparatus for synthesizing hardware counters from performance sampling"(串 i青號為 US20080177756)禾口Hunter 的美國專利申請"Processor bus for performance monitoring with digests” (申請?zhí)枮?US20080294944)。性能監(jiān)視機件PMU的寄存器有兩類控制寄存器PMC和數(shù)據(jù)寄存器PMD??刂萍拇嫫鲗PU做經(jīng)常性監(jiān)視,且將監(jiān)視的數(shù)據(jù)存放于數(shù)據(jù)寄存器??刂萍拇嫫骺梢曰谑录?,也可以基于時間將收集到的事件加以整理,向上回報監(jiān)視結(jié)果。這種硬件級別的監(jiān)視有若干優(yōu)勢(1)首先,過去基于軟件程序的監(jiān)視方法,經(jīng)常是在得到結(jié)果之后,要有被監(jiān)視的軟件的源碼來修正,例如如何優(yōu)化一個java的虛擬機程序,所以硬件級別的監(jiān)視則不需要源碼;(2)被監(jiān)視的軟件也沒有因為監(jiān)視的活動而影響到性能;(3)極底層的內(nèi)核代碼也可以被監(jiān)視到;最重要的優(yōu)勢是(4)可以監(jiān)視緩存(例如TLB miss和hit ;TLB是translation lookaside buffer的縮寫,是內(nèi)存管理硬件用來改善虛擬e物理地址翻譯速度的CPU緩存;TLB把虛擬地址當(dāng)成搜索關(guān)鍵字,搜索結(jié)果是物理地址;如果所要的地址在TLB里找得到,就稱為TLB hit,否則稱為TLB miss;經(jīng)常找不到會導(dǎo)致資源性能下降。),這是其它任何方法都監(jiān)視不到的。PMU的詳情在惠普公司的Eranian "The perfmon2interface specification,,一文中有描述。使用PMU的應(yīng)用不多,但尚未有用PMU,結(jié)合操作系統(tǒng)性能指令來測量“虛擬化系統(tǒng)”性能的方法。這里解釋什么是虛擬化系統(tǒng)操作系統(tǒng)虛擬化的技術(shù),導(dǎo)致一臺物理機上運行多個“客戶”操作系統(tǒng)(或稱為虛擬機Virtual Machine,以下簡稱虛機,VM,英文俗稱Guest)。這些虛機運行在虛機管理程序Hypervisor上,而Hypervisor又能直接運行在物理機上。大多數(shù)的情況,被監(jiān)視的物理機都是機房里的服務(wù)器,俗稱主機(Host)。隨著虛擬化技術(shù)的不同,可能有半虛擬化或全虛擬化技術(shù)。但一般來說一個主機可被監(jiān)視的空間至少有兩個一個是虛擬機運行的空間, 稱為(1)客戶空間,另一個是Hypervisor運行的空間,稱為(2)內(nèi)核空間。有的虛擬化技術(shù),例如Linux KVM,還保留原來的(3)用戶空間。以上解說了主機內(nèi)部情況。多個這樣的主機形成一個集群,以主控主機(master)為首,從屬主機(slave)為輔。多個這樣的集群形成集中式、分布式或混合式的網(wǎng)絡(luò)系統(tǒng),構(gòu)成本發(fā)明定義的“虛擬化系統(tǒng)”,這是一個地理上大范圍的網(wǎng)絡(luò)系統(tǒng)?,F(xiàn)有技術(shù),在申請?zhí)枮?01010183844. 6公開了專利《通過總線架構(gòu)構(gòu)建虛擬機監(jiān)視器的方法及性能服務(wù)框架》,該專利描述了虛擬化系統(tǒng)如何將性能數(shù)據(jù)分析整理,然后根據(jù)這些數(shù)據(jù)來遷移虛機、調(diào)整應(yīng)用,但并未描述虛擬化系統(tǒng)如何取得性能數(shù)據(jù)。
發(fā)明內(nèi)容
為了解決上述現(xiàn)有技術(shù)存在的問題,本發(fā)明旨在提供一種基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu)及方法,以將PMU(或類似工具)應(yīng)用在虛擬化系統(tǒng)的性能監(jiān)視中; 且本發(fā)明的性能監(jiān)視就是針對虛擬化系統(tǒng)中各主機的CPU、內(nèi)存、緩存、10、網(wǎng)絡(luò)、進程等實施監(jiān)視;同時,本發(fā)明基于硬件的性能監(jiān)視法解決了虛擬化系統(tǒng)取得性能數(shù)據(jù)的問題。本發(fā)明之一所述的一種基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu),它包括至少一個主控主機,所述每個主控主機包括用戶空間組件、客戶空間組件、內(nèi)核空間組件和硬件,其中,所述用戶空間組件包括依次連接的策略管理器、工作負(fù)荷調(diào)整器、監(jiān)視庫和主機性能監(jiān)視器,所述主機性能監(jiān)視器還與工作負(fù)荷調(diào)整器連接,且該主機性能監(jiān)視器包括用戶空間監(jiān)視器和內(nèi)核空間監(jiān)視器;所述客戶空間組件包括至少一個通過內(nèi)核串口通道與所述主機性能監(jiān)視器連接的虛機,且所述虛機包括用于收集虛機資源的性能的虛機性能代理;所述內(nèi)核空間組件包括依次與所述監(jiān)視庫連接的性能監(jiān)視基礎(chǔ)工具應(yīng)用接口和性能監(jiān)視基礎(chǔ)工具核心代碼模塊,還包括任務(wù)調(diào)度器、內(nèi)存管理器、網(wǎng)絡(luò)驅(qū)動、文件系統(tǒng)和設(shè)備驅(qū)動,且所述網(wǎng)絡(luò)驅(qū)動與所述工作負(fù)荷調(diào)整器連接;所述硬件支持外圍的性能監(jiān)視基礎(chǔ)工具,該硬件包括與所述性能監(jiān)視基礎(chǔ)工具核心代碼模塊連接的PMU、分別與該PMU連接的PMD和PMC,還包括CPU、內(nèi)存、網(wǎng)卡和硬盤,且所述網(wǎng)卡與所述網(wǎng)絡(luò)驅(qū)動連接。在述的基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu)中,還包括至少一個從屬主機,所述每個主控主機通過網(wǎng)絡(luò)管道與所述至少一個從屬主機連接,以形成一個集群,所述多個主控主機與其各自的從屬主機形成多個集群,且所述集群與集群之間通過集中式、分布式或混合式通訊方式通訊;所述從屬主機包括所述主機性能監(jiān)視器,且該從屬主機內(nèi)的主機性能監(jiān)視器與所述主控主機內(nèi)的網(wǎng)卡連接。在述的基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu)中,所述虛擬化系統(tǒng)包括系統(tǒng)內(nèi)部資源監(jiān)視器以及系統(tǒng)外部資源監(jiān)視器;所述策略管理器、工作負(fù)荷調(diào)整器和所述主控主機內(nèi)的主機性能監(jiān)視器構(gòu)成一上層構(gòu)架,其中所述每個策略管理器是至少一個工作負(fù)荷調(diào)整器的集合,所述每個工作負(fù)荷調(diào)整器是至少一個主機性能監(jiān)視器的集合,所述每個主機性能監(jiān)視器是至少一個所述虛機性能代理的集合,也是所述用戶空間監(jiān)視器和內(nèi)核空間監(jiān)視器的集合,且所述主機性能監(jiān)視器分別被所述系統(tǒng)內(nèi)部資源監(jiān)視器以及系統(tǒng)外部資源監(jiān)視器所繼承。在述的基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu)中,所述策略管理器用于解釋用戶策略請求,列舉CPU、內(nèi)存、網(wǎng)絡(luò)、10、緩存所要達(dá)成的條件,并將所述用戶策略請求區(qū)分為高、中、低等級;當(dāng)一個集群中的主控主機無法滿足該用戶策略請求時,所述策略管理器根據(jù)詢問集群的策略,同時或按優(yōu)先次序詢問該集群以外的其它集群中的主控主機的策略管理器,以滿足該用戶策略請求。在述的基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu)中,所述主控主機中的工作負(fù)荷調(diào)整器從所述策略管理器獲得策略請求,經(jīng)由所述網(wǎng)絡(luò)管道收集該主控主機所在的集群中各從屬主機的資源性能數(shù)據(jù),根據(jù)所述性能數(shù)據(jù)整理集群整體性能,并負(fù)責(zé)對各從屬主機資源進行策略實施;所述工作負(fù)荷調(diào)整器收集到的資源性能數(shù)據(jù)用于判斷所述從屬主機資源的忙閑狀態(tài),即如果所述性能數(shù)據(jù)超過預(yù)設(shè)閥值,則狀態(tài)從資源閑變?yōu)橘Y源忙;如果所述性能數(shù)據(jù)低于所述閥值,則狀態(tài)從資源忙變?yōu)橘Y源閑;如果狀態(tài)從資源忙變?yōu)橘Y源不工作,則有異常發(fā)生;如果狀態(tài)從資源不工作變?yōu)橘Y源忙,則資源恢復(fù)正常。在述的基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu)中,所述主機性能監(jiān)視器用于監(jiān)視用戶空間、內(nèi)核空間和客戶空間,其中監(jiān)視用戶空間,即使用所述系統(tǒng)外部資源監(jiān)視器,監(jiān)視用戶空間所有進程性能信息;監(jiān)視內(nèi)核空間,即包括啟動、配置和結(jié)束所述內(nèi)核空間監(jiān)視器,并透過所述系統(tǒng)內(nèi)部資源監(jiān)視器,執(zhí)行系統(tǒng)內(nèi)部資源監(jiān)視;監(jiān)視客戶空間,即首先,通過所述內(nèi)核串口通道,與運行在所述各虛機內(nèi)的虛機性能代理互動,從所述虛機取得數(shù)據(jù),且所述虛機性能代理通過所述系統(tǒng)內(nèi)部資源監(jiān)視器,監(jiān)視虛擬資源;其次,通過所述系統(tǒng)外部資源監(jiān)視器監(jiān)視虛機,并將該虛機作為一個進程,獲得該進程的性能,以配合所述虛機性能代理所得的數(shù)據(jù),判斷所述虛機是否滿足性能請求。在述的基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu)中,所述系統(tǒng)內(nèi)部資源監(jiān)視器是基于性能監(jiān)視基礎(chǔ)工具按時間提取兩次相對性能數(shù)據(jù)相減而得的;所述系統(tǒng)內(nèi)部資源監(jiān)視器監(jiān)視的虛擬資源包括CPU資源、內(nèi)存資源、IO資源、緩存資源和網(wǎng)絡(luò)資源,其中所述CPU資源包括通過操作系統(tǒng)性能指令取得的CPU用來處理用戶狀態(tài)進程的時間總數(shù)、CPU用來處理內(nèi)核狀態(tài)進程的時間總數(shù)、CPU空閑的時間總數(shù)、CPU處理的硬中斷總數(shù)和CPU處理的軟中斷總數(shù);所述內(nèi)存資源包括通過操作系統(tǒng)性能指令取得的全部內(nèi)存、自由內(nèi)存、共享內(nèi)存和緩沖內(nèi)存的信息;所述IO資源包括通過操作系統(tǒng)性能指令取得的一個或多個進程的IO讀寫量;所述緩存資源包括通過所述性能監(jiān)視基礎(chǔ)工具取得的緩存、TLB miss和hit的數(shù)據(jù);所述網(wǎng)絡(luò)資源包括通過操作系統(tǒng)性能指令取得的網(wǎng)絡(luò)狀態(tài)中的網(wǎng)絡(luò)流量。在述的基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu)中,所述系統(tǒng)外部資源監(jiān)視器是基于性能監(jiān)視基礎(chǔ)工具按時間提取兩次相對性能數(shù)據(jù)相減而得的;所述系統(tǒng)外部資源監(jiān)視器監(jiān)視的空間包括用戶空間和客戶空間,其中監(jiān)視用戶空間包括通過操作系統(tǒng)性能指令,取得所述進程在用戶空間的CPU使用數(shù)據(jù)、緩存使用數(shù)據(jù)和TLB miss數(shù)據(jù);監(jiān)視客戶空間包括通過操作系統(tǒng)性能指令,取得所述進程在用戶空間的CPU使用數(shù)據(jù)、緩存使用數(shù)據(jù)和TLB miss數(shù)據(jù),并觀察所述虛機的CPU運行數(shù)據(jù)是否超過所述閥值, 以使用操作系統(tǒng)其它指令對該虛機的CPU占用率加以控制。在述的基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu)中,所述架構(gòu)還包括所述監(jiān)視庫的繼承組件,所述監(jiān)視庫及其繼承組件以及所述主控主機內(nèi)的主機性能監(jiān)視器構(gòu)成一下層構(gòu)架,其中所述監(jiān)視庫為最高層的類,其繼承組件為監(jiān)視器,所述監(jiān)視器被所述主機性能監(jiān)視器所繼承,且該主機性能監(jiān)視器分別被所述內(nèi)核空間監(jiān)視器、用戶空間監(jiān)視器和虛機性能代理所繼承;所述每個監(jiān)視器是至少一個監(jiān)視對象的集合,所述每個監(jiān)視對象是至少一個事件的集合,所述每個事件表示一個原子的監(jiān)視事件。在述的基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu)中,所述監(jiān)視庫用于為所有要監(jiān)視資源的進程都創(chuàng)建一個監(jiān)視器,并將該監(jiān)視器加載在監(jiān)視庫中;當(dāng)所述監(jiān)視庫進程開始時,為所有的監(jiān)視器將所述性能監(jiān)視基礎(chǔ)工具可以監(jiān)視的資源分解成為原子資源,然后進行監(jiān)視,并把資源監(jiān)視信息分派給所述各個監(jiān)視器;當(dāng)所述性能監(jiān)視基礎(chǔ)工具監(jiān)測到 CPU有中斷溢出,則將異常情況通知所述監(jiān)視器;所述監(jiān)視庫還用于增加或刪除監(jiān)視器。在述的基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu)中,所述監(jiān)視器用于保存設(shè)置、載入設(shè)置,增加或刪除所述監(jiān)視對象,開始或停止所述監(jiān)視對象以及刷新、保存監(jiān)視信肩、ο在述的基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu)中,所述監(jiān)視對象根據(jù)配置文件的配置創(chuàng)建,且該配置文件包括所述性能監(jiān)視基礎(chǔ)工具能夠監(jiān)視的對象。在述的基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu)中,如果所述性能監(jiān)視基礎(chǔ)工具是基于一次事件進行監(jiān)視的,則該性能監(jiān)視基礎(chǔ)工具的閥值=最大值-1 ;如果所述性能監(jiān)視基礎(chǔ)工具是基于η次事件進行監(jiān)視的,則該性能監(jiān)視基礎(chǔ)工具的閥值=最大值-η,其中,η為大于1的自然數(shù);如果所述性能監(jiān)視基礎(chǔ)工具是基于事件概率進行監(jiān)視的,則該性能監(jiān)視基礎(chǔ)工具的閥值=最大值_η個事件的隨機數(shù);如果所述性能監(jiān)視基礎(chǔ)工具是基于某時間內(nèi)的事件數(shù)進行監(jiān)視的,則統(tǒng)計該性能監(jiān)視基礎(chǔ)工具向CPU觸發(fā)的事件數(shù),當(dāng)時鐘向CPU觸發(fā)事件,則回報各時段總共事件數(shù);如果所述性能監(jiān)視基礎(chǔ)工具是基于η種事件進行監(jiān)視的,則在各時段i里(i = 1, ...η),該性能監(jiān)視基礎(chǔ)工具統(tǒng)計向CPU觸發(fā)的事件i的數(shù)目,且同種事件在各時段的總和乘以η即為需要回報的結(jié)果;如果所述性能監(jiān)視基礎(chǔ)工具是基于資源使用率進行監(jiān)視的,則時間Tl和時間Τ2 之間的使用率=N/((T2-T1) XCPU被中斷的次數(shù)),其中,N是統(tǒng)計指令總數(shù)。本發(fā)明之二所述的一種基于上述的基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu)的監(jiān)視方法,該方法包括以下步驟首先,管理員通過圖形界面或用戶應(yīng)用程序通過所述性能監(jiān)視器應(yīng)用接口,向所述策略管理器做性能調(diào)整請求;然后,當(dāng)所述策略管理器解釋所述性能調(diào)整請求后,指示所述工作負(fù)荷調(diào)整器向所述主控主機的主機性能監(jiān)視器要求經(jīng)過所述網(wǎng)絡(luò)管道回報所述各從屬主機資源的性能狀況;最后,由所述策略管理器向所述用戶應(yīng)用程序或管理員回報性能狀況。由于采用了上述的技術(shù)解決方案,本發(fā)明能監(jiān)視至少一個集群的性能,且該集群包含至少一個主機(該主機運行至少一個虛擬機),因此,本發(fā)明也能監(jiān)視主機的性能。本發(fā)明為企業(yè)和云計算供應(yīng)商提供了一種監(jiān)視虛擬化系統(tǒng)性能的架構(gòu)及方法,本發(fā)明并不在 PMU本身,其原理是基于硬件的基礎(chǔ)工具來監(jiān)視,調(diào)用性能監(jiān)視基礎(chǔ)工具應(yīng)用接口來實現(xiàn)這一方法,建構(gòu)出一個性能監(jiān)視器(一個軟件)。管理員可以透過圖形界面與這個監(jiān)視器互動,但其它的應(yīng)用軟件也可以利用這個監(jiān)視器所提供的應(yīng)用接口與之互動;例如調(diào)整虛擬與物理資源的應(yīng)用軟件可以調(diào)用監(jiān)視器的接口,取得整體集群的忙閑概念,然后調(diào)整資源。
圖Ia是本發(fā)明之一的一種基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu)的結(jié)構(gòu)框圖;圖Ib是本發(fā)明之一的一種基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu)中的上層構(gòu)架類圖;圖2是本發(fā)明之一的一種基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu)中的策略管理器的工作流程圖;圖3a是本發(fā)明之一的一種基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu)中的工作負(fù)荷調(diào)整器的工作流程圖;圖3b是本發(fā)明之一的一種基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu)中的工作負(fù)荷調(diào)整器的狀態(tài)圖;圖4是本發(fā)明之一的一種基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu)中的主機性能監(jiān)視器的工作流程圖;圖5a是本發(fā)明之一的一種基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu)中的系統(tǒng)內(nèi)部資源監(jiān)視器的工作流程圖;圖5b是本發(fā)明之一的一種基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu)中的系統(tǒng)外部資源監(jiān)視器的工作流程圖6是本發(fā)明之一的一種基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu)中的下層構(gòu)架類圖;圖7是本發(fā)明之一的一種基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu)中的監(jiān)視庫的工作流程圖;圖8是本發(fā)明之一的一種基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu)中的監(jiān)視器的工作流程圖;圖9是本發(fā)明之一的一種基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu)中的監(jiān)視對象的工作流程圖;圖10是本發(fā)明之一的一種基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu)中的事件執(zhí)行流程圖。
具體實施例方式下面結(jié)合附圖,對本發(fā)明的具體實施例進行詳細(xì)說明。本發(fā)明之一的一個實施例包含多個集群,每個集群又包含多個主機,每個主機有多個虛機。集群與集群之間可以是分布式、集中式、或混合式通訊。主機與主機之間經(jīng)由以主控主機為首,以從屬主機為輔的通訊管道(net pipe,例如TCP/IP)連接。主機與虛機之間是利用虛擬串口(virtual serial port)通道連接。所謂串口通道,就是虛擬機把此“通道(其實是個客戶操作系統(tǒng)調(diào)用)”當(dāng)成一個虛擬串口,而在內(nèi)核空間經(jīng)過Hypervisor運行的系統(tǒng)調(diào)用對此串口傳送數(shù)據(jù),速度快,因而不必走慢速的網(wǎng)絡(luò)通道。請參閱圖la,圖中示出了本發(fā)明之一的一實施例的組成框圖。本發(fā)明的架構(gòu)包括至少一個主控主機11和至少一個從屬主機12,每個主控主機11通過網(wǎng)絡(luò)管道13與至少一個從屬主機12連接,以形成一個集群,多個主控主機11與其各自的從屬主機12形成多個集群,且集群與集群之間通過集中式、分布式或混合式通訊方式通訊,即本實施例的服務(wù)器雖有類似服務(wù)器集群的主從之分,但實際的架構(gòu)可以是集中式或分布式的服務(wù)器聯(lián)邦,也就是說,主控主機11可以掌控至少一個局部的(分布式聯(lián)邦)或全局的(集中式聯(lián)邦)從屬主機12。每個主控主機11包括用戶空間組件111、客戶空間組件112、內(nèi)核空間組件113和硬件114,其中,用戶空間組件111包括依次連接的策略管理器1111、工作負(fù)荷調(diào)整器1112、監(jiān)視庫1113和主機性能監(jiān)視器1114,主機性能監(jiān)視器1114還與工作負(fù)荷調(diào)整器1112連接,且該主機性能監(jiān)視器1114包括用戶空間監(jiān)視器11141和在內(nèi)核空間運行的內(nèi)核空間監(jiān)視器 11142,這種主機性能監(jiān)視器1114也存在于所有虛擬化系統(tǒng)中的其它主機中,例如從屬主機12中;客戶空間組件112包括至少一個通過內(nèi)核串口通道1131與主機性能監(jiān)視器1114 連接的虛機1121,即Hypervisor上運行至少一個虛機,且虛機1121包括用于收集虛機資源的性能的虛機性能代理11211 ;內(nèi)核空間組件113包括依次與監(jiān)視庫1113連接的性能監(jiān)視基礎(chǔ)工具應(yīng)用接口 1132和性能監(jiān)視基礎(chǔ)工具核心代碼模塊1133,還包括任務(wù)調(diào)度器1134、內(nèi)存管理器1135、 網(wǎng)絡(luò)驅(qū)動1136、文件系統(tǒng)1137和設(shè)備驅(qū)動1138等其它內(nèi)核組件,且網(wǎng)絡(luò)驅(qū)動1136與工作負(fù)荷調(diào)整器1112連接;有的操作系統(tǒng)虛擬化的技術(shù)如Xen把這些“其它內(nèi)核組件”修改為 Hypervisor, Linux KVM的技術(shù)則是在這些組件之外,另有Hypervisor ;硬件114支持外圍的性能監(jiān)視基礎(chǔ)工具,硬件114包括與性能監(jiān)視基礎(chǔ)工具核心代碼模塊1133連接的PMU 1141、分別與該PMU 1141連接的PMD 1143和PMC 1142,還包括 CPU 1144、內(nèi)存1145、網(wǎng)卡1146、硬盤1147和其他設(shè)備1148,且網(wǎng)卡1146與網(wǎng)絡(luò)驅(qū)動1136 連接;從屬主機12包括主機性能監(jiān)視器1114和虛機性能代理(圖中未示)等,且該主機性能監(jiān)視器1114與網(wǎng)卡1146連接。下面基于上述的基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能架構(gòu),對本發(fā)明之二的一種基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的方法進行描述,本方法包括以下步驟首先,管理員通過圖形界面或用戶應(yīng)用程序通過性能監(jiān)視器應(yīng)用接口 1132,向策略管理器1111做性能調(diào)整請求;然后,當(dāng)策略管理器1111解釋性能調(diào)整請求后,指示工作負(fù)荷調(diào)整器1112向主控主機11的主機性能監(jiān)視器1114要求經(jīng)過網(wǎng)絡(luò)管道13回報各從屬主機12資源的性能狀況;最后,由策略管理器1111向用戶應(yīng)用程序或管理員回報性能狀況。上述的策略管理器1111和工作負(fù)荷調(diào)整器1112的技術(shù)細(xì)節(jié)在王彥新等人的申請?zhí)枮?01010183844. 6的專利《通過總線架構(gòu)構(gòu)建虛擬機監(jiān)視器的方法及性能服務(wù)框架》中也有詳細(xì)揭示。本發(fā)明是從基于基礎(chǔ)監(jiān)視工具PMU的角度在以下的實施例中闡述這兩個組件。具體來說,有關(guān)性能的請求或詢問,是從用戶而來,經(jīng)過策略管理器1111進入虛擬化系統(tǒng)。請求大致有以下三類(1)大部分的監(jiān)視數(shù)據(jù)是有關(guān)資源忙閑狀態(tài),也就是對于CPU、內(nèi)存、10、網(wǎng)絡(luò)等資源的監(jiān)視數(shù)據(jù),可以從“操作系統(tǒng)的性能指令”獲得。但是要在何時開始,何時結(jié)束監(jiān)視,監(jiān)視事件要如何設(shè)置,則必須由“性能監(jiān)視基礎(chǔ)工具”(例如PMU)來控制。換句話說,是操作系統(tǒng)性能指令與性能監(jiān)視基礎(chǔ)工具的結(jié)合。(2)另外的監(jiān)視數(shù)據(jù)是有關(guān)資源健康狀態(tài),也就是有關(guān)緩存和TLB miss的數(shù)據(jù), 或有關(guān)某資源停止工作的信息。這類數(shù)據(jù)無法從操作系統(tǒng)的性能指令獲得,只能依賴性能監(jiān)視基礎(chǔ)工具(例如PMU)。也就是說,性能監(jiān)視基礎(chǔ)工具單獨被使用;(3)混合忙閑狀態(tài)和健康狀態(tài),譬如進程的監(jiān)視也只能依賴性能監(jiān)視基礎(chǔ)工具 (例如PMU),但所得的監(jiān)視數(shù)據(jù)混合了忙閑狀態(tài)和健康狀態(tài)。因此,為了實現(xiàn)上述功能,本發(fā)明具有兩大特征(1)能夠監(jiān)視虛機性能;(2)利用基于硬件的性能監(jiān)視基礎(chǔ)工具(雖然實施例使用PMU作為基礎(chǔ)性能工具,但也可以使用其它非PMU的工具),包含利用基于時間取樣或基于事件取樣的方法。上述的兩個特征可以從“架構(gòu)”的角度加以闡述,即本發(fā)明包含上、下兩層性能監(jiān)視架構(gòu)。下面對上層架構(gòu)進行概述上層架構(gòu)是一個涵蓋整個“虛擬化系統(tǒng)”網(wǎng)絡(luò)拓?fù)涞拿嫦驅(qū)ο蟮臉錉罱Y(jié)構(gòu)類圖,以策略管理器為“始祖”類,被工作負(fù)荷調(diào)整器繼承,工作負(fù)荷調(diào)整器又為主機性能監(jiān)視器繼承,虛機性能監(jiān)視器,主機性能監(jiān)視器最后被系統(tǒng)內(nèi)部、外部資源監(jiān)視器繼承。系統(tǒng)內(nèi)部、外部資源監(jiān)視器利用操作系統(tǒng)性能指令來捕獲數(shù)據(jù),并利用性能監(jiān)視基礎(chǔ)工具的基于時間和基于事件的監(jiān)視(注意虛機的性能是結(jié)合虛機系統(tǒng)內(nèi)、外部監(jiān)視的數(shù)據(jù)而得的。所以,系統(tǒng)內(nèi)、外部資源監(jiān)視是本發(fā)明的第一大特征,即本發(fā)明的虛擬化系統(tǒng)中包括系統(tǒng)內(nèi)部資源監(jiān)視器以及系統(tǒng)外部資源監(jiān)視器)。請參閱圖lb,圖中示出了上層架構(gòu)類圖,或說是策略管理器1111及其繼承組件的 “面向?qū)ο蟆惫こ填悎D,具體來說,策略管理器1111、工作負(fù)荷調(diào)整器1112和主控主機內(nèi)的主機性能監(jiān)視器1114構(gòu)成了上層構(gòu)架,由圖可知,其中最高層的類是策略管理器1111,每個策略管理器1111是至少一個工作負(fù)荷調(diào)整器1112的集合(以令——表示,靠近 端的是集合,另一端的是集合中的成員);每個工作負(fù)荷調(diào)整器1112是至少一個主機性能監(jiān)視器1114的集合;每個主機性能監(jiān)視器1114是至少一個資源監(jiān)視器0106(例如用戶空間監(jiān)視器 11141和內(nèi)核空間監(jiān)視器11142)和虛機性能代理11211的集合;最主要的類是主機性能監(jiān)視器1114,它是所有用戶空間監(jiān)視器11141、內(nèi)核空間監(jiān)視器11142和虛機性能代理11211的基類,并分別被系統(tǒng)內(nèi)部資源監(jiān)視器104以及系統(tǒng)外部資源監(jiān)視器105所繼承(以<——表示,靠近<端的是被繼承類,另一端是繼承類)。由此可見,主機性能監(jiān)視器1114可以是一個集合,可以包含至少一個集合里的成員。主機性能監(jiān)視器1114又是一個監(jiān)視功能的抽象概念,所有繼承這個基類的系統(tǒng)內(nèi)部資源監(jiān)視器104、系統(tǒng)外部資源監(jiān)視器105等類,或多或少都有同樣的主機監(jiān)視資源性能的功能。而主機性能監(jiān)視器1114這個集合理的成員,也具有這些內(nèi)部外部監(jiān)視功能。請參閱圖2,圖中示出了本發(fā)明之一的策略管理器1111的工作流程圖??偟膩碚f,策略管理器用于解釋用戶策略請求,列舉CPU、內(nèi)存、網(wǎng)絡(luò)、10、緩存所要達(dá)成的條件,并將用戶策略請求區(qū)分為高、中、低等級,以及解釋后PMU的事件設(shè)置信息,向工作負(fù)荷調(diào)整器1112傳送策略,并在收集虛擬化系統(tǒng)資源信息后,返回資源地址和狀況; 當(dāng)一個集群中的主控主機11無法滿足該用戶策略請求,策略管理器1111根據(jù)詢問集群的策略,同時或按優(yōu)先次序詢問該集群以外的其它集群中的主控主機的策略管理器1111,以滿足該用戶策略請求;即如果本地集群中沒有滿足請求的資源,策略管理器1111經(jīng)過網(wǎng)絡(luò)管道13通訊(如tcp/ip)向其它集群的主控主機11的策略管理器1111查詢那個集群中有否符合該請求的資源,至于查詢的優(yōu)先順序,或按序或同時查詢,要看策略庫中這方面的策略的規(guī)定,這些規(guī)定涉及集群管理的方式,例如集中式(centralized clusters),分布式 (distributed clusters),或混合式(mixed clusters)的管理。策略管理器1111的具體工作流程如下步驟201,進行策略管理器1111的初始化;步驟202,判斷操作是否為接受策略請求;如是,轉(zhuǎn)入步驟203,否則轉(zhuǎn)入步驟 204 ;步驟203,解釋策略請求,列舉CPU、內(nèi)存、網(wǎng)絡(luò)、10、緩存所要達(dá)成的條件(例如高、 中或低),然后轉(zhuǎn)入步驟212;步驟204,判斷操作是否為傳達(dá)策略請求;如是,轉(zhuǎn)入步驟205,否則轉(zhuǎn)入步驟 208 ;步驟205,向工作負(fù)荷調(diào)整器1112傳送策略,然后轉(zhuǎn)入步驟206 ;
步驟206,工作負(fù)荷調(diào)整器1112經(jīng)過網(wǎng)絡(luò)管道13通訊(如tcp/ip)向各主機查詢符合該條件的資源,然后轉(zhuǎn)入步驟207 ;步驟207,對符合條件的資源實施策略,然后轉(zhuǎn)入步驟212 ;步驟208,判斷操作是否為回應(yīng)策略請求;如是,轉(zhuǎn)入步驟209,否則轉(zhuǎn)入步驟 213 ;步驟209,判斷工作負(fù)荷調(diào)整器1112回報集群中是否有主機滿足請求;如是,轉(zhuǎn)入步驟211,否則轉(zhuǎn)入步驟210 ;步驟210,策略管理器1111經(jīng)過網(wǎng)絡(luò)管道13通訊(如tcp/ip)向其它集群的主控主機11的策略管理器1111查詢那個集群中有否符合該請求的資源,然后轉(zhuǎn)入步驟212 ;步驟211,返回資源地址和狀況,然后轉(zhuǎn)入步驟212 ;步驟212,正常返回;步驟213,錯誤返回。請參閱圖3a,圖中示出了本發(fā)明之一的工作負(fù)荷調(diào)整器1112的工作流程圖??偟膩碚f,工作負(fù)荷調(diào)整器1112從策略管理器1111獲得策略請求,經(jīng)由網(wǎng)絡(luò)管道 13收集虛擬化系統(tǒng)中所在的集群內(nèi)各從屬主機12的資源性能數(shù)據(jù);并且根據(jù)性能數(shù)據(jù)整理集群整體性能,負(fù)責(zé)對各從屬主機12資源進行策略實施,譬如增刪主機,增刪虛機資源, 進行異常發(fā)現(xiàn)和處理。工作負(fù)荷調(diào)整器1112的具體工作流程如下步驟301,工作負(fù)荷調(diào)整器1112初始化,包括啟動監(jiān)視庫1113 ;監(jiān)視庫1113啟動后,(1)工作負(fù)荷調(diào)整器1112將PMU的事件設(shè)置信息適時傳給監(jiān)視庫1113,例如PMC的事件定義設(shè)置以及監(jiān)視時長設(shè)置,以收集資源的信息;(2)所有的監(jiān)視器、監(jiān)視對象、事件都因需要創(chuàng)建,創(chuàng)建時根據(jù)監(jiān)視庫1113已知的設(shè)置信息來設(shè)置PMU ;步驟302,判斷策略是否處理資源調(diào)整請求;如是,轉(zhuǎn)入步驟303,否則轉(zhuǎn)入步驟 308 ;步驟303,判斷操作是否全部主機性能監(jiān)視器1114都問過;如是,轉(zhuǎn)入步驟304,否則轉(zhuǎn)入步驟307 ;步驟304,經(jīng)由網(wǎng)絡(luò)通道13詢問下一個主機的主機性能監(jiān)視器1114,然后轉(zhuǎn)入步驟 305 ;步驟305,判斷是否可以滿足該資源請求;如是,轉(zhuǎn)入步驟306,否則轉(zhuǎn)入步驟 303 ;步驟306,主機性能監(jiān)視器1114處理調(diào)整資源的請求,然后轉(zhuǎn)入步驟303 ;步驟307,在主控主機11上的工作負(fù)荷調(diào)整器1112收集其所關(guān)心的數(shù)據(jù),整理后了解其它集群中各主機情況和集群整體情況,因而可以回報滿足請求的主機(例如兩臺最空閑的主機),或回報無主機滿足該資源請求,然而轉(zhuǎn)入步驟318 ;步驟308,判斷策略是否為增加刪除主機;如是,轉(zhuǎn)入步驟309,否則轉(zhuǎn)入步驟 310 ;步驟309,工作負(fù)荷調(diào)整器1112增加/刪除主機,然后轉(zhuǎn)入步驟318 ;步驟310,判斷策略是否為加刪除虛機資源;如是,轉(zhuǎn)入步驟311,否則轉(zhuǎn)入步驟 313 ;
步驟311,工作負(fù)荷調(diào)整器1112經(jīng)主機性能監(jiān)視器1114通知虛機性能代理 11211,然后轉(zhuǎn)入步驟312 ;步驟312,虛機性能代理11211增加/刪除虛機資源,然后轉(zhuǎn)入步驟318 ;步驟313,判斷策略是否為異常發(fā)現(xiàn)和處理;如是,轉(zhuǎn)入步驟314,否則轉(zhuǎn)入步驟 319 ;步驟314,判斷是否某資源從繁忙進入不工作狀態(tài);如是,轉(zhuǎn)入步驟315,否則重復(fù)步驟314 ;步驟315,虛機性能代理11211發(fā)現(xiàn)虛機資源異常,或主機性能監(jiān)視器1114的用戶部分發(fā)現(xiàn)主機應(yīng)用異常,或內(nèi)核部分發(fā)現(xiàn)內(nèi)核狀態(tài)異常;然后轉(zhuǎn)入步驟316 ;步驟316,經(jīng)主機性能監(jiān)視器1114通知工作負(fù)荷調(diào)整器1112該資源的異常情況, 然后轉(zhuǎn)入步驟317;步驟317,策略管理器1111根據(jù)該異常信息來處理異常情況,然后轉(zhuǎn)入步驟318 ;步驟318,正常返回;步驟319,錯誤返回。請參閱圖3b,圖中示出了本發(fā)明之一的工作負(fù)荷調(diào)整器1112的狀態(tài)圖。工作負(fù)荷調(diào)整器1112收集到的資源性能數(shù)據(jù)用于判斷從屬主機12資源的忙閑狀態(tài),而狀態(tài)的改變也主動的顯示了發(fā)生異常和恢復(fù)正常的健康情況。工作負(fù)荷調(diào)整器1112 還根據(jù)收集的主控主機11所在的集群中各從屬主機12的性能數(shù)據(jù)整理集群整體性能。主機資源狀態(tài)具體包括資源閑的狀態(tài)31、資源忙的狀態(tài)32和資源不工作的狀態(tài)33。如果性能數(shù)據(jù)超過預(yù)設(shè)閥值,則狀態(tài)從資源閑變?yōu)橘Y源忙;如果性能數(shù)據(jù)低于閥值,則狀態(tài)從資源忙變?yōu)橘Y源閑;如果狀態(tài)從資源忙變?yōu)橘Y源不工作,則有異常發(fā)生;如果狀態(tài)從資源不工作變?yōu)橘Y源忙,則資源恢復(fù)正常。請參閱圖4,圖中示出了本發(fā)明之一的主機性能監(jiān)視器1114的工作流程圖。總的來說,主機性能監(jiān)視器1114負(fù)責(zé)監(jiān)視用戶空間資源(即應(yīng)用進程)、客戶空間 (即虛機)資源和主機內(nèi)核空間資源,并負(fù)責(zé)主機內(nèi)核空間監(jiān)視器11142的啟動、配置和結(jié)束,其中監(jiān)視用戶空間,即使用系統(tǒng)外部資源監(jiān)視器105,監(jiān)視用戶空間所有進程性能信息;監(jiān)視內(nèi)核空間,即包括啟動、配置和結(jié)束內(nèi)核空間監(jiān)視器11142,并透過系統(tǒng)內(nèi)部資源監(jiān)視器104,執(zhí)行系統(tǒng)內(nèi)部資源監(jiān)視;監(jiān)視客戶空間,即首先,通過Hypervisor內(nèi)部的內(nèi)核串口通道1131,與運行在各虛機1121內(nèi)的虛機性能代理11211互動,從虛機1121取得數(shù)據(jù),且虛機性能代理11211 通過系統(tǒng)內(nèi)部資源監(jiān)視器104,監(jiān)視虛擬資源;其次,通過系統(tǒng)外部資源監(jiān)視器105從 Hypervisor監(jiān)視虛機1121,并將該虛機1121作為一個進程,獲得該進程的性能,以配合虛機性能代理11211所得的數(shù)據(jù),判斷虛機1121是否滿足性能請求。主機性能監(jiān)視器1114的具體工作流程如下步驟401,主機性能監(jiān)視器1114初始化,然后轉(zhuǎn)入步驟402 ;步驟402,判斷操作是否為監(jiān)視用戶空間;如是,轉(zhuǎn)入步驟403,否則轉(zhuǎn)入步驟 404 ;
步驟0403,進入用戶空間監(jiān)視器11141,每隔一定時間從系統(tǒng)外部資源監(jiān)視器105 收集所關(guān)心的用戶空間所有進程性能信息,然后轉(zhuǎn)入步驟416 ;步驟404,判斷操作是否為管理內(nèi)核空間監(jiān)視器11142 ;如是,轉(zhuǎn)入步驟405,否則轉(zhuǎn)入步驟406 ; 步驟405,啟動、配置、結(jié)束內(nèi)核空間監(jiān)視器11142,然后轉(zhuǎn)入步驟416 ;步驟406,判斷操作是否為監(jiān)視內(nèi)核空間;如是,轉(zhuǎn)入步驟407,否則轉(zhuǎn)入步驟 408 ;步驟407,利用系統(tǒng)內(nèi)部資源監(jiān)視器104執(zhí)行內(nèi)核資源CPU、內(nèi)存、10、網(wǎng)絡(luò)、緩存的監(jiān)視,然后轉(zhuǎn)入步驟416;步驟408,判斷操作是否為監(jiān)視本機全部虛機1121資源;如是,轉(zhuǎn)入步驟409,否則轉(zhuǎn)入步驟417 ;步驟409,開始進入內(nèi)核空間監(jiān)視器11142,判斷是否全部虛機性能代理11211都問過;如是,轉(zhuǎn)入步驟415,否則轉(zhuǎn)入步驟410 ;步驟410,經(jīng)由內(nèi)核串口通道1131詢問下一個虛機性能代理11211,然后轉(zhuǎn)入步驟 411 ;步驟411,虛機性能代理11211利用系統(tǒng)內(nèi)部資源監(jiān)視器104監(jiān)視CPU、內(nèi)存、10、 網(wǎng)絡(luò)等資源,然后轉(zhuǎn)入步驟412 ;步驟412,系統(tǒng)外資源監(jiān)視器105把虛機1121當(dāng)成進程來監(jiān)視,然后轉(zhuǎn)入步驟 413 ;步驟413,綜合虛機1121內(nèi)部與外部的監(jiān)視信息處理調(diào)整資源的請求,然后轉(zhuǎn)入步驟414 ;步驟414,回報本虛機1121是否可以滿足該資源的請求,然后轉(zhuǎn)入步驟409 ;步驟415,主機性能監(jiān)視器1114收集其所關(guān)心的數(shù)據(jù),整理后了解客戶空間中各虛機1121情況和虛機1121整體情況,因而可以回報滿足請求的虛機1121 (例如兩臺最空閑的虛機1121),或回報無虛機1121滿足該資源請求,然后轉(zhuǎn)入步驟416 ;步驟0416,正常返回;步驟0417,錯誤返回。請參閱圖5a,圖中示出了本發(fā)明之一的系統(tǒng)內(nèi)部資源監(jiān)視器104的工作流程圖。本實施例僅以Linux的操作系統(tǒng)性能指令為例,但所監(jiān)視的Hypervisor操作系統(tǒng)可以是其它操作系統(tǒng),例如IBM AIX、z-0S或太陽的SunOS。系統(tǒng)內(nèi)部資源監(jiān)視器104提供了 CPU、內(nèi)存、10、網(wǎng)絡(luò)、緩存的性能數(shù)據(jù)。它提供了主機內(nèi)核空間的監(jiān)視以及虛機性能代理 11211對虛機1121內(nèi)部的監(jiān)視。對PMU而言,差別是虛機性能代理11211無法使用內(nèi)核級別的取樣和內(nèi)核級別的多事件的事件集(event set)。由于非內(nèi)核級別的監(jiān)視會有較大的資源消耗(例如較多的內(nèi)容交換,即context switch),這對虛機1121的監(jiān)視精確度有影響。系統(tǒng)內(nèi)部資源監(jiān)視器104是基于性能監(jiān)視基礎(chǔ)工具按時間提取兩次相對性能數(shù)據(jù)相減而得的;系統(tǒng)內(nèi)部資源監(jiān)視器104監(jiān)視的虛擬資源包括CPU資源、內(nèi)存資源、IO資源、緩存資源和網(wǎng)絡(luò)資源,其中CPU資源包括通過操作系統(tǒng)性能指令取得的CPU用來處理用戶狀態(tài)進程的時間總數(shù)、CPU用來處理內(nèi)核狀態(tài)進程的時間總數(shù)、CPU空閑的時間總數(shù)、CPU處理的硬中斷總數(shù)和 CPU處理的軟中斷總數(shù);內(nèi)存資源包括通過操作系統(tǒng)性能指令取得的全部內(nèi)存、自由內(nèi)存、共享內(nèi)存和緩沖內(nèi)存的信息;IO資源包括通過操作系統(tǒng)性能指令取得的一個或多個進程的IO讀寫量;緩存資源包括通過所述性能監(jiān)視基礎(chǔ)工具取得的緩存、TLB miss和hit的數(shù)據(jù);網(wǎng)絡(luò)資源包括通過操作系統(tǒng)性能指令取得的網(wǎng)絡(luò)狀態(tài)中的網(wǎng)絡(luò)流量。系統(tǒng)內(nèi)部資源監(jiān)視器104的具體工作流程如下步驟501,系統(tǒng)內(nèi)部資源監(jiān)視器104初始化,然后轉(zhuǎn)入步驟502 ;步驟502,判斷操作是否為監(jiān)視CPU ;如是,轉(zhuǎn)入步驟503,否則轉(zhuǎn)入步驟506 ;步驟503,設(shè)定監(jiān)視起始時間Tl,從Cpu_uSage_State取得CPU用來處理用戶狀態(tài)進程的時間總數(shù)、CPU用來處理內(nèi)核狀態(tài)進程的時間總數(shù)、CPU空閑的時間總數(shù)、CPU處理的硬中斷總數(shù)和CPU處理的軟中斷總數(shù),然后轉(zhuǎn)入步驟504 ;步驟504,判斷是否已達(dá)監(jiān)視終結(jié)時間T2 ;如是,轉(zhuǎn)入步驟0505,否則重復(fù)步驟 504 ;步驟505,取得監(jiān)視終結(jié)時間T2的相對數(shù)據(jù),將監(jiān)視終結(jié)時間T2的數(shù)據(jù)減去監(jiān)視起始時間Tl的數(shù)據(jù),就可以得到在監(jiān)視起始時間Tl —監(jiān)視終結(jié)時間T2這段時間內(nèi)CPU耗在各類進程上的時間數(shù)以及收到的軟中斷、硬中斷數(shù),然后轉(zhuǎn)入步驟518 ;步驟506,判斷操作是否為監(jiān)視內(nèi)存;如是,轉(zhuǎn)入步驟507,否則轉(zhuǎn)入步驟510 ;步驟507,設(shè)定監(jiān)視起始時間Tl,從sysinfo取得各種內(nèi)存totalram、freeram、 sharedram, bufferram等等的信息以及一些關(guān)于進程的信息,然后轉(zhuǎn)入步驟518 ;步驟508,判斷是否已達(dá)監(jiān)視終結(jié)時間T2 ;如是,轉(zhuǎn)入步驟509,否則轉(zhuǎn)入步驟 508 ;步驟509,取得監(jiān)視終結(jié)時間T2的相對數(shù)據(jù),將監(jiān)視終結(jié)時間T2的數(shù)據(jù)減去監(jiān)視起始時間Tl的數(shù)據(jù),就可以得到在監(jiān)視起始時間Tl —監(jiān)視終結(jié)時間T2這段時間內(nèi)內(nèi)存的使用情況,然后轉(zhuǎn)入步驟518;步驟510,判斷操作是否監(jiān)視IO ;如是,轉(zhuǎn)入步驟509,否則轉(zhuǎn)入步驟513 ;步驟511,監(jiān)視10,然后轉(zhuǎn)入步驟512 ;步驟512,每隔一定時間,收集一個或多個進程的IO讀寫量,加以匯總,然后轉(zhuǎn)入步驟518 ;步驟513,判斷操作是否監(jiān)視網(wǎng)絡(luò);如是,轉(zhuǎn)入步驟514,否則轉(zhuǎn)入步驟516 ;步驟514,監(jiān)視網(wǎng)絡(luò),然后轉(zhuǎn)入步驟515 ;步驟515,每隔一定時間,解釋Linux指令netstat中TCPEXT的網(wǎng)絡(luò)流量,加以匯總,然后轉(zhuǎn)入步驟518 ;步驟516,判斷操作是否監(jiān)視緩存;如是,轉(zhuǎn)入步驟0517,否則轉(zhuǎn)入步驟519 ;步驟517,透過PMU工具接口取得監(jiān)視緩存結(jié)果,然后轉(zhuǎn)入步驟518 ;步驟518,正常返回;步驟519,錯誤返回。請參閱圖5b,圖中示出了本發(fā)明之一的系統(tǒng)外部資源監(jiān)視器105的工作流程圖。
本實施例僅以Linux的操作系統(tǒng)性能指令為例,但所監(jiān)視的Hypervisor操作系統(tǒng)可以是其它操作系統(tǒng),例如IBM AIX.z-OS或太陽的SunOS。系統(tǒng)外部資源監(jiān)視器105提供了用戶空間和客戶空間的性能數(shù)據(jù);具體來說,它提供了 (1)主機用戶空間的監(jiān)視,主要是監(jiān)視運行在用戶空間的進程。舉例來說,使用 PMU的基礎(chǔ)監(jiān)視工具可以取得每個進程CPU使用數(shù)據(jù)、緩存使用數(shù)據(jù)、和TLB miss數(shù)據(jù)。(2)把虛機當(dāng)成一個進程,從外部監(jiān)視,也就是對客戶空間的監(jiān)視。舉例來說,QEMU 是一種Hypervisor的仿真器,它使用軟件仿真各種CPU (例如x86mainstone)主板。因此, 有的操作系統(tǒng)虛擬化技術(shù)是將虛擬機代碼運行在QEMU仿真器上,而QEMU又可以是在Linux 上運行的一個進程。所以,監(jiān)視所有(QEMU+虛擬機)的進程,取得進程在用戶空間的CPU 使用數(shù)據(jù)、緩存使用數(shù)據(jù)和TLB miss數(shù)據(jù),并觀察虛機的CPU運行數(shù)據(jù)是否超過所述閥值, 以使用操作系統(tǒng)其它指令對該虛機的CPU占用率加以控制,也就是對客戶空間的監(jiān)視。上述虛擬機監(jiān)視,較為簡單,但對于Linux的KVM,QEMU的運行還要涉及客戶空間和內(nèi)核空間的切換,因此要求監(jiān)視數(shù)據(jù)的精確就更復(fù)雜。對于PMU,從外部來監(jiān)視虛機,依然可以使用內(nèi)核級別的取樣和內(nèi)核級別的事件集。而在得知虛擬機運行時超過某個CPU百分比閥值時,還可以用Linux的指令cgroup對該虛機的運行加以限制,這可用來彌補虛機代理不能從內(nèi)部監(jiān)視看到全局的缺陷。系統(tǒng)外部資源監(jiān)視器105是基于性能監(jiān)視基礎(chǔ)工具按時間提取兩次相對性能數(shù)據(jù)相減而得的;系統(tǒng)外部資源監(jiān)視器105的具體工作流程如下步驟520,系統(tǒng)外部資源監(jiān)視器105初始化,然后轉(zhuǎn)入步驟521 ;步驟521,判斷操作是否為監(jiān)視用戶空間;如是,轉(zhuǎn)入步驟522,否則轉(zhuǎn)入步驟 525 ;步驟522,設(shè)定監(jiān)視起始時間Tl,使用PMU工具的API (應(yīng)用程序編程接口)“perf monitor-e cpu,cache, tlb_missing-pid target” 取得進程的 CPU 使用數(shù)據(jù)、緩存使用數(shù)據(jù)和TLB miss數(shù)據(jù),然后轉(zhuǎn)入步驟523 ;步驟523,判斷是否已達(dá)監(jiān)視終結(jié)時間T2 ;如是,轉(zhuǎn)入步驟524,否則重復(fù)步驟 523 ;步驟524,取得監(jiān)視終結(jié)時間T2的相對數(shù)據(jù),將監(jiān)視終結(jié)時間T2的數(shù)據(jù)減去監(jiān)視起始時間Tl的數(shù)據(jù),就可以得到在監(jiān)視起始時間Tl —監(jiān)視終結(jié)時間T2這段時間內(nèi)每個進程的CPU使用數(shù)據(jù)、緩存使用數(shù)據(jù)和TLB miss數(shù)據(jù),然后轉(zhuǎn)入步驟529 ;步驟525,判斷操作是否為監(jiān)視客戶空間;如是,轉(zhuǎn)入步驟0526,否則進行步驟 0530 ;步驟0526,設(shè)定監(jiān)視起始時間Tl,使用PMU工具的API :“perfmonitor-e cpu, cache, tlb_missing-pid target”取得(QEMU+虛擬機)進程的CPU使用數(shù)據(jù)、緩存使用數(shù)據(jù)和TLB miss數(shù)據(jù),然后轉(zhuǎn)入步驟527 ;步驟527,判斷是否已達(dá)監(jiān)視終結(jié)時間T2 ;如是,轉(zhuǎn)入步驟528,否則重復(fù)步驟 527 ;步驟528,取得監(jiān)視終結(jié)時間T2的相對數(shù)據(jù),將監(jiān)視終結(jié)時間T2的數(shù)據(jù)減去監(jiān)視起始時間Tl的數(shù)據(jù),就可以得到在監(jiān)視起始時間Tl —監(jiān)視終結(jié)時間T2這段時間內(nèi)每個 (QEMU+虛機)進程的CPU使用數(shù)據(jù)、緩存使用數(shù)據(jù)和TLB miss數(shù)據(jù);
步驟529,正常返回;步驟530,錯誤返回。下面對下層架構(gòu)進行概述下層架構(gòu)僅在單獨主機上實施。下層架構(gòu)是一個面向?qū)ο蟮臉錉罱Y(jié)構(gòu),“始祖”對象是“監(jiān)視庫”,其它的子孫對象由此繼承,按序為監(jiān)視器、主機性能監(jiān)視器、系統(tǒng)內(nèi)、外部資源監(jiān)視器。監(jiān)視器也是一個集合類,包含至少一個監(jiān)視對象,而一個監(jiān)視對象又包含至少一個事件。事件,可以基于事件取樣和基于時間取樣從性能監(jiān)視基礎(chǔ)工具取得資源的性能數(shù)據(jù),并且使用以下六種方法監(jiān)視監(jiān)視基于一次事件、監(jiān)視基于 η次事件、監(jiān)視基于事件概率、監(jiān)視基于某時間內(nèi)的事件數(shù)、監(jiān)視基于η種事件和監(jiān)視基于資源使用率。所以,事件的細(xì)節(jié)是本發(fā)明的另一大特征。請參閱圖6,圖中示出了下層架構(gòu)類圖,或說是監(jiān)視庫及其繼承組件的“面向?qū)ο蟆?工程類圖。具體來說,監(jiān)視庫1113及其繼承組件以及主控主機11內(nèi)的主機性能監(jiān)視器1114 構(gòu)成一下層構(gòu)架,由圖可知,其中監(jiān)視庫1113為最高層的類,其繼承組件為監(jiān)視器602 ;監(jiān)視器602是最主要的類,它是所有監(jiān)視器的基類,被主機性能監(jiān)視器1114所繼承(以<——表示,靠近<端的是被繼承類,另一端是繼承類);每個監(jiān)視器602是至少一個監(jiān)視對象604的集合(以令——表示,靠近 端的是集合,另一端的是集合中的成員);每個監(jiān)視對象604是至少一個事件605的集合,即包含一個或者多個事件605 ;每個事件605表示一個原子的監(jiān)視事件。由此可見,監(jiān)視器602可以是一個監(jiān)視功能的抽象概念,所有繼承這個基類的主機性能監(jiān)視器1114、虛機性能代理11211等類,或多或少都有同樣的監(jiān)視資源性能的功能, 且監(jiān)視器602又是一個集合,可以包含至少一個集合里的成員。請參閱圖7,圖中示出了本發(fā)明之一的監(jiān)視庫1113的工作流程圖??偟膩碚f,監(jiān)視庫1113負(fù)責(zé)啟動所有監(jiān)視進程,為所有要監(jiān)視資源的進程都創(chuàng)建一個監(jiān)視器602,并將監(jiān)視器602加載在監(jiān)視庫1113中。當(dāng)監(jiān)視庫1113進程開始時,為所有的監(jiān)視器602將性能監(jiān)視基礎(chǔ)工具可以監(jiān)視的資源分解成為可以監(jiān)視的原子資源,然后進行監(jiān)視,并把資源監(jiān)視信息分派給各個監(jiān)視器602。監(jiān)視庫1113也負(fù)責(zé)停止所有監(jiān)視進程,也就是刪除所有監(jiān)視器602,或啟動個別監(jiān)視器602,或刪除個別監(jiān)視器602。當(dāng)性能監(jiān)視基礎(chǔ)工具(即PMU)監(jiān)測到CPU有溢出中斷發(fā)生時,PMU將異常情況通知監(jiān)視器602。監(jiān)視庫1113的具體工作流程如下步驟701,監(jiān)視庫1113初始化,然后轉(zhuǎn)入步驟702 ;步驟702,判斷操作是否為監(jiān)視進程開始運行;如是,轉(zhuǎn)入步驟703,否則轉(zhuǎn)入步驟 705 ;步驟703,為所有要監(jiān)視資源的進程都創(chuàng)建一個監(jiān)視器602加載在該庫中,然后轉(zhuǎn)入步驟704 ;步驟704,監(jiān)視庫1113進程開始,所有監(jiān)視器602都分解性能監(jiān)視基礎(chǔ)工具可以監(jiān)視的原子資源,然后進行監(jiān)視,并把資源監(jiān)視信息分派給各個監(jiān)視器602,然后轉(zhuǎn)入步驟 722 ;步驟705,判斷操作是否為監(jiān)視總進程停止運行;如是,轉(zhuǎn)入步驟706,否則轉(zhuǎn)入步驟 711 ;步驟706,判斷是否所有監(jiān)視器602輪循完畢;如是,轉(zhuǎn)入步驟707,否則轉(zhuǎn)入步驟 708 ;步驟707,監(jiān)視庫1113進程停止,然后轉(zhuǎn)入步驟722 ;步驟708,進入下一個監(jiān)視器602,然后轉(zhuǎn)入步驟709 ;步驟709,結(jié)束監(jiān)視該監(jiān)視器602所有監(jiān)視對象604,然后轉(zhuǎn)入步驟710 ;步驟710,刪除該監(jiān)視器602,然后轉(zhuǎn)入步驟706 ;步驟711,判斷操作是否為添加監(jiān)視器;如是,轉(zhuǎn)入步驟712,否則轉(zhuǎn)入步驟713 ;步驟712,添加監(jiān)視器602,然后轉(zhuǎn)入步驟722 ;步驟713,判斷操作是否刪除監(jiān)視器602 ;如是,轉(zhuǎn)入步驟714,否則轉(zhuǎn)入步驟719 ;步驟714,判斷是否所有監(jiān)視對象604輪循完畢;如是,轉(zhuǎn)入步驟715,否則轉(zhuǎn)入步驟 716 ;步驟715,刪除監(jiān)視器602,然后轉(zhuǎn)入步驟722 ;步驟716,進入下一個監(jiān)視對象604,然后轉(zhuǎn)入步驟717 ;步驟717,結(jié)束該監(jiān)視監(jiān)視對象604,然后轉(zhuǎn)入步驟718 ;步驟718,刪除該監(jiān)視對象604,然后轉(zhuǎn)入步驟714 ;步驟719,判斷操作是否通知監(jiān)視器602 ;如是,轉(zhuǎn)入步驟720,否則轉(zhuǎn)入步驟723 ;步驟720,PMU有溢出中斷發(fā)生,然后轉(zhuǎn)入步驟721 ;步驟721,PMU通知監(jiān)視器602該資源的異常情況,然后轉(zhuǎn)入步驟722 ;步驟722,正常返回;步驟723,錯誤返回。請參閱圖8,圖中示出了本發(fā)明之一的監(jiān)視器602的工作流程圖??偟膩碚f,監(jiān)視器602是一個抽象概念,具有多個監(jiān)視的基本功能,適用于主機性能監(jiān)視器1114、虛機性能代理11211、用戶空間監(jiān)視器11141、內(nèi)核空間監(jiān)視器11142。這些基本功能包含保存設(shè)置、載入設(shè)置、添加監(jiān)視器602的監(jiān)視對象604、刪除監(jiān)視器602的監(jiān)視對象604、開始監(jiān)視所有監(jiān)視對象604、結(jié)束監(jiān)視所有監(jiān)視對象604、保存監(jiān)視數(shù)據(jù)和刷新監(jiān)視數(shù)據(jù)。監(jiān)視器602的具體工作流程如下步驟801,監(jiān)視器602初始化,然后轉(zhuǎn)入步驟802 ;步驟802,判斷操作是否為保存設(shè)置;如是,轉(zhuǎn)入步驟803,否則轉(zhuǎn)入步驟805 ;步驟803,收集當(dāng)前設(shè)置信息,然后轉(zhuǎn)入步驟804 ;步驟804,寫入設(shè)置文件,然后轉(zhuǎn)入步驟826 ;步驟805,判斷操作是否為載入設(shè)置;如是,轉(zhuǎn)入步驟0806,否則轉(zhuǎn)入步驟807 ;步驟806,讀入設(shè)置文件,加載這些設(shè)置,然后轉(zhuǎn)入步驟826 ;步驟807,判斷操作是否為添加監(jiān)視器602的監(jiān)視對象604 ;如是,轉(zhuǎn)入步驟808, 否則轉(zhuǎn)入步驟811 ;步驟808,判斷監(jiān)視器602是否已存在;如是,轉(zhuǎn)入步驟809,否則轉(zhuǎn)入步驟810 ;步驟809,添加該監(jiān)視器602的監(jiān)視對象604,然后轉(zhuǎn)入步驟826 ;步驟810,錯誤返回;
步驟811,判斷操作是否為刪除監(jiān)視器602的監(jiān)視對象604 ;如是,轉(zhuǎn)入步驟812, 否則轉(zhuǎn)入步驟814;步驟812,判斷監(jiān)視器602是否已存在;如是,轉(zhuǎn)入步驟813,否則轉(zhuǎn)入步驟810 ;步驟813,刪除監(jiān)視對象604,然后轉(zhuǎn)入步驟826 ;步驟814,判斷操作是否開始監(jiān)視所有監(jiān)視對象604 ;如是,轉(zhuǎn)入步驟815,否則轉(zhuǎn)入步驟817 ;步驟815,判斷是否全部監(jiān)視對象604都輪循完畢;如是,轉(zhuǎn)入步驟826,否則轉(zhuǎn)入步驟816 ;步驟816,開始該監(jiān)視對象604,然后轉(zhuǎn)入步驟815 ;步驟817,判斷操作是否結(jié)束監(jiān)視所有監(jiān)視對象604 ;如是,轉(zhuǎn)入步驟818,否則轉(zhuǎn)入步驟820 ;步驟818,判斷是否全部監(jiān)視對象604都輪循完畢;如是,轉(zhuǎn)入步驟826,否則轉(zhuǎn)入步驟819 ;步驟819,結(jié)束該監(jiān)視對象604,然后轉(zhuǎn)入步驟818 ;步驟820,判斷操作是否保存監(jiān)視數(shù)據(jù);如是,轉(zhuǎn)入步驟821,否則轉(zhuǎn)入步驟823 ;步驟821,判斷是否保存數(shù)據(jù)時間已到;如是,轉(zhuǎn)入步驟822,否則重復(fù)步驟821 ;步驟822,將監(jiān)視信息寫入文件,然后轉(zhuǎn)入步驟826 ;步驟823,判斷操作是否刷新監(jiān)視數(shù)據(jù);如是,轉(zhuǎn)入步驟824,否則進行步驟827 ;步驟824,判斷是否刷新間隔已到;如是,轉(zhuǎn)入步驟825,否則重復(fù)步驟824 ;步驟825,讀入最新監(jiān)視信息,然后轉(zhuǎn)入步驟826 ;步驟826,正常返回;步驟827,錯誤返回。請參閱圖9,圖中示出了本發(fā)明之一的監(jiān)視對象604的工作流程圖。總的來說,監(jiān)視對象604的最重要的基本功能是創(chuàng)建監(jiān)視對象604,創(chuàng)建時,根據(jù)配置文件的配置創(chuàng)建監(jiān)視對象604 ;該配置文件包含性能監(jiān)視基礎(chǔ)工具能夠監(jiān)對象, 例如CPU、內(nèi)存和緩存等等;監(jiān)視對象604的其它的基本功能包括添加監(jiān)視對象604、刪除監(jiān)視對象604和釋放監(jiān)視對象。監(jiān)視對象604的具體工作流程如下步驟901,監(jiān)視對象604初始化,然后轉(zhuǎn)入步驟902 ;步驟902,判斷操作是否創(chuàng)建監(jiān)視對象604 ;如是,轉(zhuǎn)入步驟903,否則轉(zhuǎn)入步驟 0907 ;步驟903,判斷是否全部默認(rèn)事件605都輪循過;如是,轉(zhuǎn)入步驟904,否則轉(zhuǎn)入步驟 906 ;步驟904,進入下一個事件605,然后轉(zhuǎn)入步驟905 ;步驟905,添加事件605,然后轉(zhuǎn)入步驟903 ;步驟906,根據(jù)配置文件的配置創(chuàng)建監(jiān)視對象604 ;該配置文件包含性能監(jiān)視基礎(chǔ)工具能夠監(jiān)視的對象,例如CPU、內(nèi)存和緩存等等,然后轉(zhuǎn)入步驟917 ;步驟907,判斷操作是否添加事件605 ;如是,轉(zhuǎn)入步驟908,否則轉(zhuǎn)入步驟910 ;步驟908,取得事件605類型和數(shù)值,然后轉(zhuǎn)入步驟909 ;
20
步驟909,創(chuàng)建事件605,然后轉(zhuǎn)入步驟917 ;步驟910,判斷操作是否刪除事件605 ;如是,轉(zhuǎn)入步驟911,否則轉(zhuǎn)入步驟912 ;步驟911,刪除事件605,然后轉(zhuǎn)入步驟917 ;步驟912,判斷操作是否釋放監(jiān)視對象604 ;如是,轉(zhuǎn)入步驟913,否則轉(zhuǎn)入步驟 918 ;步驟913,判斷是否全部事件605都已刪除;如是,轉(zhuǎn)入步驟916,否則轉(zhuǎn)入步驟 914 ;步驟914,進入下一個事件605,然后轉(zhuǎn)入步驟915 ;步驟915,刪除該事件605,然后轉(zhuǎn)入步驟913 ;步驟916,釋放監(jiān)視對象604,然后轉(zhuǎn)入步驟917 ;步驟917,正常返回;步驟918,錯誤返回。請參閱圖10,圖中示出了本發(fā)明之一的事件605的執(zhí)行流程圖??偟膩碚f,監(jiān)視器602使用了基于事件605、基于時間取樣的6種方法(1)基于一次事件605 將PMD閥值設(shè)為最大值減1,如果達(dá)到此值,會觸發(fā)監(jiān)視器 602上報。(2)基于η次事件605 將PMD閥值設(shè)為最大值減η,,其中,η為大于1的自然數(shù), 如果達(dá)到此值,會觸發(fā)監(jiān)視器602上報。(3)基于事件605概率將PMD閥值設(shè)為最大值減η個事件的隨機數(shù),如果達(dá)到此值,會觸發(fā)監(jiān)視器602上報。(4)基于某時間內(nèi)的事件數(shù)累計向CPU觸發(fā)的事件數(shù),直到時鐘達(dá)到某一特定時段,然后回報各時段的總共事件數(shù)。(5)基于多種事件605(假設(shè)有η種事件)在時段1里累計第1種事件的數(shù)目,...,在時段η里累計第η種事件的數(shù)目,在時段η+1里累計第1種事件的數(shù)目,...,在時段2η里累計第η種事件的數(shù)目,在時段(m-1) X η+1里累計第1種事件的數(shù)目,...,在時段mXη里累計第η種事件的數(shù)目,直到時段mXη達(dá)到統(tǒng)計時間,然后把第1種事件在各時段的數(shù)目總和乘以η,...,第η種事件在各時段的數(shù)目總和乘以η,最后,回報所得的各種事件的結(jié)果數(shù)目。(6)基于資源使用率若N是統(tǒng)計指令總數(shù),回報時間Tl和Τ2之間的使用率=N/ ((T2-T1)XCPU被中斷的次數(shù))。事件605的具體執(zhí)行流程如下步驟1001,事件605初始化,然后轉(zhuǎn)入步驟1002 ;步驟1002,判斷操作是否監(jiān)視基于一次事件605 ;如是,轉(zhuǎn)入步驟1003,否則轉(zhuǎn)入步驟1004 ;步驟1003,PMD閥值=最大值_1,然后轉(zhuǎn)入步驟1008 ;步驟1004,判斷操作是否監(jiān)視基于η次事件605 ;如是,轉(zhuǎn)入步驟1005,否則轉(zhuǎn)入步驟1006 ;步驟1005,PMD閥值=最大值_η,然后轉(zhuǎn)入步驟1008 ;步驟1006,判斷操作是否監(jiān)視基于事件605概率;如是,轉(zhuǎn)入步驟1007,否則轉(zhuǎn)入步驟1009 ;步驟1007,PMD閥值=最大值_n個事件的隨機數(shù),然后轉(zhuǎn)入步驟1008 ;步驟1008,當(dāng)PMD變數(shù)值達(dá)到PMD閥值,PMD向CPU觸發(fā)事件,然后轉(zhuǎn)入步驟1021 ;步驟1009,判斷操作是否監(jiān)視基于某時間內(nèi)的事件數(shù);如是,轉(zhuǎn)入步驟1010,否則轉(zhuǎn)入步驟1012 ;步驟1010,統(tǒng)計PMD向CPU觸發(fā)的事件數(shù),然后轉(zhuǎn)入步驟1011 ;步驟1011,時鐘向CPU觸發(fā)事件605,匯報各時段總共事件數(shù),然后轉(zhuǎn)入步驟 1021 ;步驟1012,判斷操作是否監(jiān)視基于多種事件605 ;如是,轉(zhuǎn)入步驟1013,否則轉(zhuǎn)入步驟1018 ;步驟1013,在各時段η里,PMD統(tǒng)計向CPU觸發(fā)的事件605的η的數(shù)目,然后轉(zhuǎn)入步驟1014 ;步驟1014,時鐘向CPU觸發(fā)事件605,然后轉(zhuǎn)入步驟1015 ;步驟1015,判斷全部事件605種類η是否都已輪循過;如是,轉(zhuǎn)入步驟1016,否則轉(zhuǎn)入步驟1017 ;步驟1016,各類事件605MUX總數(shù)乘以事件605類別總數(shù),再匯報各類事件605乘了類別總數(shù)以后的數(shù)目,然后轉(zhuǎn)入步驟1021 ;步驟1017,計算第η類事件在各時段事件605MUX總數(shù),然后轉(zhuǎn)入步驟1015 ;步驟1018,判斷操作是否監(jiān)視基于使用率;如是,轉(zhuǎn)入步驟1019,否則進行步驟 1022 ;步驟1019,若N是統(tǒng)計指令總數(shù),時間Tl和Τ2之間的使用率=N/((T2_T1) XCPU 被中斷的次數(shù)),然后轉(zhuǎn)入步驟1020 ;步驟1020,回報使用率,然后轉(zhuǎn)入步驟1021 ;步驟1021,正常返回;步驟1022,錯誤返回。在實際的部署環(huán)境中,本發(fā)明所述虛擬化系統(tǒng)性能監(jiān)視方法并未限定虛擬機所使用的是任何商用Hypervisor,包括運軟公司的TVM,思杰的Xen,威睿的ESX等等;虛擬操作系統(tǒng)則可以是Windows,Linux,Android,和其它手機虛擬機。另外,雖然本發(fā)明的虛擬化系統(tǒng)性能監(jiān)視方法,在實施例的說明中用了運行在x86架構(gòu)上的基礎(chǔ)性能監(jiān)視工具PMUJfi 本方法也涵蓋其它運行在x86架構(gòu)上的基礎(chǔ)性能監(jiān)視工具,甚至非x86的硬件架構(gòu)(例如 IBM,太陽等)。根據(jù)上述流程的描述可以得出,采用以上虛擬化系統(tǒng)性能監(jiān)視方法,一方面為企業(yè)的私有云提供了監(jiān)視資源性能的技術(shù),該技術(shù)是在硬件的基礎(chǔ)上,提供性能和事件數(shù)據(jù), 讓管理員可因理解整體虛擬化系統(tǒng)的忙閑狀況而做出工作負(fù)荷調(diào)整,或由上層應(yīng)用調(diào)度本方法的應(yīng)用接口,實現(xiàn)負(fù)荷調(diào)整的自動化;另一方面,公有云的云供應(yīng)商也可以利用管理員手動和應(yīng)用自動的上述手段來使用本發(fā)明,且不受限于多房客、多數(shù)據(jù)中心、大幅員地域的網(wǎng)絡(luò)架構(gòu)(例如分布式或集中式聯(lián)邦)。綜上所述,本發(fā)明結(jié)合了基于硬件的基礎(chǔ)性能監(jiān)視工具和運行在各服務(wù)器上的虛擬機性能代理、主機性能監(jiān)視器,提供了一種虛擬化系統(tǒng)的性能監(jiān)視的架構(gòu)和方法。本發(fā)明能夠監(jiān)視虛機性能、能夠基于時間取樣、基于事件取樣或兩種混合方式,為虛擬化系統(tǒng)開創(chuàng)了新的性能監(jiān)視方法。 以上結(jié)合附圖實施例對本發(fā)明進行了詳細(xì)說明,本領(lǐng)域中普通技術(shù)人員可根據(jù)上述說明對本發(fā)明做出種種變化例。因而,實施例中的某些細(xì)節(jié)不應(yīng)構(gòu)成對本發(fā)明的限定,本發(fā)明將以所附權(quán)利要求書界定的范圍作為本發(fā)明的保護范圍。
權(quán)利要求
1.一種基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu),其特征在于,所述架構(gòu)包括至少一個主控主機,所述每個主控主機包括用戶空間組件、客戶空間組件、內(nèi)核空間組件和硬件,其中,所述用戶空間組件包括依次連接的策略管理器、工作負(fù)荷調(diào)整器、監(jiān)視庫和主機性能監(jiān)視器,所述主機性能監(jiān)視器還與工作負(fù)荷調(diào)整器連接,且該主機性能監(jiān)視器包括用戶空間監(jiān)視器和內(nèi)核空間監(jiān)視器;所述客戶空間組件包括至少一個通過內(nèi)核串口通道與所述主機性能監(jiān)視器連接的虛機,且所述虛機包括用于收集虛機資源的性能的虛機性能代理;所述內(nèi)核空間組件包括依次與所述監(jiān)視庫連接的性能監(jiān)視基礎(chǔ)工具應(yīng)用接口和性能監(jiān)視基礎(chǔ)工具核心代碼模塊,還包括任務(wù)調(diào)度器、內(nèi)存管理器、網(wǎng)絡(luò)驅(qū)動、文件系統(tǒng)和設(shè)備驅(qū)動,且所述網(wǎng)絡(luò)驅(qū)動與所述工作負(fù)荷調(diào)整器連接;所述硬件支持外圍的性能監(jiān)視基礎(chǔ)工具,該硬件包括與所述性能監(jiān)視基礎(chǔ)工具核心代碼模塊連接的PMU、分別與該PMU連接的PMD和PMC,還包括CPU、內(nèi)存、網(wǎng)卡和硬盤,且所述網(wǎng)卡與所述網(wǎng)絡(luò)驅(qū)動連接。
2.根據(jù)權(quán)利要求1所述的基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu),其特征在于,所述架構(gòu)還包括至少一個從屬主機,所述每個主控主機通過網(wǎng)絡(luò)管道與所述至少一個從屬主機連接,以形成一個集群,所述多個主控主機與其各自的從屬主機形成多個集群,且所述集群與集群之間通過集中式、分布式或混合式通訊方式通訊;所述從屬主機包括所述主機性能監(jiān)視器,且該從屬主機內(nèi)的主機性能監(jiān)視器與所述主控主機內(nèi)的網(wǎng)卡連接。
3.根據(jù)權(quán)利要求2所述的基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu),其特征在于,所述虛擬化系統(tǒng)包括系統(tǒng)內(nèi)部資源監(jiān)視器以及系統(tǒng)外部資源監(jiān)視器;所述策略管理器、 工作負(fù)荷調(diào)整器和所述主控主機內(nèi)的主機性能監(jiān)視器構(gòu)成一上層構(gòu)架,其中所述每個策略管理器是至少一個工作負(fù)荷調(diào)整器的集合,所述每個工作負(fù)荷調(diào)整器是至少一個主機性能監(jiān)視器的集合,所述每個主機性能監(jiān)視器是至少一個所述虛機性能代理的集合,也是所述用戶空間監(jiān)視器和內(nèi)核空間監(jiān)視器的集合,且所述主機性能監(jiān)視器分別被所述系統(tǒng)內(nèi)部資源監(jiān)視器以及系統(tǒng)外部資源監(jiān)視器所繼承。
4.根據(jù)權(quán)利要求3所述的基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu),其特征在于,所述策略管理器用于解釋用戶策略請求,列舉CPU、內(nèi)存、網(wǎng)絡(luò)、10、緩存所要達(dá)成的條件,并將所述用戶策略請求區(qū)分為高、中、低等級;當(dāng)一個集群中的主控主機無法滿足該用戶策略請求時,所述策略管理器根據(jù)詢問集群的策略,同時或按優(yōu)先次序詢問該集群以外的其它集群中的主控主機的策略管理器,以滿足該用戶策略請求。
5.根據(jù)權(quán)利要求3所述的基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu),其特征在于,所述主控主機中的工作負(fù)荷調(diào)整器從所述策略管理器獲得策略請求,經(jīng)由所述網(wǎng)絡(luò)管道收集該主控主機所在的集群中各從屬主機的資源性能數(shù)據(jù),根據(jù)所述性能數(shù)據(jù)整理集群整體性能,并負(fù)責(zé)對各從屬主機資源進行策略實施;所述工作負(fù)荷調(diào)整器收集到的資源性能數(shù)據(jù)用于判斷所述從屬主機資源的忙閑狀態(tài), 即如果所述性能數(shù)據(jù)超過預(yù)設(shè)閥值,則狀態(tài)從資源閑變?yōu)橘Y源忙;如果所述性能數(shù)據(jù)低于所述閥值,則狀態(tài)從資源忙變?yōu)橘Y源閑;如果狀態(tài)從資源忙變?yōu)橘Y源不工作,則有異常發(fā)生;如果狀態(tài)從資源不工作變?yōu)橘Y源忙,則資源恢復(fù)正常。
6.根據(jù)權(quán)利要求3所述的基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu),其特征在于,所述主機性能監(jiān)視器用于監(jiān)視用戶空間、內(nèi)核空間和客戶空間,其中監(jiān)視用戶空間,即使用所述系統(tǒng)外部資源監(jiān)視器,監(jiān)視用戶空間所有進程性能信息;監(jiān)視內(nèi)核空間,即包括啟動、配置和結(jié)束所述內(nèi)核空間監(jiān)視器,并透過所述系統(tǒng)內(nèi)部資源監(jiān)視器,執(zhí)行系統(tǒng)內(nèi)部資源監(jiān)視;監(jiān)視客戶空間,即首先,通過所述內(nèi)核串口通道,與運行在所述各虛機內(nèi)的虛機性能代理互動,從所述虛機取得數(shù)據(jù),且所述虛機性能代理通過所述系統(tǒng)內(nèi)部資源監(jiān)視器,監(jiān)視虛擬資源;其次,通過所述系統(tǒng)外部資源監(jiān)視器監(jiān)視虛機,并將該虛機作為一個進程,獲得該進程的性能,以配合所述虛機性能代理所得的數(shù)據(jù),判斷所述虛機是否滿足性能請求。
7.根據(jù)權(quán)利要求6所述的基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu),其特征在于,所述系統(tǒng)內(nèi)部資源監(jiān)視器是基于性能監(jiān)視基礎(chǔ)工具按時間提取兩次相對性能數(shù)據(jù)相減而得的;所述系統(tǒng)內(nèi)部資源監(jiān)視器監(jiān)視的虛擬資源包括CPU資源、內(nèi)存資源、IO資源、緩存資源和網(wǎng)絡(luò)資源,其中所述CPU資源包括通過操作系統(tǒng)性能指令取得的CPU用來處理用戶狀態(tài)進程的時間總數(shù)、CPU用來處理內(nèi)核狀態(tài)進程的時間總數(shù)、CPU空閑的時間總數(shù)、CPU處理的硬中斷總數(shù)和 CPU處理的軟中斷總數(shù);所述內(nèi)存資源包括通過操作系統(tǒng)性能指令取得的全部內(nèi)存、自由內(nèi)存、共享內(nèi)存和緩沖內(nèi)存的信息;所述IO資源包括通過操作系統(tǒng)性能指令取得的一個或多個進程的IO讀寫量;所述緩存資源包括通過所述性能監(jiān)視基礎(chǔ)工具取得的緩存、TLB miss和hit的數(shù)據(jù);所述網(wǎng)絡(luò)資源包括通過操作系統(tǒng)性能指令取得的網(wǎng)絡(luò)狀態(tài)中的網(wǎng)絡(luò)流量。
8.根據(jù)權(quán)利要求6所述的基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu),其特征在于,所述系統(tǒng)外部資源監(jiān)視器是基于性能監(jiān)視基礎(chǔ)工具按時間提取兩次相對性能數(shù)據(jù)相減而得的;所述系統(tǒng)外部資源監(jiān)視器監(jiān)視的空間包括用戶空間和客戶空間,其中監(jiān)視用戶空間包括通過操作系統(tǒng)性能指令,取得所述進程在用戶空間的CPU使用數(shù)據(jù)、緩存使用數(shù)據(jù)和TLB miss數(shù)據(jù);監(jiān)視客戶空間包括通過操作系統(tǒng)性能指令,取得所述進程在用戶空間的CPU使用數(shù)據(jù)、緩存使用數(shù)據(jù)和TLB miss數(shù)據(jù),并觀察所述虛機的CPU運行數(shù)據(jù)是否超過所述閥值,以使用操作系統(tǒng)其它指令對該虛機的CPU占用率加以控制。
9.根據(jù)權(quán)利要求2所述的基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu),其特征在于,所述架構(gòu)還包括所述監(jiān)視庫的繼承組件,所述監(jiān)視庫及其繼承組件以及所述主控主機內(nèi)的主機性能監(jiān)視器構(gòu)成一下層構(gòu)架,其中所述監(jiān)視庫為最高層的類,其繼承組件為監(jiān)視器,所述監(jiān)視器被所述主機性能監(jiān)視器所繼承,且該主機性能監(jiān)視器分別被所述內(nèi)核空間監(jiān)視器、用戶空間監(jiān)視器和虛機性能代理所繼承;所述每個監(jiān)視器是至少一個監(jiān)視對象的集合,所述每個監(jiān)視對象是至少一個事件的集合,所述每個事件表示一個原子的監(jiān)視事件。
10.根據(jù)權(quán)利要求9所述的基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu),其特征在于,所述監(jiān)視庫用于為所有要監(jiān)視資源的進程都創(chuàng)建一個監(jiān)視器,并將該監(jiān)視器加載在監(jiān)視庫中;當(dāng)所述監(jiān)視庫進程開始時,為所有的監(jiān)視器將所述性能監(jiān)視基礎(chǔ)工具可以監(jiān)視的資源分解成為原子資源,然后進行監(jiān)視,并把資源監(jiān)視信息分派給所述各個監(jiān)視器;當(dāng)所述性能監(jiān)視基礎(chǔ)工具監(jiān)測到CPU有中斷溢出,則將異常情況通知所述監(jiān)視器;所述監(jiān)視庫還用于增加或刪除監(jiān)視器。
11.根據(jù)權(quán)利要求9所述的基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu),其特征在于,所述監(jiān)視器用于保存設(shè)置、載入設(shè)置,增加或刪除所述監(jiān)視對象,開始或停止所述監(jiān)視對象以及刷新、保存監(jiān)視信息。
12.根據(jù)權(quán)利要求9所述的基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu),其特征在于,所述監(jiān)視對象根據(jù)配置文件的配置創(chuàng)建,且該配置文件包括所述性能監(jiān)視基礎(chǔ)工具能夠監(jiān)視的對象。
13.根據(jù)權(quán)利要求9所述的基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu),其特征在于,如果所述性能監(jiān)視基礎(chǔ)工具是基于一次事件進行監(jiān)視的,則該性能監(jiān)視基礎(chǔ)工具的閥值=最大值-1 ;如果所述性能監(jiān)視基礎(chǔ)工具是基于η次事件進行監(jiān)視的,則該性能監(jiān)視基礎(chǔ)工具的閥值=最大值-η,其中,η為大于1的自然數(shù);如果所述性能監(jiān)視基礎(chǔ)工具是基于事件概率進行監(jiān)視的,則該性能監(jiān)視基礎(chǔ)工具的閥值=最大值_η個事件的隨機數(shù);如果所述性能監(jiān)視基礎(chǔ)工具是基于某時間內(nèi)的事件數(shù)進行監(jiān)視的,則統(tǒng)計該性能監(jiān)視基礎(chǔ)工具向CPU觸發(fā)的事件數(shù),當(dāng)時鐘向CPU觸發(fā)事件,則回報各時段總共事件數(shù);如果所述性能監(jiān)視基礎(chǔ)工具是基于η種事件進行監(jiān)視的,則在各時段i里(i = 1,... η),該性能監(jiān)視基礎(chǔ)工具統(tǒng)計向CPU觸發(fā)的事件i的數(shù)目,且同種事件在各時段的總和乘以η即為需要回報的結(jié)果;如果所述性能監(jiān)視基礎(chǔ)工具是基于資源使用率進行監(jiān)視的,則時間T 1和時間Τ2之間的使用率=N/((T2-T1) XCPU被中斷的次數(shù)),其中,N是統(tǒng)計指令總數(shù)。
14.一種基于權(quán)利要求1所述的基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu)的監(jiān)視方法,其特征在于,該方法包括以下步驟首先,管理員通過圖形界面或用戶應(yīng)用程序通過所述性能監(jiān)視器應(yīng)用接口,向所述策略管理器做性能調(diào)整請求;然后,當(dāng)所述策略管理器解釋所述性能調(diào)整請求后,指示所述工作負(fù)荷調(diào)整器向所述主控主機的主機性能監(jiān)視器要求經(jīng)過所述網(wǎng)絡(luò)管道回報所述各從屬主機資源的性能狀況;最后,由所述策略管理器向所述用戶應(yīng)用程序或管理員回報性能狀況。
全文摘要
本發(fā)明涉及一種基于硬件基礎(chǔ)工具監(jiān)視虛擬化系統(tǒng)性能的架構(gòu)及方法,其中,所述架構(gòu)包括至少一個主控主機,所述每個主控主機包括用戶空間組件、客戶空間組件、內(nèi)核空間組件和硬件,所述用戶空間組件包括依次連接的策略管理器、工作負(fù)荷調(diào)整器、監(jiān)視庫和主機性能監(jiān)視器,所述主機性能監(jiān)視器還與工作負(fù)荷調(diào)整器連接,且該主機性能監(jiān)視器包括用戶空間監(jiān)視器和內(nèi)核空間監(jiān)視器。本發(fā)明將PMU(或類似工具)應(yīng)用在虛擬化系統(tǒng)的性能監(jiān)視中;且本發(fā)明的性能監(jiān)視就是針對虛擬化系統(tǒng)中各主機的CPU、內(nèi)存、緩存、IO、網(wǎng)絡(luò)、進程等實施監(jiān)視;同時,本發(fā)明基于硬件的性能監(jiān)視法解決了虛擬化系統(tǒng)取得性能數(shù)據(jù)的問題。
文檔編號G06F11/32GK102314391SQ20111014164
公開日2012年1月11日 申請日期2011年5月27日 優(yōu)先權(quán)日2011年5月27日
發(fā)明者湯傳斌, 蔡鵬浩 申請人:運軟網(wǎng)絡(luò)科技(上海)有限公司