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

一種虛擬機(jī)的監(jiān)控方法、裝置和系統(tǒng)的制作方法

文檔序號(hào):10470978閱讀:457來(lái)源:國(guó)知局
一種虛擬機(jī)的監(jiān)控方法、裝置和系統(tǒng)的制作方法
【專(zhuān)利摘要】本發(fā)明實(shí)施例公開(kāi)了一種虛擬機(jī)的監(jiān)控方法、裝置和系統(tǒng);本發(fā)明實(shí)施例采用截獲子機(jī)中對(duì)I/O設(shè)備的訪(fǎng)問(wèn)進(jìn)程,根據(jù)該訪(fǎng)問(wèn)進(jìn)程對(duì)該I/O設(shè)備的訪(fǎng)問(wèn)過(guò)程進(jìn)行模擬,然后,監(jiān)控并統(tǒng)計(jì)該模擬過(guò)程中退出訪(fǎng)問(wèn)的次數(shù)和分布信息,從而實(shí)現(xiàn)對(duì)子機(jī)的I/O操作進(jìn)行精細(xì)量化的監(jiān)控統(tǒng)計(jì),以便對(duì)子機(jī)的故障進(jìn)行準(zhǔn)確定位,使得后續(xù)可以根據(jù)該故障原因?qū)μ摂M機(jī)的性能進(jìn)行改善。
【專(zhuān)利說(shuō)明】
一種虛擬機(jī)的監(jiān)控方法、裝置和系統(tǒng)
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,具體涉及一種虛擬機(jī)的監(jiān)控方法、裝置和系統(tǒng)。
【背景技術(shù)】
[0002]系統(tǒng)虛擬化具有很好的隔離性、封裝性、兼容性及硬件獨(dú)立性,因此獲得了廣泛的使用。所謂系統(tǒng)虛擬化,也稱(chēng)為虛擬機(jī)(Virtual Machine),指的是通過(guò)軟件模擬的具有完整硬件系統(tǒng)功能的、運(yùn)行在一個(gè)完全隔離環(huán)境中的完整計(jì)算機(jī)系統(tǒng)。其中,虛擬機(jī)所在的實(shí)體設(shè)備稱(chēng)為母機(jī),而模擬出來(lái)的一個(gè)或多個(gè)系統(tǒng)則稱(chēng)為該母機(jī)的子機(jī)。
[0003]為了更好地了解虛擬機(jī)的運(yùn)行狀況,現(xiàn)有技術(shù)提出了對(duì)虛擬機(jī)的運(yùn)行進(jìn)行監(jiān)控?,F(xiàn)有的虛擬機(jī)監(jiān)控一般都是從子機(jī)中對(duì)各個(gè)進(jìn)程,比如中央處理器(CPU,CentralProcessing Unit)、內(nèi)存和輸入輸出(1/0,input/output)設(shè)備等設(shè)備的使用情況來(lái)進(jìn)行監(jiān)控的,并據(jù)此來(lái)對(duì)虛擬機(jī)的性能進(jìn)行評(píng)判。
[0004]在對(duì)現(xiàn)有技術(shù)的研究和實(shí)踐過(guò)程中,本發(fā)明的發(fā)明人發(fā)現(xiàn),在虛擬機(jī)中執(zhí)行1操作時(shí),會(huì)轉(zhuǎn)化為執(zhí)行I/o設(shè)備的port1或mm1 (內(nèi)存映射I/0,Memory mapping 1/0)訪(fǎng)問(wèn),這樣會(huì)使得虛擬機(jī)退出,從而導(dǎo)致性能下降,但是目前的監(jiān)控方法并無(wú)法對(duì)此進(jìn)行監(jiān)控,從而無(wú)法準(zhǔn)確地對(duì)子機(jī)的故障進(jìn)行定位。

【發(fā)明內(nèi)容】

