亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

虛擬機I/O性能優(yōu)化方法及裝置與流程

文檔序號:11233904閱讀:628來源:國知局
虛擬機I/O性能優(yōu)化方法及裝置與流程

本發(fā)明涉及虛擬機技術,尤其涉及一種虛擬機輸入輸出(input/output,i/o)性能優(yōu)化方法及裝置。



背景技術:

傳統(tǒng)上,將i/o虛擬化技術分為設備模擬技術和泛虛擬化技術,它們各有優(yōu)缺點,且優(yōu)缺點恰好相反。在性能方面,設備模擬技術需要采用陷入再模擬的方式,不僅增加了程序的執(zhí)行路徑,而且頻繁的切換必然會導致效率的下降,不如泛虛擬化高效;而在通用性方面,設備模擬技術無需修改原生驅動,具有很好的通用性,泛虛擬化則需要增加前端與后端驅動,后期i/o設備及操作系統(tǒng)的更改會帶來大量的工作量,通用性大打折扣。

intelvt-d技術應運而生,其結合了這兩者的優(yōu)點,在硬件級別做了相應的解決辦法,很好的解決了實際問題。其核心技術主要是直接內存訪問(directionalmemoryaccess,dma)重映射:dma重映射技術的關鍵就是在北橋芯片中加入dma重映射硬件,用來解決i/o設備dma重映射與設備直接分配的問題。其工作的機理是,在所有支持intelvt-d的平臺之上,dma重映射部分通過為i/o設備提供額外的硬件支持,允許i/o設備通過獨立的i/o頁表來對虛擬機內存進行訪問,i/o設備所發(fā)出的dma請求都會被dma重映射硬件進行截獲和轉發(fā),使用i/o頁表來判斷每次訪問是否合法。i/o頁表和傳統(tǒng)的內存管理單元(memorymanagementunit,mmu)所使用的頁表是一樣的,也是通過io傳輸后備緩沖器(translationlookasidebuffer,tlb)的來做常用頁表路徑的緩存。

現(xiàn)有技術中,虛擬機監(jiān)控器(virtualmachinemonitor,vmm)和客戶機操 作系統(tǒng)(guestoperationsystem,guestos)同處一個物理內存環(huán)境,出于安全考慮,vmm必須負責guestos頁表的管理,以限制guestos對內存的訪問;外設方面,vmm利用intelvt-d技術限制設備對內存的訪問,同樣,外設的dma操作不能訪問虛擬機域內的頁表,否則會引發(fā)dma攻擊,因此,vmm在管理虛擬機和外設的時候,必須考慮這一問題。具體來說,虛擬機域內的將頁劃分成幾種類型:可寫頁,頁表頁,頁目錄頁和描述符表頁,當一個頁的頁類型發(fā)生變化時,比如說從可寫頁類型變成頁表頁類型,這意味著外設不能再訪問該頁,此時vmm將該頁變成頁表頁類型后,必須將該頁從i/o頁表的映射上清除,并刷新iotlb,這樣才能防止外設惡意訪問該頁表類型的頁,保證vmm和虛擬機的安全。

但是,現(xiàn)有的intelvt-d技術的主要缺點是,會有頻繁的頁類型變更,導致iotlb的刷新過高,從而降低了i/o方面的效率。



技術實現(xiàn)要素:

有鑒于此,本發(fā)明實施例期望提供一種虛擬機i/o性能優(yōu)化方法及裝置,以提升虛擬機的i/o性能。

本發(fā)明實施例的技術方案是這樣實現(xiàn)的:

一種虛擬機i/o性能優(yōu)化方法,所述方法包括:

調用分配接口時,將鏈表頭部所指向的第一個頁面從鏈表緩存中取出,并返回給調用者;

調用釋放接口時,將待釋放頁表所使用的頁面放入所述鏈表的頭部進行緩存。

如上所述的方法,其中,所述頁面的頁類型數(shù)據(jù)結構中包含用于表示所述頁面為緩存頁的數(shù)據(jù)位。

如上所述的方法,其中,當所述頁面為緩存頁時,所述頁面緩存在對應的鏈表中。

