欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

基于硬件計(jì)數(shù)器虛擬化的多虛擬機(jī)性能分析方法

文檔序號(hào):6352969閱讀:476來(lái)源:國(guó)知局
專利名稱:基于硬件計(jì)數(shù)器虛擬化的多虛擬機(jī)性能分析方法
技術(shù)領(lǐng)域
本發(fā)明屬于計(jì)算系統(tǒng)虛擬化性能分析領(lǐng)域,具體涉及一個(gè)基于硬件計(jì)數(shù)器虛擬化 的多虛擬機(jī)性能分析方法,它能夠讓多個(gè)虛擬機(jī)獨(dú)立地進(jìn)行性能分析。
背景技術(shù)
虛擬化技術(shù)允許單一物理計(jì)算機(jī)同時(shí)運(yùn)行多個(gè)虛擬機(jī),每一虛擬機(jī)上運(yùn)行自己的 操作系統(tǒng),使得應(yīng)用程序可以在相互獨(dú)立的空間內(nèi)運(yùn)行而互不影響。因此,虛擬化技術(shù)顯著 提高了軟硬件資源的利用率,提高了管理效率,從而節(jié)約大量的成本?,F(xiàn)在,虛擬化技術(shù)得 到了許多公司的廣泛關(guān)注。據(jù)權(quán)威研究機(jī)構(gòu)預(yù)計(jì),2012年全球?qū)⒂谐^(guò)一半的工作負(fù)載被 虛擬化。虛擬化技術(shù)的廣泛應(yīng)用引發(fā)了對(duì)虛擬化環(huán)境下性能分析工具的需求。如不同虛擬 機(jī)里的用戶(如開(kāi)發(fā)人員等)需了解運(yùn)行在該虛擬機(jī)的程序的性能問(wèn)題,以便優(yōu)化程序性 能及運(yùn)行環(huán)境配置。這都需要對(duì)程序運(yùn)行狀態(tài)進(jìn)行采樣。一種性能分析方法是基于硬件計(jì) 數(shù)器技術(shù)。它需要在程序執(zhí)行過(guò)程中,對(duì)相應(yīng)的CPU事件進(jìn)行統(tǒng)計(jì)來(lái)分析程序性能。但硬件計(jì)數(shù)器是一種專用的寄存器,每個(gè)CPU上的硬件計(jì)數(shù)器數(shù)量有限。因此,對(duì) 于基于硬件計(jì)數(shù)器的性能分析工具,一次能同時(shí)分析的CPU事件有限,而且現(xiàn)有的性能分 析工具不能在不同的虛擬機(jī)里同時(shí)分析不同的事件。因此,不能滿足虛擬化環(huán)境下多用戶 在不同虛擬機(jī)同時(shí)使用的需要?;谝陨蠁?wèn)題,本發(fā)明提出了一種基于硬件計(jì)數(shù)器虛擬化 技術(shù)的多虛擬機(jī)性能分析方法,以解決在不同虛擬機(jī)里同時(shí)分析不同CPU事件的問(wèn)題。

