一種虛擬系統(tǒng)中域管理方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信技術(shù)領(lǐng)域,特別涉及一種虛擬系統(tǒng)中域管理方法和裝置。
【背景技術(shù)】
[0002]現(xiàn)有技術(shù)通過在Iinux內(nèi)核中添加了一個(gè)模塊,實(shí)現(xiàn)了虛級(jí)化,這樣最大限度的利用原有的Iinux內(nèi)核的基礎(chǔ)功能,簡(jiǎn)潔而又精巧。
[0003]但是,目前現(xiàn)有技術(shù)的VMM和VM在運(yùn)行載體的層面上并沒有明確的劃分。也就是說,同一個(gè)物理中央處理器(CentralProcessingUnit,CPU)上,時(shí)而運(yùn)行的是虛擬機(jī)監(jiān)視器(Virtual Machine Monitor,VMM)的功能,時(shí)而運(yùn)行的是虛擬機(jī)(Virtual Machine, VM),這種監(jiān)控邏輯和業(yè)務(wù)邏輯的混雜導(dǎo)致性能的巨大開銷。
[0004]由于VM是作為一個(gè)線程運(yùn)行在真實(shí)的CPU上,而VMM的功能需要在同樣的CPU上得到執(zhí)行,導(dǎo)致VM對(duì)應(yīng)的虛擬CPU必須設(shè)置為響應(yīng)外部事件,如外部中斷,VM的運(yùn)行會(huì)定時(shí)被中斷,回到VMM的監(jiān)控中,執(zhí)行一些VM的監(jiān)控邏輯以及系統(tǒng)資源的分配管理,如虛擬CPU的調(diào)度和切換等。而VM到VMM的切換是非常損耗性能的,且使架構(gòu)變得混亂,邏輯不夠清晰,導(dǎo)致具體實(shí)現(xiàn)和維護(hù)的困難。
【發(fā)明內(nèi)容】
[0005]有鑒于此,本申請(qǐng)?zhí)峁┮环N虛擬系統(tǒng)中域管理方法和裝置,以解決VMM和VM之間頻繁進(jìn)行上下文切換的問題。
[0006]為解決上述技術(shù)問題,本申請(qǐng)的技術(shù)方案是這樣實(shí)現(xiàn)的:
[0007]一種虛擬系統(tǒng)中域管理方法,應(yīng)用于包含多物理CPU的服務(wù)器中,該方法包括:
[0008]服務(wù)器將物理CPU劃分到VMM域和VM域,在劃分到VMM域中的物理CPU上運(yùn)行VMM,在劃分到VM域中的物理CPU上運(yùn)行VM,運(yùn)行該VM的物理CPU為與為該VM創(chuàng)建的虛擬CPU綁定的物理CPU ;
[0009]當(dāng)確定該服務(wù)器上的任一 VM需要中斷注入時(shí),通過VMM域中的物理CPU向?yàn)樵揤M創(chuàng)建的虛擬CPU綁定的物理CPU發(fā)送核間中斷信號(hào),使為該VM創(chuàng)建的虛擬CPU進(jìn)行相應(yīng)的中斷注入處理。
[0010]一種虛擬系統(tǒng)中域管理裝置,應(yīng)用于包含多物理CPU的服務(wù)器中,該裝置包括:VMM域單元和VM域單元;
[0011]所述VMM域單元,用于將物理CPU劃分到VMM域和VM域,在VMM域中的物理CPU上運(yùn)行VMM,在VM域中的物理CPU上運(yùn)行VM,運(yùn)行該VM的物理CPU為與為該VM創(chuàng)建的虛擬(PU綁定的物理CPU ;當(dāng)確定任一 VM需要中斷注入時(shí),通過劃分到VMM域中的物理CPU向?yàn)樵揤M創(chuàng)建的虛擬CPU綁定的物理CPU發(fā)送核間中斷信號(hào);
[0012]所述VM域單元,用于接收到所述VMM域單元通過VMM域中的物理CPU發(fā)送的核間中斷信號(hào)時(shí),使為該VM創(chuàng)建的虛擬CPU進(jìn)行相應(yīng)的中斷注入處理。
[0013]由上面的技術(shù)方案可知,本申請(qǐng)中通過將VMM與VM運(yùn)行的物理CPU劃分到不同的域中,使VMM的監(jiān)控邏輯和VM的運(yùn)行分離,能夠減少VMM和VM之間頻繁上下文的切換,提高了系統(tǒng)虛擬化的效率。
【附圖說明】
[0014]圖1為本申請(qǐng)實(shí)施例中VMl啟動(dòng)后域劃分結(jié)構(gòu)示意圖;
[0015]圖2為本申請(qǐng)實(shí)施例中VM2啟動(dòng)后域劃分結(jié)構(gòu)示意圖;
[0016]圖3為本申請(qǐng)實(shí)施例中虛擬系統(tǒng)中域管理的流程示意圖;
[0017]圖4為本申請(qǐng)實(shí)施例中應(yīng)用于上述技術(shù)的裝置結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0018]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,下面結(jié)合附圖并據(jù)實(shí)施例,對(duì)本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)說明。
[0019]本申請(qǐng)實(shí)施例中提供一種虛擬系統(tǒng)中域管理方法,應(yīng)用于包含多物理CPU的服務(wù)器上。在具體實(shí)現(xiàn)時(shí),該服務(wù)器將物理CPU劃分到VMM域和VM域,在劃分到VMM域中的物理CPU上運(yùn)行VMM,在劃分到VM域中的物理CPU上運(yùn)行VM,運(yùn)行該VM的物理CPU為與為該VM創(chuàng)建的虛擬CPU綁定的物理CPU。
[0020]本申請(qǐng)的上述實(shí)現(xiàn)將VMM和VM在物理CPU的層面上分離,并將VMM和VM的運(yùn)行在邏輯上分離。
[0021]本申請(qǐng)的具體劃分實(shí)現(xiàn)方法如下:
[0022]該服務(wù)器上的VMM啟動(dòng)時(shí),所有物理CPU劃分到VMM域中,在劃分到VMM域中的物理CPU上運(yùn)行VMM。此時(shí),該服務(wù)器中還沒有VM啟動(dòng),因此,該服務(wù)器的所有物理CPU均被劃分到VMM域中,VMM運(yùn)行在VMM域中的所有物理CPU上。
[0023]當(dāng)確定該服務(wù)器中的任一 VM啟動(dòng)時(shí),通過VMM為該VM創(chuàng)建虛擬CPU,將該虛擬CPU配置為不響應(yīng)外部事件,并確定VM域中是否存在物理CPU ;
[0024]當(dāng)確定VM域中存在物理CPU,則進(jìn)一步確定VMM域中是否存在兩個(gè)以上物理CPU,如果是,從VMM域中選擇一個(gè)物理CPU劃分到VM域中,并將為該VM創(chuàng)建的虛擬CPU與劃分到VM域的物理CPU綁定;或?qū)樵揤M創(chuàng)建的虛擬CPU與VM域中的一個(gè)物理CPU綁定;
[0025]當(dāng)確定VM域中不存在物理CPU,則從VMM域中選擇一個(gè)物理CPU劃分到VM域,并將為該VM創(chuàng)建的虛擬CPU與劃分到VM域的物理CPU綁定。
[0026]該服務(wù)器通過VMM為各虛擬CPU配置運(yùn)行時(shí)間,如可以為其分配運(yùn)行時(shí)間比其它線程大的運(yùn)行時(shí)間,以減少虛擬CPU迀移造成的性能損失。
[0027]以包含4個(gè)物理CPU的服務(wù)器為例,4個(gè)物理CPU分別為CPUl、CPU2、CPU3和CPU4。
[0028]服務(wù)器上的VMM啟動(dòng)時(shí),通過VMM將4個(gè)物理CPU都劃分到VMM域中,VMM運(yùn)行在VMM域的4個(gè)物理CPU上,S卩VMM占用4個(gè)物理CPU。
[0029]當(dāng)服務(wù)器上的第I個(gè)VM(VMl)啟動(dòng)時(shí),通過VMM為VMl創(chuàng)建虛擬CPU (虛擬CPU1),設(shè)置虛擬CPUl不響應(yīng)外部事件,在VMM域選擇一個(gè)物理CPU劃分到VM域中,如選擇物理CPU4 ;并將虛擬CPUl和物理CPU4綁定。
[0030]參見圖1,圖1為本申請(qǐng)實(shí)施例中VMl啟動(dòng)后域劃分結(jié)構(gòu)示意圖。圖1中,將VMM域中物理CPU4劃分到VM域中,并將為VMl創(chuàng)建的虛擬CPUl與物理CPU4綁定。
[0031]當(dāng)服務(wù)器上又有VM啟動(dòng)時(shí),如VM2,為VM2創(chuàng)建虛擬CPU2,設(shè)置虛擬CPU2不響應(yīng)外部事件,并確定VM域中是否存在物理CPU,確定存在物理CPU4 ;進(jìn)一步確定VMM域中是否存在兩個(gè)以上物理CPU,確定在VMM域中存在3個(gè)物理CPU,則可以在VMM域中選擇一個(gè)物理CPU劃分到VM域中,如將物理CPU3劃分到VM域中,并將物理CPU3與虛擬CPU2綁定;也可以直接將虛擬CPU2與VM域中的物理CPU4綁定。
[0032]參見圖2,圖2為本申請(qǐng)實(shí)施例中VM2啟動(dòng)后域劃分結(jié)構(gòu)示意圖。圖2中將VMM域中的物理CPU3劃分到VM域中,并將為VM2創(chuàng)建的虛擬CPU2與物理CPU3綁定。
[0033]下面結(jié)合附圖,詳細(xì)說明通過虛擬系統(tǒng)中域管理過程。
[0034]參見圖3,圖3為本申請(qǐng)實(shí)施例中虛擬系統(tǒng)中域管理的流程示意圖。具體步驟為:
[0035]步驟301,當(dāng)確定服務(wù)器中的任一 VM需要中斷注入。
[0036]步驟302,該服務(wù)器通過VMM域中的物理CPU向?yàn)樵揤M創(chuàng)建的虛擬CPU綁定的物理CPU發(fā)送核間中斷信號(hào),使為該VM創(chuàng)建的虛擬CPU進(jìn)行相應(yīng)的中斷注入處理。
[0037]本申請(qǐng)實(shí)施例中中斷注入為VM需要的系統(tǒng)時(shí)鐘中斷(虛擬系統(tǒng)時(shí)鐘到期)、虛擬網(wǎng)卡中斷(虛擬網(wǎng)卡有數(shù)據(jù)包需要接收)等。
[0038]以虛擬網(wǎng)卡有數(shù)據(jù)包需要接收時(shí)的中斷注入為例。
[0039]服務(wù)器接收到發(fā)送給目的VM的數(shù)據(jù)包時(shí),通過VMM將該數(shù)據(jù)存放到該目的VM的虛擬網(wǎng)卡對(duì)應(yīng)的緩存中,并通過VMM域中的物理CPU向VM域中與為該目的VM創(chuàng)建的虛擬CPU綁定的物理CPU發(fā)送核間中斷信號(hào),使為該目的VM創(chuàng)建的虛擬CPU將虛擬網(wǎng)卡對(duì)應(yīng)的緩存中的數(shù)據(jù)讀取到該目的VM的內(nèi)存中。
[0040]通常情況下,盡量不進(jìn)行虛擬CPU的迀移;由于某種原因,虛擬CPU需要迀移時(shí),具體迀移過程如下:
[0041]當(dāng)確定任一虛擬CPU需要迀移時(shí),該服務(wù)器通過VMM域中的物理CPU向與該虛擬CPU綁定的物理CPU發(fā)送刪除指令,使接收該刪除指令的物理CPU將緩存中的虛擬機(jī)控制結(jié)構(gòu)(Virtual Machine Control Structure,VMCS)信息存儲(chǔ)到內(nèi)存中,并刪除與該虛擬CPU的綁定;
[0042]該服務(wù)器通過VMM域中的物理CPU向該虛擬CPU需迀移到的目的物理CPU發(fā)送綁定指令,使接收到該綁定指令的物理CPU與該虛擬CPU綁定。
[0043]假設(shè)與物理CPU4綁定的虛擬CPUl需要迀移到與物理CPU3綁定,則服務(wù)器通過VMM域中的物理CPU向VM域中的物理CPU4發(fā)送刪除指令,在該指令中攜帶刪除與虛擬CPUl的綁定的信息。
[0044]VM域中物理CPU4接收到該刪除指令時(shí),將緩存中的VMCS信息存儲(chǔ)到內(nèi)存中,并刪除與虛擬CPUl的綁定。
[0045]該服務(wù)器通過VMM域中的物理CPU向該虛擬CPUl需迀移到的目的物理CPU3發(fā)送綁定指令,該指令中攜帶與虛擬CPUl進(jìn)行綁定的信息。
[0046]VM域中的物理CPU接收到該綁定指令時(shí),與虛擬CPUl綁定。
[0047]基于同樣的發(fā)明構(gòu)思,本申請(qǐng)還提出一種虛擬系統(tǒng)中域管理裝置,應(yīng)用于包含多物理CPU的服務(wù)器中。參