如上所述的方法,其中,所述頁面的頁類型數(shù)據(jù)結構共有32位,其中,第 0-21位用于表征所述頁面的引用次數(shù),第22位用于表征所述頁面為緩存頁,第23-27位表征其他,第28-31位用于表征所述頁面的頁類型。

一種虛擬機i/o性能優(yōu)化裝置,所述裝置包括:

分配接口模塊,用于在調用時,將鏈表頭部所指向的第一個頁面從鏈表緩存中取出,并返回給調用者;

釋放接口模塊,用于在調用時,將待釋放頁表所使用的頁面放入所述鏈表的頭部進行緩存。

如上所述的裝置,其中,所述頁面的頁類型數(shù)據(jù)結構中包含用于表示所述頁面為緩存頁的數(shù)據(jù)位。

如上所述的裝置,其中,當所述頁面為緩存頁時,所述頁面緩存在對應的鏈表中。

如上所述的裝置,其中,所述頁面的頁類型數(shù)據(jù)結構共有32位,其中,第0-21位用于表征所述頁面的引用次數(shù),第22位用于表征所述頁面為緩存頁,第23-27位表征其他,第28-31位用于表征所述頁面的頁類型。

本發(fā)明實施例提供的虛擬機i/o性能優(yōu)化方法及裝置,在調用分配接口時,將鏈表頭部所指向的第一個頁面從鏈表緩存中取出,并返回給調用者;在調用釋放接口時,將待釋放頁表所使用的頁面放入所述鏈表的頭部進行緩存。如此,通過改變頁面的頁類型數(shù)據(jù)結構,使其支持緩存類型的頁面,并將這類頁面緩存至鏈表,在調用分配接口時,直接從鏈表緩存中獲取頁面,在調用釋放接口時,將待釋放頁表所使用的頁面放入鏈表的頭部進行緩存,避免了現(xiàn)有技術中由于頁類型的改變,頻繁的刷新iotlb,從而提高了虛擬機的i/o性能。

附圖說明

圖1為本發(fā)明實施例提供的虛擬機i/o性能優(yōu)化方法的流程圖;

圖2為本發(fā)明實施例提供的虛擬機i/o性能優(yōu)化裝置的結構示意圖。

具體實施方式

在本發(fā)明的各實施例中,將應用背景設定為泛虛擬化平臺xen,通過對guestos內核和xen的修改,采用一種更為有效的內存管理機制,來減少頁類型的改變,從而減少iotlb的刷新次數(shù),最終達到了對i/o設備效率優(yōu)化的目的。

圖1為本發(fā)明實施例提供的虛擬機i/o性能優(yōu)化方法的流程圖。如圖1所示,本實施例提供的虛擬機i/o性能優(yōu)化方法可以包括:

步驟101、調用分配接口時,將鏈表頭部所指向的第一個頁面從鏈表緩存中取出,并返回給調用者;

步驟102、調用釋放接口時,將待釋放頁表所使用的頁面放入所述鏈表的頭部進行緩存。

需要說明的是,上述步驟101和步驟102之間沒有先后順序的限制。

具體的,本實施例通過兩部分實現(xiàn),一是基于xen(vmm)的module部分,二是基于linux(guestos)的緩存部分。

其中,基于xen的module部分的主要任務是擴展現(xiàn)有的頁類型數(shù)據(jù)結構以支持緩存頁類型的頁面?,F(xiàn)有的頁類型數(shù)據(jù)結構共有32位(bits),其中,bit28-31是頁類型,bit23-27是其他,比如bit26表示頁是否被驗證,bit0-22代表了引用次數(shù);在本實施例中,從表征引用次數(shù)的位中借用一位來表征頁面支持緩存,即,頁面的頁類型數(shù)據(jù)結構中包含用于表示所述頁面為緩存頁的數(shù)據(jù)位;實際應用中,當所述頁面為緩存頁時,所述頁面緩存在對應的鏈表中。

由于原來用于表征引用次數(shù)的位一共有23位,但實際上系統(tǒng)對某一個頁面的引用達不到2的23次方那么多次,因此,本實施例中,借用引用次數(shù)的最高位,即,第22位來表征頁面為緩存頁;這樣,在本實施例中,所述頁面的頁類型數(shù)據(jù)結構共有32位,其中,第0-21位用于表征所述頁面的引用次數(shù),第22位用于表征所述頁面為緩存頁,第23-27位表征其他,第28-31位用于表征所述頁面的頁類型。