發(fā)明內(nèi)容
本發(fā)明的目的是提供一種基于硬件計(jì)數(shù)器虛擬化的多虛擬機(jī)性能分析方法,該方 法為虛擬環(huán)境下的程序性能分析提供很大的便利,并且能較好地保證性能分析的精確度。本發(fā)明提供的一種基于硬件計(jì)數(shù)器虛擬化的多虛擬機(jī)性能分析方法,其特征在 于,該方法包括下述步驟第1步在特權(quán)虛擬機(jī)和各客戶虛擬機(jī)里均運(yùn)行一個(gè)后臺(tái)守護(hù)進(jìn)程,用于監(jiān)聽(tīng)用戶 啟動(dòng)、停止性能分析請(qǐng)求;第2步設(shè)置待性能分析的虛擬機(jī)要分析的CPU事件信息,包括CPU事件類型、采樣 頻率、單元掩碼、是否分析內(nèi)核層和是否分析用戶層;第3步判斷單個(gè)待性能分析的虛擬機(jī)分析的CPU事件數(shù)量是否超過(guò)硬件計(jì)數(shù)器的 數(shù)量,如果是,則提示用戶分析的事件過(guò)多,回到第2步;否則進(jìn)入第4步;第4步待性能分析的虛擬機(jī)向特權(quán)虛擬機(jī)發(fā)出一個(gè)啟動(dòng)信號(hào),將CPU事件信息寫(xiě) 入Xen的一個(gè)結(jié)構(gòu)體中;第5步判斷所有待性能分析的虛擬機(jī)分析的CPU事件總數(shù)是否超過(guò)硬件計(jì)數(shù)器的 數(shù)量,如果是,通過(guò)硬件計(jì)數(shù)器虛擬化技術(shù)來(lái)分時(shí)復(fù)用硬件計(jì)數(shù)器,進(jìn)入第6步;否則,不需 要對(duì)硬件計(jì)數(shù)器進(jìn)行虛擬化,轉(zhuǎn)入第7步;
第6步內(nèi)核層對(duì)硬件計(jì)數(shù)器進(jìn)行虛擬化,以實(shí)現(xiàn)硬件計(jì)數(shù)器的分時(shí)復(fù)用;當(dāng)硬件 計(jì)數(shù)器統(tǒng)計(jì)的CPU事件發(fā)生次數(shù)達(dá)到采樣頻率時(shí),硬件計(jì)數(shù)器產(chǎn)生一個(gè)中斷,內(nèi)核層開(kāi)始 采樣,記錄當(dāng)前程序計(jì)數(shù)器的值,保存到對(duì)應(yīng)的緩沖區(qū),并將程序計(jì)數(shù)器的值轉(zhuǎn)化為有用信 息;第7步重復(fù)第6步,直至接收到停止性能分析的信號(hào);第8步已啟動(dòng)性能分析的虛擬機(jī)停止性能分析,并向特權(quán)虛擬機(jī)發(fā)出一個(gè)停止信 號(hào),從而將Xen中存儲(chǔ)該虛擬機(jī)CPU事件信息的結(jié)構(gòu)體內(nèi)容清除;第9步各虛擬機(jī)接收到緩沖區(qū)的數(shù)據(jù)后,對(duì)這些數(shù)據(jù)進(jìn)行分析處理,從而為用戶 提供性能信息;第10步用戶對(duì)得到的性能信息進(jìn)行展現(xiàn)。目前應(yīng)用在主流的虛擬化管理軟件里的性能分析工具不能讓多用戶在不同的虛 擬機(jī)下同時(shí)進(jìn)行分析,而這一想法的實(shí)現(xiàn)將為虛擬化環(huán)境下的程序性能分析提供很大的便 利。同時(shí),分時(shí)復(fù)用的硬件計(jì)數(shù)器虛擬化實(shí)現(xiàn)方式,能較好地保證分析的精確度。本發(fā)明的 工作原理是當(dāng)多個(gè)虛擬機(jī)同時(shí)進(jìn)行性能分析并需要占用硬件計(jì)數(shù)器時(shí),若多個(gè)虛擬機(jī)分 析的CPU事件總數(shù)超過(guò)硬件計(jì)數(shù)器的數(shù)量時(shí),會(huì)對(duì)硬件計(jì)數(shù)器進(jìn)行虛擬化以滿足要求,否 則不對(duì)其進(jìn)行虛擬化。在Xen虛擬機(jī)管理器層次通過(guò)一個(gè)采樣機(jī)制來(lái)獲取采樣信息(當(dāng)硬 件計(jì)數(shù)器的計(jì)數(shù)達(dá)到CPU事件的采樣頻率時(shí),記錄當(dāng)前程序計(jì)數(shù)器的值),并將這些信息分 發(fā)到與各個(gè)虛擬機(jī)對(duì)應(yīng)的緩沖區(qū),最后再由虛擬機(jī)用戶層程序進(jìn)行分析處理,從而得到相 應(yīng)的分析結(jié)果及詳細(xì)的性能信息。本發(fā)明主要有三個(gè)關(guān)鍵問(wèn)題一是多個(gè)虛擬機(jī)之間后臺(tái)監(jiān)聽(tīng)和消息傳遞機(jī)制的實(shí) 現(xiàn);二是如何實(shí)現(xiàn)硬件計(jì)數(shù)器的虛擬化;三是如何降低其開(kāi)銷對(duì)性能分析精度的影響。具 體而言,本發(fā)明具有以下技術(shù)特點(diǎn)(1)本發(fā)明采用后臺(tái)守護(hù)進(jìn)程監(jiān)聽(tīng)各個(gè)虛擬機(jī)啟動(dòng)或停止性能分析的請(qǐng)求,使用 Xenstore作為多個(gè)虛擬機(jī)之間的消息傳遞機(jī)制;(2)采用分時(shí)復(fù)用技術(shù)來(lái)實(shí)現(xiàn)硬件計(jì)數(shù)器的虛擬化。當(dāng)一個(gè)虛擬CPU (即VCPU,在 Xen虛擬化環(huán)境下,由于虛擬機(jī)不再運(yùn)行在最高特權(quán)級(jí),所以不能夠直接對(duì)物理CPU進(jìn)行調(diào) 度,為此,Xen建立了虛擬CPU結(jié)構(gòu),為每個(gè)虛擬機(jī)提供一個(gè)或多個(gè)這樣的虛擬CPU結(jié)構(gòu),這 樣,虛擬機(jī)就可以對(duì)這些虛擬CPU進(jìn)行調(diào)度)被調(diào)度出去后,對(duì)該虛擬CPU對(duì)應(yīng)虛擬機(jī)的各 CPU事件所在的硬件計(jì)數(shù)器的值進(jìn)行保存;在重新讀取另一個(gè)虛擬CPU的事件配置信息并 設(shè)置硬件計(jì)數(shù)器后再調(diào)度執(zhí)行該虛擬CPU。通過(guò)這種分時(shí)的方式來(lái)實(shí)現(xiàn)對(duì)硬件計(jì)數(shù)器的復(fù) 用(一個(gè)虛擬機(jī)可能有多個(gè)虛擬CPU,但是一個(gè)虛擬CPU只能屬于一個(gè)虛擬機(jī),各虛擬機(jī)的 調(diào)度執(zhí)行實(shí)際上是虛擬CPU的調(diào)度執(zhí)行);(3)為了降低其開(kāi)銷對(duì)性能分析精度的影響,將對(duì)硬件計(jì)數(shù)器的讀寫(xiě)操作放入虛 擬機(jī)管理器的時(shí)間片,從而減小硬件計(jì)數(shù)器的讀寫(xiě)對(duì)虛擬機(jī)性能分析的干擾;(4)在啟動(dòng)性能分析時(shí),首先會(huì)進(jìn)行判斷,當(dāng)多個(gè)虛擬機(jī)里的用戶同時(shí)分析的事件 完全相同時(shí),就不對(duì)硬件計(jì)數(shù)器進(jìn)行虛擬化,否則就對(duì)其進(jìn)行分時(shí)復(fù)用。當(dāng)多用戶進(jìn)行性能 分析時(shí),都需要在自己所在的虛擬機(jī)里首先設(shè)置要分析的CPU事件類型及采樣頻率等配置 信息,然后啟動(dòng)性能分析即可。通過(guò)硬件計(jì)數(shù)器的虛擬化,即使在多用戶同時(shí)進(jìn)行性能分析 的環(huán)境下,用戶仍感覺(jué)自己在獨(dú)立地占有資源。