[0005]本發(fā)明實(shí)施例提供一種虛擬機(jī)的監(jiān)控方法、裝置和系統(tǒng),可以對(duì)子機(jī)的1/0操作進(jìn)行精細(xì)量化的監(jiān)控統(tǒng)計(jì),從而對(duì)子機(jī)的故障進(jìn)行準(zhǔn)確定位。
[0006]本發(fā)明實(shí)施例提供一種虛擬機(jī)的監(jiān)控方法,包括:
[0007]截獲子機(jī)中對(duì)1/0設(shè)備的訪(fǎng)問(wèn)進(jìn)程;
[0008]根據(jù)所述訪(fǎng)問(wèn)進(jìn)程對(duì)所述1/0設(shè)備的訪(fǎng)問(wèn)過(guò)程進(jìn)行模擬;
[0009]監(jiān)控并統(tǒng)計(jì)所述模擬過(guò)程中退出訪(fǎng)問(wèn)的次數(shù)和分布信息。
[0010]相應(yīng)的,本發(fā)明實(shí)施例還提供一種虛擬機(jī)的監(jiān)控裝置,包括:
[0011]截獲單元,用于截獲子機(jī)中對(duì)1/0設(shè)備的訪(fǎng)問(wèn)進(jìn)程;
[0012]模擬單元,用于根據(jù)所述訪(fǎng)問(wèn)進(jìn)程對(duì)所述1/0設(shè)備的訪(fǎng)問(wèn)過(guò)程進(jìn)行模擬;
[0013]監(jiān)控單元,用于監(jiān)控并統(tǒng)計(jì)所述模擬過(guò)程中退出訪(fǎng)問(wèn)的次數(shù)和分布信息。
[0014]此外,本發(fā)明實(shí)施例還提供一種虛擬機(jī)的監(jiān)控系統(tǒng),包括子機(jī)和本發(fā)明實(shí)施例提供的任一種虛擬機(jī)的監(jiān)控裝置,其中:
[0015]所述子機(jī),用于調(diào)用訪(fǎng)問(wèn)進(jìn)程以對(duì)1/0設(shè)備進(jìn)行訪(fǎng)問(wèn)。
[0016]本發(fā)明實(shí)施例采用截獲子機(jī)中對(duì)1/0設(shè)備的訪(fǎng)問(wèn)進(jìn)程,根據(jù)該訪(fǎng)問(wèn)進(jìn)程對(duì)該1/0設(shè)備的訪(fǎng)問(wèn)過(guò)程進(jìn)行模擬,然后,監(jiān)控并統(tǒng)計(jì)該模擬過(guò)程中退出訪(fǎng)問(wèn)的次數(shù)和分布信息,從而實(shí)現(xiàn)對(duì)子機(jī)的1/0操作進(jìn)行精細(xì)量化的監(jiān)控統(tǒng)計(jì),以便對(duì)子機(jī)的故障進(jìn)行準(zhǔn)確定位,使得后續(xù)可以根據(jù)該故障原因?qū)μ摂M機(jī)的性能進(jìn)行改善。
【附圖說(shuō)明】
[0017]為了更清楚地說(shuō)明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0018]圖1是本發(fā)明實(shí)施例提供的虛擬機(jī)的監(jiān)控方法的流程圖;
[0019]圖2是本發(fā)明實(shí)施例提供的虛擬機(jī)的監(jiān)控方法的另一流程圖;
[0020]圖3a是本發(fā)明實(shí)施例提供的虛擬機(jī)的監(jiān)控裝置的結(jié)構(gòu)示意圖;
[0021]圖3b是本發(fā)明實(shí)施例提供的虛擬機(jī)的監(jiān)控裝置的另一結(jié)構(gòu)示意圖;
[0022]圖4是本發(fā)明實(shí)施例提供虛擬機(jī)的監(jiān)控系統(tǒng)的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0023]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0024]本發(fā)明實(shí)施例提供一種虛擬機(jī)的監(jiān)控方法、裝置和系統(tǒng)。以下將分別進(jìn)行詳細(xì)說(shuō)明。
[0025]實(shí)施例一、
[0026]本實(shí)施例將從虛擬機(jī)的監(jiān)控裝置的角度進(jìn)行描述,該虛擬機(jī)的監(jiān)控裝置具體可以集成在母機(jī)中,可以包括快速模擬器(QEMU,Quick EMUlator)和基于內(nèi)核的虛擬機(jī)(KVM,Kernel-based Virtual Machine)。
[0027]—種虛擬機(jī)的監(jiān)控方法,包括:截獲子機(jī)中對(duì)I/O設(shè)備的訪(fǎng)問(wèn)進(jìn)程,根據(jù)該訪(fǎng)問(wèn)進(jìn)程對(duì)所述I/O設(shè)備的訪(fǎng)問(wèn)過(guò)程進(jìn)行模擬,監(jiān)控并統(tǒng)計(jì)該模擬過(guò)程中退出訪(fǎng)問(wèn)的次數(shù)和分布
?目息O
[0028]如圖1所示,該虛擬機(jī)的監(jiān)控方法的流程具體可以如下:
[0029]101、截獲子機(jī)中對(duì)I/O設(shè)備的訪(fǎng)問(wèn)進(jìn)程。例如,具體可以由KVM截獲子機(jī)中對(duì)I/O設(shè)備的訪(fǎng)問(wèn)進(jìn)程。
[0030]在X86-CPU中,對(duì)I/O設(shè)備的訪(fǎng)問(wèn)可以通過(guò)兩種方式:1/0端口(port1)方式和內(nèi)存映射I/O (mm1,memory mapping I/O)方式,其中,port1方式主要是將1/0設(shè)備的寄存器映射到10地址空間,port1方式可以通過(guò)IN/0UT指令訪(fǎng)問(wèn)1/0端口 ;而mm1方式主要是將1/0設(shè)備的寄存器映射到內(nèi)存地址空間,mm1方式可以通過(guò)CPU訪(fǎng)問(wèn)內(nèi)存指令,如move等訪(fǎng)問(wèn)內(nèi)存方式來(lái)訪(fǎng)問(wèn)1/0端口。本發(fā)明實(shí)施例所說(shuō)的訪(fǎng)問(wèn)進(jìn)程可以是mm1方式的訪(fǎng)問(wèn)(簡(jiǎn)稱(chēng)mm1訪(fǎng)問(wèn)),也可以是port1方式的訪(fǎng)問(wèn)(簡(jiǎn)稱(chēng)port1訪(fǎng)問(wèn))。
[0031]102、根據(jù)截獲的訪(fǎng)問(wèn)進(jìn)程對(duì)該1/0設(shè)備的訪(fǎng)問(wèn)過(guò)程進(jìn)行模擬。
[0032]例如,具體可以由KVM或QEMU來(lái)對(duì)該1/0設(shè)備的訪(fǎng)問(wèn)過(guò)程進(jìn)行模擬,比如,具體可以如下:
[0033](I)根據(jù)該訪(fǎng)問(wèn)進(jìn)程確定該1/0設(shè)備的地址。
[0034]例如,具體可以根據(jù)該mm1訪(fǎng)問(wèn)或port1訪(fǎng)問(wèn)確定該1/0設(shè)備的地址。
[0035](2)為該I/O設(shè)備在子機(jī)中分配相應(yīng)的I/O端口。
[0036]其中,根據(jù)不同的I/O設(shè)備,可以采用不同的方式為其在子機(jī)中分配I/O端口,例如,具體可以如下:
[0037]確定該I/O設(shè)備為外設(shè)部件互連標(biāo)準(zhǔn)(PCI,Peripheral ComponentInterconnect)設(shè)備時(shí),采用動(dòng)態(tài)分配方式為該I/O設(shè)備在子機(jī)中分配相應(yīng)的I/O端口。
[0038]確定該I/O設(shè)備為指令集架構(gòu)(ISA,Instruct1n Set Architecture)設(shè)備時(shí),采用靜態(tài)分配方式為該I/o設(shè)備在子機(jī)中分配相應(yīng)的1/0端口。
[0039]此外,若是由QEMU來(lái)分配該1/0端口,則在分配了相應(yīng)的1/0端口后,還可以綁定相應(yīng)的回調(diào)函數(shù),以便后續(xù)其他模塊可以通過(guò)調(diào)用該回調(diào)函數(shù)將相關(guān)操作返回QEMU中進(jìn)行處理,其中,回調(diào)函數(shù)就是一個(gè)通過(guò)函數(shù)指針調(diào)用的函數(shù)。
[0040](3)建立該1/0設(shè)備的地址與分配的1/0端口之間的映射關(guān)系。
[0041]在建立了映射關(guān)系之后,還可以保存該映射關(guān)系,以作為本地保存數(shù)據(jù),以供后續(xù)使用。比如,保存靜態(tài)分配的1/0設(shè)備的地址與子機(jī)中1/0端口的映射關(guān)系,作為本地保存數(shù)據(jù);或者,保存動(dòng)態(tài)分配的I/o設(shè)備的地址與子機(jī)中1/0端口的映射關(guān)系,作為本地保存數(shù)據(jù),并利用預(yù)置的設(shè)備控制接口函數(shù)(1ctl)對(duì)其(即該本地保存數(shù)據(jù)中的“動(dòng)態(tài)分配的1/0設(shè)備的地址與子機(jī)中1/0端口的映射關(guān)系”)進(jìn)行動(dòng)態(tài)更新。
[0042]其中,1ctl指的是設(shè)備驅(qū)動(dòng)程序中對(duì)設(shè)備的1/0通道進(jìn)行管理的函數(shù)。
[0043](4)基于該映射關(guān)系對(duì)該1/0設(shè)備的訪(fǎng)問(wèn)過(guò)程進(jìn)行模擬。
[0044]需說(shuō)明的是,KVM截獲該訪(fǎng)問(wèn)進(jìn)程后,如果該1/0設(shè)備在KVM中進(jìn)行了模擬,就調(diào)用相關(guān)回調(diào)函數(shù)進(jìn)行處理并返回QEMU,如果KVM未模擬此1/0設(shè)備,則將其返回QEMU中進(jìn)行處理。
[0045]103、監(jiān)控并統(tǒng)計(jì)該模擬過(guò)程中退出訪(fǎng)問(wèn)的次數(shù)和分布信息。
[0046]例如,可以由KVM來(lái)監(jiān)控并統(tǒng)計(jì)該模擬過(guò)程中退出訪(fǎng)問(wèn)的次數(shù)和分布信息,具體可以如下:
[0047]對(duì)該模擬過(guò)程進(jìn)行監(jiān)控,以統(tǒng)計(jì)退出的訪(fǎng)問(wèn)的次數(shù),獲取退出的訪(fǎng)問(wèn)所對(duì)應(yīng)的1/0設(shè)備的地址,將該地址與本地保存數(shù)據(jù)進(jìn)行比較,以確定退出訪(fǎng)問(wèn)的分布信息。
[0048]其中,該本地保存數(shù)據(jù)包括1/0設(shè)備的地址與子機(jī)中1/0端口的映射關(guān)系,具體可參見(jiàn)步驟102。
[0049]由上可知,本實(shí)施例采用截獲子機(jī)中對(duì)1/0設(shè)備的訪(fǎng)問(wèn)進(jìn)程,根據(jù)該訪(fǎng)問(wèn)進(jìn)程對(duì)該I/o設(shè)備的訪(fǎng)問(wèn)過(guò)程進(jìn)行模擬,然后,監(jiān)控并統(tǒng)計(jì)該模擬過(guò)程中退出訪(fǎng)問(wèn)的次數(shù)和分布信息,從而實(shí)現(xiàn)對(duì)子機(jī)的I/o操作進(jìn)行精細(xì)量化的監(jiān)控統(tǒng)計(jì),以便對(duì)子機(jī)的故障進(jìn)行準(zhǔn)確定位,使得后續(xù)可以根據(jù)該故障原因?qū)μ摂M機(jī)的性能進(jìn)行改善。
[0050]實(shí)施例二、
[0051]根據(jù)實(shí)施例一所描述的方法,以下將舉例作進(jìn)一步詳細(xì)說(shuō)明。
[0052]在本實(shí)施例中,將以虛擬機(jī)的監(jiān)控裝置具體包括QEMU和KVM (即KVM內(nèi)核模塊)為例進(jìn)行說(shuō)明。
[0053]—種虛擬機(jī)的監(jiān)控方法,如圖2所示,具體流程可以如下:
[0054]201、KVM截獲子機(jī)中對(duì)1/0設(shè)備的訪(fǎng)問(wèn)進(jìn)程,比如mm1訪(fǎng)問(wèn)或port1訪(fǎng)問(wèn)。
[0055]202、KVM對(duì)訪(fǎng)問(wèn)進(jìn)程進(jìn)行模擬,調(diào)用相關(guān)回調(diào)函數(shù)進(jìn)行處理并將處理結(jié)果返回給QEMU ;或者,若KVM未模擬此I/O設(shè)備,則將該訪(fǎng)問(wèn)進(jìn)程傳送給QEMU,由QEMU對(duì)訪(fǎng)問(wèn)進(jìn)程進(jìn)行模擬。
[0056]具體模擬時(shí),可以先根據(jù)該訪(fǎng)問(wèn)進(jìn)程確定該I/O設(shè)備的地址,并為該I/O設(shè)備在子機(jī)中分配相應(yīng)的I/O端口,然后再建立該I/O設(shè)備的地址與分配的I/O端口之間的映射關(guān)系,并基于該映射關(guān)系對(duì)該I/O設(shè)備的訪(fǎng)問(wèn)過(guò)程進(jìn)行模擬。
[0057]在QEMU中進(jìn)行1設(shè)備模擬時(shí),可以使用兩種方式進(jìn)行I/O設(shè)備的port1/mm1映射:
[0058](I)PCI設(shè)備的映射;
[0059]采用動(dòng)態(tài)分配方式為該I/O設(shè)備在子機(jī)中分配相應(yīng)的I/O端口,即其port1/mm1訪(fǎng)問(wèn)的映射關(guān)系為動(dòng)態(tài)分配,其中,映射時(shí),若為port1訪(fǎng)問(wèn),則映射到1/0端口,并綁定回調(diào)函數(shù),若為mm1訪(fǎng)問(wèn),則映射到1/0內(nèi)存(1/0 reg1n),并綁定回調(diào)函數(shù)。
[0060](2) ISA設(shè)備的映射;
[0061]采用靜態(tài)分配方式為該1/0設(shè)備在子機(jī)中分配相應(yīng)的1/0端口,即其port1/mm1訪(fǎng)問(wèn)的映射關(guān)系為靜態(tài)分配。
[0062]其中,Linux子機(jī)中針對(duì)port1和mm1的1/0端口分配可以如下:
[0063](I) port1 的 1/0 端口分配;
[0064]端口范圍:設(shè)備
[0065]OOOO-OOlf:dmaI
[0066]0020-0021:picl
[0067]0040-0043:timerO
[0068]0050-0053: timerI
[0069]0060-0060: keyboard
[0070]0064-0064: keyboard
[0071 ]0070-0077: rtc/* 針對(duì) rtc 設(shè)備,端口范圍為 8*/
[0072]0080-008f:dma page reg
[0073]OOaO-OOal:pic2
[0074]OOcO-OOdf:dma2
[0075]OOfO-OOff:fpu
[0076]03c0-03df: vga+
[0077]03f8_03ff: serial/* 針對(duì)串口設(shè)備,端口范圍為 8*/
[0078]0cf8-0cff:PCI confI
[0079]afeO-afe3:ACPI GPE0_BLK
[0080]b000-b003:ACPI PMla_EVT_BLK
[0081]b004-b005:ACPI PMla_CNT_BLK
[0082]b008-b00b:ACPI PM_TMR
[0083]b010-b015:ACPI CPU throttle
[0084]c000_c03f: virt1-pci/* 針對(duì) virt1-blk-pci 設(shè)備,端口范圍為 64*/
[0085]c060_c07f: virt1-pci/* 針對(duì) virt1-net-pci 設(shè)備,端口范圍為 32*/
[0086]c080_c09f: virt1-pci/* 針對(duì) virt1-balloon-pci 設(shè)備,端口范圍為 32*/
[0087](2) mm1的I/O端口分配分配;
[0088]地址范圍:設(shè)備
[0089]00000000-0009fbff: System RAM/* 端口范圍為 O ?638k*/
[0090]00100000-dfffdfff: System RAM/* 端口范圍為 Im ?3583m*/
[0091]01000000-014fl408:Kernel code/* 端口范圍為 16m ?20m*/
[0092]014fl409-01738d5f:Kernel data/* 端口范圍為 20m ?23m*/
[0093]017b2000-01850d03:Kernel bss/* 端口范圍為 23m ?24m*/
[0094]02000000-09ffffff: Crash kernel/* 端口范圍為 32m ?159m*/
[0095]febflOOO-febflfff: virt1-pci/* 針對(duì) virt1-net-pci 設(shè)備之 MSI_X(中斷),端口范圍為4k*/
[0096]febf2000-febf2fff: virt1-pci/* 針對(duì) virt1-blk-pci 設(shè)備之 MSI_X(中斷),端口范圍為4k*/
[0097]fecOOOOO-fecOOfff:1OAPIC 0/* 針對(duì) kvm-1oapic 設(shè)備,端口范圍為 4k*/
[0098]fed00000-fed003ff:HPET 0/* 針對(duì) hpet 設(shè)備,端口范圍為 Ik*/
[0099]fee00000-fee00fff: Local APIC/* 針對(duì) kvm-lapic 設(shè)備,端口范圍為 4k*/
[0100]100000000-21fffffff:System RAM
[0101]203、KVM對(duì)該模擬過(guò)程進(jìn)行監(jiān)控,以統(tǒng)計(jì)退出的訪(fǎng)問(wèn)的次數(shù)。
[0102]204、KVM獲取退出的訪(fǎng)問(wèn)所對(duì)應(yīng)的1/0設(shè)備的地址,將該地址與本地保存數(shù)據(jù)進(jìn)行比較,以確定退出訪(fǎng)問(wèn)的分布信息。
[0103]其中,該本地保存數(shù)據(jù)包括1/0設(shè)備的地址與子機(jī)中1/0端口的映射關(guān)系,例如:
[0104](I)對(duì)于QEMU中靜態(tài)分配的port1/mm1的1/0端口范圍,在KVM中可以直接保存一份,作為本地保存數(shù)據(jù),格式可以為〈port1/mm1范圍,對(duì)應(yīng)子機(jī)10設(shè)備>。
[0105](2)對(duì)于QEMU中動(dòng)態(tài)分配的port1/mm1的1/0端口范圍,在KVM中可以新增一個(gè)1ctl,在QEMU動(dòng)態(tài)更新10設(shè)備bar時(shí)(pci_update_mappings),可以通過(guò)該1ctl將動(dòng)態(tài)更新的映射關(guān)系傳給KVM進(jìn)行保存,格式可以為〈port1/mm1范圍,對(duì)應(yīng)子機(jī)10設(shè)備>。
[0106]當(dāng)然,也可以采用其他的格式來(lái)保存,在此不再贅述。
[0107]由上可知,本實(shí)施例采用由KVM截獲子機(jī)中對(duì)1/0設(shè)備的訪(fǎng)問(wèn)進(jìn)程,然后由KVM或QEMU根據(jù)該訪(fǎng)問(wèn)進(jìn)程對(duì)該1/0設(shè)備的訪(fǎng)問(wèn)過(guò)程進(jìn)行模擬,然后,再由KVM監(jiān)控并統(tǒng)計(jì)該模擬過(guò)程中退出訪(fǎng)問(wèn)的次數(shù)和分布信息,從而實(shí)現(xiàn)母機(jī)對(duì)子機(jī)的1/0操作進(jìn)行精細(xì)量化的監(jiān)控統(tǒng)計(jì),以便對(duì)子機(jī)的故障進(jìn)行準(zhǔn)確定位,使得后續(xù)可以根據(jù)該故障原因?qū)μ摂M機(jī)的性能進(jìn)行改善。
[0108]實(shí)施例三、
[0109]相應(yīng)的,本發(fā)明實(shí)施例還提供一種虛擬機(jī)的監(jiān)控裝置,如圖3a所示,該虛擬機(jī)的監(jiān)控裝置包括截獲單元301、模擬單元302和監(jiān)控單元303,如下:
[0110]截獲單元301,用于截獲子機(jī)中對(duì)輸入/輸出設(shè)備的訪(fǎng)問(wèn)進(jìn)程。
[0111]其中,該訪(fǎng)問(wèn)進(jìn)程可以是mm1訪(fǎng)問(wèn),也可以是port1訪(fǎng)問(wèn)。
[0112]模擬單元302,用于根據(jù)該訪(fǎng)問(wèn)進(jìn)程對(duì)該1/0設(shè)備的訪(fǎng)問(wèn)過(guò)程進(jìn)行模擬。
[0113]監(jiān)控單元303,用于監(jiān)控并統(tǒng)計(jì)該模擬過(guò)程中退出訪(fǎng)問(wèn)的次數(shù)和分布信息。
[0114]例如,其中,模擬單元302可以包括確定子單元、分配子單元、建立子單元和模擬子單元,如下:
[0115]確定子單元,用于根據(jù)該訪(fǎng)問(wèn)進(jìn)程確定所述I/O設(shè)備的地址。
[0116]例如,具體可以根據(jù)該mm1訪(fǎng)問(wèn)或port1訪(fǎng)問(wèn)確定該I/O設(shè)備的地址。
[0117]分配子單元,用于為該I/O設(shè)備在子機(jī)中分配相應(yīng)的輸入/輸出端口。
[0118]其中,根據(jù)不同的I/O設(shè)備,可以采用不同的方式為其在子機(jī)中分配I/O端口,即,分配子單元,具體可以用于執(zhí)行如下操作:
[0119](I)PCI設(shè)備的映射;
[0120]確定該I/O設(shè)備為PCI設(shè)備時(shí),采用動(dòng)態(tài)分配方式為所述I/O設(shè)備在子機(jī)中分配相應(yīng)的輸入/輸出端口 ;即其port1/mm1訪(fǎng)問(wèn)的映射關(guān)系為動(dòng)態(tài)分配,其中,映射時(shí),若為port1訪(fǎng)問(wèn),則映射到1/0端口,并可以綁定回調(diào)函數(shù),若為mm1訪(fǎng)問(wèn),則映射到1/0內(nèi)存(1/0 reg1n),并可以綁定回調(diào)函數(shù)。
[0121](2) ISA設(shè)備的映射;
[0122]確定該1/0設(shè)備為ISA設(shè)備時(shí),采用靜態(tài)分配方式為所述1/0設(shè)備在子機(jī)中分配相應(yīng)的輸入/輸出端口 ;即其port1/mm1訪(fǎng)問(wèn)的映射關(guān)系為靜態(tài)分配。
[0123]其中,Linux子機(jī)中針對(duì)port1和mm1的1/0端口分配具體可參見(jiàn)前面的實(shí)施例,在此不再贅述。
[0124]建立子單元,用于建立該1/0設(shè)備的地址與分配的輸入/輸出端口之間的映射關(guān)系;
[0125]模擬子單元,用于基于該映射關(guān)系對(duì)該1/0設(shè)備的訪(fǎng)問(wèn)過(guò)程進(jìn)行模擬。
[0126]在建立了映射關(guān)系之后,還可以保存該映射關(guān)系,以作為本地保存數(shù)據(jù),以供后續(xù)使用。比如,保存靜態(tài)分配的1/0設(shè)備的地址與子機(jī)中1/0端口的映射關(guān)系,作為本地保存數(shù)據(jù);或者,保存動(dòng)態(tài)分配的1/0設(shè)備的地址與子機(jī)中1/0端口的映射關(guān)系,作為本地保存數(shù)據(jù),并利用預(yù)置的設(shè)備控制接口函數(shù)(1ctl)對(duì)其(即該本地保存數(shù)據(jù)中的“動(dòng)態(tài)分配的1/0設(shè)備的地址與子機(jī)中1/0端口的映射關(guān)系”)進(jìn)行動(dòng)態(tài)更新,即如圖3b所示,該虛擬機(jī)的監(jiān)控裝置還可以包括保存單元304 ;
[0127]保存單元304,可以用于保存靜態(tài)分配的1/0設(shè)備的地址與子機(jī)中輸入/輸出端口的映射關(guān)系,作為本地保存數(shù)據(jù)。
[0128]保存單元,還可以用于保存動(dòng)態(tài)分配的1/0設(shè)備的地址與子機(jī)中輸入/輸出端口的映射關(guān)系,作為本地保存數(shù)據(jù);利用1ctl對(duì)該本地保存數(shù)據(jù)中的“動(dòng)態(tài)分配的1/0設(shè)備的地址與子機(jī)中輸入/輸出端口的映射關(guān)系”進(jìn)行動(dòng)態(tài)更新。
[0129]其中,監(jiān)控單元303可以包括統(tǒng)計(jì)子單元、獲取子單元和比較子單元,如下:
[0130]統(tǒng)計(jì)子單元,用于對(duì)該模擬過(guò)程進(jìn)行監(jiān)控,以統(tǒng)計(jì)退出的訪(fǎng)問(wèn)的次數(shù)。
[0131]獲取子單元,用于獲取退出的訪(fǎng)問(wèn)所對(duì)應(yīng)的1/0設(shè)備的地址。
[0132]比較子單元,用于將該地址與本地保存數(shù)據(jù)進(jìn)行比較,以確定退出訪(fǎng)問(wèn)的分布信息。
[0133]其中,該本地保存數(shù)據(jù)包括1/0設(shè)備的地址與子機(jī)中輸入/輸出端口的映射關(guān)系,例如:
[0134](I)對(duì)于靜態(tài)分配的port1/mm1的1/0端口范圍,可以直接保存一份,作為本地保存數(shù)據(jù),格式可以為〈port1/mm1范圍,對(duì)應(yīng)子機(jī)1設(shè)備>。
[0135](2)對(duì)于動(dòng)態(tài)分配的port1/mm1的I/O端口范圍,可以新增一個(gè)1ctl,在動(dòng)態(tài)更新1設(shè)備bar時(shí)(pci_update_mappings),可以通過(guò)該1ctl來(lái)傳送該動(dòng)態(tài)更新的映射關(guān)系并進(jìn)行保存,格式可以為〈port1/mm1范圍,對(duì)應(yīng)子機(jī)1設(shè)備>。
[0136]當(dāng)然,也可以采用其他的格式來(lái)保存,在此不再贅述。
[0137]具體實(shí)施時(shí),以上各個(gè)單元可以作為獨(dú)立的實(shí)體來(lái)實(shí)現(xiàn),也可以進(jìn)行任意組合,作為同一或若干個(gè)實(shí)體來(lái)實(shí)現(xiàn),比如由QEMU和KVM來(lái)實(shí)現(xiàn),等等。以上各個(gè)單元的具體實(shí)施可參見(jiàn)前面的實(shí)施例,在此不再贅述。
[0138]該虛擬機(jī)的監(jiān)控裝置具體可以集成在母機(jī)中。
[0139]由上可知,本實(shí)施例的虛擬機(jī)的監(jiān)控裝置采用截獲單元301截獲子機(jī)中對(duì)1/0設(shè)備的訪(fǎng)問(wèn)進(jìn)程,然后由模擬單元302根據(jù)該訪(fǎng)問(wèn)進(jìn)程對(duì)該1/0設(shè)備的訪(fǎng)問(wèn)過(guò)程進(jìn)行模擬,然后,再由監(jiān)控單元303監(jiān)控并統(tǒng)計(jì)該模擬過(guò)程中退出訪(fǎng)問(wèn)的次數(shù)和分布信息,從而實(shí)現(xiàn)對(duì)子機(jī)的1/0操作進(jìn)行精細(xì)量化的監(jiān)控統(tǒng)計(jì),以便對(duì)子機(jī)的故障進(jìn)行準(zhǔn)確定位,使得后續(xù)可以根據(jù)該故障原因?qū)μ摂M機(jī)的性能進(jìn)行改善。
[0140]實(shí)施例四、
[0141]相應(yīng)的,本發(fā)明實(shí)施例還提供一種虛擬機(jī)的監(jiān)控系統(tǒng),包括本發(fā)明實(shí)施例提供的任一種虛擬機(jī)的監(jiān)控裝置,該虛擬機(jī)的監(jiān)控裝置具體可參見(jiàn)實(shí)施例三,該虛擬機(jī)的監(jiān)控裝置具體可以集成在母機(jī)中。
[0142]例如,參見(jiàn)圖4,該虛擬機(jī)的監(jiān)控系統(tǒng)還可以包括子機(jī),具體可以如下:
[0143]母機(jī)401,用于截獲子機(jī)402中對(duì)1/0設(shè)備的訪(fǎng)問(wèn)進(jìn)程,根據(jù)該訪(fǎng)問(wèn)進(jìn)程對(duì)該1/0設(shè)備的訪(fǎng)問(wèn)過(guò)程進(jìn)行模擬,監(jiān)控并統(tǒng)計(jì)該模擬過(guò)程中退出訪(fǎng)問(wèn)的次數(shù)和分布信息。
[0144]其中,訪(fǎng)問(wèn)進(jìn)程可以是mm1訪(fǎng)問(wèn),也可以是port1訪(fǎng)問(wèn)。
[0145]子機(jī)402,用于調(diào)用訪(fǎng)問(wèn)進(jìn)程以對(duì)1/0設(shè)備進(jìn)行訪(fǎng)問(wèn)。
[0146]例如,母機(jī)401,具體可以用于根據(jù)該訪(fǎng)問(wèn)進(jìn)程確定該1/0設(shè)備的地址,根據(jù)該訪(fǎng)問(wèn)進(jìn)程確定該I/o設(shè)備的地址,并建立該1/0設(shè)備的地址與分配的1/0端口之間的映射關(guān)系,然后基于該映射關(guān)系對(duì)該I/o設(shè)備的訪(fǎng)問(wèn)過(guò)程進(jìn)行模擬;再然后,對(duì)該模擬過(guò)程進(jìn)行監(jiān)控,以統(tǒng)計(jì)退出的訪(fǎng)問(wèn)的次數(shù),并獲取退出的訪(fǎng)問(wèn)所對(duì)應(yīng)的I/o設(shè)備的地址,將該地址與本地保存數(shù)據(jù)進(jìn)行比較,以確定退出訪(fǎng)問(wèn)的分布信息。
[0147]其中,該本地保存數(shù)據(jù)包括1/0設(shè)備的地址與子機(jī)中1/0端口的映射關(guān)系,例如:
[0148](I)對(duì)于靜態(tài)分配的port1/mm1的1/0端口范圍,可以直接保存一份,作為本地保存數(shù)據(jù),格式可以為〈port1/mm1范圍,對(duì)應(yīng)子機(jī)10設(shè)備>。
[0149](2)對(duì)于動(dòng)態(tài)分配的port1/mm1的1/0端口范圍,可以新增一個(gè)1ctl,在動(dòng)態(tài)更新10設(shè)備bar時(shí)(pci_update_mappings),可以通過(guò)該1ctl來(lái)傳送該動(dòng)態(tài)更新的映射關(guān)系并進(jìn)行保存,格式可以為〈port1/mm1范圍,對(duì)應(yīng)子機(jī)10設(shè)備>。
[0150]當(dāng)然,也可以采用其他的格式來(lái)保存,在此不再贅述。
[0151]其中,母機(jī)401可以包括QEMU和KVM,例如,具體可以由KVM來(lái)截獲子機(jī)402中對(duì)I/o設(shè)備的訪(fǎng)問(wèn)進(jìn)程,然后由QEMU或KVM根據(jù)該訪(fǎng)問(wèn)進(jìn)程對(duì)該1/0設(shè)備的訪(fǎng)問(wèn)過(guò)程進(jìn)行模擬,并由KVM來(lái)監(jiān)控并統(tǒng)計(jì)該模擬過(guò)程中退出訪(fǎng)問(wèn)的次數(shù)和分布信息,具體可參見(jiàn)實(shí)施例二,在此不再贅述。
[0152]以上各個(gè)操作的具體實(shí)施可參見(jiàn)前面的實(shí)施例,在此不再贅述。
[0153]由上可知,本實(shí)施例的虛擬機(jī)的監(jiān)控系統(tǒng)采用由母機(jī)401截獲子機(jī)402中對(duì)I/O設(shè)備的訪(fǎng)問(wèn)進(jìn)程,然后根據(jù)該訪(fǎng)問(wèn)進(jìn)程對(duì)該I/o設(shè)備的訪(fǎng)問(wèn)過(guò)程進(jìn)行模擬,然后,監(jiān)控并統(tǒng)計(jì)該模擬過(guò)程中退出訪(fǎng)問(wèn)的次數(shù)和分布信息,從而實(shí)現(xiàn)母機(jī)401對(duì)子機(jī)402的I/O操作進(jìn)行精細(xì)量化的監(jiān)控統(tǒng)計(jì),以便對(duì)子機(jī)402的故障進(jìn)行準(zhǔn)確定位,使得后續(xù)可以根據(jù)該故障原因?qū)μ摂M機(jī)的性能進(jìn)行改善。
[0154]本領(lǐng)域普通技術(shù)人員可以理解上述實(shí)施例的各種方法中的全部或部分步驟是可以通過(guò)程序來(lái)指令相關(guān)的硬件來(lái)完成,該程序可以存儲(chǔ)于一計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,存儲(chǔ)介質(zhì)可以包括:只讀存儲(chǔ)器(ROM,Read Only Memory)、隨機(jī)存取記憶體(RAM,RandomAccess Memory)、磁盤(pán)或光盤(pán)等。
[0155]以上對(duì)本發(fā)明實(shí)施例所提供的一種虛擬機(jī)的監(jiān)控方法、裝置和系統(tǒng)進(jìn)行了詳細(xì)介紹,本文中應(yīng)用了具體個(gè)例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的技術(shù)人員,依據(jù)本發(fā)明的思想,在【具體實(shí)施方式】及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書(shū)內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。
【主權(quán)項(xiàng)】
1.一種虛擬機(jī)的監(jiān)控方法,其特征在于,包括: 截獲子機(jī)中對(duì)輸入/輸出設(shè)備的訪(fǎng)問(wèn)進(jìn)程; 根據(jù)所述訪(fǎng)問(wèn)進(jìn)程對(duì)所述輸入/輸出設(shè)備的訪(fǎng)問(wèn)過(guò)程進(jìn)行模擬; 監(jiān)控并統(tǒng)計(jì)所述模擬過(guò)程中退出訪(fǎng)問(wèn)的次數(shù)和分布信息。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述監(jiān)控并統(tǒng)計(jì)所述模擬過(guò)程中退出訪(fǎng)問(wèn)的次數(shù)和分布信息,包括: 對(duì)所述模擬過(guò)程進(jìn)行監(jiān)控,以統(tǒng)計(jì)退出的訪(fǎng)問(wèn)的次數(shù); 獲取退出的訪(fǎng)問(wèn)所對(duì)應(yīng)的輸入/輸出設(shè)備的地址; 將所述地址與本地保存數(shù)據(jù)進(jìn)行比較,以確定退出訪(fǎng)問(wèn)的分布信息,所述本地保存數(shù)據(jù)包括輸入/輸出設(shè)備的地址與子機(jī)中輸入/輸出端口的映射關(guān)系。3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述根據(jù)所述訪(fǎng)問(wèn)進(jìn)程對(duì)所述輸入/輸出設(shè)備的訪(fǎng)問(wèn)過(guò)程進(jìn)行模擬,包括: 根據(jù)所述訪(fǎng)問(wèn)進(jìn)程確定所述輸入/輸出設(shè)備的地址; 為所述輸入/輸出設(shè)備在子機(jī)中分配相應(yīng)的輸入/輸出端口; 建立所述輸入/輸出設(shè)備的地址與分配的輸入/輸出端口之間的映射關(guān)系; 基于所述映射關(guān)系對(duì)所述輸入/輸出設(shè)備的訪(fǎng)問(wèn)過(guò)程進(jìn)行模擬。4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述為所述輸入/輸出設(shè)備在子機(jī)中分配相應(yīng)的輸入/輸出端口,包括: 確定所述輸入/輸出設(shè)備為外設(shè)部件互連標(biāo)準(zhǔn)PCI設(shè)備時(shí),采用動(dòng)態(tài)分配方式為所述輸入/輸出設(shè)備在子機(jī)中分配相應(yīng)的輸入/輸出端口; 確定所述輸入/輸出設(shè)備為指令集架構(gòu)ISA設(shè)備時(shí),采用靜態(tài)分配方式為所述輸入/輸出設(shè)備在子機(jī)中分配相應(yīng)的輸入/輸出端口。5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述建立所述輸入/輸出設(shè)備的地址與分配的輸入/輸出端口之間的映射關(guān)系之后,還包括: 保存靜態(tài)分配的輸入/輸出設(shè)備的地址與子機(jī)中輸入/輸出端口的映射關(guān)系,作為本地保存數(shù)據(jù)。6.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述建立所述輸入/輸出設(shè)備的地址與分配的輸入/輸出端口之間的映射關(guān)系之后,還包括: 保存動(dòng)態(tài)分配的輸入/輸出設(shè)備的地址與子機(jī)中輸入/輸出端口的映射關(guān)系,作為本地保存數(shù)據(jù); 利用預(yù)置的設(shè)備控制接口函數(shù)對(duì)所述本地保存數(shù)據(jù)中動(dòng)態(tài)分配的輸入/輸出設(shè)備的地址與子機(jī)中輸入/輸出端口的映射關(guān)系進(jìn)行動(dòng)態(tài)更新。7.—種虛擬機(jī)的監(jiān)控裝置,其特征在于,包括: 截獲單元,用于截獲子機(jī)中對(duì)輸入/輸出設(shè)備的訪(fǎng)問(wèn)進(jìn)程; 模擬單元,用于根據(jù)所述訪(fǎng)問(wèn)進(jìn)程對(duì)所述輸入/輸出設(shè)備的訪(fǎng)問(wèn)過(guò)程進(jìn)行模擬; 監(jiān)控單元,用于監(jiān)控并統(tǒng)計(jì)所述模擬過(guò)程中退出訪(fǎng)問(wèn)的次數(shù)和分布信息。8.根據(jù)權(quán)利要求7所述的監(jiān)控裝置,其特征在于,所述監(jiān)控單元包括統(tǒng)計(jì)子單元、獲取子單元和比較子單元; 所述統(tǒng)計(jì)子單元,用于對(duì)所述模擬過(guò)程進(jìn)行監(jiān)控,以統(tǒng)計(jì)退出的訪(fǎng)問(wèn)的次數(shù); 所述獲取子單元,用于獲取退出的訪(fǎng)問(wèn)所對(duì)應(yīng)的輸入/輸出設(shè)備的地址; 所述比較子單元,用于將所述地址與本地保存數(shù)據(jù)進(jìn)行比較,以確定退出訪(fǎng)問(wèn)的分布信息,所述本地保存數(shù)據(jù)包括輸入/輸出設(shè)備的地址與子機(jī)中輸入/輸出端口的映射關(guān)系。9.根據(jù)權(quán)利要求7或8所述的監(jiān)控裝置,其特征在于,所述模擬單元包括確定子單元、分配子單元、建立子單元和模擬子單元; 所述確定子單元,用于根據(jù)所述訪(fǎng)問(wèn)進(jìn)程確定所述輸入/輸出設(shè)備的地址; 所述分配子單元,用于為所述輸入/輸出設(shè)備在子機(jī)中分配相應(yīng)的輸入/輸出端口 ;所述建立子單元,用于建立所述輸入/輸出設(shè)備的地址與分配的輸入/輸出端口之間的映射關(guān)系; 所述模擬子單元,用于基于所述映射關(guān)系對(duì)所述輸入/輸出設(shè)備的訪(fǎng)問(wèn)過(guò)程進(jìn)行模擬。10.根據(jù)權(quán)利要求9所述的監(jiān)控裝置,其特征在于,所述分配子單元,具體用于: 確定所述輸入/輸出設(shè)備為外設(shè)部件互連標(biāo)準(zhǔn)PCI設(shè)備時(shí),采用動(dòng)態(tài)分配方式為所述輸入/輸出設(shè)備在子機(jī)中分配相應(yīng)的輸入/輸出端口; 確定所述輸入/輸出設(shè)備為指令集架構(gòu)ISA設(shè)備時(shí),采用靜態(tài)分配方式為所述輸入/輸出設(shè)備在子機(jī)中分配相應(yīng)的輸入/輸出端口。11.根據(jù)權(quán)利要求10所述的監(jiān)控裝置,其特征在于,還包括保存單元; 所述第一保存單元,用于保存靜態(tài)分配的輸入/輸出設(shè)備的地址與子機(jī)中輸入/輸出端口的映射關(guān)系,作為本地保存數(shù)據(jù)。12.根據(jù)權(quán)利要求11所述的監(jiān)控裝置,其特征在于, 所述保存單元,還用于保存動(dòng)態(tài)分配的輸入/輸出設(shè)備的地址與子機(jī)中輸入/輸出端口的映射關(guān)系,作為本地保存數(shù)據(jù);利用預(yù)置的設(shè)備控制接口函數(shù)對(duì)所述本地保存數(shù)據(jù)中動(dòng)態(tài)分配的輸入/輸出設(shè)備的地址與子機(jī)中輸入/輸出端口的映射關(guān)系進(jìn)行動(dòng)態(tài)更新。13.一種虛擬機(jī)的監(jiān)控系統(tǒng),其特征在于,包括子機(jī)和權(quán)利要求7至12任一項(xiàng)所述的虛擬機(jī)的監(jiān)控裝置,其中: 所述子機(jī),用于調(diào)用訪(fǎng)問(wèn)進(jìn)程以對(duì)輸入/輸出設(shè)備進(jìn)行訪(fǎng)問(wèn)。
【文檔編號(hào)】G06F11/30GK105824682SQ201510006010
【公開(kāi)日】2016年8月3日
【申請(qǐng)日】2015年1月5日
【發(fā)明人】賀永紅
【申請(qǐng)人】深圳市騰訊計(jì)算機(jī)系統(tǒng)有限公司
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1