本發(fā)明涉及計算機技術(shù)領(lǐng)域,特別涉及一種提高cpu利用率的方法及裝置。
背景技術(shù):
隨著互聯(lián)網(wǎng)的發(fā)展,vcpu虛擬處理器被廣泛應(yīng)用于各個領(lǐng)域。vcpu是cpu中央處理器的虛擬化技術(shù),cpu的虛擬化就是用單個cpu模擬多個cpu并行,從而實現(xiàn)一個平臺同時運行多個操作系統(tǒng),并且應(yīng)用程序都可以在相互獨立的空間內(nèi)運行而互不影響。
現(xiàn)有技術(shù)通過cpu自動分配,將多個vcpu分配到cpu的多個核心中的計算單元上,以實現(xiàn)對cpu進行虛擬化。
然而上述分配方式只能依次填滿每一個cpu物理核心的計算單元,比如,6個vcpu分配到4個cpu物理核心上,每個cpu物理核心上有3個計算單元,則其中兩個cpu物理核心分別分配三個vcpu,剩余兩個cpu物理核心處于閑置狀態(tài),從而導(dǎo)致cpu利用率下降。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例提供了一種提高cpu利用率的方法及裝置,能夠提高cpu的利用率。
第一方面,本發(fā)明提供了一種提高cpu利用率的方法,包括:
獲取每一個cpu中央處理器物理核心當(dāng)前分配信息,所述分配信息,包括:所述cpu物理核心分配到的vcpu虛擬處理器的數(shù)量;
根據(jù)所述分配信息確定至少一個待分配cpu物理核心;
確定至少一個待分配vcpu;
根據(jù)每一個所述待分配cpu物理核心上的所述vcpu的數(shù)量,將所述至少一個待分配vcpu分配給所述至少一個待分配cpu物理核心。
優(yōu)選地,所述獲取每一個cpu物理核心當(dāng)前的分配信息,包括:
接收外部輸入的獲取指令;
根據(jù)所述獲取指令,獲取每一個所述cpu物理核心的id;
通過所述id讀取每一個所述cpu物理核心的分配信息。
優(yōu)選地,在根據(jù)每一個所述待分配cpu物理核心上的所述vcpu的數(shù)量,將所述至少一個待分配vcpu分配給所述至少一個待分配cpu物理核心之后,進一步包括:
創(chuàng)建所述至少一個待分配vcpu與其所位于的所述cpu物理核心id的關(guān)聯(lián)關(guān)系,使得所述至少一個待分配vcpu綁定到所述cpu物理核心。
優(yōu)選地,所述確定至少一個待分配vcpu,包括:
針對于每一個所述vcpu,判斷當(dāng)前vcpu是否已綁定到所述cpu物理核心,如果是,結(jié)束當(dāng)前流程,否則,確定所述當(dāng)前vcpu為所述待分配vcpu。
優(yōu)選地,所述根據(jù)每一個所述待分配cpu物理核心上的所述vcpu的數(shù)量,將所述至少一個待分配vcpu分配給所述至少一個待分配cpu物理核心,包括:
針對每一個所述待分配vcpu,判斷是否存在一個目標待分配cpu物理核心,其中,所述目標待分配cpu物理核心中存在至少一個與該待分配vcpu有運算關(guān)聯(lián)關(guān)系的vcpu;
如果是,將所述待分配vcpu分配到所述目標待分配cpu物理核心上;
如果否,根據(jù)所述至少一個待分配cpu物理核心上已分配vcpu的數(shù)量,將該待分配vcpu分配到所述至少一個待分配cpu物理核心上。
第二方面,本發(fā)明實施例提供了一種提高cpu利用率的裝置,其特征在于,包括:獲取模塊、確定模塊和分配模塊;
所述獲取模塊,用于獲取每一個cpu物理核心當(dāng)前分配信息,所述分配信息,包括:所述cpu物理核心分配到的vcpu的數(shù)量;
所述確定模塊,用于確定至少一個待分配vcpu,以及根據(jù)所述獲取模塊獲取的所述分配信息確定至少一個待分配cpu物理核心;
所述分配模塊,用于根據(jù)每一個所述待分配cpu物理核心上已分配的待分配vcpu數(shù)量,將所述確定模塊確定的所述至少一個待分配vcpu分配給所述確定模塊確定的所述至少一個待分配cpu物理核心。
優(yōu)選地,所述獲取模塊,包括:接收單元、獲取單元和讀取單元;
所述接收單元,用于接受外部輸入的獲取指令;
所述獲取單元,用于根據(jù)所述接收單元接收的所述獲取指令,獲取每一個所述cpu物理核心的id;
所述讀取單元,用于通過所述獲取單元獲取的所述id讀取每一個所述cpu物理核心的分配信息。
優(yōu)選地,進一步包括:創(chuàng)建模塊;
所述創(chuàng)建模塊,用于創(chuàng)建所述至少一個待分配vcpu與其所位于的所述cpu物理核心id的關(guān)聯(lián)關(guān)系,使得所述至少一個待分配vcpu綁定到所述cpu物理核心。
優(yōu)選地,所述確定模塊,包括:第一判斷單元;
所述第一判斷單元,用于針對于每一個所述vcpu,判斷當(dāng)前vcpu是否已綁定到所述cpu物理核心,如果是,結(jié)束當(dāng)前流程,否則,確定所述當(dāng)前vcpu為所述待分配vcpu。
優(yōu)選地,所述分配模塊,包括:第二判斷單元;
所述第二判斷單元,用于針對每一個所述待分配vcpu,判斷是否存在一個目標待分配cpu物理核心,其中,所述目標待分配cpu物理核心中存在至少一個與該待分配vcpu有運算關(guān)聯(lián)關(guān)系的vcpu;
如果是,將所述待分配vcpu分配到所述目標待分配cpu物理核心上;
如果否,根據(jù)所述至少一個待分配cpu物理核心上已分配vcpu的數(shù)量,將該待分配vcpu分配到所述至少一個待分配cpu物理核心上。
本發(fā)明實施例提供了一種提高cpu利用率的方法及裝置,通過獲取cpu物理核心當(dāng)前分配信息,能夠得到每一個cpu物理核心上的vcpu的數(shù)量,再根據(jù)每一個cpu物理核心上的vcpu的數(shù)量將待分配的vcpu均衡地分配到各個待分配cpu物理核心,使得每一個cpu物理核心都能分配到vcpu,因而避免出現(xiàn)cpu物理核心閑置的情況,從而提高了cpu的利用率。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1是本發(fā)明一個實施例提供的一種提高cpu利用率的方法流程圖;
圖2是本發(fā)明一個實施例提供的另一種提高cpu利用率的方法流程圖;
圖3是本發(fā)明一個實施例提供的一種提高cpu利用率的裝置的結(jié)構(gòu)示意圖;
圖4是本發(fā)明一個實施例提供的另一種提高cpu利用率的裝置的結(jié)構(gòu)示意圖;
圖5是本發(fā)明一個實施例提供的又一種提高cpu利用率的裝置的結(jié)構(gòu)示意圖;
圖6是本發(fā)明一個實施例提供的再一種提高cpu利用率的裝置的結(jié)構(gòu)示意圖;
圖7是本發(fā)明一個實施例提供的還一種提高cpu利用率的裝置的結(jié)構(gòu)示意圖。
具體實施方式
為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例,基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動的前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
如圖1所示,本發(fā)明實施例提供了一種提高cpu利用率的方法,包括以下步驟:
步驟101,獲取每一個cpu中央處理器物理核心當(dāng)前分配信息,所述分配信息,包括:所述cpu物理核心分配到的vcpu虛擬處理器的數(shù)量。
步驟102,根據(jù)所述分配信息確定至少一個待分配cpu物理核心。
步驟103,確定至少一個待分配vcpu。
步驟104,根據(jù)每一個所述待分配cpu物理核心上的所述vcpu的數(shù)量,將所述至少一個待分配vcpu分配給所述至少一個待分配cpu物理核心。
本發(fā)明實施例提供了一種提高cpu利用率的方法,通過獲取cpu物理核心當(dāng)前分配信息,能夠得到每一個cpu物理核心上的vcpu的數(shù)量,再根據(jù)每一個cpu物理核心上的vcpu的數(shù)量將待分配的vcpu均衡地分配到各個待分配cpu物理核心,使得每一個cpu物理核心都能分配到vcpu,因而避免出現(xiàn)cpu物理核心閑置的情況,從而提高了cpu的利用率。
在本發(fā)明的一個實施例中,根據(jù)外部輸入的獲取指令獲取每一個cpu物理核心的id,獲取指令為:<cpumode='host-passthrough'></cpu>。該指令可以通過配置虛擬機中的配置文件,來獲取cpu物理核心的id。再通過每一個cpu物理核心的id讀取每一個cpu物理核心的分配信息,即可得到每個cpu物理核心上的vcpu數(shù)量。
例如,有兩個cpu物理核心a、b,id分別為01、02,則根據(jù)獲取指令,分別獲取cpu物理核心a、b的id01和02,在根據(jù)cpu物理核心a、b的id分別讀取cpu物理核心a、b的分配信息,從而得到cpu物理核心a、b上的vcpu數(shù)量。
cpu自動分配vcpu時,與vcpu對應(yīng)的cpu物理核心可能是變化的,這可能會導(dǎo)致vcpu會集中分配到幾個cpu物理核心上。在本發(fā)明的一個實施例中,通過建立vcpu與vcpu所在的cpu物理核心id的關(guān)聯(lián)關(guān)系,將vcpu綁定到某一個cpu物理核心上,從而避免了由于與vcpu對應(yīng)的cpu物理核心的變化而導(dǎo)致的cpu利用率的降低。
為了能夠提高分配vcpu的效率,在本發(fā)明的一個實施例中,在確定待分配vcpu時,先判斷當(dāng)前vcpu是否已綁定到所述cpu物理核心,如果是,說明當(dāng)前vcpu已經(jīng)分配過了,進而結(jié)束當(dāng)前流程;如果沒有綁定,需要重新分配。
例如,cpu物理核心a上分配有5個vcpu,其中2個是綁定在cpu物理核心a上的,則剩余的3個vcpu為待分配vcpu,可能被重新分配,已綁定的不再執(zhí)行重新分配。如果剩余的3個vcpu沒有重新分配,則綁定在cpu物理核心a上。
在運算過程中,各vcpu可能會出現(xiàn)運算關(guān)聯(lián),比如相互引用數(shù)據(jù),如果這些相互關(guān)聯(lián)的vcpu沒有分配到同一個cpu物理核心上,在數(shù)據(jù)轉(zhuǎn)移時,會增加時間成本。在本發(fā)明的一個實施例中,針對每一個待分配vcpu,在待分配cpu物理核心上找出與之有運算關(guān)聯(lián)的vcpu,并將待分配vcpu分配到與之有運算關(guān)聯(lián)的vcpu的cpu物理核心上,從而節(jié)省時間成本,剩余不關(guān)聯(lián)的vcpu則均衡分配給其他cpu物理核心上。
例如,cpu物理核心a上分配有vcpu為x1,cpu物理核心b上分配有vcpu為y1,cpu物理核心c處于空閑狀態(tài)。存在x2、y2、z三個待分配vcpu。其中,x1引用x2數(shù)據(jù)和y1引用y2數(shù)據(jù),z為各自獨立運行的vcpu,均不與其他vcpu存在關(guān)聯(lián)。則分配后,cpu物理核心a上分配有x2;cpu物理核心b上分配有y2;cpu物理核心c上分配有z。
為了更好地說明本發(fā)明上述實施例,如圖2所示本發(fā)明實施例提供了另一種提高cpu利用率的方法,包括以下步驟:
步驟201,根據(jù)獲取命令,獲取每一個cpu物理核心的id。
在本發(fā)明實施例中,獲取命令為<cpumode='host-passthrough'></cpu>,通過調(diào)整配置文件中cpu的設(shè)定,來獲取每一個cpu物理核心的id。
步驟202,根據(jù)每一個cpu物理核心的id,讀取每一個cpu物理核心的分配信息。
在本發(fā)明實施例中,分配信息包括:每一個cpu物理核心上vcpu的數(shù)量。例如,一共有三個cpu物理核心,三個cpu物理核心上的vcpu的數(shù)量分別為2、3、4,則分配信息存儲三個cpu物理核心上的vcpu的數(shù)量。
步驟203,根據(jù)分配信息確定待分配cpu物理核心。
在本發(fā)明實施例中,閑置的cpu物理核心或vcpu數(shù)量較少的cpu物理核心都可以視為待分配cpu物理核心,例如有三個cpu物理核心a、b、c,三者的vcpu數(shù)量分別為4、1、0,則b,c為待分配cpu物理核心。
步驟204,針對于每一個所述vcpu,判斷當(dāng)前vcpu是否已綁定到cpu物理核心,如果是,則結(jié)束當(dāng)前流程,否則執(zhí)行步驟205。
步驟205,確定當(dāng)前vcpu為待分配vcpu。
在本發(fā)明實施例中,以是否已綁定為標準,來判定當(dāng)前vcpu是否為待分配vcpu。如果當(dāng)前vcpu已分配到cpu物理核心,但并未綁定,依然視為待分配待分配vcpu。
例如,cpu物理核心a上,共有兩個vcpu,分別為x1、x2,其中x1已與cpu物理核心a綁定,x2并沒有cpu物理核心a綁定,僅僅是分配到cpu物理核心a上,則x1不能被確定為待分配vcpu,x2是待分配vcpu。
步驟206,針對每一個待分配vcpu,判斷每一個待分配cpu物理核心上是否存在至少一個與該待分配vcpu有運算關(guān)聯(lián)關(guān)系的vcpu,如果是,執(zhí)行步驟207,否則執(zhí)行步驟209。
步驟207,將待分配vcpu分配到目標待分配cpu物理核心上。
在本發(fā)明實施例中,將至少兩個存在運算關(guān)系的vcpu,分配到同一個cpu物理核心上,以減低時間成本。例如有5個待分配vcpu,分別為x1、x2、x3、y1和y2。其中,x1、x2和x3存在關(guān)聯(lián)關(guān)系,y1和y2的存在關(guān)聯(lián)關(guān)系,則將x1、x2和x3分配到分配到同一個cpu物理核心上,把y1和y2分配到同一個cpu物理核心上。
步驟208,將已分配vcpu綁定到已分配vcpu所在的cpu物理核心上。
在本發(fā)明實施例中,通過建立已分配vcpu與vcpu所在的已分配cpu物理核心id的關(guān)聯(lián)關(guān)系,將已分配vcpu綁定到已分配vcpu所在的cpu物理核心上。
步驟209,根據(jù)待分配cpu物理核心上已分配vcpu的數(shù)量,將該待分配vcpu分配到待分配cpu物理核心上,并執(zhí)行步驟208。
在本發(fā)明實施例中,在分配沒有與其他vcpu存在運算關(guān)聯(lián)關(guān)系的待分配vcpu時,盡可能地保持各個cpu物理核心之間的vcpu的數(shù)量差值不超過1,以最大限度地利用各個cpu物理核心。例如,將6個vcpu分配給4個cpu物理核心,則最佳分配方式為2、1、1、1。
如圖3所示,本發(fā)明實施例提供了一種提高cpu利用率的裝置,包括:獲取模塊301、確定模塊302和分配模塊303;
獲取模塊301,用于獲取每一個cpu物理核心當(dāng)前分配信息,所述分配信息,包括:所述cpu物理核心分配到的vcpu的數(shù)量;
確定模塊302,用于確定至少一個待分配vcpu,以及根據(jù)獲取模塊301獲取的所述分配信息確定至少一個待分配cpu物理核心;
分配模塊303,用于根據(jù)每一個所述待分配cpu物理核心上已分配的待分配vcpu數(shù)量,將確定模塊302確定的所述至少一個待分配vcpu分配給確定模塊302確定的所述至少一個待分配cpu物理核心。
如圖4所示,本發(fā)明實施例提供了另一種提高cpu利用率的裝置,獲取模塊301,包括:接收單元3011、獲取單元3012和讀取單元3013;
接收單元3011,用于接受外部輸入的獲取指令;
獲取單元3012,用于根據(jù)接收單元3011接收的所述獲取指令,獲取每一個所述cpu物理核心的id;
讀取單元3013,用于通過獲取單元3012獲取的所述id讀取每一個所述cpu物理核心的分配信息。
如圖5所示,本發(fā)明實施例提供了又一種提高cpu利用率的裝置,進一步包括:創(chuàng)建模塊501;
創(chuàng)建模塊501,用于創(chuàng)建所述至少一個待分配vcpu與其所位于的所述cpu物理核心id的關(guān)聯(lián)關(guān)系,使得所述至少一個待分配vcpu綁定到所述cpu物理核心。
如圖6所示,本發(fā)明實施例提供了再一種提高cpu利用率的裝置,確定模塊302,包括:第一判斷單元3021;
第一判斷單元3021,用于針對于每一個所述vcpu,判斷當(dāng)前vcpu是否已綁定到所述cpu物理核心,如果是,結(jié)束當(dāng)前流程,否則,確定所述當(dāng)前vcpu為所述待分配vcpu。
如圖7所示,本發(fā)明實施例提供了還一種提高cpu利用率的裝置,分配模塊303,包括:第二判斷單元3031;
第二判斷單元3031,用于針對每一個所述待分配vcpu,判斷是否存在一個目標待分配cpu物理核心,其中,所述目標待分配cpu物理核心中存在至少一個與該待分配vcpu有運算關(guān)聯(lián)關(guān)系的vcpu;
如果是,將所述待分配vcpu分配到所述目標待分配cpu物理核心上;
如果否,根據(jù)所述至少一個待分配cpu物理核心上已分配vcpu的數(shù)量,將該待分配vcpu分配到所述至少一個待分配cpu物理核心上。
上述裝置內(nèi)的各單元之間的信息交互、執(zhí)行過程等內(nèi)容,由于與本發(fā)明方法實施例基于同一構(gòu)思,具體內(nèi)容可參見本發(fā)明方法實施例中的敘述,此處不再贅述。
本發(fā)明實施例提供了一種可讀介質(zhì),包括執(zhí)行指令,當(dāng)存儲控制器的處理器執(zhí)行所述執(zhí)行指令時,所述存儲控制器執(zhí)行本發(fā)明任意一個實施例中提供的一種提高cpu利用率的方法。
本發(fā)明實施例提供了一種存儲控制器,包括:處理器、存儲器和總線;
所述存儲器用于存儲執(zhí)行指令,所述處理器與所述存儲器通過所述總線連接,當(dāng)所述存儲控制器運行時,所述處理器執(zhí)行所述存儲器存儲的所述執(zhí)行指令,以使所述存儲控制器執(zhí)行本發(fā)明任意一個實施例中提供的一種提高cpu利用率的方法。
綜上所述,本發(fā)明各個實施例至少具有如下有益效果:
1、本發(fā)明一個實施例中,通過獲取cpu物理核心當(dāng)前分配信息,能夠得到每一個cpu物理核心上的vcpu的數(shù)量,再根據(jù)每一個cpu物理核心上的vcpu的數(shù)量將待分配的vcpu均衡地分配到各個待分配cpu物理核心,使得每一個cpu物理核心都能分配到vcpu,因而避免出現(xiàn)cpu物理核心閑置的情況,從而提高了cpu的利用率。
2、本發(fā)明一個實施例中,通過綁定vcpu與vcpu所在的cpu物理核心,解決了由于與vcpu對應(yīng)的cpu物理核心的改變而造成vcpu集中分配到幾個cpu物理核心上的問題,從而進一步提高了cpu的利用率。
3、本發(fā)明一個實施例中,將具有運算關(guān)聯(lián)關(guān)系的vcpu分配到同一個cpu物理核心上,減少了時間成本,從進一步提高了cpu的利用率。
需要說明的是,在本文中,諸如第一和第二之類的關(guān)系術(shù)語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個······”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同因素。
最后需要說明的是:以上所述僅為本發(fā)明的較佳實施例,僅用于說明本發(fā)明的技術(shù)方案,并非用于限定本發(fā)明的保護范圍。凡在本發(fā)明的精神和原則之內(nèi)所做的任何修改、等同替換、改進等,均包含在本發(fā)明的保護范圍內(nèi)。