一種虛擬化場(chǎng)景下分配cpu資源的方法和裝置制造方法
【專利摘要】本發(fā)明實(shí)施例提供了一種虛擬化場(chǎng)景下分配CPU資源的方法和裝置,解決了虛擬化場(chǎng)景下多個(gè)物理CPU運(yùn)行同一個(gè)I/O所導(dǎo)致的I/O性能降低的問題。該方法包括:當(dāng)?shù)谝籌/O需要運(yùn)行時(shí),主機(jī)選取第一物理CPU,并獲得虛擬機(jī)選取的第一虛擬CPU,第一虛擬CPU用于處理虛擬機(jī)內(nèi)與所述第一I/O相對(duì)應(yīng)的線程;主機(jī)判斷第一物理CPU和第一虛擬CPU是否存在綁定關(guān)系,所述綁定關(guān)系是指所述第一虛擬CPU所對(duì)應(yīng)的物理CPU包含所述第一物理CPU;若不存在,所述主機(jī)綁定所述第一物理CPU和所述第一虛擬CPU;所述主機(jī)配置所述主機(jī)內(nèi)的第一I/O所對(duì)應(yīng)的線程運(yùn)行在所述第一物理CPU上。該方法適用于計(jì)算機(jī)【技術(shù)領(lǐng)域】。
【專利說明】一種虛擬化場(chǎng)景下分配CPU資源的方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)【技術(shù)領(lǐng)域】,尤其涉及一種虛擬化場(chǎng)景下分配CPU資源的方法和
>J-U ρ?α裝直。
【背景技術(shù)】
[0002]隨著近年來多核系統(tǒng)、云計(jì)算等的廣泛部署,虛擬化技術(shù)的優(yōu)勢(shì)日益明顯。虛擬化技術(shù)不僅降低了信息技術(shù)(Informat1n Technology, IT)成本,而且還增強(qiáng)了系統(tǒng)的安全性和可靠性,虛擬化技術(shù)可以將有限的固定資源根據(jù)不同需求進(jìn)行重新規(guī)劃以達(dá)到最大的利用率。
[0003]輸入輸出(Input/Output,1/0)虛擬化是虛擬化技術(shù)中的一種,當(dāng)虛擬機(jī)內(nèi)的一個(gè)應(yīng)用程序開始運(yùn)行時(shí),該應(yīng)用程序發(fā)起一個(gè)I/o流程,在整個(gè)1/0流程中,虛擬機(jī)通過與主機(jī)的交互訪問主機(jī)內(nèi)的物理磁盤。
[0004]完整的1/0流程需要運(yùn)行多個(gè)線程,虛擬機(jī)內(nèi)的1/0線程運(yùn)行在虛擬機(jī)選取的虛擬中央處理器(Central Processing Unit, CPU)所對(duì)應(yīng)的主機(jī)內(nèi)的物理CPU上,主機(jī)的I/O線程運(yùn)行在主機(jī)選取的物理CPU中,對(duì)于包含多個(gè)物理CPU的主機(jī),如非一致性內(nèi)存訪問(Non Uniform Memory Access Architecture,NUMA)架構(gòu)服務(wù)器,若虛擬機(jī)選取的虛擬CPU所對(duì)應(yīng)的物理CPU和主機(jī)選取的物理CPU不是同一個(gè)物理CPU,則在1/0流程中就會(huì)產(chǎn)生物理CPU切換的開銷,降低1/0的性能,若不同的物理CPU還處于不同的NUMA節(jié)點(diǎn),由于跨NUMA節(jié)點(diǎn)內(nèi)存訪問速度較慢,也會(huì)降低1/0的性能。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的實(shí)施例提供一種虛擬化場(chǎng)景下分配CPU資源的方法和裝置,解決了不同物理CPU對(duì)同一 1/0的多個(gè)線程進(jìn)行處理而導(dǎo)致的1/0性能降低的問題。
[0006]為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案:
[0007]第一方面,本發(fā)明實(shí)施例提供了一種分配CPU資源的方法,該方法包括:
[0008]當(dāng)?shù)谝?1/0需要運(yùn)行時(shí),主機(jī)選取第一物理CPU,并獲得虛擬機(jī)選取的第一虛擬CPU,其中,所述第一虛擬CPU用于處理所述虛擬機(jī)內(nèi)與所述第一 1/0相對(duì)應(yīng)的線程;
[0009]所述主機(jī)判斷所述第一物理CPU和所述第一虛擬CPU是否存在綁定關(guān)系,其中,所述綁定關(guān)系是指所述第一虛擬CPU所對(duì)應(yīng)的物理CPU包含所述第一物理CPU ;
[0010]若不存在,所述主機(jī)綁定所述第一物理CPU和所述第一虛擬CPU ;
[0011]所述主機(jī)配置所述主機(jī)內(nèi)的第一 1/0所對(duì)應(yīng)的線程運(yùn)行在所述第一物理CPU上。
[0012]在第一種可能的實(shí)施方式中,結(jié)合第一方面,所述主機(jī)判斷所述第一物理CPU和所述第一虛擬CPU是否存在綁定關(guān)系之后,該方法還包括:
[0013]所述主機(jī)判斷所述第一虛擬CPU和第二物理CPU是否存在綁定關(guān)系,其中,所述第二物理CPU是所述主機(jī)內(nèi)除所述第一物理CPU之外的任一物理CPU ;
[0014]若所述第一虛擬CPU和所述第一物理CPU以及所述第二物理CPU存在綁定關(guān)系,且所述第一物理CPU和所述第二物理CPU位于不同的非一致性內(nèi)存訪問NUMA節(jié)點(diǎn)內(nèi),則所述主機(jī)取消所述第一虛擬CPU和所述第二物理CPU的綁定關(guān)系;
[0015]所述若不存在,綁定所述第一物理CPU和所述第一虛擬CPU具體包括:
[0016]若所述第一虛擬CPU和所述第二物理CPU不存在綁定關(guān)系,則綁定所述第一物理CPU所述第一虛擬CPU ;或者,
[0017]若所述第一虛擬CPU和所述第二物理CPU存在綁定關(guān)系,且所述第一物理CPU和所述第二物理CPU位于同一個(gè)非一致性內(nèi)存訪問NUMA節(jié)點(diǎn)內(nèi),則所述主機(jī)增加綁定所述第一物理CPU和所述第一虛擬CPU ;或者,
[0018]若所述第一虛擬CPU和所述第二物理CPU存在綁定關(guān)系,且所述第一物理CPU和所述第二物理CPU位于不同的NUMA節(jié)點(diǎn)內(nèi),則所述主機(jī)取消所述第一虛擬CPU和所述第二物理CPU的綁定關(guān)系,并綁定所述第一物理CPU和所述第一虛擬CPU。
[0019]在第二種可能的實(shí)施方式中,結(jié)合第一方面或第一種可能的實(shí)施方式,所述主機(jī)選取第一物理CPU具體包括:
[0020]所述主機(jī)判斷當(dāng)前是否存在空閑物理CPU,所述空閑物理CPU是指當(dāng)前沒有運(yùn)行I/O的物理CPU ;
[0021]若存在,所述主機(jī)根據(jù)所述空閑CPU的利用率,選取利用率最低的物理CPU作為所述第一物理CPU ;
[0022]若不存在,所述主機(jī)根據(jù)從所述虛擬機(jī)預(yù)獲得的所有I/O的特征信息,獲取所述第一物理CPU。
[0023]在第三種可能的實(shí)施方式中,結(jié)合第二種可能的實(shí)施方式,所述主機(jī)判斷當(dāng)前是否存在空閑物理CPU之前,該方法還包括:
[0024]所述主機(jī)判斷在所述第一 I/O之前,所述主機(jī)是否運(yùn)行有第二 I/O ;
[0025]若是,所述主機(jī)判斷所述第一 I/O和所述第二 I/O訪問的物理磁盤是否是同一物理磁盤;
[0026]所述主機(jī)判斷當(dāng)前是否存在空閑物理CPU具體包括:
[0027]若在所述第一 I/O之前,所述主機(jī)運(yùn)行有第二 1/0,且所述第一 I/O和所述第二 I/O訪問的物理磁盤不是同一物理磁盤,所述主機(jī)判斷是否存在與運(yùn)行所述第二 I/O的物理CPU位于不同NUMA節(jié)點(diǎn)的空閑物理CPU ;
[0028]所述若存在,所述主機(jī)根據(jù)所述空閑CPU的利用率,選取利用率最低的物理CPU作為所述第一物理CPU具體包括:
[0029]若存在與運(yùn)行所述第二 I/O的物理CPU位于不同NUMA節(jié)點(diǎn)的空閑物理CPU,則從與運(yùn)行所述第二 I/o的物理CPU位于不同NUMA節(jié)點(diǎn)的空閑物理CPU中選取利用率最低的物理CPU作為所述第一物理CPU。
[0030]在第四種可能的實(shí)施方式中,結(jié)合第二種可能的實(shí)施方式或第三種可能的實(shí)施方式,所述主機(jī)根據(jù)從所述虛擬機(jī)預(yù)獲得的所有I/o的特征信息,獲取所述第一物理CPU具體包括:
[0031]所述主機(jī)根據(jù)所述所有I/O的特征信息,判斷每個(gè)物理CPU的I/O處理速度,其中,所述I/o的特征信息至少包括所述I/O訪問的虛擬磁盤的地址信息,所述I/O訪問的虛擬磁盤的空間大小信息以及所述I/o為讀操作或?qū)懖僮餍畔ⅲ?br>
[0032]根據(jù)所述每個(gè)物理CPU的I/O處理速度,選擇從當(dāng)前狀態(tài)變?yōu)榭臻e狀態(tài)需要時(shí)間最短的物理CPU作為所述第一物理CPU。
[0033]第二方面,本發(fā)明實(shí)施例提供了一種虛擬化場(chǎng)景下分配CPU資源的裝置,該裝置包括:選取單元,第一判斷單元,綁定單元和配置單元;
[0034]所述選取單元,用于當(dāng)?shù)谝?I/O需要運(yùn)行時(shí),選取第一物理CPU,并獲得虛擬機(jī)選取的第一虛擬CPU,其中,所述第一虛擬CPU用于處理所述虛擬機(jī)內(nèi)與所述第一 I/O相對(duì)應(yīng)的線程;
[0035]所述第一判斷單元,用于判斷所述第一物理CPU和所述第一虛擬CPU是否存在綁定關(guān)系,其中,所述綁定關(guān)系是指所述第一虛擬CPU所對(duì)應(yīng)的物理CPU包含所述第一物理CPU ;
[0036]所述綁定單元,用于綁定所述第一物理CPU和所述第一虛擬CPU ;
[0037]所述配置單元,用于配置所述主機(jī)內(nèi)的第一 I/O所對(duì)應(yīng)的線程運(yùn)行在所述第一物理CPU上。
[0038]在第一種可能的實(shí)施方式中,結(jié)合第二方面,所述第一判斷單元還用于:
[0039]判斷所述第一虛擬CPU和第二物理CPU是否存在綁定關(guān)系,其中,所述第二物理CPU是所述主機(jī)內(nèi)除所述第一物理CPU之外的任一物理CPU ;
[0040]所述綁定單元還用于:若所述第一虛擬CPU和所述第一物理CPU以及所述第二物理CPU存在綁定關(guān)系,且所述第一物理CPU和所述第二物理CPU位于不同的非一致性內(nèi)存訪問NUMA節(jié)點(diǎn)內(nèi),則所述主機(jī)取消所述第一虛擬CPU和所述第二物理CPU的綁定關(guān)系;
[0041]若所述第一判斷單元判斷第一虛擬CPU和所述第一物理CPU不存在綁定關(guān)系,所述綁定單元具體用于:
[0042]若所述第一虛擬CPU和所述第二物理CPU不存在綁定關(guān)系,則綁定所述第一物理CPU所述第一虛擬CPU ;或者,
[0043]若所述第一虛擬CPU和所述第二物理CPU存在綁定關(guān)系,且所述第一物理CPU和所述第二物理CPU位于同一個(gè)非一致性內(nèi)存訪問NUMA節(jié)點(diǎn)內(nèi),則所述主機(jī)增加綁定所述第一物理CPU和所述第一虛擬CPU ;或者,
[0044]若所述第一虛擬CPU和所述第二物理CPU存在綁定關(guān)系,且所述第一物理CPU和所述第二物理CPU位于不同的NUMA節(jié)點(diǎn)內(nèi),則所述主機(jī)取消所述第一虛擬CPU和所述第二物理CPU的綁定關(guān)系,并綁定所述第一物理CPU和所述第一虛擬CPU。
[0045]在第二種可能的實(shí)施方式中,結(jié)合第二方面或第一種可能的實(shí)施方式,所述裝置還包括:第二判斷單元;
[0046]所述第二判斷單元,用于判斷當(dāng)前是否存在空閑物理CPU,所述空閑物理CPU是指當(dāng)前沒有運(yùn)行I/o的物理CPU ;
[0047]所述選取單元具體用于:根據(jù)所述空閑CPU的利用率,選取利用率最低的物理CPU作為所述第一物理CPU ;或者,
[0048]根據(jù)從所述虛擬機(jī)預(yù)獲得的所有I/O的特征信息,獲取所述第一物理CPU。
[0049]在第三種可能的實(shí)施方式中,結(jié)合第二種可能的實(shí)施方式,所述裝置還包括:第三判斷單元;
[0050]所述第三判斷單元,用于判斷在所述第一 I/O之前,所述主機(jī)是否運(yùn)行有第二 I/O;
[0051]若是,所述第三判斷單元還用于:判斷所述第一 I/O和所述第二 I/O訪問的物理磁盤是否是同一物理磁盤;
[0052]所述第二判斷單元具體用于:若在所述第一 I/O之前,所述主機(jī)運(yùn)行有第二 1/0,且所述第一 I/o和所述第二 I/O訪問的物理磁盤不是同一物理磁盤,判斷是否存在與運(yùn)行所述第二 I/o的物理CPU位于不同NUMA節(jié)點(diǎn)的空閑物理CPU ;
[0053]所述選取單元具體用于:若存在與運(yùn)行所述第二 I/O的物理CPU位于不同NUMA節(jié)點(diǎn)的空閑物理CPU,則從與運(yùn)行所述第二 I/O的物理CPU位于不同NUMA節(jié)點(diǎn)的空閑物理CPU中選取利用率最低的物理CPU作為所述第一物理CPU。
[0054]在第四種可能的實(shí)施方式中,結(jié)合第二種可能的實(shí)施方式或第三種可能的實(shí)施方式,所述獲取單元具體用于:
[0055]根據(jù)所述所有I/O的特征信息,判斷每個(gè)物理CPU的I/O處理速度,其中,所述I/O的特征信息至少包括所述I/O訪問的虛擬磁盤的地址信息,所述I/O訪問的虛擬磁盤的空間大小信息以及所述I/O為讀操作或?qū)懖僮餍畔ⅲ?br>
[0056]根據(jù)所述每個(gè)物理CPU的I/O處理速度,選擇從當(dāng)前狀態(tài)變?yōu)榭臻e狀態(tài)需要時(shí)間最短的物理CPU作為所述第一物理CPU。
[0057]本發(fā)明實(shí)施例提供了一種虛擬化場(chǎng)景下分配CPU資源的方法和裝置,當(dāng)?shù)谝?I/O需要運(yùn)行時(shí),主機(jī)通過預(yù)設(shè)的策略選擇第一物理CPU,用于處理主機(jī)內(nèi)與所述第一 I/O相對(duì)應(yīng)的線程,并將所述第一物理CPU和虛擬機(jī)選取的第一虛擬CPU相綁定,與所述第一虛擬(PU相綁定的物理CPU用于處理虛擬機(jī)內(nèi)與所述第一 I/O相對(duì)應(yīng)的線程,從而使得所述虛擬機(jī)使用與所述第一虛擬CPU相綁定的第一物理CPU運(yùn)行虛擬機(jī)內(nèi)與所述第一 I/O相對(duì)應(yīng)的線程時(shí),則所述第一 I/o的全部線程由所述第一物理CPU運(yùn)行,從而避免了第一 I/O運(yùn)行過程中存在物理CPU切換的問題。
【專利附圖】
【附圖說明】
[0058]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0059]圖1為一種虛擬化場(chǎng)景下分配CPU資源的方法流程圖;
[0060]圖2為另一種虛擬化場(chǎng)景下分配CPU資源的方法流程圖;
[0061]圖3為再一種虛擬化場(chǎng)景下分配CPU資源的方法流程圖;
[0062]圖4為一種虛擬化場(chǎng)景下分配CPU資源的裝置示意圖一;
[0063]圖5為一種虛擬化場(chǎng)景下分配CPU資源的裝置示意圖二 ;
[0064]圖6為一種虛擬化場(chǎng)景下分配CPU資源的裝置示意圖三;
[0065]圖7為一種虛擬化場(chǎng)景下分配CPU資源的裝置示意圖四。
【具體實(shí)施方式】
[0066]下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0067]當(dāng)虛擬機(jī)需要訪問主機(jī)的磁盤時(shí),虛擬機(jī)內(nèi)部的應(yīng)用程序發(fā)起I/O流程,整個(gè)I/O流程需要運(yùn)行多個(gè)線程,具體的,包括虛擬機(jī)內(nèi)部應(yīng)用程序所在線程,虛擬機(jī)磁盤設(shè)備中斷線程、虛擬機(jī)內(nèi)的虛擬CPU線程等,這些線程運(yùn)行在虛擬機(jī)選取的虛擬CPU所對(duì)應(yīng)的主機(jī)的物理CPU上,還包括主機(jī)I/O處理主線程,主機(jī)磁盤設(shè)備中斷線程等,這些運(yùn)行在主機(jī)選取的物理CPU上。
[0068]但是,所述虛擬機(jī)選取的虛擬CPU對(duì)應(yīng)的主機(jī)的物理CPU和所述主機(jī)選取的物理CPU可能不是同一個(gè)物理CPU,舉例來說,虛擬機(jī)選取的虛擬CPU對(duì)應(yīng)的主機(jī)的物理CPU是主機(jī)內(nèi)的物理CPUl,主機(jī)選取的物理CPU是物理CPU2,此時(shí),整個(gè)I/O流程運(yùn)行在物理CPUl和物理CPU2上,會(huì)造成物理CPU切換的開銷,降低I/O性能。進(jìn)一步的,若物理CPUl和物理CPU2位于不同的NUMA節(jié)點(diǎn),還會(huì)存在跨NUMA節(jié)點(diǎn)內(nèi)存訪問的問題,由于在NUMA架構(gòu)的服務(wù)器下,同一個(gè)NUMA節(jié)點(diǎn)內(nèi)的物理CPU共享一個(gè)內(nèi)存,而不同NUMA節(jié)點(diǎn)內(nèi)的物理CPU訪問其他NUMA節(jié)點(diǎn)的內(nèi)存的速度要遠(yuǎn)低于訪問本NUMA節(jié)點(diǎn)內(nèi)存的速度,因此,跨NUMA節(jié)點(diǎn)內(nèi)存訪問還會(huì)進(jìn)一步的降低I/o的性能。
[0069]為解決這一問題,本發(fā)明實(shí)施例提供了一種虛擬化場(chǎng)景下分配CPU資源的方法,結(jié)合圖1,該方法包括:
[0070]101、當(dāng)?shù)谝?I/O需要運(yùn)行時(shí),主機(jī)選取第一物理CPU,并獲得虛擬機(jī)選取的第一虛擬CPU,其中,所述第一虛擬CPU用于處理所述虛擬機(jī)內(nèi)與所述第一 I/O相對(duì)應(yīng)的線程。
[0071]具體的,當(dāng)虛擬機(jī)的應(yīng)用程序下發(fā)第一 I/O之前,主機(jī)可以獲取到所述虛擬機(jī)下發(fā)第一 I/o的消息。所述主機(jī)通過預(yù)設(shè)的策略,選擇一個(gè)物理CPU,如選擇一個(gè)當(dāng)前較空閑的物理CPU作為第一物理CPU,并獲取到虛擬機(jī)選取的第一虛擬CPU,其中,所屬第一物理CPU是所述主機(jī)用于處理主機(jī)內(nèi)的所述第一 I/O所對(duì)應(yīng)的線程的物理CPU,所述第一虛擬CPU所對(duì)應(yīng)的物理CPU是所述虛擬機(jī)用于處理虛擬機(jī)內(nèi)所述第一 I/O所對(duì)應(yīng)的線程的物理CPU。
[0072]102、所述主機(jī)判斷所述第一物理CPU和所述第一虛擬CPU是否存在綁定關(guān)系,其中,所述綁定關(guān)系是指所述第一虛擬CPU所對(duì)應(yīng)的物理CPU包含所述第一物理CPU。
[0073]具體的,虛擬機(jī)內(nèi)的一個(gè)虛擬CPU工作時(shí),至少被分配有一個(gè)物理CPU的計(jì)算資源,當(dāng)主機(jī)獲取到所述第一物理CPU和所述第一虛擬CPU之后,判斷所述第一物理CPU和所述第一虛擬CPU是否存在綁定關(guān)系,所述綁定關(guān)系是指所述第一虛擬CPU對(duì)應(yīng)的物理CPU包含所述第一物理CPU,即所述主機(jī)將所述第一物理CPU的資源分配給所述第一虛擬CPU。
[0074]103、若不存在,所述主機(jī)綁定所述第一物理CPU和所述第一虛擬CPU。
[0075]若所述第一物理CPU和所述第一虛擬CPU不存在綁定關(guān)系,則說明主機(jī)沒有分配第一物理CPU的計(jì)算資源給第一虛擬CPU,即用于處理所述虛擬機(jī)內(nèi)的所述第一 I/O所對(duì)應(yīng)的線程的物理CPU不是所述第一物理CPU,此時(shí),所述I/O流程一定存在物理CPU的切換,造成I/o性能的降低。
[0076]此時(shí),所述主機(jī)綁定所述第一物理CPU和所述第一虛擬CPU,即所述主機(jī)將第一物理CPU的資源分配給所述第一虛擬CPU,所述主機(jī)內(nèi)與所述第一 I/O相對(duì)應(yīng)的線程由所述第一物理CPU完成,所述虛擬機(jī)內(nèi)與所述第一 I/O相對(duì)應(yīng)的線程由與所述第一虛擬CPU綁定的一個(gè)物理CPU完成,又由于所述第一虛擬CPU和所述第一物理CPU相綁定,則所述虛擬CPU使用所述第一物理CPU的資源完成所述虛擬機(jī)內(nèi)與所述第一 I/O相對(duì)應(yīng)的線程時(shí),則整個(gè)第一 I/o流程中的所有線程都是所述第一物理CPU完成的,不存在物理CPU切換的問題。
[0077]基于此,在一定程度上避免了 I/O流程中物理CPU的切換,提高了 I/O性能。
[0078]104、所述主機(jī)配置所述主機(jī)內(nèi)的第一 I/O所對(duì)應(yīng)的線程運(yùn)行在所述第一物理CPU上。
[0079]具體的,所述主機(jī)在綁定所述第一物理CPU和所述第一虛擬CPU之后,配置所述主機(jī)內(nèi)的第一 I/o所對(duì)應(yīng)的線程運(yùn)行在所述第一物理CPU上,以使得所述主機(jī)內(nèi)與所述I/O相對(duì)應(yīng)的線程由所述第一物理CPU來運(yùn)行,當(dāng)所述虛擬機(jī)使用與所述第一虛擬CPU相綁定的第一物理CPU運(yùn)行所述虛擬機(jī)內(nèi)的與所述I/O相對(duì)應(yīng)的線程時(shí),則整個(gè)第一 I/O流程中的所有線程都是所述第一物理CPU完成的,不存在物理CPU切換的問題。
[0080]本發(fā)明實(shí)施例提供了一種虛擬化場(chǎng)景下分配CPU資源的方法,在該方法中,當(dāng)?shù)谝?I/o需要運(yùn)行時(shí),主機(jī)通過預(yù)設(shè)的策略選擇第一物理CPU用于處理主機(jī)內(nèi)與所述第一 I/O相對(duì)應(yīng)的線程,并將所述第一物理CPU和虛擬機(jī)選取的第一虛擬CPU相綁定,與所述第一虛擬CPU相綁定的物理CPU用于處理虛擬機(jī)內(nèi)與所述第一 I/O相對(duì)應(yīng)的線程,從而使得所述虛擬機(jī)使用與所述第一虛擬CPU相綁定的第一物理CPU運(yùn)行虛擬機(jī)內(nèi)與所述第一 I/O相對(duì)應(yīng)的線程時(shí),則所述第一 I/o的全部線程由所述第一物理CPU運(yùn)行,從而避免了第一 I/O運(yùn)行過程中存在物理CPU切換的問題
[0081]進(jìn)一步的,為解決虛擬化場(chǎng)景下I/O過程中物理CPU的切換所帶來的I/O性能降低的問題,結(jié)合圖2,本發(fā)明實(shí)施例還提供了一種虛擬化場(chǎng)景下分配CPU資源的方法,該方法包括:
[0082]201、當(dāng)?shù)谝?I/O需要運(yùn)行時(shí),主機(jī)選取第一物理CPU,并獲得虛擬機(jī)選取的第一虛擬CPU,其中,所述第一虛擬CPU用于處理所述虛擬機(jī)內(nèi)與所述第一 I/O相對(duì)應(yīng)的線程。
[0083]202、所述主機(jī)判斷所述第一物理CPU和所述第一虛擬CPU是否存在綁定關(guān)系,其中,所述綁定關(guān)系是指所述第一虛擬CPU所對(duì)應(yīng)的物理CPU包含所述第一物理CPU。
[0084]具體的,步驟201和步驟202的詳細(xì)技術(shù)特征可參見上述步驟101和步驟102,本發(fā)明實(shí)施例對(duì)此不再贅述。
[0085]203、所述主機(jī)判斷所述第一虛擬CPU和第二物理CPU是否存在綁定關(guān)系,其中,所述第二物理CPU是所述主機(jī)內(nèi)除所述第一物理CPU之外的任一物理CPU。
[0086]所述第一物理CPU是所述主機(jī)選取的用于處理主機(jī)內(nèi)的與所述第一 I/O相對(duì)應(yīng)的線程的物理CPU,若所述主機(jī)判斷所述第一虛擬CPU和所述第一物理CPU不存在綁定關(guān)系,則所述主機(jī)判斷所述第一虛擬CPU是否和主機(jī)內(nèi)除所述第一物理CPU之外的其他物理CPU,即第二物理CPU存在綁定關(guān)系,若所述第一虛擬CPU和第二物理CPU存在綁定關(guān)系,說明主機(jī)已經(jīng)分配了第二物理CPU的計(jì)算資源給所述第一虛擬CPU。
[0087]204、確定所述第一虛擬CPU和所述第一物理CPU以及所述第二物理CPU的綁定關(guān)系O
[0088]具體的,分為如下六種情況進(jìn)行討論:
[0089]第一種情況,所述第一物理CPU和所述第一虛擬CPU存在綁定關(guān)系,且所述第一虛擬CPU和所述第二物理CPU之間不存在綁定關(guān)系,則直接進(jìn)入步驟205 ;
[0090]在這種情況下,所述第一虛擬CPU只和所述第一物理CPU存在綁定關(guān)系,則所述主機(jī)內(nèi)和所述虛擬機(jī)內(nèi)的與所述I/o所對(duì)應(yīng)的線程都是由所述第一物理CPU運(yùn)行的,不存在物理CPU切換的問題。
[0091]第二種情況,所述第一虛擬CPU和所述第一物理CPU以及所述第二物理CPU都存在綁定關(guān)系,且所述第一物理CPU和所述第二物理CPU位于同一 NUMA節(jié)點(diǎn)內(nèi),則所述主機(jī)維持這種綁定關(guān)系,進(jìn)入步驟205 ;
[0092]在這種情況下,所述第一虛擬CPU和位于同一個(gè)NUMA節(jié)點(diǎn)內(nèi)的第一物理CPU和第二物理CPU相綁定,雖然存在物理CPU切換的問題,但由于第一物理CPU和第二物理CPU位于同一個(gè)NUAM節(jié)點(diǎn)內(nèi),因此不存在跨NUAM節(jié)點(diǎn)訪問的問題,并且,兩個(gè)物理CPU對(duì)虛擬機(jī)內(nèi)所述第一 I/O所對(duì)應(yīng)的線程進(jìn)行處理,當(dāng)系統(tǒng)繁忙時(shí),可以減小I/O線程的等待時(shí)間,提高處理速率。
[0093]第三種情況,所述第一虛擬CPU和所述第一物理CPU以及所述第二物理CPU都存在綁定關(guān)系,且所述第一物理CPU和所述第二物理CPU位于不同的NUMA節(jié)點(diǎn)內(nèi),則所述主機(jī)取消所述第一虛擬CPU和所述二物理CPU的綁定關(guān)系;
[0094]在這種情況下,由于跨NUMA節(jié)點(diǎn)訪問對(duì)I/O的影響較大,因此,若第一虛擬CPU和所述第二物理CPU存在綁定關(guān)系,則取消所述第一虛擬CPU和所述第二物理CPU的綁定關(guān)系,只保留所述第一虛擬CPU和所述第一物理CPU的綁定關(guān)系,則所述主機(jī)內(nèi)和所述虛擬機(jī)內(nèi)的與所述I/o所對(duì)應(yīng)的線程都是由所述第一物理CPU運(yùn)行的,不存在物理CPU切換的問題,從而提高了 I/o性能。
[0095]第四種情況,所述第一虛擬CPU和所述第一物理CPU和所述第二物理CPU都不存在綁定關(guān)系,則所述主機(jī)綁定所述第一物理CPU和所述第一虛擬CPU,此時(shí)所述主機(jī)內(nèi)和所述虛擬機(jī)內(nèi)的與所述I/o所對(duì)應(yīng)的線程都是由所述第一物理CPU運(yùn)行的,不存在物理CPU切換的問題,從而提高了 I/o性能
[0096]第五種情況,所述第一虛擬CPU和所述第一物理CPU不存在綁定關(guān)系,但和所述第二物理CPU存在綁定關(guān)系,且所述第一物理CPU和所述第二物理CPU位于同一個(gè)NUMA節(jié)點(diǎn)內(nèi),則所述主機(jī)增加綁定所述第一物理CPU和所述第一虛擬CPU ;
[0097]在這種情況下,由于第一物理CPU和第二物理CPU位于同一個(gè)NUAM節(jié)點(diǎn)內(nèi),因此不存在跨NUAM節(jié)點(diǎn)訪問的問題,并且,兩個(gè)物理CPU對(duì)虛擬機(jī)內(nèi)所述第一 I/O所對(duì)應(yīng)的線程進(jìn)行處理,當(dāng)系統(tǒng)繁忙時(shí),可以減小I/O線程的等待時(shí)間,提高處理速率。
[0098]第六種情況,所述第一虛擬CPU和所述第一物理CPU不存在綁定關(guān)系,但和所述第二物理CPU存在綁定關(guān)系,且所述第一物理CPU和所述第二物理CPU位于不同的NUMA節(jié)點(diǎn)內(nèi),則所述主機(jī)取消所述第一虛擬CPU和所述第二物理CPU的綁定關(guān)系,并綁定所述第一物理CPU和所述第一虛擬CPU ;
[0099]在這種情況下,由于跨NUMA節(jié)點(diǎn)訪問對(duì)I/O的性能影響較大,因此主機(jī)只綁定所述第一虛擬CPU和所述第一物理CPU,取消第一虛擬CPU和第二物理CPU的綁定關(guān)系,此時(shí)所述主機(jī)內(nèi)和所述虛擬機(jī)內(nèi)的與所述I/o所對(duì)應(yīng)的線程都是由所述第一物理CPU運(yùn)行的,不存在物理CPU切換的問題,從而提高了 I/O性能。
[0100]205、所述主機(jī)配置所述主機(jī)內(nèi)的第一 I/O所對(duì)應(yīng)的線程運(yùn)行在所述第一物理CPU上。
[0101]具體的,步驟205的詳細(xì)技術(shù)特征可參見上述步驟104,本發(fā)明實(shí)施例對(duì)此不再贅述。
[0102]本發(fā)明實(shí)施例提供了一種虛擬化場(chǎng)景下分配CPU資源的方法,在該方法中,當(dāng)?shù)谝?I/o需要運(yùn)行時(shí),主機(jī)通過預(yù)設(shè)的策略選擇第一物理CPU用于處理主機(jī)內(nèi)與所述第一 1/0相對(duì)應(yīng)的線程,并根據(jù)所述第一虛擬CPU和所述第一物理CPU、所述主機(jī)內(nèi)除所述第一物理CPU之外的第二物理CPU是否存在綁定關(guān)系,以及第一物理CPU和第二物理CPU是否處于同一 NUMA節(jié)點(diǎn)確定綁定關(guān)系,使得與所述第一虛擬機(jī)CPU存在綁定關(guān)系的物理CPU只有所述第一物理CPU,或者使得與所述第一虛擬CPU存在綁定關(guān)系的兩個(gè)物理CPU位于同一個(gè)NUMA節(jié)點(diǎn)內(nèi),從而避免了跨NUMA節(jié)點(diǎn)的訪問所帶來的I/O性能的降低。
[0103]本發(fā)明實(shí)施例還提供了一種虛擬化場(chǎng)景下分配CPU資源的方法,結(jié)合圖3,該方法包括:
[0104]301、當(dāng)?shù)谝?I/O需要運(yùn)行時(shí),所述主機(jī)判斷當(dāng)前是否存在空閑物理CPU,所述空閑物理CPU是指當(dāng)前沒有運(yùn)行I/O的物理CPU。
[0105]為提高第一 I/O的處理速度,所述主機(jī)選擇一個(gè)當(dāng)前較為空閑的物理CPU作為所述第一物理CPU,用于處理所述主機(jī)內(nèi)與所述第一 I/O相對(duì)應(yīng)的線程,此時(shí),所述主機(jī)判斷當(dāng)前是否存在空閑的物理CPU。
[0106]需要說明的是,所述主機(jī)在判斷當(dāng)前是否存在空閑物理CPU之前,還可以做如下判斷:所述主機(jī)判斷在所述第一 I/o之前,所述主機(jī)是否運(yùn)行有第二 I/O ;若是,所述主機(jī)判斷所述第一 I/o和所述第二 I/O訪問的物理磁盤是否是同一物理磁盤。
[0107]當(dāng)所述主機(jī)在所述第一 I/O下發(fā)之前,正在運(yùn)行著第二 1/0,且所述第二 I/O與所述第一 I/O訪問的物理磁盤不是同一個(gè)物理磁盤,則此時(shí)所述第一 I/O和所述第二 I/O可以并行運(yùn)行。若此時(shí)主機(jī)內(nèi)除了運(yùn)行所述第二 I/o的物理CPU之外,還存在其他空閑物理CPU,則主機(jī)選取一個(gè)與運(yùn)行所述第二 I/O的物理CPU在不同NUMA節(jié)點(diǎn)且利用率最低的空閑物理CPU作為所述第一物理CPU。
[0108]這樣,第二 I/O和第一 I/O可以同時(shí)運(yùn)行,且由于運(yùn)行第二 I/O和第一 I/O的物理CPU不在同一個(gè)NUMA節(jié)點(diǎn)內(nèi),則這兩個(gè)物理CPU訪問的NUMA節(jié)點(diǎn)內(nèi)的存儲(chǔ)有指令信息的內(nèi)存不是同一個(gè)內(nèi)存,從而提高了第一 I/o和第二 I/O的運(yùn)行速度。
[0109]302、若存在,所述主機(jī)根據(jù)所述空閑CPU的利用率,選取利用率最低的物理CPU作為所述第一物理CPU ;若不存在,所述主機(jī)根據(jù)從所述虛擬機(jī)預(yù)獲得的所有I/O的特征信息,獲取所述第一物理CPU。
[0110]當(dāng)所述第一 I/O需要運(yùn)行時(shí),存在空閑的物理CPU,則所述主機(jī)在所述物理CPU中選取一個(gè)最空閑的物理CPU作為所述第一物理CPU,具體的,所述主機(jī)可以根據(jù)所述空閑的物理CPU的利用率,選取利用率最低的物理CPU作為所述第一物理CPU。
[0111]當(dāng)所述第一 I/O需要運(yùn)行時(shí),若不存在空閑的物理CPU,即此時(shí)每個(gè)物理CPU在所述第一 I/o運(yùn)行之前都正在運(yùn)行著其他1/0,則所述主機(jī)判斷這些物理CPU中哪一個(gè)物理CPU會(huì)最快處于空閑狀態(tài),選擇最快處于空閑狀態(tài)的物理CPU作為所述第一物理CPU。
[0112]具體的,I/O的下發(fā)由虛擬機(jī)執(zhí)行,在每個(gè)I/O下發(fā)之前,本發(fā)明實(shí)施中的虛擬機(jī)記錄該I/o的特征信息,具體的,以所述第一 I/O為例,所述第一 I/O的特征信息可以包含所述第一 I/o訪問的虛擬磁盤的地址信息,所述第一 I/O訪問的虛擬磁盤的空間大小信息以及所述第一 I/o為讀操作或?qū)懖僮餍畔ⅲ鲋鳈C(jī)從所述虛擬機(jī)獲取所述第一 I/O的特征信息,并根據(jù)所述第一 I/O的特征信息獲取如下參數(shù):
[0113]第一,訪問地址系數(shù),所述主機(jī)根據(jù)所述I/O訪問虛擬磁盤的地址信息獲得該虛擬磁盤的地址信息對(duì)應(yīng)的物理磁盤的物理地址信息,并根據(jù)物理地址信息判斷第一 I/o訪問的地址是連續(xù)的還是非連續(xù)的。舉例來說,所述主機(jī)內(nèi)的磁盤包含100個(gè)數(shù)據(jù)塊存儲(chǔ)空間,若所述第一 I/o訪問其中連續(xù)的幾個(gè)數(shù)據(jù)塊存儲(chǔ)空間,如第1-5個(gè)數(shù)據(jù)塊存儲(chǔ)空間,則所述第一 I/o訪問的地址是連續(xù)的,訪問速度相對(duì)較快,若所述第一 I/O訪問所述磁盤中的幾個(gè)不連續(xù)的數(shù)據(jù)塊存儲(chǔ)空間,如訪問所述磁盤的1、3、4、6、8個(gè)數(shù)據(jù)塊存儲(chǔ)空間,則所述第一 I/O訪問的地址是不連續(xù)的,訪問速度相對(duì)較慢。
[0114]第二,數(shù)據(jù)塊大小系數(shù),即所述第一 I/O訪問的虛擬磁盤的數(shù)據(jù)塊的大小信息。舉例來說,以64K作為預(yù)設(shè)閾值,當(dāng)?shù)谝?I/O訪問的數(shù)據(jù)塊大于64K時(shí),則主機(jī)判斷所述第一I/O訪問的數(shù)據(jù)塊為大塊,速度相對(duì)較慢,當(dāng)?shù)谝?I/O訪問的數(shù)據(jù)塊小于64K時(shí),所述主機(jī)判斷所述第一 I/O訪問的數(shù)據(jù)塊為小塊,訪問速度相對(duì)較快。
[0115]第三,讀寫系數(shù),即所述第一 I/O是讀操作還是寫操作,若是讀操作,則訪問速度相對(duì)較快,若是寫操作,則訪問速度相對(duì)較慢。
[0116]則可以預(yù)設(shè)如下規(guī)則,CPU處理速度系數(shù)=訪問地址系數(shù)+數(shù)據(jù)塊大小系數(shù)+讀與系數(shù);
[0117]具體的,若訪問的地址是連續(xù)的,則訪問地址系數(shù)為0,若訪問的地址是不連續(xù)的,則訪問地址系數(shù)為1 ;若訪問的數(shù)據(jù)塊大于預(yù)設(shè)閾值,則數(shù)據(jù)塊大小系數(shù)為1,若訪問的數(shù)據(jù)塊小于預(yù)設(shè)閾值,則數(shù)據(jù)塊大小系數(shù)為0;若為讀操作,則讀寫系數(shù)為0,若為寫操作,則讀寫系數(shù)為1。
[0118]CPU處理速度系數(shù)越大,表示CPU的處理速度越慢,CPU處理速度系數(shù)越小,表示CPU的處理速度越快。
[0119]舉例來說,主機(jī)內(nèi)有兩個(gè)物理CPU,分別為物理CPU1和物理CPU2,當(dāng)?shù)谝?I/O下發(fā)時(shí),物理CPU1和物理CPU2分別正在運(yùn)行第二 I/O和第三1/0,其中,第二 I/O訪問的物理磁盤的地址是連續(xù)的,訪問主機(jī)的物理磁盤的5個(gè)數(shù)據(jù)塊,其中3個(gè)數(shù)據(jù)塊高于預(yù)設(shè)閾值,2個(gè)數(shù)據(jù)塊低于預(yù)設(shè)閾值,第二 I/o為讀操作,則物理CPU1的處理速度系數(shù)=0+3+0 = 3 ;第三I/O訪問的物理磁盤的地址是非連續(xù)的,訪問主機(jī)的物理磁盤的6個(gè)數(shù)據(jù)塊,其中5個(gè)數(shù)據(jù)塊大于預(yù)設(shè)閾值,1個(gè)數(shù)據(jù)塊小于預(yù)設(shè)閾值,第三I/O為寫操作,則物理CPU2的處理速度系數(shù)=1+5+1 = 7。
[0120]基于此,物理CPU2的處理速度較慢,物理CPU1會(huì)較快處于空閑狀態(tài),則所述主機(jī)選擇所述物理CPU1作為所述第一物理CPU。
[0121]具體的,所述I/O的特征信息還可以包含其他參數(shù),本發(fā)明實(shí)施例對(duì)此不做限定。并且,任何基于本發(fā)明思想提出的判斷物理CPU處理速度的方法,都在本發(fā)明保護(hù)范圍之內(nèi)。
[0122]需要說明的是,當(dāng)同一類型的1/0,其I/O特征信息相同,主機(jī)計(jì)算獲得的CPU處理速度系數(shù)相同,主機(jī)只計(jì)算并存儲(chǔ)同一類型的一個(gè)I/o的特征信息計(jì)算得到的CPU處理速度系數(shù)即可,不必重復(fù)計(jì)算,從而減小了主機(jī)的計(jì)算量。
[0123]303、所述主機(jī)判斷所述第一物理CPU和所述第一虛擬CPU是否存在綁定關(guān)系,其中,所述綁定關(guān)系是指所述第一虛擬CPU所對(duì)應(yīng)的物理CPU包含所述第一物理CPU。
[0124]304、若不存在,所述主機(jī)綁定所述第一物理CPU和所述第一虛擬CPU。
[0125]305、所述主機(jī)配置所述主機(jī)內(nèi)的第一 I/O所對(duì)應(yīng)的線程運(yùn)行在所述第一物理CPU上。
[0126]具體的,步驟303-步驟305的詳細(xì)技術(shù)特征可參見上述步驟102-104,本發(fā)明實(shí)施例對(duì)此不再贅述。
[0127]本發(fā)明實(shí)施例提供了一種虛擬化場(chǎng)景下分配CPU資源的方法,當(dāng)?shù)谝?I/O需要運(yùn)行時(shí),主機(jī)通過判斷空閑物理CPU的利用率,以及非空閑物理CPU正在運(yùn)行的I/O的特征信息,為所述第一 I/o選擇一個(gè)處理速度較快的物理CPU作為第一物理CPU,用于處理主機(jī)內(nèi)與所述第一 I/o相對(duì)應(yīng)的線程,并且,主機(jī)將所述第一物理CPU和虛擬機(jī)選取的第一虛擬(PU相綁定,當(dāng)所述虛擬機(jī)使用與所述第一虛擬CPU相綁定的第一物理CPU處理所述虛擬機(jī)內(nèi)與所述第一 I/o相對(duì)應(yīng)的線程時(shí),則所述第一 I/O的所有線程實(shí)際上是由所述第一 CPU運(yùn)行的,從而避免了 I/o過程中由于物理CPU切換所帶來的I/O性能的降低。
[0128]為解決虛擬化場(chǎng)景下I/O過程中物理CPU的切換所帶來的I/O性能降低的問題,結(jié)合圖4,本發(fā)明實(shí)施例還提供了一種虛擬化場(chǎng)景下分配CPU資源的裝置,該裝置包括:選取單元401,第一判斷單元402,綁定單元403和配置單元404 ;
[0129]所述選取單元401,用于當(dāng)?shù)谝?I/O需要運(yùn)行時(shí),選取第一物理CPU,并獲得虛擬機(jī)選取的第一虛擬CPU,其中,所述第一虛擬CPU用于處理所述虛擬機(jī)內(nèi)與所述第一 I/O相對(duì)應(yīng)的線程;
[0130]所述第一判斷單元402,用于判斷所述第一物理CPU和所述第一虛擬CPU是否存在綁定關(guān)系,其中,所述綁定關(guān)系是指所述第一虛擬CPU所對(duì)應(yīng)的物理CPU包含所述第一物理CPU ;
[0131]所述綁定單元403,用于綁定所述第一物理CPU和所述第一虛擬CPU ;
[0132]所述配置單元404,用于配置所述主機(jī)內(nèi)的第一 I/O所對(duì)應(yīng)的線程運(yùn)行在所述第一物理CPU上。
[0133]可選的,所述第一判斷單元402還用于:
[0134]判斷所述第一虛擬CPU和第二物理CPU是否存在綁定關(guān)系,其中,所述第二物理CPU是所述主機(jī)內(nèi)除所述第一物理CPU之外的任一物理CPU ;
[0135]所述綁定單元403還用于:若所述第一虛擬CPU和所述第一物理CPU以及所述第二物理CPU存在綁定關(guān)系,且所述第一物理CPU和所述第二物理CPU位于不同的非一致性內(nèi)存訪問NUMA節(jié)點(diǎn)內(nèi),則所述主機(jī)取消所述第一虛擬CPU和所述第二物理CPU的綁定關(guān)系;
[0136]若所述第一判斷單元判斷第一虛擬CPU和所述第一物理CPU不存在綁定關(guān)系,所述綁定單元403具體用于:
[0137]若所述第一虛擬CPU和所述第二物理CPU不存在綁定關(guān)系,則綁定所述第一物理CPU所述第一虛擬CPU ;或者,
[0138]若所述第一虛擬CPU和所述第二物理CPU存在綁定關(guān)系,且所述第一物理CPU和所述第二物理CPU位于同一個(gè)非一致性內(nèi)存訪問NUMA節(jié)點(diǎn)內(nèi),則所述主機(jī)增加綁定所述第一物理CPU和所述第一虛擬CPU ;或者,
[0139]若所述第一虛擬CPU和所述第二物理CPU存在綁定關(guān)系,且所述第一物理CPU和所述第二物理CPU位于不同的NUMA節(jié)點(diǎn)內(nèi),則所述主機(jī)取消所述第一虛擬CPU和所述第二物理CPU的綁定關(guān)系,并綁定所述第一物理CPU和所述第一虛擬CPU。
[0140]可選的,結(jié)合圖5,該裝置還包括:第二判斷單元405 ;
[0141]所述第二判斷單元405,用于判斷當(dāng)前是否存在空閑物理CPU,所述空閑物理CPU是指當(dāng)前沒有運(yùn)行I/o的物理CPU ;
[0142]所述選取單元401具體用于:根據(jù)所述空閑CPU的利用率,選取利用率最低的物理CPU作為所述第一物理CPU ;或者,
[0143]根據(jù)從所述虛擬機(jī)預(yù)獲得的所有I/O的特征信息,獲取所述第一物理CPU。
[0144]可選的,結(jié)合圖6,該裝置還包括:第三判斷單元406 ;
[0145]所述第三判斷單元406,用于判斷在所述第一 I/O之前,所述主機(jī)是否運(yùn)行有第二I/o;
[0146]若是,所述第三判斷單元還用于:判斷所述第一 I/O和所述第二 I/O訪問的物理磁盤是否是同一物理磁盤;
[0147]所述第二判斷單元405具體用于:若在所述第一 I/O之前,所述主機(jī)運(yùn)行有第二1/0,且所述第一 I/O和所述第二 I/O訪問的物理磁盤不是同一物理磁盤,判斷是否存在與運(yùn)行所述第二 I/o的物理CPU位于不同NUMA節(jié)點(diǎn)的空閑物理CPU ;
[0148]所述選取單元401具體用于:若存在與運(yùn)行所述第二 I/O的物理CPU位于不同NUMA節(jié)點(diǎn)的空閑物理CPU,則從與運(yùn)行所述第二 I/O的物理CPU位于不同NUMA節(jié)點(diǎn)的空閑物理CPU中選取利用率最低的物理CPU作為所述第一物理CPU。
[0149]具體的,所述選取單元401用于:根據(jù)所述所有I/O的特征信息,判斷每個(gè)物理CPU的I/O處理速度,其中,所述I/O的特征信息至少包括所述I/O訪問的虛擬磁盤的地址信息,所述I/o訪問的虛擬磁盤的空間大小信息以及所述I/O為讀操作或?qū)懖僮餍畔ⅲ?br>
[0150]根據(jù)所述每個(gè)物理CPU的I/O處理速度,選擇從當(dāng)前狀態(tài)變?yōu)榭臻e狀態(tài)需要時(shí)間最短的物理CPU作為所述第一物理CPU。
[0151]本發(fā)明實(shí)施例提供了一種虛擬化場(chǎng)景下分配CPU資源的裝置,當(dāng)?shù)谝?I/O需要運(yùn)行時(shí),該裝置通過判斷空閑物理CPU的利用率,以及非空閑物理CPU正在運(yùn)行的I/O的特征信息,為所述第一 I/o選擇一個(gè)處理速度較快的物理CPU作為第一物理CPU,用于處理主機(jī)內(nèi)與所述第一 I/o相對(duì)應(yīng)的線程,并且,該裝置將所述第一物理CPU和虛擬機(jī)選取的第一虛擬CPU相綁定,當(dāng)所述虛擬機(jī)選取與所述第一虛擬CPU相綁定的第一物理CPU處理所述虛擬機(jī)內(nèi)與所述第一 I/o相對(duì)應(yīng)的線程時(shí),則所述第一 I/O的所有線程實(shí)際上是由所述第一CPU運(yùn)行的,從而避免了 I/O過程中由于物理CPU切換所帶來的I/O性能的降低。
[0152]進(jìn)一步的,為解決虛擬化場(chǎng)景下I/O過程中物理CPU的切換所帶來的I/O性能降低的問題,結(jié)合圖7,本發(fā)明實(shí)施例還提供了一種虛擬化場(chǎng)景下分配CPU資源的裝置,該裝置包括:處理器701、總線702和存儲(chǔ)器703,其中,所述處理器701通過所述總線702獲取所述存儲(chǔ)器703中的指令,以用于:
[0153]當(dāng)?shù)谝?I/O需要運(yùn)行時(shí),選取第一物理CPU,并獲得虛擬機(jī)選取的第一虛擬CPU,其中,所述第一虛擬CPU用于處理所述虛擬機(jī)內(nèi)與所述第一 I/O相對(duì)應(yīng)的線程;
[0154]判斷所述第一物理CPU和所述第一虛擬CPU是否存在綁定關(guān)系,其中,所述綁定關(guān)系是指所述第一虛擬CPU所對(duì)應(yīng)的物理CPU包含所述第一物理CPU ;
[0155]若不存在,綁定所述第一物理CPU和所述第一虛擬CPU ;
[0156]配置所述主機(jī)內(nèi)的第一 I/O所對(duì)應(yīng)的線程運(yùn)行在所述第一物理CPU上。
[0157]可選的,所述處理器701還用于:判斷所述第一虛擬CPU和第二物理CPU是否存在綁定關(guān)系,其中,所述第二物理CPU是所述主機(jī)內(nèi)除所述第一物理CPU之外的任一物理CPU ;
[0158]若所述第一虛擬CPU和所述第一物理CPU以及所述第二物理CPU存在綁定關(guān)系,且所述第一物理CPU和所述第二物理CPU位于不同的非一致性內(nèi)存訪問NUMA節(jié)點(diǎn)內(nèi),則取消所述第一虛擬CPU和所述第二物理CPU的綁定關(guān)系;
[0159]若所述第一物理CPU和所述第一虛擬CPU不存在綁定關(guān)系,則所述處理器701具體用于:
[0160]若所述第一虛擬CPU和所述第二物理CPU不存在綁定關(guān)系,則綁定所述第一物理CPU所述第一虛擬CPU ;或者,
[0161]若所述第一虛擬CPU和所述第二物理CPU存在綁定關(guān)系,且所述第一物理CPU和所述第二物理CPU位于同一個(gè)非一致性內(nèi)存訪問NUMA節(jié)點(diǎn)內(nèi),則增加綁定所述第一物理CPU和所述第一虛擬CPU ;或者,
[0162]若所述第一虛擬CPU和所述第二物理CPU存在綁定關(guān)系,且所述第一物理CPU和所述第二物理CPU位于不同的NUMA節(jié)點(diǎn)內(nèi),則取消所述第一虛擬CPU和所述第二物理CPU的綁定關(guān)系,并綁定所述第一物理CPU和所述第一虛擬CPU。
[0163]可選的,所述處理器701還用于:判斷當(dāng)前是否存在空閑物理CPU,所述空閑物理CPU是指當(dāng)前沒有運(yùn)行I/O的物理CPU ;
[0164]若存在,根據(jù)所述空閑CPU的利用率,選取利用率最低的物理CPU作為所述第一物理 CPU ;
[0165]若不存在,根據(jù)從所述虛擬機(jī)預(yù)獲得的所有I/O的特征信息,獲取所述第一物理CPU。
[0166]可選的,所述處理器701還用于:判斷在所述第一 I/O之前,所述主機(jī)是否運(yùn)行有第二 I/o ;
[0167]若是,判斷所述第一 I/O和所述第二 I/O訪問的物理磁盤是否是同一物理磁盤;
[0168]若在所述第一 I/O之前,所述主機(jī)運(yùn)行有第二 1/0,且所述第一 I/O和所述第二 1/0訪問的物理磁盤不是同一物理磁盤,判斷是否存在與運(yùn)行所述第二 I/O的物理CPU位于不同NUMA節(jié)點(diǎn)的空閑物理CPU ;
[0169]若存在與運(yùn)行所述第二 I/O的物理CPU位于不同NUMA節(jié)點(diǎn)的空閑物理CPU,則從與運(yùn)行所述第二 I/o的物理CPU位于不同NUMA節(jié)點(diǎn)的空閑物理CPU中選取利用率最低的物理CPU作為所述第一物理CPU。
[0170]可選的,所述處理器701還用于:根據(jù)所述所有I/O的特征信息,判斷每個(gè)物理CPU的I/O處理速度,其中,所述I/O的特征信息至少包括所述I/O訪問的虛擬磁盤的地址信息,所述I/o訪問的虛擬磁盤的空間大小信息以及所述I/O為讀操作或?qū)懖僮餍畔ⅲ?br>
[0171]根據(jù)所述每個(gè)物理CPU的I/O處理速度,選擇從當(dāng)前狀態(tài)變?yōu)榭臻e狀態(tài)需要時(shí)間最短的物理CPU作為所述第一物理CPU。
[0172]本發(fā)明實(shí)施例提供了一種虛擬化場(chǎng)景下分配CPU資源的裝置,當(dāng)?shù)谝?I/O需要運(yùn)行時(shí),該裝置通過判斷空閑物理CPU的利用率,以及非空閑物理CPU正在運(yùn)行的I/O的特征信息,為所述第一 I/o選擇一個(gè)處理速度較快的物理CPU作為第一物理CPU,用于處理主機(jī)內(nèi)與所述第一 I/o相對(duì)應(yīng)的線程,并且,該裝置將所述第一物理CPU和虛擬機(jī)選取的第一虛擬CPU相綁定,當(dāng)所述虛擬機(jī)選取與所述第一虛擬CPU相綁定的第一物理CPU處理所述虛擬機(jī)內(nèi)與所述第一 I/o相對(duì)應(yīng)的線程時(shí),則所述第一 I/O的所有線程實(shí)際上是由所述第一CPU運(yùn)行的,從而避免了 I/O過程中由于物理CPU切換所帶來的I/O性能的降低。
[0173]本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述方法實(shí)施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成,前述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),執(zhí)行包括上述方法實(shí)施例的步驟;而前述的存儲(chǔ)介質(zhì)包括:R0M、RAM、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
[0174]以上所述,僅為本發(fā)明的【具體實(shí)施方式】,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本【技術(shù)領(lǐng)域】的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以所述權(quán)利要求的保護(hù)范圍為準(zhǔn)。
【權(quán)利要求】
1.一種虛擬化場(chǎng)景下分配中央處理器CPU資源的方法,其特征在于,該方法包括: 當(dāng)?shù)谝惠斎胼敵鯥/O需要運(yùn)行時(shí),主機(jī)選取第一物理CPU,并獲得虛擬機(jī)選取的第一虛擬CPU,其中,所述第一虛擬CPU用于處理所述虛擬機(jī)內(nèi)與所述第一 I/O相對(duì)應(yīng)的線程;所述主機(jī)判斷所述第一物理CPU和所述第一虛擬CPU是否存在綁定關(guān)系,其中,所述綁定關(guān)系是指所述第一虛擬CPU所對(duì)應(yīng)的物理CPU包含所述第一物理CPU ; 若不存在,所述主機(jī)綁定所述第一物理CPU和所述第一虛擬CPU ; 所述主機(jī)配置所述主機(jī)內(nèi)的第一 I/o所對(duì)應(yīng)的線程運(yùn)行在所述第一物理CPU上。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述主機(jī)判斷所述第一物理CPU和所述第一虛擬CPU是否存在綁定關(guān)系之后,該方法還包括: 所述主機(jī)判斷所述第一虛擬CPU和第二物理CPU是否存在綁定關(guān)系,其中,所述第二物理CPU是所述主機(jī)內(nèi)除所述第一物理CPU之外的任一物理CPU ; 若所述第一虛擬CPU和所述第一物理CPU以及所述第二物理CPU存在綁定關(guān)系,且所述第一物理CPU和所述第二物理CPU位于不同的非一致性內(nèi)存訪問NUMA節(jié)點(diǎn)內(nèi),則所述主機(jī)取消所述第一虛擬CPU和所述第二物理CPU的綁定關(guān)系; 所述若不存在,綁定所述第一物理CPU和所述第一虛擬CPU具體包括: 若所述第一虛擬CPU和所述第二物理CPU不存在綁定關(guān)系,則綁定所述第一物理CPU所述第一虛擬CPU;或者, 若所述第一虛擬CPU和所述第二物理CPU存在綁定關(guān)系,且所述第一物理CPU和所述第二物理CPU位于同一個(gè)非一致性內(nèi)存訪問NUMA節(jié)點(diǎn)內(nèi),則所述主機(jī)增加綁定所述第一物理CPU和所述第一虛擬CPU ;或者, 若所述第一虛擬CPU和所述第二物理CPU存在綁定關(guān)系,且所述第一物理CPU和所述第二物理CPU位于不同的NUMA節(jié)點(diǎn)內(nèi),則所述主機(jī)取消所述第一虛擬CPU和所述第二物理CPU的綁定關(guān)系,并綁定所述第一物理CPU和所述第一虛擬CPU。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述主機(jī)選取第一物理CPU具體包括: 所述主機(jī)判斷當(dāng)前是否存在空閑物理CPU,所述空閑物理CPU是指當(dāng)前沒有運(yùn)行I/O的物理CPU ; 若存在,所述主機(jī)根據(jù)所述空閑CPU的利用率,選取利用率最低的物理CPU作為所述第一物理CPU ; 若不存在,所述主機(jī)根據(jù)從所述虛擬機(jī)預(yù)獲得的所有I/O的特征信息,獲取所述第一物理CPU。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述主機(jī)判斷當(dāng)前是否存在空閑物理CPU之前,該方法還包括: 所述主機(jī)判斷在所述第一 I/o之前,所述主機(jī)是否運(yùn)行有第二 I/O ; 若是,所述主機(jī)判斷所述第一 I/o和所述第二 I/O訪問的物理磁盤是否是同一物理磁盤; 所述主機(jī)判斷當(dāng)前是否存在空閑物理CPU具體包括: 若在所述第一 I/o之前,所述主機(jī)運(yùn)行有第二 1/0,且所述第一 I/O和所述第二 I/O訪問的物理磁盤不是同一物理磁盤,所述主機(jī)判斷是否存在與運(yùn)行所述第二 I/o的物理CPU位于不同NUMA節(jié)點(diǎn)的空閑物理CPU ; 所述若存在,所述主機(jī)根據(jù)所述空閑CPU的利用率,選取利用率最低的物理CPU作為所述第一物理CPU具體包括: 若存在與運(yùn)行所述第二 I/O的物理CPU位于不同NUMA節(jié)點(diǎn)的空閑物理CPU,則從與運(yùn)行所述第二 I/O的物理CPU位于不同NUMA節(jié)點(diǎn)的空閑物理CPU中選取利用率最低的物理CPU作為所述第一物理CPU。
5.根據(jù)權(quán)利要求3或4所述的方法,其特征在于,所述主機(jī)根據(jù)從所述虛擬機(jī)預(yù)獲得的所有I/o的特征信息,獲取所述第一物理CPU具體包括: 所述主機(jī)根據(jù)所述所有I/o的特征信息,判斷每個(gè)物理CPU的I/O處理速度,其中,所述I/o的特征信息至少包括所述I/O訪問的虛擬磁盤的地址信息,所述I/O訪問的虛擬磁盤的空間大小信息以及所述I/o為讀操作或?qū)懖僮餍畔ⅲ? 根據(jù)所述每個(gè)物理CPU的I/O處理速度,選擇從當(dāng)前狀態(tài)變?yōu)榭臻e狀態(tài)需要時(shí)間最短的物理CPU作為所述第一物理CPU。
6.一種虛擬化場(chǎng)景下分配中央處理器CPU資源的裝置,該裝置包括:選取單元,第一判斷單元,綁定單元和配置單元; 所述選取單元,用于當(dāng)?shù)谝惠斎胼敵鯥/o需要運(yùn)行時(shí),選取第一物理CPU,并獲得虛擬機(jī)選取的第一虛擬CPU,其中,所述第一虛擬CPU用于處理所述虛擬機(jī)內(nèi)與所述第一 I/O相對(duì)應(yīng)的線程; 所述第一判斷單元,用于判斷所述第一物理CPU和所述第一虛擬CPU是否存在綁定關(guān)系,其中,所述綁定關(guān)系是指所述第一虛擬CPU所對(duì)應(yīng)的物理CPU包含所述第一物理CPU ;所述綁定單元,用于綁定所述第一物理CPU和所述第一虛擬CPU ; 所述配置單元,用于配置所述主機(jī)內(nèi)的第一 I/o所對(duì)應(yīng)的線程運(yùn)行在所述第一物理CPU 上。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述第一判斷單元還用于: 判斷所述第一虛擬CPU和第二物理CPU是否存在綁定關(guān)系,其中,所述第二物理CPU是所述主機(jī)內(nèi)除所述第一物理CPU之外的任一物理CPU ; 所述綁定單元還用于:若所述第一虛擬CPU和所述第一物理CPU以及所述第二物理CPU存在綁定關(guān)系,且所述第一物理CPU和所述第二物理CPU位于不同的非一致性內(nèi)存訪問NUMA節(jié)點(diǎn)內(nèi),則所述主機(jī)取消所述第一虛擬CPU和所述第二物理CPU的綁定關(guān)系; 若所述第一判斷單元判斷第一虛擬CPU和所述第一物理CPU不存在綁定關(guān)系,所述綁定單元具體用于: 若所述第一虛擬CPU和所述第二物理CPU不存在綁定關(guān)系,則綁定所述第一物理CPU所述第一虛擬CPU;或者, 若所述第一虛擬CPU和所述第二物理CPU存在綁定關(guān)系,且所述第一物理CPU和所述第二物理CPU位于同一個(gè)非一致性內(nèi)存訪問NUMA節(jié)點(diǎn)內(nèi),則所述主機(jī)增加綁定所述第一物理CPU和所述第一虛擬CPU ;或者, 若所述第一虛擬CPU和所述第二物理CPU存在綁定關(guān)系,且所述第一物理CPU和所述第二物理CPU位于不同的NUMA節(jié)點(diǎn)內(nèi),則所述主機(jī)取消所述第一虛擬CPU和所述第二物理CPU的綁定關(guān)系,并綁定所述第一物理CPU和所述第一虛擬CPU。
8.根據(jù)權(quán)利要求6或7所述的裝置,其特征在于,所述裝置還包括:第二判斷單元; 所述第二判斷單元,用于判斷當(dāng)前是否存在空閑物理CPU,所述空閑物理CPU是指當(dāng)前沒有運(yùn)行I/O的物理CPU ; 所述選取單元具體用于:根據(jù)所述空閑CPU的利用率,選取利用率最低的物理CPU作為所述第一物理CPU;或者, 根據(jù)從所述虛擬機(jī)預(yù)獲得的所有I/o的特征信息,獲取所述第一物理CPU。
9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述裝置還包括:第三判斷單元; 所述第三判斷單元,用于判斷在所述第一 I/o之前,所述主機(jī)是否運(yùn)行有第二 I/O ; 若是,所述第三判斷單元還用于:判斷所述第一I/o和所述第二 I/O訪問的物理磁盤是否是同一物理磁盤; 所述第二判斷單元具體用于:若在所述第一 I/o之前,所述主機(jī)運(yùn)行有第二 1/0,且所述第一 I/O和所述第二 I/O訪問的物理磁盤不是同一物理磁盤,判斷是否存在與運(yùn)行所述第二 I/o的物理CPU位于不同NUMA節(jié)點(diǎn)的空閑物理CPU ; 所述選取單元具體用于:若存在與運(yùn)行所述第二 I/o的物理CPU位于不同NUMA節(jié)點(diǎn)的空閑物理CPU,則從與運(yùn)行所述第二 I/O的物理CPU位于不同NUMA節(jié)點(diǎn)的空閑物理CPU中選取利用率最低的物理CPU作為所述第一物理CPU。
10.根據(jù)權(quán)利要求8或9所述的裝置,其特征在于,所述選取單元具體用于: 根據(jù)所述所有I/o的特征信息,判斷每個(gè)物理CPU的I/O處理速度,其中,所述I/O的特征信息至少包括所述I/o訪問的虛擬磁盤的地址信息,所述I/O訪問的虛擬磁盤的空間大小信息以及所述I/o為讀操作或?qū)懖僮餍畔ⅲ? 根據(jù)所述每個(gè)物理CPU的I/O處理速度,選擇從當(dāng)前狀態(tài)變?yōu)榭臻e狀態(tài)需要時(shí)間最短的物理CPU作為所述第一物理CPU。
【文檔編號(hào)】G06F9/50GK104461735SQ201410709207
【公開日】2015年3月25日 申請(qǐng)日期:2014年11月28日 優(yōu)先權(quán)日:2014年11月28日
【發(fā)明者】王婷 申請(qǐng)人:杭州華為數(shù)字技術(shù)有限公司