日韩成人黄色,透逼一级毛片,狠狠躁天天躁中文字幕,久久久久久亚洲精品不卡,在线看国产美女毛片2019,黄片www.www,一级黄色毛a视频直播

嵌入式網(wǎng)絡(luò)虛擬化環(huán)境中VirtIO網(wǎng)絡(luò)虛擬化工作方法

文檔序號(hào):8301455閱讀:552來(lái)源:國(guó)知局
嵌入式網(wǎng)絡(luò)虛擬化環(huán)境中VirtIO網(wǎng)絡(luò)虛擬化工作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及嵌入式系統(tǒng),具體地,涉及嵌入式網(wǎng)絡(luò)虛擬化環(huán)境中Virt1前端驅(qū)動(dòng)程序設(shè)計(jì)方法。
【背景技術(shù)】
[0002]嵌入式系統(tǒng)是執(zhí)行少數(shù)任務(wù)的專(zhuān)用系統(tǒng),與傳統(tǒng)x86平臺(tái)不同,嵌入式環(huán)境具有功耗低、計(jì)算能力較弱等特點(diǎn),具有不同的性能模型。嵌入式系統(tǒng)需要頻繁的與物理世界進(jìn)行頻繁的交互,但由于嵌入式系統(tǒng)的資源限制,在嵌入式虛擬化環(huán)境下I/o虛擬化的性能成為了嵌入式虛擬化技術(shù)的重要技術(shù)指標(biāo)。在嵌入式虛擬化環(huán)境中,I/o虛擬化的性能需要保證硬件設(shè)備的整體性能在一定的擴(kuò)展范圍內(nèi)穩(wěn)定,能夠滿足各個(gè)虛擬機(jī)的資源需求。
[0003]在傳統(tǒng)的系統(tǒng)結(jié)構(gòu)中,I/O設(shè)備連接到PCI總線上,PCI設(shè)備通過(guò)PCI配置空間以及設(shè)備地址空間與操作系統(tǒng)進(jìn)行交互,通過(guò)中斷機(jī)制通知反饋操作系統(tǒng)。虛擬化環(huán)境中,軟件通過(guò)截獲Guest P1和MM1請(qǐng)求截獲,通過(guò)硬件虛擬化擴(kuò)展轉(zhuǎn)發(fā)給上層;模擬結(jié)束后再將結(jié)果通過(guò)中斷反饋到Guest中。
[0004]目前有三種主流的I/O設(shè)備虛擬化方案,用來(lái)實(shí)現(xiàn)I/O設(shè)備的虛擬化:一是完全虛擬化方式,I/o設(shè)備完全由虛擬機(jī)平臺(tái)進(jìn)行模擬,其驅(qū)動(dòng)不需要修改。虛擬機(jī)平臺(tái)對(duì)虛擬機(jī)完全透明,虛擬機(jī)只需要調(diào)用原生系統(tǒng)中的設(shè)備驅(qū)動(dòng),直接操作下層的虛擬硬件,具體的指令陷入由VMM完成解釋和執(zhí)行。I/O完全虛擬化方式最大的弊端在于處理器特權(quán)級(jí)地切換,即從Guest OS到VMM、VMM到模擬用戶程序的I/O進(jìn)程之間切換,嚴(yán)重影響了虛擬化效率,需要消耗大量的CPU指令周期;二是半虛擬化方式,虛擬機(jī)系統(tǒng)中集成專(zhuān)用的虛擬機(jī)設(shè)備驅(qū)動(dòng),訪問(wèn)I/O設(shè)備需采用虛擬機(jī)中提供的虛擬設(shè)備。由于其驅(qū)動(dòng)為虛擬設(shè)備專(zhuān)用,所以客戶機(jī)系統(tǒng)需要進(jìn)行修改。當(dāng)應(yīng)用程序提出訪問(wèn)請(qǐng)求時(shí),前后端驅(qū)動(dòng)共同配合完成訪問(wèn)。半虛擬化方式的I/O虛擬化擁有較好的性能,但是其不足之處在于虛擬機(jī)需要修改系統(tǒng)驅(qū)動(dòng),實(shí)現(xiàn)前后端驅(qū)動(dòng)的對(duì)應(yīng);三是硬件支持的虛擬化,通過(guò)硬件的支持,虛擬機(jī)系統(tǒng)可以在VMM授權(quán)后,不經(jīng)VMM的請(qǐng)求轉(zhuǎn)發(fā),實(shí)現(xiàn)對(duì)硬件設(shè)備的直接訪問(wèn)。硬件支持的虛擬化方式是未來(lái)虛擬化發(fā)展的一個(gè)方向,但是其廣泛的應(yīng)用仍然有賴于硬件設(shè)備的探索與發(fā)展。
[0005]1.UKVM/ARM
[0006]ARM體系結(jié)構(gòu)過(guò)去在指令集上認(rèn)為是不可虛擬化的(G.J.Popek andR.P.Goldberg.Formal Requirements for Virtualizable Third Generat1nArchitectures.Communicat1ns of the ACM, 17 (7):412 - 421, July 1974),ARM 在最新的ARMv7和ARMv8架構(gòu)中引入了硬件虛擬化擴(kuò)展,包括對(duì)CPU,內(nèi)存,中斷以及計(jì)時(shí)器虛擬化的硬件支持?jǐn)U展。嵌入式系統(tǒng)的虛擬化研宄,Christoffer Dall和Jason Nieh等已進(jìn)行了系統(tǒng)的研宄,實(shí)現(xiàn)了第一個(gè)ARM系統(tǒng)的虛擬化解決方案KVM/ARM,KVM/ARM已被并入到Linux3.9內(nèi)核中。
[0007]KVM/ARM基于已有的x86平臺(tái)下解決方案KVM,與x86平臺(tái)相比,ARM平臺(tái)缺少標(biāo)準(zhǔn)B1S或PCI總線的硬件自動(dòng)識(shí)別,而Linux被設(shè)計(jì)于運(yùn)行于幾乎所有的ARM平臺(tái)上。通過(guò)與KVM結(jié)合,KVM/ARM可以不加修改的運(yùn)行在各個(gè)ARM平臺(tái)上,這與Xen ARM形成對(duì)比:Xen ARM直接運(yùn)行在硬件層,必須針對(duì)各個(gè)不同的ARM平臺(tái)編寫(xiě)不同的平臺(tái)代碼。
[0008]ARM虛擬化硬件擴(kuò)展被設(shè)計(jì)用于獨(dú)立運(yùn)行于硬件的虛擬機(jī)監(jiān)控程序,因此KVM/ARM采用了分離模式的設(shè)計(jì),該設(shè)計(jì)使得KVM既能夠利用已有KVM代碼,又可以充分利用ARM虛擬化硬件擴(kuò)展的特性,架構(gòu)如圖1所示。
[0009]KVM/ARM 分為 Highvisor 和 Lowvisor 兩個(gè)模塊,Highvisor 運(yùn)行在 PLl 級(jí)別,即宿主機(jī)內(nèi)核中,負(fù)責(zé)集成和利用已有的KVM代碼,例如可以直接使用Linux Kernel中較為成熟的調(diào)度模塊,可以使用Linux Kernel中標(biāo)準(zhǔn)的數(shù)據(jù)結(jié)構(gòu);Lowvisor運(yùn)行在CPU PL2級(jí)別,即Hyp級(jí)別,Lowvisor充分利用ARM虛擬化硬件擴(kuò)展的特性,配置正確的執(zhí)行環(huán)境。KVM/ARM的分離模式允許其可以運(yùn)行在不經(jīng)修改的內(nèi)核中。
[0010]1.2λ Virt1 PV Driver
[0011]Virt1是半虛擬化解決方案中位于設(shè)備之上的設(shè)備層,是對(duì)通用模擬設(shè)備的抽象;通過(guò)應(yīng)用編程接口連接客戶機(jī)操作系統(tǒng)及虛擬機(jī)監(jiān)控程序(Hypervisor)。
[0012]Virt1的驅(qū)動(dòng)程序架構(gòu)抽象如圖2所示,Virt1架構(gòu)包括前端驅(qū)動(dòng)程序和后端驅(qū)動(dòng)程序,其前端驅(qū)動(dòng)程序包括塊設(shè)備,網(wǎng)絡(luò)設(shè)備,PCI設(shè)備以及balloon驅(qū)動(dòng)程序,每個(gè)前端驅(qū)動(dòng)程序包含一個(gè)對(duì)應(yīng)的后端程序,Virt1的軟件層次如圖3所示,其中VirtlO-net (半虛擬化網(wǎng)卡)提供了網(wǎng)絡(luò)設(shè)備共享的接口,為Guest和Qemu提供了高效的1通道,以共享內(nèi)存的數(shù)據(jù)傳輸方式為Guest提供了高效的網(wǎng)絡(luò)1性能。
[0013]在Virt1網(wǎng)絡(luò)虛擬化中,虛擬網(wǎng)絡(luò)設(shè)備維護(hù)了一個(gè)vring隊(duì)列的數(shù)據(jù)結(jié)構(gòu),以進(jìn)行數(shù)據(jù)收發(fā)和配置空間訪問(wèn)。客戶機(jī)在進(jìn)行網(wǎng)絡(luò)I/O時(shí),VirtlO-net前端驅(qū)動(dòng)以讀寫(xiě)數(shù)據(jù)方式寫(xiě)入vring隊(duì)列,然后通過(guò)Virt10-pci硬件寄存器通知宿主機(jī),該步驟稱為kick操作。宿主機(jī)截獲通知信息并從vring隊(duì)列中讀寫(xiě)請(qǐng)求,處理完畢后將結(jié)果添加到vring隊(duì)列并發(fā)送中斷給客戶機(jī)。該過(guò)程的流程圖如圖4所示,從該過(guò)程可以看出,客戶機(jī)每次發(fā)送數(shù)據(jù)時(shí),需要執(zhí)行一次kick操作,從客戶機(jī)切換到虛擬機(jī)監(jiān)控程序KVM,再?gòu)奶摂M機(jī)監(jiān)控程序切換回客戶機(jī)并觸發(fā)中斷。
[0014]1.3、網(wǎng)絡(luò)性能評(píng)估
[0015]網(wǎng)絡(luò)性能評(píng)估中一個(gè)重要的指標(biāo)是網(wǎng)絡(luò)的吞吐量,吞吐量是每秒中可以發(fā)送/傳輸多少字節(jié)數(shù)據(jù)。發(fā)明人針對(duì)不同虛擬機(jī)數(shù)量的情況下對(duì)網(wǎng)絡(luò)吞吐量進(jìn)行了測(cè)試,具體方法為,運(yùn)行一定數(shù)量的虛擬機(jī),使用netperf網(wǎng)絡(luò)性能測(cè)試工具進(jìn)行批量數(shù)據(jù)傳輸測(cè)試,該測(cè)試結(jié)果反映的是一個(gè)系統(tǒng)能夠以多快的速度發(fā)送數(shù)據(jù),另一個(gè)系統(tǒng)能夠以多快的速度接收數(shù)據(jù)。在實(shí)驗(yàn)過(guò)程中,發(fā)明人記錄了客戶機(jī)的數(shù)量與網(wǎng)絡(luò)的吞吐量,CPU使用率之間的關(guān)系,其結(jié)果如圖5所不。
[0016]從實(shí)驗(yàn)結(jié)果可以看出,隨著虛擬機(jī)數(shù)量的增加,CPU利用率接近飽和,網(wǎng)絡(luò)總體的吞吐量保持穩(wěn)定。這個(gè)瓶頸表現(xiàn)為客戶機(jī)數(shù)量在2個(gè)及以上時(shí)CPU利用率完全飽和,也就是說(shuō),系統(tǒng)無(wú)法迅速地處理更多的數(shù)據(jù)包,而且?guī)缀跞康腃PU時(shí)鐘都被用于處理網(wǎng)絡(luò)數(shù)據(jù)收發(fā),在這個(gè)過(guò)程中,主要為客戶機(jī)和宿主機(jī)切換(VM Exit)所產(chǎn)生的開(kāi)銷(xiāo)。