基于linux的緩存部分,我們知道一共有三級頁表,本實施例的緩存部分分別對這三級的頁表做了相應的單鏈表緩存。緩存部分主要有兩個接口,分別是分配接口和釋放接口。

其中,分配接口發(fā)生在頁表的分配,當這個接口被調用時,鏈表頭部所指向的第一個頁面從鏈表中取出并返回給調用者;相應的,釋放接口發(fā)生在頁表釋放時,當頁表釋放時,頁表所使用的頁面被放入鏈表的頭部。

本實施例中,借用頁類型數(shù)據(jù)結構中的一位表征頁面為緩存頁,將這類頁面緩存在對應的鏈表中,當調用分配接口時,則將鏈表頭部所指向的第一個頁面從鏈表緩存中取出,當調用釋放接口時,則將待釋放頁表所使用的頁面放入所述鏈表的頭部中進行緩存;而不需要像現(xiàn)有技術那樣,頁類型發(fā)生變化時,vmm將該頁類型變更后,必須將該頁從i/o頁表的映射上清除,并刷新iotlb,僅需從鏈表的緩存中取出頁面或者將頁面緩存至鏈表中即可,可以看出,本實施例中分配和釋放接口都是非??斓模际窃诔?shù)時間內完成。

另外,本實施例中,緩存部分也有相應的接口暴露給內存管理的守護進程以回收緩存的頁面,并且由于分配和釋放頁表可能發(fā)生在任何時間任意核上,因此每個鏈表都有相應的鎖機制。

本實施例的虛擬機i/o性能優(yōu)化方法,在調用分配接口時,直接從鏈表中獲取頁面,在調用釋放接口時,將待釋放頁表所使用的頁面放入鏈表的頭部,避免了現(xiàn)有技術中由于頁類型的改變,頻繁的刷新iotlb,從而提高了虛擬機的i/o性能。

圖2為本發(fā)明實施例提供的虛擬機i/o性能優(yōu)化裝置的結構示意圖。如圖2所示,本實施例提供的裝置可以包括:分配接口模塊11和釋放接口模塊12。

分配接口模塊11,用于在調用時,將鏈表頭部所指向的第一個頁面從鏈表緩存中取出,并返回給調用者;

釋放接口模塊12,用于在調用時,將待釋放頁表所使用的頁面放入所述鏈表的頭部進行緩存。

其中,所述頁面的頁類型數(shù)據(jù)結構中包含用于表示所述頁面為緩存頁的數(shù) 據(jù)位;當所述頁面為緩存頁時,所述頁面緩存在對應的鏈表中。

具體的,所述頁面的頁類型數(shù)據(jù)結構共有32位,其中,第0-21位用于表征所述頁面的引用次數(shù),第22位用于表征所述頁面為緩存頁,第23-27位表征其他,第28-31位用于表征所述頁面的頁類型。

本實施例提供的虛擬機i/o性能優(yōu)化裝置,可用于執(zhí)行上述方法實施例的技術方案,其實現(xiàn)原理和技術效果類似,此處不再贅述。

在實際應用中,該分配接口模塊11和釋放接口模塊12可由位于虛擬機i/o性能優(yōu)化裝置上的中央處理器(cpu)、微處理器(mpu)、數(shù)字信號處理器(dsp)或現(xiàn)場可編程門陣列(fpga)等器件實現(xiàn)。

本領域內的技術人員應明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機程序產(chǎn)品。因此,本發(fā)明可采用硬件實施例、軟件實施例、或結合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(包括但不限于磁盤存儲器和光學存儲器等)上實施的計算機程序產(chǎn)品的形式。

本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結合??商峁┻@些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。

這些計算機程序指令也可存儲在能引導計算機或其他可編程數(shù)據(jù)處理設備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。

這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設備上,使得在計算機或其他可編程設備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處 理,從而在計算機或其他可編程設備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。

以上所述,僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。

當前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1