專利名稱:虛擬化環(huán)境中 pci 設備的分離訪問方法及其系統(tǒng)的制作方法
技術領域:
本發(fā)明涉及Xen虛擬機,特別涉及到Xen虛擬機的前后端驅動模型和獨立驅動域 (Isolation Driver Domain,簡稱 IDD)中一禾中虛擬化環(huán)境中 PCI (Peripheral Component Interconnect,外設器件互聯(lián))設備的分離訪問方法及其系統(tǒng)。
背景技術:
近年來,隨著處理器速度的不斷提升和網絡帶寬的持續(xù)增長,虛擬化技術得到了廣泛的重視。在數(shù)據(jù)中心中,虛擬化技術得到了廣泛的應用。Xen是由劍橋大學計算機實驗室系統(tǒng)研究組開發(fā)的虛擬機監(jiān)視器,以其高效性和靈活性而著稱。其作為一個高性能的開源的虛擬機軟件,也引起了業(yè)界極大的關注,其良好的性能表現(xiàn),比物理機僅低3% 5% 的性能,也贏得了市場的一片好評。但是,Xen還有可以改進的地方。在本實施項目的過程中發(fā)現(xiàn),特權域(DomainO,簡稱DomO)因為要管理所有非特權域(DomainU,簡稱DomU)的請求而負擔很重,這樣勢必會對DomU的個數(shù)和整體性能造成一定的影響。因此,有必要提出一種本發(fā)明的技術方案,通過建立獨立的網卡驅動域來降低DomO的負擔,以達到更好的網絡10性能的提升。在Xen的10負載問題上,有很多工作都對其進行了分析,如文獻1 “I^adma Apparao, Srihari Makineni, Don Newell Characterization of network processing overheads in Xen Second International Workshop on Virtualization Technology in Distributed Computing(VTDC 2006) ”中分析了 Xen中網絡過載的特點。文獻2 “楊亞軍; 熊星;孫毓忠,一種在虛擬化環(huán)境中1/0設備重構的方法及系統(tǒng)200810239739. 2”中則提出了一種避免磁盤1/0過載優(yōu)化磁盤1/0性能的方式和系統(tǒng),其解決問題的思路和本發(fā)明提出的獨立的網卡驅動域思路有相似之處,都是通過減輕DomO的1/0負載來達到1/0性能的提升。而其關注的部分和本發(fā)明不同,文獻2中關注的是磁盤訪問的1/0性能,而本發(fā)明關注的則是網絡的1/0性能的提升。在Xen中存在兩種虛擬化的方式,分別為全虛擬化和半虛擬化,無論在那種虛擬化方式下,都存在網絡1/0性能的問題,文獻3 "ZHANG Jian, LI Xiaoyong,GUAN Haibing The Optimization of Xen Network Virtualization 2008International Conference on Computer Science and Software Engineering,,提出了在 Xen 中利用軟件模擬硬件方式下的全虛擬化環(huán)境中解決網絡1/0性能問題的方法,這種方式只適合全虛擬化,而本發(fā)明提出的環(huán)境是在半虛擬化環(huán)境下的。因此該方法不適合半虛擬化環(huán)境,而就全虛擬化和半虛擬化而言即使不做優(yōu)化,在原始的Xen環(huán)境中半虛擬化的性能要遠高于全虛擬化,這與其采用分離的設備驅動模型有很大的關系。半虛擬化中DomO可以訪問所有的硬件設備, 而其他的DomU通過將讀寫請求轉發(fā)給DomO來進行1/0操作。在包含大量虛擬機或者需要高效1/0的虛擬機時,DomO將會成為系統(tǒng)的瓶頸,因為所有的虛擬設備后端驅動都存在于DomO中,同時還需要負責創(chuàng)建、管理和關閉其他的DomU,在多個DomU需要同時訪問真實的硬件設備時,DomO自然就成為了系統(tǒng)的瓶頸。Xen可以通過創(chuàng)建驅動域來減輕大量后端的負擔° 文獻 4 "Hongyong Zang, Kuiyan Gu Yaqiong Li, Yuzhong Sun, Dan Meng A Highly Efficient Inter-Domain Communication Channel IEEE Ninth International Conference on Computer and Information Technology,,中同樣意識至Ij了這個問題,在文獻4中,它抽取了同一臺物理上的DomU之間的網絡I/O請求,使得DomU之間的網絡通信不再經過DomO轉發(fā)而是通過建立通道的方式來完成通信,這樣能提高DomU之間的網絡性能, 同時也減輕了 DomO的I/O負載,但是這種方式只適用于同一臺物理機上的不同DomU之間的通訊,不能解決因DomU與外部通信而造成的網絡負載過高影響I/O性能和DomO可靠性的問題。而本發(fā)明提出的方式則能很好的解決這一問題。獨立驅動域是被授予一定特權級的傳統(tǒng)的DomU,每一個隔離驅動域有自己管理的設備和相關的域。Xen Hypervisor (管理程序層)中的控制接口允許DomO創(chuàng)建特定設備的隔離驅動域,并且允許其使用沒有修改的設備驅動直接訪問硬件。隔離驅動域的存在,改善了 I/O性能,同時還可以做到故障恢復,當獨立驅動域出現(xiàn)故障時,不會影響到其他的驅動域。盡管獨立驅動域中還可以進一步進行優(yōu)化提高性能,如文獻5 "John ffiegert,Greg Regnier and Jeff Jackson Challenges for Scalable Networking in a Virtualized Server Computer Communications and Networks,2007. ICCCN 2007. Proceedings of 16th International Conference”中提出的一種方式,但是本發(fā)明中不再關注進一步的優(yōu)化。虛擬機技術,特別是針對x86架構的虛擬機,已經成為研究熱點,并廣泛應用到服務器領域。Xen不僅支持半虛擬化的虛擬機而且在有硬件支持的情況下,也可以創(chuàng)建全虛擬化的虛擬機。通過將服務器資源分配到多個虛擬機,可以在同一企業(yè)級的服務器上運行多個支持不同應用和操作系統(tǒng)的虛擬機,并且這些虛擬機安全地運行在相互隔離的環(huán)境中。 這樣能夠提高服務器的效率,減少需要管理和維護的服務器數(shù)量。全虛擬化下Xen采用模擬的方式來完成特權域和非特權域的通信,這種方式有其固有的缺陷,這使其網絡性能受到極大限制,以及在高負載的情況下DomO的負擔會很重,為此本發(fā)明提出了解決方案,以提高系統(tǒng)的整體性能。
發(fā)明內容
本發(fā)明的目的在于提供一種虛擬化環(huán)境中PCI設備的分離訪問方法及其系統(tǒng),用于通過對系統(tǒng)調用的截獲,減輕DomO的負擔,以達到更好的網絡I/O性能的提升。為了實現(xiàn)上述目的,本發(fā)明提供一種虛擬化環(huán)境中PCI設備的分離訪問方法,其特征在于,包括步驟一,通過網卡的獨立驅動域分離出特權域的部分訪問1/0設備的權限;步驟二,截獲由非特權域發(fā)送給特權域的訪問1/0設備的系統(tǒng)調用,并將系統(tǒng)調用轉發(fā)給獨立驅動域;步驟三,獨立驅動域獲得訪問1/0設備的權限,完成對1/0設備的訪問。所述的虛擬化環(huán)境中PCI設備的分離訪問方法,其中,所述步驟一中,包括將PCI設備的控制權從特權域中抽離出,以使PCI設備對非特權域可見。所述的虛擬化環(huán)境中PCI設備的分離訪問方法,其中,所述步驟二中,包括非特權域需對硬件進行1/0操作時發(fā)出系統(tǒng)調用;
修改系統(tǒng)調用的處理函數(shù),并將系統(tǒng)調用發(fā)送給特權域;特權域接收系統(tǒng)調用并訪問相應的硬件。所述的虛擬化環(huán)境中PCI設備的分離訪問方法,其中,所述步驟二中,包括特權域執(zhí)行該系統(tǒng)調用的步驟當系統(tǒng)調用中斷時,查詢相應的中斷向量表得到處理函數(shù)的地址;根據(jù)處理函數(shù)的地址得到處理函數(shù)的位置,根據(jù)該位置執(zhí)行處理函數(shù);跳轉到系統(tǒng)調用的中斷地址,執(zhí)行系統(tǒng)調用。所述的虛擬化環(huán)境中PCI設備的分離訪問方法,其中,所述步驟二中,包括查詢該中斷向量表得到一中斷向量號,根據(jù)該中斷向量號得到該處理函數(shù)的地址。為了實現(xiàn)上述目的,本發(fā)明還提供一種虛擬化環(huán)境中PCI設備的分離訪問系統(tǒng), 其特征在于,包括特權域,用于接收非特權域發(fā)送的訪問I/O設備的系統(tǒng)調用;獨立驅動域,連接特權域,用于分離出特權域的部分訪問I/O設備的權限,并接收由非特權域發(fā)送給特權域的系統(tǒng)調用,獲得訪問I/O設備的權限,完成對I/O設備的訪問。所述的虛擬化環(huán)境中PCI設備的分離訪問系統(tǒng),其中,所述非特權域還用于當對硬件進行I/O設備操作時發(fā)送該系統(tǒng)調用。所述的虛擬化環(huán)境中PCI設備的分離訪問系統(tǒng),其中,所述特權域還用于執(zhí)行系統(tǒng)調用時,查詢相應的中斷向量表得到處理函數(shù)的地址,根據(jù)處理函數(shù)的地址得到處理函數(shù)的位置,根據(jù)該位置修改處理函數(shù)的執(zhí)行方式。所述的虛擬化環(huán)境中PCI設備的分離訪問系統(tǒng),其中,所述特權域查詢該中斷向量表得到一中斷向量號,根據(jù)該中斷向量號得到該處理函數(shù)的地址。與現(xiàn)有技術相比,本發(fā)明的有益技術效果在于在現(xiàn)有的Xen的構架中,Xen使用了分離驅動的模式,訪問硬件的操作全部由DomO 進行,即在所有的虛擬機中只有DomO能直接訪問物理I/O設備,I/O操作都要經過DomO來完成,所有的DomU都要通過DomO來共享這些I/O設備。隨著CPU技術的發(fā)展以及DomU和 I/O設備的增加,這種集中式的I/O虛擬化結構會產生可靠性和性能的瓶頸??煽啃云款iXen上所有的DomU把各種I/O請求都發(fā)給DomO,DomO不僅要接受對網卡的I/O請求,還包括磁盤的I/O請求等等。在如此繁多的I/O交互中DomO容易出現(xiàn)問題,如果一旦DomO出現(xiàn)異常,其余所有的DomU的I/O操作也都將面臨癱瘓。性能瓶頸眾多種類和數(shù)量的I/O操作會導致DomO在運行時很容易超出負荷,請求也容易出現(xiàn)延遲。如果仍在當前這種集中式的I/O虛擬化結構中來提高I/O性能會遇到很多困難。原因在于對I/O優(yōu)化時要保證DomO上的其他進程(例如守護進程)不會受到干擾,不能為了提高I/O性能而影響其他的進程,并且每個I/O設備性能提升所關注的指標也不同,很難通過修改DomO的某一部分驅動達到整體I/O性能的優(yōu)化。針對現(xiàn)有技術存在的缺陷,本發(fā)明提出了一種構建分離驅動域并使獨立驅動域與其他DomU通信的方法及系統(tǒng),克服了現(xiàn)有技術中的DomO成為輸入輸出瓶頸的問題。通過采用獨立驅動域方式較好的解決I/O性能提升的問題,因為它只關注某一特定的I/O性能的提升,如本發(fā)明要實現(xiàn)的網絡I/O性能的提升。它首先將部分訪問網絡硬件I/O設備的權限分離出來,再通過截獲原本發(fā)送給DomO的系統(tǒng)調用來送給獨立驅動域,使得獨立驅動域的響應對應到特定的DomO中,這樣獨立驅動域只關注網絡的1/0,在性能上不會被其他的I/O請求影響,性能上的瓶頸問題得到了解決。而采用獨立驅動域的方式后,網絡I/O的請求不再通過DomO,因此不會對DomO造成影響。因此可靠性瓶頸的問題也得到了解決。
圖1是本發(fā)明實現(xiàn)系統(tǒng)調用分離執(zhí)行的虛擬系統(tǒng)結構圖;圖2是本發(fā)明的虛擬化環(huán)境中PCI設備的分離訪問方法流程圖;圖3是本發(fā)明的系統(tǒng)調用截獲的流程圖。
具體實施例方式以下結合附圖和具體實施例對本發(fā)明進行詳細描述,但不作為對本發(fā)明的限定。如圖1所示,為本發(fā)明實現(xiàn)系統(tǒng)調用分離執(zhí)行的虛擬系統(tǒng)結構圖。如圖所示,該虛擬系統(tǒng)共有三層組成硬件設備層、管理程序層以及虛擬機層。硬件設備層為物理硬件結構,包括物理CPU、物理內存、網絡、塊設備等,為整個虛擬機層提供硬件支持。管理程序層位于操作系統(tǒng)和硬件之間,為其上運行的操作系統(tǒng)內核提供虛擬化的硬件環(huán)境。虛擬機層分為兩部分,有一個Domain是用來輔助Xen管理其他Domain的,提供相應的虛擬資源服務,特別是其他Domain對于1/0設備的訪問,即DomO,其他DomU會受到很多限制,只能通過其中的前端設備驅動訪問DomO中的后端設備驅動來訪問硬件。在DomU訪問設備的過程中,其觸發(fā)的系統(tǒng)調用會將控制權交給Xen并由其利用 DomU的前端設備向DomO的后端設備發(fā)送硬件訪問請求,DomO的后端設備通過Xen中已經實現(xiàn)的交互通道與DomU的前端設備進行連接,訪問硬件。這是本發(fā)明的參考模型。在本發(fā)明中,將DomU訪問設備時觸發(fā)的系統(tǒng)調用進行修改,使得其前端設備去訪問獨立驅動域H-DomU的后端設備,該后端設備是仿照DomO實現(xiàn)的,在兩個設備之間同樣建立交互通道,通過獨立驅動域H-DomU的后端設備來訪問硬件設備,通過交互通道返回數(shù)據(jù)。此為本發(fā)明的主要部分。獨立驅動域H-DomU是可以訪問硬件設備的,這也是提取的DomO的功能,由此在其后端設備接收到訪問請求后,會通過一些函數(shù)調用利用該虛擬域中自帶的硬件設備驅動來訪問本地硬件,從而獲得相應數(shù)據(jù)進行回傳。圖1中實現(xiàn)了一個負責訪問底層硬件的獨立驅動域H-DomU,DomO和其他DomU分布在同一層,擁有訪問1/0設備的權限,即具有本地硬件的驅動,以及系統(tǒng)調用的接收接口。其中,應用程序表示各個虛擬域中運行的程序,DomO中的設備管理器負責處理其他虛擬域對設備的訪問請求,該部分在本系統(tǒng)中將不產生作用,由于使用了 PCI設備透傳,整個虛擬系統(tǒng)將只有H-DomU部分可以訪問硬件設備??刂泼姘逯邪珼omO對其他虛擬域的管理工具,這些管理器及管理工具是Xen原生自帶的部分,在本發(fā)明中沒有特殊的作用。獨立驅動域H-DomU的功能為接收其他DomU被截獲的對于1/0設備訪問的系統(tǒng)調用,利用其硬件驅動進行硬件訪問。整個系統(tǒng)中,
Xen中DomU訪問I/O設備的基本步驟為1、DomU的前端設備驅動向DomO發(fā)送讀/寫請求;2、DomO的后端設備驅動接收請求通過本地設備驅動訪問I/O設備;3、DomO將獲取的信息保存在共享區(qū)域;4、DomU通過共享區(qū)域得到需要的信息。以上即為PCI設備透傳的主要工作步驟。如圖1所示,由于普通DomU的對于I/O設備訪問的系統(tǒng)調用的處理函數(shù)已經被修改,當DomU的某個應用程序提出訪問I/O設備的系統(tǒng)調用請求時,原本應該發(fā)送給DomO的設備驅動的系統(tǒng)調用請求通過修改的處理函數(shù)發(fā)送給H-DomU來執(zhí)行,H-DomU利用自己的本地設備驅動仿照DomO獲取需要的信息保存在共享區(qū)域供發(fā)送請求的普通DomU獲取。文獻6“BLAINER A,KUCHARSKI W J,LEVENTHAL A H, NIEUWEJAAR N A, PILATOffICZ E K, SCHROCK E N System call handling method for single native operating environment, involves executing transformed system call and system call within native operating system when system call is from foreign process and native process,respectively US7689566-B1”中也提到了系統(tǒng)調用的處理,而本發(fā)明關注的則是系統(tǒng)調用的截獲。具體的實施方式如下步驟201,普通DomU需要對某硬件進行1/0操作,發(fā)送出相應的系統(tǒng)調用;步驟202,1/0訪問的系統(tǒng)調用的處理函數(shù)都已經被修改,改成發(fā)送給DomO來執(zhí)行,因此在執(zhí)行時該系統(tǒng)調用需要發(fā)送給DomO ;步驟203,DomO接收系統(tǒng)調用,通過自己的驅動訪問相應的硬件。其中,將DomU的設備訪問的系統(tǒng)調用轉發(fā)給DomO涉及到系統(tǒng)調用截獲的操作,其具體流程參見圖3所示。如圖3所示,為本發(fā)明的系統(tǒng)調用截獲的流程圖。當一個系統(tǒng)調用被執(zhí)行時,會根據(jù)中斷向量表找到相應的處理函數(shù)的位置,在處理函數(shù)部分可以修改其執(zhí)行方式,達到截獲該系統(tǒng)調用進行本發(fā)明所需要的操作的目的。經修改過的系統(tǒng)調用的整體流程如下步驟301,通過軟中斷^it 0x80進入內核,系統(tǒng)調用發(fā)生;步驟302,查詢系統(tǒng)中的中斷向量表(該中斷向量表存儲了系統(tǒng)中允許執(zhí)行的中斷操作的中斷向量號,程序可通過該中斷向量號找到中斷處理函數(shù)的地址),找到相應的中斷向量號,根據(jù)中斷向量號找到相應的處理函數(shù)的地址;步驟303,根據(jù)處理函數(shù)的地址找到相應的處理函數(shù)位置,執(zhí)行該處理函數(shù),此時處理函數(shù)已經修改過,將會執(zhí)行本發(fā)明預定的功能;步驟304,處理函數(shù)執(zhí)行完畢后,退出內核空間;步驟305,返回到調用系統(tǒng)調用的應用程序中,跳轉到原始中斷地址,繼續(xù)執(zhí)行下一條指令。本發(fā)明采用了 PCI設備透傳(即將PCI設備的控制權從DomO中抽離出來,交給獨立驅動域H-DomU,使得PCI設備只能被獨立驅動域H-DomU使用),采用獨立的網卡驅動域, 將DomO的部分對網絡的1/0操作的功能獨立出來,使得在該域完成對硬件的直接操作;還實現(xiàn)了系統(tǒng)調用截獲,截獲原本由DomU發(fā)給DomO的系統(tǒng)調用,并將系統(tǒng)調用轉發(fā)給獨立驅動域H-DomU,以利用獨立驅動域H-DomU的本地硬件設備驅動來進行硬件設備的訪問。
當然,本發(fā)明還可有其它多種實施例,在不背離本發(fā)明精神及其實質的情況下,熟悉本領域的技術人員當可根據(jù)本發(fā)明做出各種相應的改變和變形,但這些相應的改變和變形都應屬于本發(fā)明所附的權利要求的保護范圍。
權利要求
1.一種虛擬化環(huán)境中PCI設備的分離訪問方法,其特征在于,包括步驟一,通過網卡的獨立驅動域分離出特權域的部分訪問I/O設備的權限; 步驟二,截獲由非特權域發(fā)送給特權域的訪問I/O設備的系統(tǒng)調用,并將系統(tǒng)調用轉發(fā)給獨立驅動域,建立非特權域的前端設備與獨立驅動域的后端設備之間的交互通道;步驟三,獨立驅動域獲得訪問I/O設備的權限,通過后端設備完成對I/O設備的訪問, 并通過交互通道返回數(shù)據(jù)。
2.根據(jù)權利要求1所述的虛擬化環(huán)境中PCI設備的分離訪問方法,其特征在于,所述步驟一中,包括將PCI設備的控制權從特權域中抽離出,以使PCI設備對非特權域可見。
3.根據(jù)權利要求1或2所述的虛擬化環(huán)境中PCI設備的分離訪問方法,其特征在于,所述步驟二中,包括非特權域需對硬件進行I/O操作時發(fā)出系統(tǒng)調用; 修改系統(tǒng)調用的處理函數(shù),并將系統(tǒng)調用發(fā)送給特權域; 特權域接收系統(tǒng)調用并訪問相應的硬件。
4.根據(jù)權利要求3所述的虛擬化環(huán)境中PCI設備的分離訪問方法,其特征在于,所述步驟二中,包括特權域執(zhí)行該系統(tǒng)調用的步驟當系統(tǒng)調用中斷時,查詢相應的中斷向量表得到處理函數(shù)的地址; 根據(jù)處理函數(shù)的地址得到處理函數(shù)的位置,根據(jù)該位置執(zhí)行處理函數(shù); 跳轉到系統(tǒng)調用的中斷地址,執(zhí)行系統(tǒng)調用。
5.根據(jù)權利要求4所述的虛擬化環(huán)境中PCI設備的分離訪問方法,其特征在于,所述步驟二中,包括查詢該中斷向量表得到一中斷向量號,根據(jù)該中斷向量號得到該處理函數(shù)的地址。
6.一種虛擬化環(huán)境中PCI設備的分離訪問系統(tǒng),其特征在于,包括 特權域,用于接收非特權域發(fā)送的訪問I/O設備的系統(tǒng)調用;獨立驅動域,連接特權域、非特權域,用于分離出特權域的部分訪問I/O設備的權限, 并接收由非特權域發(fā)送給特權域的系統(tǒng)調用,建立非特權域的前端設備與獨立驅動域的后端設備之間的交互通道,獲得訪問I/O設備的權限,通過后端設備完成對IO設備的訪問,并通過交互通道返回數(shù)據(jù)。
7.根據(jù)權利要求6所述的虛擬化環(huán)境中PCI設備的分離訪問系統(tǒng),其特征在于,所述非特權域還用于當對硬件進行I/O設備操作時發(fā)送該系統(tǒng)調用。
8.根據(jù)權利要求6或7所述的虛擬化環(huán)境中PCI設備的分離訪問系統(tǒng),其特征在于,所述特權域還用于執(zhí)行系統(tǒng)調用時,查詢相應的中斷向量表得到處理函數(shù)的地址,根據(jù)處理函數(shù)的地址得到處理函數(shù)的位置,根據(jù)該位置修改處理函數(shù)的執(zhí)行方式。
9.根據(jù)權利要求8所述的虛擬化環(huán)境中PCI設備的分離訪問系統(tǒng),其特征在于,所述特權域查詢該中斷向量表得到一中斷向量號,根據(jù)該中斷向量號得到該處理函數(shù)的地址。
全文摘要
本發(fā)明有關于一種虛擬化環(huán)境中PCI設備的分離訪問方法及其系統(tǒng),該分離訪問系統(tǒng),其特征在于,包括特權域,用于接收非特權域發(fā)送的訪問I/O設備的系統(tǒng)調用;獨立驅動域,連接特權域,用于分離出特權域的部分訪問I/O設備的權限,并接收由非特權域發(fā)送給特權域的系統(tǒng)調用,建立非特權域的前端設備與獨立驅動域的后端設備之間的交互通道,獲得訪問I/O設備的權限,通過后端設備完成對IO設備的訪問,并通過交互通道返回數(shù)據(jù)。本發(fā)明通過對系統(tǒng)調用的截獲,減輕特權域的負擔,以達到更好的網絡I/O性能的提升。
文檔編號G06F13/10GK102426557SQ20111033253
公開日2012年4月25日 申請日期2011年10月27日 優(yōu)先權日2011年10月27日
發(fā)明者孫毓忠, 李旭東, 田昕暉, 賈禛 申請人:中國科學院計算技術研究所