一種針對(duì)網(wǎng)絡(luò)i/o虛擬化的并行化可擴(kuò)展數(shù)據(jù)處理方法
【專利摘要】本發(fā)明公開了一種針對(duì)網(wǎng)絡(luò)I/O虛擬化的并行化可擴(kuò)展數(shù)據(jù)處理方法,以網(wǎng)絡(luò)層次化結(jié)構(gòu)為依據(jù),將數(shù)據(jù)收發(fā)、協(xié)議解析、數(shù)據(jù)流管理、上層應(yīng)用都視為網(wǎng)絡(luò)I/O的環(huán)節(jié),將各環(huán)節(jié)利用非對(duì)稱流水線方式并行化協(xié)同工作;同時(shí)采用對(duì)稱性并行方式在計(jì)算資源瓶頸點(diǎn)注入充分計(jì)算資源,實(shí)現(xiàn)數(shù)據(jù)處理能力的并行化和可擴(kuò)展性。同時(shí)根據(jù)系統(tǒng)負(fù)載,彈性管理多核資源,消除由傳統(tǒng)I/O驅(qū)動(dòng)方法的計(jì)算能力造成的I/O虛擬化資源的性能瓶頸。
【專利說(shuō)明】
一種針對(duì)網(wǎng)絡(luò)I /0虛擬化的并行化可擴(kuò)展數(shù)據(jù)處理方法
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及網(wǎng)絡(luò)I/O虛擬化數(shù)據(jù)處理領(lǐng)域,尤其涉及一種針對(duì)網(wǎng)絡(luò)I/O虛擬化的并行化可擴(kuò)展數(shù)據(jù)處理方法。
【背景技術(shù)】
[0002]I/O虛擬化是一種軟件技術(shù),是在底層硬件與工作負(fù)載之間對(duì)網(wǎng)絡(luò)設(shè)備的一種抽象。目前,I/O虛擬化有三種解決方案軟件模擬的全虛擬化、半虛擬化和硬件輔助虛擬化。全虛擬化是完全通過(guò)軟件程序來(lái)模擬硬件網(wǎng)絡(luò)I/o的技術(shù),該方法效率較差無(wú)法充分利用1GbE網(wǎng)絡(luò)的物理線速,已經(jīng)不能勝任目前高性能網(wǎng)絡(luò)NIC設(shè)備的虛擬化要求。目前,1GbE以上的高性能網(wǎng)絡(luò)接口設(shè)備(NI C)都提供硬件輔助的單根I /0虛擬化(SR-1OV)支持和半虛擬化兩種方式,支持SR-1OV的高性能NIC設(shè)備具有一個(gè)或多個(gè)物理功能(PhysicalFunct 1n,PF ),PF是標(biāo)準(zhǔn)的PCIe設(shè)備,每一個(gè)PF可以創(chuàng)建多個(gè)虛擬設(shè)備(VirtualFUnct1n,VF)給虛擬機(jī)使用?;谇昂蠖朔椒ǖ腎/O半虛擬化方法,通過(guò)環(huán)形緩沖區(qū)在前后端進(jìn)行數(shù)據(jù)交換,通過(guò)減少VMM的干預(yù)來(lái)提高數(shù)據(jù)交換的效率;但是缺點(diǎn)是虛擬機(jī)需要運(yùn)行特定的驅(qū)動(dòng)程序,并且需要對(duì)虛擬機(jī)進(jìn)行一定的改變。
[0003]I/O虛擬化的數(shù)據(jù)處理方法的計(jì)算資源容量成為虛擬I/O資源的性能瓶頸。虛擬化環(huán)境下I/O數(shù)據(jù)處理不僅需要對(duì)數(shù)據(jù)包進(jìn)行協(xié)議解析等處理,還需要在多個(gè)虛擬機(jī)間進(jìn)行數(shù)據(jù)的分發(fā),其計(jì)算資源開銷相對(duì)原生操作系統(tǒng)高很多。當(dāng)單線程數(shù)據(jù)處理方法開銷超過(guò)物理CPU的計(jì)算能力,就使虛擬化I/O資源的吞吐性能受限于數(shù)據(jù)處理的計(jì)算資源瓶頸。另一方面,SR-1OV由硬件輔助完成二層數(shù)據(jù)交換,計(jì)算資源瓶頸得到極大改善,但相似的計(jì)算資源瓶頸出現(xiàn)在虛擬機(jī)內(nèi)的VF驅(qū)動(dòng)。單虛擬機(jī)瞬時(shí)網(wǎng)絡(luò)突發(fā)會(huì)造成大量丟包和性能衰退,多虛擬機(jī)交替吞吐突發(fā)的情況下總體I/O吞吐性能也會(huì)大幅下降??傊?,高性能網(wǎng)絡(luò)I/O虛擬化的數(shù)據(jù)處理方法計(jì)算資源開銷高,導(dǎo)致充分利用高性能NIC的物理線速性能形成虛擬化I/O資源困難。
[0004]因此,本領(lǐng)域的技術(shù)人員致力于開發(fā)一種針對(duì)網(wǎng)絡(luò)I/O虛擬化的并行化可擴(kuò)展數(shù)據(jù)處理方法,消除由傳統(tǒng)I/O驅(qū)動(dòng)方法的計(jì)算能力造成的I/O虛擬化資源的性能瓶頸。
【發(fā)明內(nèi)容】
[0005]鑒于現(xiàn)有數(shù)據(jù)處理方法的上述缺陷,本發(fā)明要解決的問(wèn)題是盡可能消除計(jì)算資源瓶頸造成的虛擬I/O資源瓶頸,適應(yīng)高性能網(wǎng)絡(luò)設(shè)備對(duì)虛擬I/O資源的需求。
[0006]為了實(shí)現(xiàn)此目的,本發(fā)明提供了一種針對(duì)網(wǎng)絡(luò)I/O虛擬化的并行化可擴(kuò)展數(shù)據(jù)處理方法,包括以下步驟:
[0007]步驟1:將網(wǎng)絡(luò)I/O虛擬化中數(shù)據(jù)包按照處理流程分解成多個(gè)子任務(wù),形成一條數(shù)據(jù)處理的流水線;
[0008]步驟2:—個(gè)線程處理一個(gè)子任務(wù),以非對(duì)稱流水線方式并行化協(xié)同工作;
[0009]步驟3:每個(gè)線程將處理后的數(shù)據(jù)通過(guò)無(wú)鎖環(huán)形緩沖區(qū)交給數(shù)據(jù)流水線的下一級(jí)線程進(jìn)行處理;
[0010]步驟4:使用內(nèi)存巨頁(yè)和內(nèi)存映射建立共享內(nèi)存池,在宿主機(jī)與客戶機(jī),客戶機(jī)與客戶機(jī)間建立快速零拷貝數(shù)據(jù)共享通道;
[0011 ]步驟5:建立網(wǎng)絡(luò)I/O數(shù)據(jù)處理吞吐量與每一步驟所需計(jì)算資源的關(guān)系模型,監(jiān)控流水線中每個(gè)線程的資源使用情況,如果某個(gè)線程的數(shù)據(jù)處理計(jì)算量超過(guò)單核具備的計(jì)算能力時(shí),則將負(fù)責(zé)該線程的邏輯核進(jìn)行對(duì)稱多線程并行化;
[0012]步驟6:如果監(jiān)控到系統(tǒng)負(fù)載較低,將數(shù)據(jù)處理流水線中的多個(gè)線程合并到一個(gè)邏輯核上運(yùn)行。
[0013]進(jìn)一步地,所述步驟2中每個(gè)線程獨(dú)占一個(gè)邏輯核運(yùn)行。
[0014]進(jìn)一步地,所述無(wú)鎖環(huán)形緩沖區(qū)可同時(shí)供多個(gè)生產(chǎn)者寫入數(shù)據(jù),多個(gè)消費(fèi)者讀取數(shù)據(jù)。
[0015]進(jìn)一步地,所述關(guān)系模型中的所述每一步驟包括解析、分類、應(yīng)用策略、平衡負(fù)載、執(zhí)行應(yīng)用程序、下線保存和調(diào)度。
[0016]本發(fā)明以網(wǎng)絡(luò)層次化結(jié)構(gòu)為依據(jù),將數(shù)據(jù)收發(fā)、協(xié)議解析、數(shù)據(jù)流管理、上層應(yīng)用都視為網(wǎng)絡(luò)I/o的環(huán)節(jié),將各環(huán)節(jié)利用非對(duì)稱流水線方式并行化協(xié)同工作;同時(shí)采用對(duì)稱性并行方式在計(jì)算資源瓶頸點(diǎn)注入充分計(jì)算資源,實(shí)現(xiàn)數(shù)據(jù)處理能力的并行化和可擴(kuò)展性。本發(fā)明使用無(wú)鎖環(huán)形緩沖區(qū)提高多核間數(shù)據(jù)協(xié)同處理的效率,使用內(nèi)存巨頁(yè)和內(nèi)存映射技術(shù)建立共享內(nèi)存池,在宿主機(jī)-客戶機(jī)和客戶機(jī)-客戶機(jī)間建立快速零拷貝數(shù)據(jù)共享通道。然后,建立網(wǎng)絡(luò)I/o數(shù)據(jù)處理吞吐量與每一步驟所需計(jì)算資源的關(guān)系模型,實(shí)現(xiàn)并行數(shù)據(jù)處理方法的動(dòng)態(tài)高效伸縮。
[0017]以下將結(jié)合附圖對(duì)本發(fā)明的構(gòu)思、具體結(jié)構(gòu)及產(chǎn)生的技術(shù)效果作進(jìn)一步說(shuō)明,以充分地了解本發(fā)明的目的、特征和效果。
【附圖說(shuō)明】
[0018]圖1是本發(fā)明的一個(gè)較佳實(shí)施例的網(wǎng)絡(luò)I/O虛擬化并行化可擴(kuò)展數(shù)據(jù)處理方法框圖;
[0019]圖2本發(fā)明的一個(gè)較佳實(shí)施例的網(wǎng)絡(luò)I/O數(shù)據(jù)處理流水線各步驟所需計(jì)算資源比例關(guān)系模型。
【具體實(shí)施方式】
[0020]以下將結(jié)合附圖對(duì)本發(fā)明的實(shí)施例做詳細(xì)說(shuō)明。本實(shí)施例在本發(fā)明技術(shù)方案的前提下進(jìn)行實(shí)施,并給出詳細(xì)實(shí)施方式和具體操作過(guò)程,但是適用場(chǎng)景并不僅限于本實(shí)施例。
[0021]本實(shí)施例以I/O半虛擬化為例,將網(wǎng)卡驅(qū)動(dòng)的數(shù)據(jù)包協(xié)議解析進(jìn)行對(duì)稱性并行化,將VMM內(nèi)的軟件交換機(jī)進(jìn)行流水線的非對(duì)稱并行化。
[0022]本發(fā)明提出一種針對(duì)網(wǎng)絡(luò)I/O虛擬化的并行化可擴(kuò)展數(shù)據(jù)處理方法,包括以下步驟:
[0023]步驟1:針對(duì)I/O半虛擬化,如圖1所示,將網(wǎng)卡驅(qū)動(dòng)的數(shù)據(jù)包協(xié)議解析以及VMM內(nèi)的軟件交換機(jī)涉及到的數(shù)據(jù)處理流程進(jìn)行分解,包括數(shù)據(jù)包接收、數(shù)據(jù)包解析、數(shù)據(jù)包分類、負(fù)載均衡、數(shù)據(jù)包丟棄、數(shù)據(jù)包調(diào)度、數(shù)據(jù)包發(fā)送等環(huán)節(jié),形成一條數(shù)據(jù)處理的流水線。
[0024]步驟2:每個(gè)數(shù)據(jù)處理環(huán)節(jié)交給一個(gè)線程進(jìn)行處理,該線程獨(dú)占一個(gè)邏輯核運(yùn)行,實(shí)現(xiàn)非對(duì)稱流水線方式并行化協(xié)同工作。
[0025]步驟3:每個(gè)線程將處理后的數(shù)據(jù)通過(guò)無(wú)鎖環(huán)形緩沖區(qū)交給數(shù)據(jù)流水線的下一級(jí)線程進(jìn)行處理。無(wú)鎖環(huán)形緩沖區(qū)可同時(shí)供多個(gè)生產(chǎn)者寫入數(shù)據(jù),多個(gè)消費(fèi)者讀取數(shù)據(jù),基本消除鎖同步帶來(lái)的開銷,提高多個(gè)線程之間數(shù)據(jù)交互的性能。
[0026]步驟4:使用內(nèi)存巨頁(yè)和內(nèi)存映射技術(shù)建立共享內(nèi)存池,在宿主機(jī)-客戶機(jī)和客戶機(jī)-客戶機(jī)間建立快速零拷貝數(shù)據(jù)共享通道,提高數(shù)據(jù)傳輸效率。
[0027]步驟5:建立網(wǎng)絡(luò)I/O數(shù)據(jù)處理吞吐量與每一步驟所需計(jì)算資源的關(guān)系模型,如圖2所示,所述關(guān)系模型中的所述每一步驟包括解析、分類、應(yīng)用策略、平衡負(fù)載、執(zhí)行應(yīng)用程序、下線保存和調(diào)度。監(jiān)控流水線中每個(gè)線程的資源使用情況,如果某個(gè)線程的數(shù)據(jù)處理計(jì)算量超過(guò)單核具備的計(jì)算能力時(shí),則將負(fù)責(zé)該線程的邏輯核進(jìn)行對(duì)稱多線程并行化,充分利用多核計(jì)算資源來(lái)實(shí)現(xiàn)接近物理線速的網(wǎng)絡(luò)吞吐量。如圖1中的“數(shù)據(jù)包解析”和“數(shù)據(jù)包發(fā)送”因?yàn)橥掏铝枯^大,則對(duì)稱并行化至多個(gè)邏輯核進(jìn)行處理。
[0028]步驟6:如果監(jiān)控到系統(tǒng)負(fù)載較低,可以將數(shù)據(jù)處理流水線中的多個(gè)線程合并到一個(gè)邏輯核上運(yùn)行,從而減少計(jì)算資源的浪費(fèi)。
[0029]以上詳細(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)。
【主權(quán)項(xiàng)】
1.一種針對(duì)網(wǎng)絡(luò)I/O虛擬化的并行化可擴(kuò)展數(shù)據(jù)處理方法,其特征在于,包括以下步驟: 步驟1:將網(wǎng)絡(luò)I/O虛擬化中數(shù)據(jù)包按照處理流程分解成多個(gè)子任務(wù),形成一條數(shù)據(jù)處理的流水線; 步驟2:—個(gè)線程處理一個(gè)子任務(wù),以非對(duì)稱流水線方式并行化協(xié)同工作; 步驟3:每個(gè)線程將處理后的數(shù)據(jù)通過(guò)無(wú)鎖環(huán)形緩沖區(qū)交給數(shù)據(jù)流水線的下一級(jí)線程進(jìn)行處理; 步驟4:使用內(nèi)存巨頁(yè)和內(nèi)存映射建立共享內(nèi)存池,在宿主機(jī)與客戶機(jī),客戶機(jī)與客戶機(jī)間建立快速零拷貝數(shù)據(jù)共享通道; 步驟5:建立網(wǎng)絡(luò)I/O數(shù)據(jù)處理吞吐量與每一步驟所需計(jì)算資源的關(guān)系模型,監(jiān)控流水線中每個(gè)線程的資源使用情況,如果某個(gè)線程的數(shù)據(jù)處理計(jì)算量超過(guò)單核具備的計(jì)算能力時(shí),則將負(fù)責(zé)該線程的邏輯核進(jìn)行對(duì)稱多線程并行化; 步驟6:如果監(jiān)控到系統(tǒng)負(fù)載較低,將數(shù)據(jù)處理流水線中的多個(gè)線程合并到一個(gè)邏輯核上運(yùn)行。2.如權(quán)利要求1所述的針對(duì)網(wǎng)絡(luò)I/O虛擬化的并行化可擴(kuò)展數(shù)據(jù)處理方法,其特征在于,所述步驟2中每個(gè)線程獨(dú)占一個(gè)邏輯核運(yùn)行。3.如權(quán)利要求1所述的針對(duì)網(wǎng)絡(luò)I/O虛擬化的并行化可擴(kuò)展數(shù)據(jù)處理方法,其特征在于,所述無(wú)鎖環(huán)形緩沖區(qū)可同時(shí)供多個(gè)生產(chǎn)者寫入數(shù)據(jù),多個(gè)消費(fèi)者讀取數(shù)據(jù)。4.如權(quán)利要求1所述的針對(duì)網(wǎng)絡(luò)I/O虛擬化的并行化可擴(kuò)展數(shù)據(jù)處理方法,其特征在于,所述關(guān)系模型中的所述每一步驟包括解析、分類、應(yīng)用策略、平衡負(fù)載、執(zhí)行應(yīng)用程序、下線保存和調(diào)度。
【文檔編號(hào)】G06F9/455GK105868000SQ201610421225
【公開日】2016年8月17日
【申請(qǐng)日】2016年6月14日
【發(fā)明人】管海兵, 胡小康, 李宗垚, 馬汝輝, 李健
【申請(qǐng)人】上海交通大學(xué)