專利名稱:一種多緩沖區(qū)數(shù)據(jù)聚合的報文接收方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)數(shù)據(jù)處理領(lǐng)域,具體涉及一種多緩沖區(qū)數(shù)據(jù)聚合的報文接收方法。
背景技術(shù):
在當(dāng)前網(wǎng)絡(luò)數(shù)據(jù)處理系統(tǒng)中,網(wǎng)絡(luò)收包方式主要有兩種一種是基本于中斷的方 式,另一種是基于輪詢的方式。對于基于中斷的方式,新數(shù)據(jù)包到達(dá),網(wǎng)絡(luò)接口會產(chǎn)生中斷, 通知系統(tǒng)將數(shù)據(jù)包取走。對于基于輪詢的方式,新數(shù)據(jù)包到達(dá)時,直接放入緩沖區(qū),網(wǎng)絡(luò) 接口通過不停的輪詢訪問緩沖區(qū),取走緩沖區(qū)中的數(shù)據(jù)包(參考專利CN1627727(申請?zhí)?200410074691. 6)和Iinux設(shè)備驅(qū)動程序,魏永明耿岳鐘書毅譯)。
直接使用上述兩種方案,都有一定的弊端?;谥袛嗟姆绞?,不適用于網(wǎng)絡(luò)帶寬 較大的情況,尤其是網(wǎng)絡(luò)中每秒有上萬個數(shù)據(jù)的時候,由于中斷的產(chǎn)生,導(dǎo)致系統(tǒng)頻繁的切 換,嚴(yán)重影響性能。基于輪詢的方法,對于網(wǎng)絡(luò)帶寬較小時,系統(tǒng)也會不停的訪問緩沖區(qū),浪 費了系統(tǒng)資源。
在當(dāng)前多路多核服務(wù)器普及的情況下,,為了充分利用多核處理器,往往分配多個 緩沖區(qū)與多個CPU —一綁定。網(wǎng)絡(luò)數(shù)據(jù)包通過分流算法,分配到多個緩沖區(qū)中,然后采用輪 詢方法從多個緩沖區(qū)取包。這種方案兩個弊端,首先,在網(wǎng)絡(luò)帶寬較大時,每個緩沖區(qū)基本 上都是非空的,每一輪取包往往都是從靠前的緩沖區(qū)取包,導(dǎo)致靠后的緩沖區(qū)很少被訪問; 其次,在多個緩沖區(qū)分配不均勻的情況下若某些緩沖區(qū)已經(jīng)被取空,對其輪詢訪問時導(dǎo)致 多余的開銷。發(fā)明內(nèi)容
本發(fā)明目的是解決采用中斷機制收包時,網(wǎng)絡(luò)帶寬大,頻繁中斷引起的系統(tǒng)下降 問題和采用常用輪詢方案,帶寬小時,系統(tǒng)資源浪費在訪問空緩沖區(qū)上導(dǎo)致效率低的問題。
一種多緩沖區(qū)數(shù)據(jù)聚合的報文接收方法,步驟如下
A、構(gòu)造三個數(shù)組al、a2、a3 ;
B、獲得CPU個數(shù)N,分配N個緩沖區(qū)并與cpu —一綁定;
C、輪詢緩沖區(qū),累加輪詢次數(shù),根據(jù)取包指針從緩沖區(qū)取包,移動取包指針;
D、若取包失敗,根據(jù)數(shù)組al更新下次該緩沖區(qū)取包的加權(quán)等待時間;若輪詢次數(shù) 等于N,根據(jù)a2更新輪詢等待時間,并等待;
E、跳轉(zhuǎn)至C步驟;否則取包成功,則根據(jù)a3更新對多個緩沖區(qū)的輪詢等待時間執(zhí) 行步驟D;
F、退出。
本發(fā)明的一種優(yōu)選技術(shù)方案在于所述D步驟中加權(quán)等待時間減少規(guī)則和增加規(guī) 則可以根據(jù)網(wǎng)絡(luò)負(fù)荷情況來確定,負(fù)荷較大時,加權(quán)等待時間應(yīng)該設(shè)得較小,主要是輪詢收 包;負(fù)荷較小時,加權(quán)等待時間應(yīng)該設(shè)得較大,主要是等待數(shù)據(jù)包。
本發(fā)明與通常的輪詢相比,首先,提高了取包緩沖區(qū)的利用率,靠后緩沖區(qū)中的數(shù) 據(jù)包被快速取出,使緩沖區(qū)有更多的空間用來寫數(shù)據(jù)包,多個緩沖區(qū)與多個CPU—一綁定, 緩沖區(qū)數(shù)據(jù)的讀寫,提高了多核CPU的利用率;另外緩沖區(qū)與CPU的利用率的提高,也讓收 包應(yīng)用讀包速度增快,提高了應(yīng)用性能。其次,避免頻繁訪問空緩沖區(qū),減小了系統(tǒng)消耗。本 方案是一種改進的輪詢方案,當(dāng)加權(quán)等待時間全設(shè)為0時,本方案即為輪詢方案。
圖1是本發(fā)明步驟流程圖。
圖2是本發(fā)明設(shè)備結(jié)構(gòu)圖。
具體實施方式
(1)構(gòu)造加權(quán)等待時間數(shù)組。
根據(jù)網(wǎng)絡(luò)負(fù)荷情況構(gòu)造三個數(shù)組al、a2、a3。其中al,a3為遞增數(shù)組,a2為遞減 數(shù)組。al為取包失敗時,則下次輪詢加權(quán)等待時間按一定規(guī)則增加;a2為取包成功時,則下 次輪詢加權(quán)等待時間按一定規(guī)則減少;a3為輪詢一遍緩沖區(qū)時,取包失敗,下次輪詢加權(quán) 等待時間按一定規(guī)則增加;
(2)分配緩沖區(qū)與CPU——綁定。
獲得CPU個數(shù)N,分配N個緩沖區(qū)并與cpu —一綁定;
(3)輪詢?nèi)“?br>
輪詢緩沖區(qū),累加輪詢次數(shù),判斷取包指針?biāo)傅木彌_區(qū)的加權(quán)等待時間,若為0 則讀取該緩沖區(qū),否則,取包指針移向下一個緩沖區(qū)。這一步能避免輪詢方法頻繁訪問空緩 沖區(qū),而導(dǎo)致系統(tǒng)不必要的開銷;當(dāng)負(fù)荷大時,避免中斷機制引起的頻繁的系統(tǒng)切換帶來的 系統(tǒng)開銷。
(4)判斷取包成功與否,決定一步。
若取包失敗,根據(jù)數(shù)組al更新下次該緩沖區(qū)取包的加權(quán)等待時間。若輪詢次數(shù)等 于N,根據(jù)a2更新輪詢等待時間,并等待。跳轉(zhuǎn)至(3)步驟;否則取包成功,則根據(jù)a3更新 對多個緩沖區(qū)的輪詢等待時間執(zhí)行步驟(5);
(5)退出。權(quán)利要求
1.一種多緩沖區(qū)數(shù)據(jù)聚合的報文接收方法,其特征在于,步驟如下A、構(gòu)造三個數(shù)組al、a2、a3;B、獲得CPU個數(shù)N,分配N個緩沖區(qū)并與cpu—一綁定;C、輪詢緩沖區(qū),累加輪詢次數(shù),根據(jù)取包指針從緩沖區(qū)取包,移動取包指針;D、若取包失敗,根據(jù)數(shù)組al更新下次該緩沖區(qū)取包的加權(quán)等待時間;若輪詢次數(shù)等于 N,根據(jù)a2更新輪詢等待時間,并等待;E、跳轉(zhuǎn)至C步驟;否則取包成功,則根據(jù)a3更新對多個緩沖區(qū)的輪詢等待時間執(zhí)行步 驟D;F、退出。
2.如權(quán)利要求1所述一種多緩沖區(qū)數(shù)據(jù)聚合的報文接收方法,其特征在于所述D步 驟中加權(quán)等待時間減少規(guī)則和增加規(guī)則可以根據(jù)網(wǎng)絡(luò)負(fù)荷情況來確定,負(fù)荷較大時,加權(quán) 等待時間應(yīng)該設(shè)得較小,主要是輪詢收包;負(fù)荷較小時,加權(quán)等待時間應(yīng)該設(shè)得較大,主要 是等待數(shù)據(jù)包。
全文摘要
本發(fā)明提供了一種多緩沖區(qū)數(shù)據(jù)聚合的報文接收方法,與通常的輪詢相比,首先,提高了取包緩沖區(qū)的利用率,靠后緩沖區(qū)中的數(shù)據(jù)包被快速取出,使緩沖區(qū)有更多的空間用來寫數(shù)據(jù)包,多個緩沖區(qū)與多個CPU一一綁定,緩沖區(qū)數(shù)據(jù)的讀寫,提高了多核CPU的利用率;另外緩沖區(qū)與CPU的利用率的提高,也讓收包應(yīng)用讀包速度增快,提高了應(yīng)用性能。其次,避免頻繁訪問空緩沖區(qū),減小了系統(tǒng)消耗。本方案是一種改進的輪詢方案,當(dāng)加權(quán)等待時間全設(shè)為0時,本方案即為輪詢方案。
文檔編號H04L12/56GK102035742SQ201010597788
公開日2011年4月27日 申請日期2010年12月17日 優(yōu)先權(quán)日2010年12月17日
發(fā)明者劉朝輝, 劉燦, 張英文, 李鋒偉, 竇曉光 申請人:天津曙光計算機產(chǎn)業(yè)有限公司