【發(fā)明內(nèi)容】

[0017]針對(duì)現(xiàn)有技術(shù)中的缺陷,本發(fā)明提出了一種在嵌入式網(wǎng)絡(luò)虛擬化環(huán)境中優(yōu)化網(wǎng)絡(luò)吞吐量的方法。該方法借鑒了網(wǎng)卡中斷節(jié)制技術(shù),網(wǎng)卡中斷節(jié)制技術(shù)是硬件網(wǎng)卡層面中的一種技術(shù)。在網(wǎng)絡(luò)繁忙的情況下,中斷帶來(lái)的CPU上下文切換的開(kāi)銷(xiāo)非常大,CPU容易達(dá)到滿負(fù)荷中斷,產(chǎn)生中斷淹沒(méi)現(xiàn)象,使得CPU成為瓶頸,而網(wǎng)卡中斷節(jié)制技術(shù)所采取的策略為當(dāng)收到數(shù)據(jù)后并不立即產(chǎn)生中斷,而是經(jīng)過(guò)一定的時(shí)間后再產(chǎn)生中斷請(qǐng)求;這項(xiàng)技術(shù)避免頻繁的中斷占用CPU資源并有效地降低了 CPU利用率,優(yōu)化了網(wǎng)絡(luò)吞吐率。
[0018]根據(jù)本發(fā)明提供的一種嵌入式網(wǎng)絡(luò)虛擬化環(huán)境中Virt1網(wǎng)絡(luò)虛擬化工作方法,針對(duì)Virt1的前端驅(qū)動(dòng)程序,對(duì)Virt1網(wǎng)絡(luò)引入延遲機(jī)制,使客戶機(jī)在進(jìn)行網(wǎng)絡(luò)數(shù)據(jù)I/O時(shí)并不立刻將控制權(quán)移交給宿主機(jī),而是將數(shù)據(jù)緩存到隊(duì)列里,經(jīng)過(guò)一定的時(shí)間后再進(jìn)行上下文切換,通知宿主機(jī)從緩存隊(duì)列獲取數(shù)據(jù)。
[0019]優(yōu)選地,包括如下步驟:
[0020]步驟O:設(shè)置Virt1前端驅(qū)動(dòng)程序中計(jì)時(shí)器的計(jì)時(shí)時(shí)間;
[0021]步驟1:當(dāng)客戶機(jī)發(fā)送數(shù)據(jù)包時(shí),客戶機(jī)kernel調(diào)用Virt1前端驅(qū)動(dòng)程序?qū)?shù)據(jù)寫(xiě)在vring隊(duì)列;
[0022]步驟2:判斷計(jì)時(shí)器是否已啟動(dòng),若已啟動(dòng)開(kāi)始計(jì)時(shí),則跳轉(zhuǎn)到步驟4 ;若尚未開(kāi)始計(jì)時(shí),則啟動(dòng)計(jì)時(shí)器,進(jìn)入步驟3 ;
[0023]步驟3:計(jì)時(shí)器的計(jì)時(shí)時(shí)間結(jié)束后,客戶機(jī)執(zhí)行超級(jí)調(diào)用hypercall通知宿主機(jī),客戶機(jī)切換到虛擬機(jī)監(jiān)控程序,虛擬機(jī)監(jiān)控程序從vring隊(duì)列取出數(shù)據(jù),處理完畢后將結(jié)果添加到vring隊(duì)列并發(fā)送中斷給客戶機(jī);
[0024]步驟4:此次調(diào)用結(jié)束。
[0025]根據(jù)本發(fā)明提供的一種嵌入式網(wǎng)絡(luò)虛擬化環(huán)境中Virt1網(wǎng)絡(luò)虛擬化工作方法,包括如下步驟:
[0026]步驟O:設(shè)置Virt1前端驅(qū)動(dòng)程序中計(jì)時(shí)器的計(jì)時(shí)時(shí)間;
[0027]步驟1:當(dāng)客戶機(jī)發(fā)送數(shù)據(jù)包時(shí),客戶機(jī)kernel調(diào)用Virt1前端驅(qū)動(dòng)程序?qū)?shù)據(jù)寫(xiě)在vring隊(duì)列;
[0028]步驟2:判斷計(jì)時(shí)器是否已啟動(dòng),若已啟動(dòng)
當(dāng)前第1頁(yè)1 2 
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1