圖1為本發(fā)明的體系結(jié)構(gòu)圖;圖2為本發(fā)明的整體流程圖;圖3為本發(fā)明實(shí)現(xiàn)硬件計(jì)數(shù)器虛擬化的結(jié)構(gòu)圖;圖4為本發(fā)明降低開(kāi)銷對(duì)性能分析精度影響的結(jié)構(gòu)圖。
具體實(shí)施例方式下面結(jié)合附圖和實(shí)例對(duì)本發(fā)明進(jìn)行詳細(xì)說(shuō)明。本發(fā)明的目的在于研究一種基于硬件計(jì)數(shù)器虛擬化技術(shù)的多虛擬機(jī)性能分析方 法,使它們能同時(shí)獨(dú)立地分析多個(gè)不同的事件,本發(fā)明的主要步驟包括(1)在各個(gè)虛擬機(jī)里運(yùn)行后臺(tái)守護(hù)進(jìn)程來(lái)監(jiān)聽(tīng)啟動(dòng)或停止性能分析的請(qǐng)求,使用 Xenstore作為多個(gè)虛擬機(jī)之間的消息傳遞機(jī)制;(2)在Xen中用一個(gè)結(jié)構(gòu)體來(lái)保存虛擬機(jī)的CPU事件信息,從而能讓多個(gè)虛擬機(jī)同 時(shí)啟動(dòng)性能分析;(3)通過(guò)對(duì)硬件計(jì)數(shù)器虛擬化來(lái)實(shí)現(xiàn)各個(gè)虛擬機(jī)對(duì)硬件計(jì)數(shù)器的分時(shí)復(fù)用,從而 能讓它們同時(shí)獨(dú)立地分析不同的事件;(4)為了降低開(kāi)銷對(duì)性能分析精度的影響,將對(duì)硬件計(jì)數(shù)器的讀寫(xiě)操作放入虛擬 機(jī)管理器的時(shí)間片,從而減小硬件計(jì)數(shù)器的讀寫(xiě)對(duì)虛擬機(jī)性能分析的干擾。該發(fā)明的體系結(jié)構(gòu)如圖1所示,主要由內(nèi)核層(包括Xen內(nèi)核和Linux內(nèi)核)和 用戶層兩部分構(gòu)成。核心處理主要集中在內(nèi)核層,包括設(shè)置硬件計(jì)數(shù)器、硬件計(jì)數(shù)器虛擬 化、采樣等處理,而用戶層程序則運(yùn)行在各個(gè)虛擬機(jī)的用戶空間,主要用來(lái)對(duì)來(lái)自緩沖區(qū)的 采樣數(shù)據(jù)進(jìn)行分析和處理,并將其對(duì)應(yīng)到相應(yīng)的函數(shù)和程序段,從而將最終的性能分析信 息清晰地展現(xiàn)在用戶面前。本發(fā)明的流程如圖2所示,具體步驟如下所示(1)在特權(quán)虛擬機(jī)和各客戶虛擬機(jī)里都運(yùn)行一個(gè)后臺(tái)守護(hù)進(jìn)程來(lái)監(jiān)聽(tīng)用戶啟動(dòng)、 停止性能分析等請(qǐng)求。用戶啟動(dòng)、停止性能分析的請(qǐng)求采用Xenstore來(lái)傳送,特權(quán)虛擬機(jī)和客戶虛擬機(jī) 的具體過(guò)程不同。如果用戶在特權(quán)虛擬機(jī),進(jìn)入步驟(1. 1),否則進(jìn)入步驟(1.2)(1. 1)特權(quán)虛擬機(jī)啟動(dòng)、停止性能分析當(dāng)特權(quán)虛擬機(jī)里的用戶發(fā)出啟動(dòng)性能分析的請(qǐng)求后,會(huì)通過(guò)Xenstore傳送給特 權(quán)虛擬機(jī)運(yùn)行的后臺(tái)守護(hù)進(jìn)程,通知后臺(tái)守護(hù)進(jìn)程啟動(dòng)性能分析,成功后會(huì)啟動(dòng)相應(yīng)的用 戶線程;當(dāng)特權(quán)虛擬機(jī)里的用戶發(fā)出停止性能分析的請(qǐng)求后,會(huì)通a^nstore傳送給特權(quán) 虛擬機(jī)運(yùn)行的后臺(tái)守護(hù)進(jìn)程,通知后臺(tái)守護(hù)進(jìn)程停止性能分析,并停止相應(yīng)的用戶線程;(1. 2)客戶虛擬機(jī)啟動(dòng)、停止性能分析當(dāng)客戶虛擬機(jī)里的用戶發(fā)出啟動(dòng)性能分析的請(qǐng)求后,會(huì)通過(guò)Xenstore傳送給特 權(quán)虛擬機(jī)運(yùn)行的后臺(tái)守護(hù)進(jìn)程,通知后臺(tái)守護(hù)進(jìn)程啟動(dòng)性能分析,成功后特權(quán)虛擬機(jī)會(huì)通 過(guò)Xenstore通知客戶虛擬機(jī)啟動(dòng)相應(yīng)的用戶線程;當(dāng)特權(quán)虛擬機(jī)里的用戶發(fā)出停止性能 分析的請(qǐng)求后,會(huì)通過(guò))Censtore傳送給特權(quán)虛擬機(jī)運(yùn)行的后臺(tái)守護(hù)進(jìn)程,通知后臺(tái)守護(hù)進(jìn)程停止性能分析,并通過(guò)Xenstore通知客戶虛擬機(jī)停止相應(yīng)的用戶線程。(2)設(shè)置要分析的CPU事件信息。CPU事件信息包括CPU事件類型、采樣頻率、單元掩碼、是否分析內(nèi)核層、是否分析 用戶層,該步驟主要是設(shè)置這些CPU事件信息。如設(shè)置為CPU_CLK_UNHALTED:8000:0:1:1, 則表示CPU事件類型為CPU_CLK_UNHALTED,采樣頻率為8000(即事件發(fā)生8000次采一次 樣;為減小性能誤差,每個(gè)CPU事件的采樣頻率有個(gè)最小值,在不同的CPU類型上該最小值 可能不同,具體的采樣頻率可根據(jù)要分析的程序中該CPU事件的發(fā)生次數(shù)決定),單元掩碼 為0 (—個(gè)CPU事件的單元掩碼用于設(shè)置要計(jì)數(shù)的子事件,一般用十六進(jìn)制表示,0就是十六 進(jìn)制中的0x00,在該CPU事件中,0x00表示未停止的CPU核心的周期,0x01表示未停止的總 線周期),第1個(gè)1分別表示對(duì)該CPU事件在內(nèi)核空間的發(fā)生次數(shù)進(jìn)行統(tǒng)計(jì)(該值可選0或 1),第2個(gè)1分別表示對(duì)該CPU事件在用戶空間的發(fā)生次數(shù)進(jìn)行統(tǒng)計(jì)(該值可選0或1)。(3)判斷該虛擬機(jī)分析的CPU事件數(shù)量是否超過(guò)硬件計(jì)數(shù)器的數(shù)量,如果是,則
提示用戶分析的事件過(guò)多,讓其重新設(shè)置要分析的CPU事件,回到步驟O);否則進(jìn)入步驟 ⑷。(4)啟動(dòng)性能分析向特權(quán)虛擬機(jī)發(fā)出一個(gè)啟動(dòng)信號(hào),從而將CPU事件信息寫(xiě)入 Xen 中。啟動(dòng)性能分析的具體過(guò)程為在Xen中用一個(gè)結(jié)構(gòu)體來(lái)保存各虛擬機(jī)要分析的CPU事件。當(dāng)虛擬機(jī)的用戶輸入 要分析的CPU事件信息并啟動(dòng)性能分析后,會(huì)通過(guò)一個(gè)系統(tǒng)調(diào)用和一個(gè)超級(jí)調(diào)用將CPU事 件信息寫(xiě)到Xen的這個(gè)結(jié)構(gòu)體中,并將該結(jié)構(gòu)體的內(nèi)容賦給與該虛擬機(jī)對(duì)應(yīng)的虛擬CPU。這 樣,以后每次虛擬CPU調(diào)度就通過(guò)讀取該結(jié)構(gòu)體的內(nèi)容來(lái)獲取與該虛擬機(jī)對(duì)應(yīng)的CPU事件
fn息ο(5)如果各虛擬機(jī)分析的CPU事件總數(shù)超過(guò)硬件計(jì)數(shù)器的數(shù)量,則通過(guò)硬件計(jì)數(shù) 器虛擬化技術(shù)來(lái)分時(shí)復(fù)用硬件計(jì)數(shù)器,進(jìn)入步驟(6);如果各虛擬機(jī)分析的CPU事件總數(shù)并 未超過(guò)硬件計(jì)數(shù)器的數(shù)量,則不需要對(duì)硬件計(jì)數(shù)器進(jìn)行虛擬化,轉(zhuǎn)入步驟(7)。(6)對(duì)硬件計(jì)數(shù)器進(jìn)行虛擬化來(lái)實(shí)現(xiàn)硬件計(jì)數(shù)器的分時(shí)復(fù)用,在每次虛擬CPU調(diào) 度時(shí)做相應(yīng)的處理;當(dāng)硬件計(jì)數(shù)器統(tǒng)計(jì)的CPU事件發(fā)生次數(shù)達(dá)到采樣頻率時(shí),內(nèi)核層開(kāi)始 采樣工作,并把采樣數(shù)據(jù)轉(zhuǎn)化為有用數(shù)據(jù)。每次虛擬CPU調(diào)度時(shí)都做如下處理,如圖3所示(6. 1)當(dāng)一個(gè)虛擬機(jī)的虛擬CPU執(zhí)行完被調(diào)度出去、另一個(gè)虛擬CPU被調(diào)度進(jìn)來(lái)即 將執(zhí)行時(shí),判斷兩個(gè)虛擬CPU是否屬于同一個(gè)虛擬機(jī),如果是,則本次虛擬CPU調(diào)度不對(duì)硬 件計(jì)數(shù)器進(jìn)行讀寫(xiě)操作,如果否,就進(jìn)入(6. 2)步驟。(6. 2)讀取前一個(gè)虛擬CPU對(duì)應(yīng)虛擬機(jī)的各CPU事件所對(duì)應(yīng)的硬件計(jì)數(shù)器的當(dāng)前 統(tǒng)計(jì)次數(shù),并保存起來(lái);(6. 3)讀取后一個(gè)虛擬CPU對(duì)應(yīng)的CPU事件信息,同時(shí)讀取后一個(gè)虛擬CPU對(duì)應(yīng)虛 擬機(jī)上次執(zhí)行完時(shí)保存的各CPU事件的統(tǒng)計(jì)次數(shù),并對(duì)相應(yīng)的硬件計(jì)數(shù)器進(jìn)行重新設(shè)置。 在安騰2處理器中,硬件計(jì)數(shù)器由性能監(jiān)控控制(PMC)寄存器和性能監(jiān)控?cái)?shù)據(jù)(PMD)寄存 器兩部分組成,性能監(jiān)控控制寄存器用來(lái)選擇要分析的CPU事件,而性能監(jiān)控?cái)?shù)據(jù)寄存器 用來(lái)決定CPU事件的采樣頻率。所以,安騰2處理器中硬件計(jì)數(shù)器的設(shè)置包括兩部分,即性能監(jiān)控控制寄存器的設(shè)置和性能監(jiān)控?cái)?shù)據(jù)寄存器的設(shè)置。內(nèi)核層的采樣過(guò)程為當(dāng)硬件計(jì)數(shù)器統(tǒng)計(jì)的CPU事件發(fā)生次數(shù)達(dá)到采樣頻率時(shí),會(huì)產(chǎn)生一個(gè)中斷,記錄 當(dāng)前程序計(jì)數(shù)器的值,并保存到對(duì)應(yīng)的緩沖區(qū)(每個(gè)虛擬CPU有一個(gè)緩沖區(qū)對(duì)應(yīng))中,同時(shí) 重置對(duì)該CPU事件的計(jì)數(shù),最后會(huì)把事件緩沖區(qū)的數(shù)據(jù)交給相應(yīng)虛擬機(jī)的用戶層程序進(jìn)行處理。將程序計(jì)數(shù)器的值轉(zhuǎn)化成有用信息的過(guò)程如下所示用一個(gè)目錄緩存來(lái)保存目錄標(biāo)識(shí)和二進(jìn)制鏡像文件名的映射,使用目錄標(biāo)識(shí)作為 內(nèi)核空間和用戶空間數(shù)據(jù)的傳遞。當(dāng)一個(gè)樣本(程序計(jì)數(shù)器的值)進(jìn)入虛擬CPU的緩沖區(qū) 后,查找該進(jìn)程的映射列表,當(dāng)找到包含該程序計(jì)數(shù)器值的映射后,在目錄緩存中查找映射 文件的目錄項(xiàng),從而得到一個(gè)能唯一標(biāo)識(shí)該映射文件的目錄標(biāo)識(shí),把目錄標(biāo)識(shí)存入事件緩 沖區(qū)。這樣就把程序計(jì)數(shù)器值轉(zhuǎn)化成了一個(gè)靜態(tài)的偏移值,以方便后面被用戶線程處理。(7)重復(fù)第6步,直至接收到停止性能分析的信號(hào)。(8)虛擬機(jī)的用戶停止性能分析,并向特權(quán)虛擬機(jī)發(fā)出一個(gè)停止信號(hào),從而將Xen 中存儲(chǔ)該虛擬機(jī)CPU事件信息的結(jié)構(gòu)體內(nèi)容清除。(9)各虛擬機(jī)接收到緩沖區(qū)的數(shù)據(jù)后,對(duì)這些數(shù)據(jù)進(jìn)行分析處理,從而為用戶提供 性能信息(主要包括各種函數(shù)標(biāo)識(shí)、對(duì)應(yīng)的統(tǒng)計(jì)次數(shù)以及經(jīng)過(guò)進(jìn)一步計(jì)算得到的百分比等 詳細(xì)信息)。用戶層的處理過(guò)程如下所示每當(dāng)事件緩沖區(qū)的剩余空間小于一個(gè)定值(把這個(gè)定值定義為一個(gè)宏,可以根據(jù) 自己的需要修改這個(gè)宏,該值的大小在0和緩沖區(qū)大小之間)時(shí),相應(yīng)的后臺(tái)守護(hù)進(jìn)程讀取 事件緩沖區(qū)的數(shù)據(jù),并寫(xiě)入磁盤(pán)的樣本文件。樣本文件通過(guò)rnmapO函數(shù)映射到用戶層的地 址空間,用戶層首先處理二進(jìn)制映像(從二進(jìn)制映像中提取出各種標(biāo)識(shí)和符號(hào)),然后處理 樣本文件(解析之前生成的樣本文件,提取出分類數(shù)據(jù)并進(jìn)行計(jì)算,用一個(gè)特定的數(shù)據(jù)結(jié) 構(gòu)來(lái)保存所有的處理結(jié)果),最后以前兩步的結(jié)果為基礎(chǔ),生成相應(yīng)的性能信息。(10)用戶對(duì)得到的性能信息進(jìn)行展現(xiàn),如顯示所有函數(shù)的CPU事件發(fā)生次數(shù)、顯 示CPU事件發(fā)生次數(shù)最多的函數(shù)詳細(xì)信息等。在實(shí)現(xiàn)對(duì)硬件計(jì)數(shù)器的分時(shí)復(fù)用時(shí),為了降低其開(kāi)銷對(duì)性能分析精度的影響,將 對(duì)硬件計(jì)數(shù)器的讀寫(xiě)操作放入虛擬機(jī)管理器的時(shí)間片,從而減小硬件計(jì)數(shù)器的讀寫(xiě)對(duì)虛擬 機(jī)性能分析的干擾,過(guò)程如圖4所示。以上所述,僅為本發(fā)明最佳的具體實(shí)現(xiàn)方式,本發(fā)明的實(shí)現(xiàn)方法并不局限于此,任 何在本發(fā)明領(lǐng)域內(nèi)不脫離本發(fā)明精神下的改變,都應(yīng)涵蓋在本發(fā)明范圍內(nèi)。
權(quán)利要求
1.一種基于硬件計(jì)數(shù)器虛擬化的多虛擬機(jī)性能分析方法,其特征在于,該方法包括下 述步驟第1步在特權(quán)虛擬機(jī)和各客戶虛擬機(jī)里均運(yùn)行一個(gè)后臺(tái)守護(hù)進(jìn)程,用于監(jiān)聽(tīng)用戶啟 動(dòng)、停止性能分析請(qǐng)求;第2步設(shè)置待性能分析的虛擬機(jī)要分析的CPU事件信息,包括CPU事件類型、采樣頻 率、單元掩碼、是否分析內(nèi)核層和是否分析用戶層;第3步判斷單個(gè)待性能分析的虛擬機(jī)分析的CPU事件數(shù)量是否超過(guò)硬件計(jì)數(shù)器的數(shù) 量,如果是,則提示用戶分析的事件過(guò)多,回到第2步;否則進(jìn)入第4步;第4步待性能分析的虛擬機(jī)向特權(quán)虛擬機(jī)發(fā)出一個(gè)啟動(dòng)信號(hào),將CPU事件信息寫(xiě)入Xen 的一個(gè)結(jié)構(gòu)體中;第5步判斷所有待性能分析的虛擬機(jī)分析的CPU事件總數(shù)是否超過(guò)硬件計(jì)數(shù)器的數(shù) 量,如果是,通過(guò)硬件計(jì)數(shù)器虛擬化技術(shù)來(lái)分時(shí)復(fù)用硬件計(jì)數(shù)器,進(jìn)入第6步;否則,不需要 對(duì)硬件計(jì)數(shù)器進(jìn)行虛擬化,轉(zhuǎn)入第7步;第6步內(nèi)核層對(duì)硬件計(jì)數(shù)器進(jìn)行虛擬化,以實(shí)現(xiàn)硬件計(jì)數(shù)器的分時(shí)復(fù)用;當(dāng)硬件計(jì)數(shù) 器統(tǒng)計(jì)的CPU事件發(fā)生次數(shù)達(dá)到采樣頻率時(shí),硬件計(jì)數(shù)器產(chǎn)生一個(gè)中斷,內(nèi)核層開(kāi)始采樣, 記錄當(dāng)前程序計(jì)數(shù)器的值,保存到對(duì)應(yīng)的緩沖區(qū),并將程序計(jì)數(shù)器的值轉(zhuǎn)化為有用信息; 第7步重復(fù)第6步,直至接收到停止性能分析的信號(hào);第8步已啟動(dòng)性能分析的虛擬機(jī)停止性能分析,并向特權(quán)虛擬機(jī)發(fā)出一個(gè)停止信號(hào), 從而將Xen中存儲(chǔ)該虛擬機(jī)CPU事件信息的結(jié)構(gòu)體內(nèi)容清除;第9步各虛擬機(jī)接收到緩沖區(qū)的數(shù)據(jù)后,對(duì)這些數(shù)據(jù)進(jìn)行分析處理,從而為用戶提供 性能信息;第10步用戶對(duì)得到的性能信息進(jìn)行展現(xiàn)。
2.根據(jù)權(quán)利要求1所述的多虛擬機(jī)性能分析方法,其特征在于,第1步中,如果待性能 分析的虛擬機(jī)是特權(quán)虛擬機(jī),則按照第一種方式啟動(dòng)、停止性能分析,否則按照第二種方式 啟動(dòng)、停止性能分析;第一種方式當(dāng)特權(quán)虛擬機(jī)里的用戶發(fā)出啟動(dòng)性能分析的請(qǐng)求后,通過(guò))Censtore傳 送給特權(quán)虛擬機(jī)運(yùn)行的后臺(tái)守護(hù)進(jìn)程,通知后臺(tái)守護(hù)進(jìn)程啟動(dòng)性能分析,成功后會(huì)啟動(dòng)相 應(yīng)的用戶線程;當(dāng)特權(quán)虛擬機(jī)里的用戶發(fā)出停止性能分析的請(qǐng)求后,通過(guò)^11計(jì)01^傳送給 特權(quán)虛擬機(jī)運(yùn)行的后臺(tái)守護(hù)進(jìn)程,通知后臺(tái)守護(hù)進(jìn)程停止性能分析,并停止相應(yīng)的用戶線 程;第二種方式當(dāng)客戶虛擬機(jī)里的用戶發(fā)出啟動(dòng)性能分析的請(qǐng)求后,通過(guò)Xenstore傳送 給特權(quán)虛擬機(jī)運(yùn)行的后臺(tái)守護(hù)進(jìn)程,通知后臺(tái)守護(hù)進(jìn)程啟動(dòng)性能分析,成功后特權(quán)虛擬機(jī) 會(huì)通過(guò)Xenstore通知客戶虛擬機(jī)啟動(dòng)相應(yīng)的用戶線程;當(dāng)特權(quán)虛擬機(jī)里的用戶發(fā)出停止 性能分析的請(qǐng)求后,會(huì)通過(guò)fenstore傳送給特權(quán)虛擬機(jī)運(yùn)行的后臺(tái)守護(hù)進(jìn)程,通知后臺(tái)守 護(hù)進(jìn)程停止性能分析,并通過(guò)Xenstore通知客戶虛擬機(jī)停止相應(yīng)的用戶線程。
3.根據(jù)權(quán)利要求1所述的多虛擬機(jī)性能分析方法,其特征在于,第6步中,每次虛擬 CPU調(diào)度時(shí),硬件計(jì)數(shù)器按照下述過(guò)程進(jìn)行虛擬化(6. 1)當(dāng)一個(gè)虛擬機(jī)的虛擬CPU執(zhí)行完被調(diào)度出去、另一個(gè)虛擬CPU被調(diào)度進(jìn)來(lái)即將執(zhí) 行時(shí),判斷兩個(gè)虛擬CPU是否屬于同一個(gè)虛擬機(jī),如果是,則本次虛擬CPU調(diào)度不對(duì)硬件計(jì)數(shù)器進(jìn)行讀寫(xiě)操作,如果否,就進(jìn)入步驟(6.2);(6. 2)讀取前一個(gè)虛擬CPU對(duì)應(yīng)虛擬機(jī)的各CPU事件所對(duì)應(yīng)的硬件計(jì)數(shù)器的當(dāng)前統(tǒng)計(jì) 次數(shù),并保存起來(lái);(6. 3)讀取后一個(gè)虛擬CPU對(duì)應(yīng)的CPU事件信息,同時(shí)讀取后一個(gè)虛擬CPU對(duì)應(yīng)虛擬機(jī) 上次執(zhí)行完時(shí)保存的各CPU事件的統(tǒng)計(jì)次數(shù),并對(duì)相應(yīng)的硬件計(jì)數(shù)器進(jìn)行重新設(shè)置。
4.根據(jù)權(quán)利要求1所述的多虛擬機(jī)性能分析方法,其特征在于,內(nèi)核層進(jìn)行采樣的過(guò) 程如下當(dāng)硬件計(jì)數(shù)器統(tǒng)計(jì)的CPU事件發(fā)生次數(shù)達(dá)到采樣頻率時(shí),會(huì)產(chǎn)生一個(gè)中斷,記錄當(dāng)前 程序計(jì)數(shù)器的值,并保存到對(duì)應(yīng)的緩沖區(qū)(每個(gè)虛擬CPU有一個(gè)緩沖區(qū)對(duì)應(yīng))中,同時(shí)重 置對(duì)該CPU事件的計(jì)數(shù),最后會(huì)把事件緩沖區(qū)的數(shù)據(jù)交給相應(yīng)虛擬機(jī)的用戶層程序進(jìn)行處理。
5.根據(jù)權(quán)利要求1所述的多虛擬機(jī)性能分析方法,其特征在于,將程序計(jì)數(shù)器的值轉(zhuǎn) 化成有用信息的過(guò)程如下用一個(gè)目錄緩存來(lái)保存目錄標(biāo)識(shí)和二進(jìn)制鏡像文件名的映射,使用目錄標(biāo)識(shí)作為內(nèi)核 空間和用戶空間數(shù)據(jù)的傳遞;當(dāng)一個(gè)樣本即程序計(jì)數(shù)器的值進(jìn)入虛擬CPU的緩沖區(qū)后,查 找該進(jìn)程的映射列表,當(dāng)找到包含該程序計(jì)數(shù)器值的映射后,在目錄緩存中查找映射文件 的目錄項(xiàng),從而得到一個(gè)能唯一標(biāo)識(shí)該映射文件的目錄標(biāo)識(shí),把目錄標(biāo)識(shí)存入事件緩沖區(qū), 這樣就將程序計(jì)數(shù)器的值轉(zhuǎn)化成了一個(gè)靜態(tài)的偏移值,以方便后面被用戶線程處理。
6.根據(jù)權(quán)利要求1所述的多虛擬機(jī)性能分析方法,其特征在于,第9步中,對(duì)數(shù)據(jù)進(jìn)行 分析處理的過(guò)程為每當(dāng)事件緩沖區(qū)的剩余空間小于一個(gè)定值時(shí),相應(yīng)的后臺(tái)守護(hù)進(jìn)程讀取事件緩沖區(qū)的 數(shù)據(jù),并寫(xiě)入磁盤(pán)的樣本文件;樣本文件通過(guò)mmapO函數(shù)映射到用戶層的地址空間,用戶 層首先處理二進(jìn)制映像,然后處理樣本文件,最后以前兩步的結(jié)果為基礎(chǔ),生成相應(yīng)的性能 fn息ο
全文摘要
本發(fā)明公開(kāi)了一種基于硬件計(jì)數(shù)器虛擬化的多虛擬機(jī)性能分析方法。當(dāng)多個(gè)虛擬機(jī)同時(shí)進(jìn)行性能分析并需要占用硬件計(jì)數(shù)器時(shí),若多個(gè)虛擬機(jī)分析的CPU事件總數(shù)超過(guò)硬件計(jì)數(shù)器的數(shù)量時(shí),會(huì)對(duì)硬件計(jì)數(shù)器進(jìn)行虛擬化以滿足要求,否則不對(duì)其進(jìn)行虛擬化。在Xen虛擬機(jī)管理器層次通過(guò)一個(gè)采樣機(jī)制來(lái)獲取采樣信息,并將這些信息分發(fā)到與各個(gè)虛擬機(jī)對(duì)應(yīng)的緩沖區(qū),再由虛擬機(jī)用戶層程序進(jìn)行分析處理,從而得到相應(yīng)的分析結(jié)果及詳細(xì)的性能信息。本發(fā)明采用后臺(tái)守護(hù)進(jìn)程監(jiān)聽(tīng)各個(gè)虛擬機(jī)啟動(dòng)或停止性能分析的請(qǐng)求,使用Xenstore作為各虛擬機(jī)之間的消息傳遞機(jī)制,采用分時(shí)復(fù)用技術(shù)來(lái)實(shí)現(xiàn)硬件計(jì)數(shù)器的虛擬化,為虛擬環(huán)境下的程序性能分析提供了便利,并且較好地保證了分析的精確度。
文檔編號(hào)G06F11/36GK102073535SQ20111000440
公開(kāi)日2011年5月25日 申請(qǐng)日期2011年1月11日 優(yōu)先權(quán)日2011年1月11日
發(fā)明者蔣海鷗, 袁平鵬, 謝夏, 金海 申請(qǐng)人:華中科技大學(xué)
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
岳西县| 江华| 富宁县| 金湖县| 璧山县| 澄城县| 长汀县| 平乐县| 巴中市| 株洲县| 安化县| 双鸭山市| 桂东县| 南雄市| 定远县| 辽中县| 阳曲县| 佛冈县| 长春市| 阜康市| 阳信县| 台北市| 宝清县| 林甸县| 平泉县| 南城县| 绿春县| 富顺县| 北票市| 勐海县| 宝丰县| 宜昌市| 新乡市| 克拉玛依市| 锦屏县| 新乡县| 六枝特区| 南昌县| 南漳县| 溆浦县| 亳州市|