本發(fā)明涉及計(jì)算機(jī)虛擬化技術(shù)領(lǐng)域,尤其涉及一種非一致性內(nèi)存訪問(wèn)架構(gòu)下的虛擬機(jī)調(diào)度裝置及方法。
背景技術(shù):
虛擬化是云計(jì)算關(guān)鍵技術(shù)之一。虛擬化技術(shù)可以將一臺(tái)物理計(jì)算機(jī)系統(tǒng)虛擬化為一臺(tái)或多臺(tái)虛擬計(jì)算機(jī)系統(tǒng)。每個(gè)虛擬計(jì)算機(jī)系統(tǒng)(簡(jiǎn)稱為客戶機(jī)或虛擬機(jī))都擁有自己的虛擬硬件(如cpu、內(nèi)存和設(shè)備等),來(lái)提供一個(gè)獨(dú)立的虛擬機(jī)執(zhí)行環(huán)境。而運(yùn)行虛擬機(jī)的真實(shí)物理計(jì)算機(jī)系統(tǒng)則成為宿主機(jī)。虛擬化技術(shù)由于其具有的容錯(cuò)性和高資源利用率而廣泛應(yīng)用在云計(jì)算和高性能計(jì)算等領(lǐng)域。目前比較有代表性的云計(jì)算提供商包括阿里云和亞馬遜云等。
在虛擬化環(huán)境里,虛擬機(jī)監(jiān)視器(virtualmachinemanagement,vmm)是存在于硬件和操作系統(tǒng)之間的一個(gè)軟件管理層,其主要負(fù)責(zé)管理真實(shí)的物理資源,如cpu、內(nèi)存及i/o設(shè)備等,并將底層的硬件資源抽象為對(duì)應(yīng)的虛擬設(shè)備接口供虛擬機(jī)使用
與此同時(shí),非一致性內(nèi)存訪問(wèn)(non-uniformmemoryaccess,numa)架構(gòu)因其可擴(kuò)展性已經(jīng)成為了現(xiàn)代服務(wù)器的主流架構(gòu)。如圖1所示,numa架構(gòu)的基本特征是具有多個(gè)cpu模塊,每個(gè)cpu模塊由多個(gè)cpu核(如8個(gè))組成,并且具有獨(dú)立的本地內(nèi)存、i/o插槽等。由于其節(jié)點(diǎn)之間通過(guò)互聯(lián)模塊(如intel的quickpathinterconnect)進(jìn)行連接和信息交互,因此每個(gè)cpu可以訪問(wèn)整個(gè)系統(tǒng)的內(nèi)存。顯然,訪問(wèn)本地內(nèi)存的速度將遠(yuǎn)遠(yuǎn)高于訪問(wèn)遠(yuǎn)程內(nèi)存(系統(tǒng)內(nèi)其它節(jié)點(diǎn)的內(nèi)存)的速度。numa架構(gòu)給虛擬機(jī)的性能優(yōu)化帶來(lái)了明顯的挑戰(zhàn),因?yàn)樗拗鳈C(jī)的numa拓?fù)浼軜?gòu)對(duì)于虛擬機(jī)來(lái)說(shuō)往往是透明不可見的。
現(xiàn)在基本上所有的虛擬機(jī)監(jiān)視器,包括xen,kvm和vmwareesxi采用的方法都是盡量將一個(gè)虛擬機(jī)的虛擬cpu(vcpu)和所有的內(nèi)存都調(diào)度到一個(gè)節(jié)點(diǎn)上來(lái)保持本地訪問(wèn),但是這種方法存在很大的缺陷,因?yàn)橄到y(tǒng)的負(fù)載均衡技術(shù)和其他技術(shù)會(huì)動(dòng)態(tài)的平衡cpu和內(nèi)存間的負(fù)載,導(dǎo)致原本的放置策略被干擾,最后使策略失效。因此,在numa架構(gòu)下,如何對(duì)虛擬機(jī)的vcpu和內(nèi)存進(jìn)行調(diào)度優(yōu)化,已成為如今的一個(gè)熱門研究領(lǐng)域。
然而,研究人員在研究numa調(diào)度優(yōu)化算法時(shí),除了實(shí)現(xiàn)算法,還需要考慮如何在特定平臺(tái)系統(tǒng)上實(shí)現(xiàn)虛擬機(jī)性能信息、系統(tǒng)numa拓?fù)湫畔⒌鹊氖占?,虛擬機(jī)vcpu和內(nèi)存的調(diào)度等具體的細(xì)節(jié)。除此之外,在實(shí)現(xiàn)numa調(diào)度優(yōu)化算法時(shí),還需要考慮不同的vmm,比如xen,kvm的接口的不同,這對(duì)于numa調(diào)度優(yōu)化算法研究來(lái)說(shuō),是很大的負(fù)擔(dān),嚴(yán)重影響了研究者研究numa調(diào)度優(yōu)化算法的效率。
因此,本領(lǐng)域的技術(shù)人員致力于開發(fā)一種非一致性內(nèi)存訪問(wèn)架構(gòu)下的虛擬機(jī)調(diào)度裝置及方法,在numa架構(gòu)下,通過(guò)發(fā)明的一種非一致性內(nèi)存訪問(wèn)架構(gòu)下的虛擬機(jī)調(diào)度裝置,研究者只需關(guān)注numa調(diào)度優(yōu)化算法的實(shí)現(xiàn),無(wú)需操心虛擬機(jī)信息、性能等數(shù)據(jù)的收集和虛擬機(jī)的具體調(diào)度等細(xì)節(jié),從而極大的提高研究者的研究效率。
技術(shù)實(shí)現(xiàn)要素:
有鑒于現(xiàn)有技術(shù)的上述缺陷,本發(fā)明所要解決的技術(shù)問(wèn)題是開發(fā)一種非一致性內(nèi)存訪問(wèn)架構(gòu)下的虛擬機(jī)調(diào)度裝置及方法,在numa架構(gòu)下,通過(guò)發(fā)明的一種非一致性內(nèi)存訪問(wèn)架構(gòu)下的虛擬機(jī)調(diào)度裝置,研究者只需關(guān)注numa調(diào)度優(yōu)化算法的實(shí)現(xiàn),無(wú)需操心虛擬機(jī)信息、性能等數(shù)據(jù)的收集和虛擬機(jī)的具體調(diào)度等細(xì)節(jié),從而極大的提高研究者的研究效率。
為實(shí)現(xiàn)上述目的,本發(fā)明提供了一種非一致性內(nèi)存訪問(wèn)架構(gòu)下的虛擬機(jī)調(diào)度裝置,包括性能監(jiān)控模塊、算法實(shí)現(xiàn)接口模塊和虛擬機(jī)調(diào)度模塊;其中,
性能監(jiān)控模塊被設(shè)置為通過(guò)使用操作系統(tǒng)內(nèi)核的性能監(jiān)控單元來(lái)監(jiān)控特定的性能事件;
算法實(shí)現(xiàn)接口模塊被設(shè)置為通過(guò)暴露虛擬機(jī)調(diào)度函數(shù)接口給研究者實(shí)現(xiàn),并將性能監(jiān)控模塊的信息傳遞給算法實(shí)現(xiàn)者,算法實(shí)現(xiàn)者通過(guò)函數(shù)返回調(diào)度決策;
虛擬機(jī)調(diào)度模塊被設(shè)置為根據(jù)算法實(shí)現(xiàn)接口模塊返回的調(diào)度決策進(jìn)行相應(yīng)的虛擬機(jī)vcpu和虛擬機(jī)內(nèi)存的調(diào)度。
進(jìn)一步地,性能監(jiān)控模塊監(jiān)控的性能事件包括虛擬機(jī)的cpu使用率、內(nèi)存使用率、緩存丟失率和i/o性能數(shù)據(jù)。
本發(fā)明還提供了一種非一致性內(nèi)存訪問(wèn)架構(gòu)下的虛擬機(jī)調(diào)度裝置的方法,包括以下步驟:
步驟1、性能監(jiān)控模塊獲取宿主機(jī)numa拓?fù)湫畔?,并通過(guò)內(nèi)核pmu監(jiān)控虛擬機(jī)性能事件;
步驟2、將宿主機(jī)numa拓?fù)湫畔⒑吞摂M機(jī)性能事件傳遞給算法實(shí)現(xiàn)接口模塊;
步驟3、算法實(shí)現(xiàn)接口模塊調(diào)用算法,等待調(diào)度算法執(zhí)行完畢后將調(diào)度算法得出的調(diào)度決策傳遞給虛擬機(jī)調(diào)度模塊;
步驟4、虛擬機(jī)調(diào)度模塊根據(jù)算法實(shí)現(xiàn)接口模塊傳遞的調(diào)度決策對(duì)虛擬機(jī)vcpu和內(nèi)存的調(diào)度;
步驟5、虛擬機(jī)調(diào)度完成后,跳轉(zhuǎn)到步驟1中繼續(xù)對(duì)虛擬機(jī)進(jìn)行性能監(jiān)控。
進(jìn)一步地,調(diào)度算法包括:貪心算法。
進(jìn)一步地,宿主機(jī)numa拓?fù)湫畔╪uma節(jié)點(diǎn)數(shù)目、各個(gè)numa節(jié)點(diǎn)之間的距離以及i/o設(shè)備所連接的numa節(jié)點(diǎn)。
進(jìn)一步地,步驟1具體包括通過(guò)虛擬機(jī)監(jiān)視器vmm實(shí)時(shí)監(jiān)控虛擬機(jī)的cpu使用率、內(nèi)存使用率、i/o使用率等性能事件,通過(guò)操作系統(tǒng)內(nèi)核的性能監(jiān)控單元實(shí)時(shí)監(jiān)控操作系統(tǒng)的緩存丟失率、虛擬機(jī)指令執(zhí)行的每秒周期數(shù)等性能事件,并獲得宿主機(jī)的非一致性內(nèi)存訪問(wèn)架構(gòu)的拓?fù)浣Y(jié)構(gòu)。
本發(fā)明有以下技術(shù)效果
(1)考慮了i/o設(shè)備的和處理器節(jié)點(diǎn)的親和性,在傳統(tǒng)的建模方法上添加了一個(gè)維度,系統(tǒng)更加能夠反映出當(dāng)今高性能i/o環(huán)境下的i/o設(shè)備的重要性;
(2)通過(guò)使用內(nèi)核pmu來(lái)監(jiān)控虛擬機(jī)性能事件,極大地減少了虛擬機(jī)性能監(jiān)控的開銷;
(3)通過(guò)將虛擬機(jī)調(diào)度裝置分為三個(gè)模塊,減少了模塊之間的耦合度,每個(gè)模塊之間可以獨(dú)立設(shè)計(jì)開發(fā),提高了研究者的研究開發(fā)效率。
以下將結(jié)合附圖對(duì)本發(fā)明的構(gòu)思、具體結(jié)構(gòu)及產(chǎn)生的技術(shù)效果作進(jìn)一步說(shuō)明,以充分地了解本發(fā)明的目的、特征和效果。
附圖說(shuō)明
圖1是本發(fā)明的一個(gè)較佳實(shí)施例的一種非一致性內(nèi)存訪問(wèn)架構(gòu)下的虛擬機(jī)調(diào)度裝置的非一致性內(nèi)存訪問(wèn)架構(gòu)示意圖
圖2是本發(fā)明的一個(gè)較佳實(shí)施例的一種非一致性內(nèi)存訪問(wèn)架構(gòu)下的虛擬機(jī)調(diào)度裝置的系統(tǒng)架構(gòu)示意圖。
圖3是本發(fā)明的一個(gè)較佳實(shí)施例的一種非一致性內(nèi)存訪問(wèn)架構(gòu)下的虛擬機(jī)調(diào)度方法的運(yùn)行流程示意圖。
具體實(shí)施方式
如圖2所示,本發(fā)明的一較佳實(shí)施例提供了一種非一致性內(nèi)存訪問(wèn)架構(gòu)下的虛擬機(jī)調(diào)度裝置,其特征在于,包括性能監(jiān)控模塊、算法實(shí)現(xiàn)接口模塊和虛擬機(jī)調(diào)度模塊;其中,性能監(jiān)控模塊被設(shè)置為通過(guò)使用操作系統(tǒng)內(nèi)核的性能監(jiān)控單元來(lái)監(jiān)控特定的性能事件;算法實(shí)現(xiàn)接口模塊被設(shè)置為通過(guò)暴露虛擬機(jī)調(diào)度函數(shù)接口給研究者實(shí)現(xiàn),并將性能監(jiān)控模塊的信息傳遞給算法實(shí)現(xiàn)者,算法實(shí)現(xiàn)者通過(guò)函數(shù)返回調(diào)度決策;虛擬機(jī)調(diào)度模塊被設(shè)置為根據(jù)算法實(shí)現(xiàn)接口模塊返回的調(diào)度決策進(jìn)行相應(yīng)的虛擬機(jī)vcpu和虛擬機(jī)內(nèi)存的調(diào)度。
性能監(jiān)控模塊監(jiān)控的性能事件包括虛擬機(jī)的cpu使用率、內(nèi)存使用率、緩存丟失率和i/o性能數(shù)據(jù)。
如圖3所示,本發(fā)明的一較佳實(shí)施例提供了一種非一致性內(nèi)存訪問(wèn)架構(gòu)下的虛擬機(jī)調(diào)度裝置的方法,其特征在于,包括以下步驟:
步驟1、性能監(jiān)控模塊獲取宿主機(jī)numa拓?fù)湫畔?,并通過(guò)內(nèi)核pmu監(jiān)控虛擬機(jī)性能事件;
步驟2、將宿主機(jī)numa拓?fù)湫畔⒑吞摂M機(jī)性能事件傳遞給算法實(shí)現(xiàn)接口模塊;宿主機(jī)numa拓?fù)湫畔╪uma節(jié)點(diǎn)數(shù)目、各個(gè)numa節(jié)點(diǎn)之間的距離以及i/o設(shè)備所連接的numa節(jié)點(diǎn)。
步驟3、算法實(shí)現(xiàn)接口模塊調(diào)用算法,等待調(diào)度算法執(zhí)行完畢后將調(diào)度算法得出的調(diào)度決策傳遞給虛擬機(jī)調(diào)度模塊;
步驟4、虛擬機(jī)調(diào)度模塊根據(jù)算法實(shí)現(xiàn)接口模塊傳遞的調(diào)度決策對(duì)虛擬機(jī)vcpu和內(nèi)存的調(diào)度;
步驟5、虛擬機(jī)調(diào)度完成后,跳轉(zhuǎn)到步驟1中繼續(xù)對(duì)虛擬機(jī)進(jìn)行性能監(jiān)控。
其中,所述調(diào)度算法為貪心算法,其算法流程包括:
(1)算法輸入為所述性能監(jiān)控模塊傳遞的宿主機(jī)numa拓?fù)湫畔⒑吞摂M機(jī)性能
事件;
(2)通過(guò)以下公式判斷虛擬機(jī)是否是i/o密集型虛擬機(jī):
ifpacketspersecondvm>threshhold
其中,packetspersecondvm為所述性能監(jiān)控模塊所監(jiān)控出來(lái)的虛擬機(jī)的每秒收發(fā)
網(wǎng)絡(luò)數(shù)據(jù)包的數(shù)目,threshhold為預(yù)定義的一個(gè)閾值。
(3)如果通過(guò)公式判斷出虛擬機(jī)是i/o密集型虛擬機(jī),則進(jìn)一步通過(guò)以下公式判
斷應(yīng)該將虛擬機(jī)調(diào)度到哪個(gè)numa節(jié)點(diǎn);
其中,n表示某個(gè)numa節(jié)點(diǎn),n表示所述性能監(jiān)控模塊所提供的numa節(jié)點(diǎn)數(shù)目,mem[n]表示虛擬機(jī)分布在numa節(jié)點(diǎn)n的內(nèi)存頁(yè)數(shù)目,該數(shù)據(jù)也是由所述性能監(jiān)控模塊所提供。anmmatrix(n)則是所述性能監(jiān)控模塊所提供的numa節(jié)點(diǎn)之間的距離。對(duì)于n個(gè)numa節(jié)點(diǎn),算法選取出通過(guò)上述公式計(jì)算得到的值最大的節(jié)點(diǎn),并將虛擬機(jī)調(diào)度到該節(jié)點(diǎn)。
(4),如果虛擬機(jī)不是i/o密集型虛擬機(jī),則通過(guò)以下公式判斷應(yīng)該將虛擬機(jī)調(diào)度到哪個(gè)numa節(jié)點(diǎn):
其中,n表示宿主機(jī)的numa節(jié)點(diǎn)數(shù)目,cpu[c]表示虛擬機(jī)在節(jié)點(diǎn)c的cpu使用率,mem[n]表示虛擬機(jī)分布在numa節(jié)點(diǎn)n的內(nèi)存頁(yè)數(shù)目,anmmatrix(n)則是所述性能監(jiān)控模塊所提供的numa節(jié)點(diǎn)之間的距離。對(duì)于n個(gè)numa節(jié)點(diǎn),算法通過(guò)上述公式計(jì)算得到每個(gè)節(jié)點(diǎn)的值,然后選取值最大的節(jié)點(diǎn)并將虛擬機(jī)調(diào)度到該節(jié)點(diǎn)。
(5)算法返回根據(jù)上述流程所得出的虛擬機(jī)調(diào)度決策。
其中,步驟1具體包括通過(guò)虛擬機(jī)監(jiān)視器vmm實(shí)時(shí)監(jiān)控虛擬機(jī)的cpu使用率、內(nèi)存使用率、i/o使用率等性能事件,通過(guò)操作系統(tǒng)內(nèi)核的性能監(jiān)控單元實(shí)時(shí)監(jiān)控操作系統(tǒng)的緩存丟失率、虛擬機(jī)指令執(zhí)行的每秒周期數(shù)等性能事件,并獲得宿主機(jī)的非一致性內(nèi)存訪問(wèn)架構(gòu)的拓?fù)湫畔ⅰ?/p>
以上詳細(xì)描述了本發(fā)明的較佳具體實(shí)施例。應(yīng)當(dāng)理解,本領(lǐng)域的普通技術(shù)人員無(wú)需創(chuàng)造性勞動(dòng)就可以根據(jù)本發(fā)明的構(gòu)思作出諸多修改和變化。因此,凡本技術(shù)領(lǐng)域中技術(shù)人員依本發(fā)明的構(gòu)思在現(xiàn)有技術(shù)的基礎(chǔ)上通過(guò)邏輯分析、推理或者有限的實(shí)驗(yàn)可以得到的技術(shù)方案,皆應(yīng)在由權(quán)利要求書所確定的保護(hù)范圍內(nèi)。