本發(fā)明涉及計算機虛擬化領(lǐng)域,尤其涉及一種虛擬化多核環(huán)境下基于非一致性I/O訪問的系統(tǒng)及其優(yōu)化方法。
背景技術(shù):
虛擬化是云計算中的關(guān)鍵技術(shù)。虛擬化允許多個計算機系統(tǒng)運行在一個物理計算機上,將物理機的硬件資源(CPU,內(nèi)存,I/O設(shè)備等等)抽象成類似于電力的可按需使用的資源,提供給客戶使用。虛擬化技術(shù)的使用,極大的減少了小型企業(yè)對服務器購買的投入,同時也極大的提高了空閑主機的使用效率,所以虛擬化技術(shù)廣泛的存在于當今高性能服務器里面,比較有代表性的虛擬化云計算實例有亞馬遜的EC2和阿里巴巴的阿里云。
虛擬化技術(shù)中一個關(guān)鍵組件就是虛擬機監(jiān)視器(Virtual Machine Management,VMM)。虛擬機監(jiān)視器負責將主機硬件資源抽象給虛擬機使用,同時還負責虛擬機的管理和虛擬機之間的通信等等。傳統(tǒng)的硬件資源包括CPU資源,內(nèi)存資源和I/O資源等,在非一致性內(nèi)存訪問(Non-Uniform Memory Access,NUMA)的架構(gòu)下,虛擬化技術(shù)主要關(guān)注的是提升這些硬件資源虛擬化過后的性能。然而隨著當今高性能網(wǎng)絡(luò)技術(shù)和CPU多核技術(shù)的發(fā)展,硬件的性能已經(jīng)不是瓶頸,反而這些高性能硬件之間的高效的協(xié)同處理成為了瓶頸,特別是在多核環(huán)境下,怎樣高效的處理高性能網(wǎng)絡(luò)I/O請求,因為很小的主機處理延遲都會對虛擬化中的網(wǎng)絡(luò)應用產(chǎn)生巨大的性能下降。
I/O虛擬化是虛擬化重要組成部分之一,I/O虛擬化主要是針對網(wǎng)卡PCIe功能的虛擬化,在不損失I/O性能的情況下盡可能多的擴展虛擬機的數(shù)量。然而隨著高性能物理機的核數(shù)的不斷增加,放置物理核的節(jié)點也不斷增加,多物理核怎樣高效的訪問I/O資源變得越來越重要。為此,在基于NUMA架構(gòu)的基礎(chǔ)上又提出了非一致性I/O訪問(Non-Uniform I/O Access,NUIOA)如圖1所示。每個物理核的節(jié)點包上都直接相連這各種設(shè)備,這些設(shè)備是不對稱的,遠端的節(jié)點要訪問某個設(shè)備只能通過節(jié)點間的內(nèi)部連接,這樣就要比近端的節(jié)點訪問慢,這種不對稱的訪問增加了系統(tǒng)的延遲,最終導致了虛擬機性能的下降。如圖2就是一個傳統(tǒng)的內(nèi)存的遠程訪問,但是由于之前的系統(tǒng)沒有考慮到高性能網(wǎng)絡(luò)設(shè)備的存在,系統(tǒng)的優(yōu)化策略忽略了網(wǎng)卡這一要素,特別是在高性能網(wǎng)絡(luò)環(huán)境下,這種忽略帶來的性能損失巨大。節(jié)點2上的CPU要傳輸數(shù)據(jù)到網(wǎng)卡必須要通過節(jié)點2和節(jié)點1,節(jié)點1和節(jié)點0之間的內(nèi)部連接,這樣不僅增加了內(nèi)部連接的帶寬占用,還增加了數(shù)據(jù)的訪問延遲。
現(xiàn)在的一般應用基本都部署在云端,呈現(xiàn)出網(wǎng)絡(luò)化,分布式的特性,所以高性能的可靠的網(wǎng)絡(luò)傳輸對這些應用的有效運行起著關(guān)鍵性的作用,因此在當今的多核架構(gòu)下的親和性建模一定要考慮到I/O設(shè)備的重要性。
現(xiàn)在基本上所有的虛擬機監(jiān)視器,像Xen,KVM和VMware ESXi基本上都是采用將一個虛擬機的VCPU和所有的內(nèi)存都調(diào)度到一個節(jié)點上來保持本地訪問,但是這種方法存在很大的缺陷,因為系統(tǒng)的負載均衡技術(shù)和其他技術(shù)會動態(tài)的平衡CPU和內(nèi)存間的負載,導致原本的放置策略被干擾,最后使策略失效?,F(xiàn)有的動態(tài)放置的模型都是基于NUMA的,他們建模的關(guān)注點是內(nèi)存的本地性,或者是同時考慮內(nèi)存本地性和cache命中率,沒有考慮到網(wǎng)絡(luò)I/O設(shè)備的重要性。還有他們的建模只考慮了線程與硬件之間的親和性,沒有考慮線程與線程之間的親和性,導致建模的準確性存在問題。
現(xiàn)有的關(guān)于虛擬化多核架構(gòu)下I/O性能調(diào)優(yōu)方法主要包括線程綁定和內(nèi)存遷移。其中,線程綁定是指將運行應用程序的虛擬機的VCPU線程綁定到特定的節(jié)點上,內(nèi)存遷移是指將運行應用程序的虛擬機的內(nèi)存遷移到特定的節(jié)點上,如果將VCPU線程和虛擬機內(nèi)存綁定到同一個節(jié)點上,這樣可以讓CPU和內(nèi)存之間的親和度達到最大,從而提升系統(tǒng)的性能。然而,現(xiàn)有的研究主要關(guān)注CPU和內(nèi)存兩個維度,忽略了網(wǎng)卡這一要素的存在。要進行新的基于I/O設(shè)備的親和度建模,以達到最優(yōu)的系統(tǒng)性能。
因此,本發(fā)明致力于開發(fā)在NUIOA架構(gòu)下,開發(fā)一種虛擬化多核環(huán)境下基于非一致性I/O訪問系統(tǒng)和優(yōu)化方法,建立基于虛擬化多核環(huán)境下的I/O性能的親和度優(yōu)化建模,從而高效的利用多核資源和高性能網(wǎng)絡(luò)適配器的性能,有效的降低系統(tǒng)的負載,適應于當今高性能網(wǎng)絡(luò)環(huán)境下的應用。
技術(shù)實現(xiàn)要素:
有鑒于現(xiàn)有技術(shù)的上述缺陷,本發(fā)明所要解決的技術(shù)問題是如何在虛擬化多核構(gòu)架下,在CPU和內(nèi)存兩個維度之外,對基于I/O設(shè)備進行親和度建模,為系統(tǒng)提供實時的動態(tài)高吞吐量低延遲的優(yōu)化放置策略,以達到最優(yōu)的整體系統(tǒng)性能。
為實現(xiàn)上述目的,本發(fā)明提供了一種虛擬化多核環(huán)境下基于非一致性I/O訪問系統(tǒng),包括性能監(jiān)測模塊、線程綁定模塊和內(nèi)存遷移模塊,所述性能檢測模塊被配置為通過修改的性能監(jiān)測工具實時監(jiān)控虛擬機和物理主機的硬件信息;所述線程綁定模塊被配置為根據(jù)所述性能檢測模塊收集到的硬件信息,判定當前系統(tǒng)處于低負載還是高負載,如果處于高負載情況下,就將負載比較高的節(jié)點上的虛擬機線程綁定到另外負載較低的節(jié)點上;所述內(nèi)存遷移模塊被配置為如果當前系統(tǒng)的負載較低,就將相關(guān)的線程遷移到距離網(wǎng)絡(luò)適配器最近的節(jié)點上。
進一步地,所述硬件信息包括虛擬機里的應用程序訪問頁的次數(shù)和I/O請求次數(shù)以及物理主機的實時CPU負載和內(nèi)存負載。
本發(fā)明還提供了一種虛擬化多核環(huán)境下基于非一致性I/O訪問系統(tǒng)的優(yōu)化方法,包括以下步驟:
(1)提供性能監(jiān)測模塊、線程綁定模塊和內(nèi)存遷移模塊;
(2)通過性能監(jiān)測模塊同時監(jiān)視虛擬機內(nèi)部頁的訪問次數(shù)和單位時間內(nèi)I/O請求的次數(shù);
(3)通過性能監(jiān)測模塊實時監(jiān)控物理主機的CPU的負載和內(nèi)存的負載;
(4)當物理主機的某個節(jié)點負載高于閾值時,所述節(jié)點需要進行線程的遷移,判斷條件的公式為:
其中,TMT矩陣表示線程的存儲分布,DT矩陣表示節(jié)點間的訪問延遲,將線程T遷移到節(jié)點K上而不是遷移到節(jié)點P上的標準是到節(jié)點K的平均延遲小于到節(jié)點P的平均訪問延遲;
(5)當物理機的某個節(jié)點負載在正常范圍內(nèi)時,則將分布在遠程節(jié)點上的該線程的訪問熱頁遷移到本地節(jié)點上,所述熱頁的判斷公式為:
if NodeAcc[n][i]>2*NodeAcc[n][j]
其中,NodeAcc[n][i]表示節(jié)點n訪問page i的次數(shù);
(6)將虛擬機里的熱頁的地址轉(zhuǎn)換為物理機的物理地址之后,調(diào)用遷頁函數(shù)將應用程序的熱頁遷移到對目標節(jié)點上;
(7)熱頁遷頁完成后,繼續(xù)回到性能檢測模塊監(jiān)測系統(tǒng)的性能。
有鑒于現(xiàn)有多核系統(tǒng)的現(xiàn)有缺陷,本發(fā)明提供一種在NUIOA架構(gòu)下基于虛擬化環(huán)境的高吞吐量低延遲的實時放置調(diào)度策略,從而提高虛擬機里面運行的應用程序的性能,如圖3所示,主要構(gòu)造了三個模塊,性能檢測模塊負責收集虛擬機和物理機里面的一些硬件信息,比如頁的訪問次數(shù),I/O請求次數(shù)和物理機的實時負載情況,線程綁定模塊主要負責根據(jù)收集的硬件信息進行高負載環(huán)境下的線程綁定,內(nèi)存遷移模塊主要負責基于低負載情況下的內(nèi)存遷移。進一步闡述如下:
性能檢測模塊通過修改的性能監(jiān)測工具實時監(jiān)控虛擬機和物理主機的硬件信息,主要包括虛擬機里的應用程序訪問頁的次數(shù)和I/O請求次數(shù),物理主機里面實時負載情況等等。
線程綁定模塊根據(jù)性能檢測模塊收集到的硬件信息,判定當前系統(tǒng)處于低負載還是高負載,如果處于高負載情況下,就需要將負載比較高的節(jié)點上的虛擬機線程綁定到另外的節(jié)點上,從而降低負載。
內(nèi)存遷移模塊,如果當前系統(tǒng)處于比較低的負載的情況下,就可以將相關(guān)的線程遷移到距離網(wǎng)絡(luò)適配器最近的節(jié)點上,從而避免過多的遠程訪問,降低節(jié)點間的內(nèi)連的帶寬占用,提升系統(tǒng)的吞吐量。
本發(fā)明所述的訪問系統(tǒng)和優(yōu)化方法和現(xiàn)有的基于NUMA架構(gòu)的建模方法相比具有以下幾點優(yōu)點:
(1)考慮了網(wǎng)絡(luò)適配器的和處理器節(jié)點的親和性,在傳統(tǒng)的建模方法上添加了一個維度,系統(tǒng)更加能夠反映出當今高性能網(wǎng)絡(luò)環(huán)境下的網(wǎng)絡(luò)設(shè)備的重要性;
(2)同時考慮了虛擬機多VCPU線程之間的親和性,將親和度比較高的線程放置到相同節(jié)點上來減小跨節(jié)點間的數(shù)據(jù)通信;
(3)采用了更加細粒度的建模矩陣,建立了訪問延遲矩陣和線程內(nèi)存映射矩陣來進行最后的放置調(diào)度決策,細粒度能夠更加全面的體現(xiàn)出建模的準確性。
以下將結(jié)合附圖對本發(fā)明的構(gòu)思、具體結(jié)構(gòu)及產(chǎn)生的技術(shù)效果作進一步說明,以充分地了解本發(fā)明的目的、特征和效果。
附圖說明
圖1是傳統(tǒng)的非一致性I/O訪問架構(gòu)示意圖;
圖2是傳統(tǒng)的沒有考慮網(wǎng)卡要素的遠程訪問示意圖;
圖3是本發(fā)明的一個較佳實施例的系統(tǒng)架構(gòu)圖;
圖4是本發(fā)明的一個較佳實施例的優(yōu)化方法流程圖。
具體實施方式
下面結(jié)合附圖對本發(fā)明的實施例作詳細說明,本實施例在以本發(fā)明技術(shù)方案為前提下進行實施,以下給出了詳細的實施方式和具體的操作過程,但本發(fā)明的保護范圍不限于下述的實施例。
如圖4所示,本發(fā)明所述的基于虛擬化多核環(huán)境下非一致性I/O訪問的系統(tǒng)優(yōu)化方法包括以下步驟:
步驟1、通過性能監(jiān)測模塊同時監(jiān)視虛擬機內(nèi)部頁的訪問次數(shù)和單位時間內(nèi)I/O請求的次數(shù)。通過一個數(shù)組來記錄每個節(jié)點訪問的頁的次數(shù),單位時間類的I/O請求次數(shù)可以直接獲得。同時也實時監(jiān)控物理主機里面的負載,主要是CPU的負載和內(nèi)存的負載。
步驟2、當物理機的某個節(jié)點負載高于某個閾值時(該閾值與系統(tǒng)的配置相關(guān)),表明該節(jié)點需要進行線程的遷移,具體的遷移方法通過一個公式來表示:
TMT矩陣表示線程的存儲分布,DT矩陣表示節(jié)點間的訪問延遲,將線程T遷移到節(jié)點K上而不是遷移到節(jié)點P上的標準是到節(jié)點K的平均延遲小于到節(jié)點P的平均訪問延遲。
步驟3、當物理機的某個節(jié)點負載在正常范圍內(nèi)時(該閾值與系統(tǒng)的配置相關(guān)),就要盡可能的將分布在遠程節(jié)點上的該線程的訪問熱頁遷移到本地節(jié)點上,可以利用numactl API進行遷頁,熱頁的判定采用以下公式:
if NodeAcc[n][i]>2*NodeAcc[n][j]
NodeAcc[n][i]表示節(jié)點n訪問page i的次數(shù),公式表明最大的節(jié)點頁訪問次數(shù)大于第二大的兩倍就認為之前的頁都是熱頁。然后將虛擬機里的熱頁的地址轉(zhuǎn)換為物理機的物理地址之后,的遷頁模塊調(diào)用函數(shù)move_pages,將應用程序的熱頁遷移到對目標節(jié)點上。熱頁遷頁完成后,繼續(xù)回到性能檢測模塊監(jiān)測系統(tǒng)的性能。
以上詳細描述了本發(fā)明的較佳具體實施例。應當理解,本領(lǐng)域的普通技術(shù)無需創(chuàng)造性勞動就可以根據(jù)本發(fā)明的構(gòu)思作出諸多修改和變化。因此,凡本技術(shù)領(lǐng)域中技術(shù)人員依本發(fā)明的構(gòu)思在現(xiàn)有技術(shù)的基礎(chǔ)上通過邏輯分析、推理或者有限的實驗可以得到的技術(shù)方案,皆應在由權(quán)利要求書所確定的保護范圍內(nèi)。