專利名稱:基于多核架構(gòu)的批量式報(bào)文收發(fā)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)通信技術(shù)領(lǐng)域,特別涉及一種基于多核架構(gòu)的批量式報(bào)文收發(fā)方法。
背景技術(shù):
數(shù)據(jù)通信設(shè)備以數(shù)據(jù)報(bào)文的接收、處理、發(fā)送為主要處理流程,報(bào)文的接收能力、 處理能力、發(fā)送能力綜合決定了系統(tǒng)的吞吐量,而且具備木桶效應(yīng),最短的板決定了系統(tǒng)吞吐量。在單核系統(tǒng)下,通常處理能力成為短板。多核系統(tǒng)與單核系統(tǒng)相比提高了整個(gè)系統(tǒng)的處理能力,并且同時(shí)可以支持多個(gè)網(wǎng)卡。多核系統(tǒng)的吞吐量也由接收能力、處理能力、發(fā)送能力綜合決定,其短板為報(bào)文的接收能力,即系統(tǒng)吞吐量由接收能力決定。目前,多核系統(tǒng)中報(bào)文逐個(gè)發(fā)送,每個(gè)發(fā)送請(qǐng)求到達(dá)網(wǎng)卡,都會(huì)增加網(wǎng)卡試圖爭(zhēng)奪總線的意圖。以下是影響報(bào)文接收的因素1、報(bào)文從網(wǎng)卡硬件緩存區(qū)拷貝到內(nèi)存;2、報(bào)文發(fā)送對(duì)內(nèi)存總線帶寬的爭(zhēng)奪;3、對(duì)內(nèi)存緩存區(qū)報(bào)文的及時(shí)分發(fā);4、從內(nèi)核態(tài)內(nèi)存拷貝到用戶態(tài)應(yīng)用程序內(nèi)存。因此,要提高多核系統(tǒng)的系統(tǒng)吞吐量必須提高多核系統(tǒng)的報(bào)文接收能力。如何提高報(bào)文接收能力成為提升系統(tǒng)吞吐量的關(guān)鍵。主要分析1 3點(diǎn),第4點(diǎn)在不同的操作系統(tǒng)和系統(tǒng)實(shí)現(xiàn)上有不同表現(xiàn),有些操作系統(tǒng)根本不區(qū)分內(nèi)核態(tài)內(nèi)存和用戶態(tài)內(nèi)存,即使在區(qū)分內(nèi)核態(tài)和用戶態(tài)的系統(tǒng)上,也有方法避免報(bào)文從內(nèi)核態(tài)拷貝到用戶態(tài),而且對(duì)數(shù)通產(chǎn)品協(xié)議棧通常都是自定義實(shí)現(xiàn),不必依賴于操作系統(tǒng)協(xié)議棧,所以第4點(diǎn)不是問題,不影響分析。1、進(jìn)入網(wǎng)卡硬件緩存區(qū)的報(bào)文只有經(jīng)過DMA (Direct Memory Access)接口存入內(nèi)存后才能被軟件處理,所以這是提高接收能力的第一個(gè)關(guān)鍵點(diǎn),影響該點(diǎn)的因素主要是其他元素對(duì)內(nèi)存總線帶寬的爭(zhēng)奪。報(bào)文發(fā)送是對(duì)內(nèi)存總線帶寬的最有力爭(zhēng)奪者。所以降低報(bào)文發(fā)送對(duì)內(nèi)存總線帶寬的爭(zhēng)奪是提高接收能力的第一個(gè)任務(wù)。2、和第1點(diǎn)的描述類似。3、只有對(duì)內(nèi)存區(qū)已緩存的報(bào)文及時(shí)清理掉,后續(xù)報(bào)文才能進(jìn)入。影響該點(diǎn)的因素涉及到軟件效率,線程調(diào)度,緩存區(qū)大小等等。實(shí)驗(yàn)證明,在緩存區(qū)一定,軟件效率一定情況下,盡可能多的調(diào)度接收線程,讓接收線程占有更多的CPU時(shí)間仍然無法提高接收能力,因?yàn)閳?bào)文是批量進(jìn)入內(nèi)存的,線程空閑時(shí)沒有報(bào)文,報(bào)文來了又可能無法及時(shí)處理(沒有及時(shí)調(diào)度,或者調(diào)度了但是批量太大),造成報(bào)文累積,更大的緩存區(qū)也有溢出的時(shí)候。所以提高接收軟件的效率是必須的,但是當(dāng)效率提升總有盡頭,關(guān)鍵是一次進(jìn)入內(nèi)存的報(bào)文批量相對(duì)于接收能力太大。所以適量減少網(wǎng)卡一次進(jìn)入內(nèi)存的報(bào)文批量是提高接收能力的第二個(gè)任務(wù)。
發(fā)明內(nèi)容
(一)要解決的技術(shù)問題本發(fā)明要解決的技術(shù)問題是如何提高報(bào)文接收能力以提升系統(tǒng)吞吐量。(二)技術(shù)方案為解決上述技術(shù)問題,本發(fā)明提供了一種基于多核架構(gòu)的批量式報(bào)文收發(fā)方法, 包括以下步驟Sl 上層協(xié)議棧調(diào)用網(wǎng)卡驅(qū)動(dòng)發(fā)送函數(shù);S2:所述網(wǎng)卡驅(qū)動(dòng)發(fā)送函數(shù)將待發(fā)送報(bào)文的標(biāo)識(shí)信息緩存至發(fā)送報(bào)文緩存隊(duì)列, 所述發(fā)送報(bào)文緩存隊(duì)列緩存的標(biāo)識(shí)信息數(shù)遞增,所述標(biāo)識(shí)信息包括待發(fā)送報(bào)文的地址和報(bào)文描述信息的指針;S3:所述網(wǎng)卡驅(qū)動(dòng)發(fā)送函數(shù)檢測(cè)所述發(fā)送報(bào)文緩存隊(duì)列中的標(biāo)識(shí)信息數(shù),若緩存的標(biāo)識(shí)信息數(shù)大于等于預(yù)定值,則轉(zhuǎn)步驟S4,否則不發(fā)送;S4 發(fā)送所述發(fā)送報(bào)文緩存隊(duì)列中緩存的所有標(biāo)識(shí)信息對(duì)應(yīng)的待發(fā)送報(bào)文,并將緩存的標(biāo)識(shí)信息數(shù)歸0,轉(zhuǎn)步驟S2。其中,所述步驟S2中當(dāng)接收到第一個(gè)報(bào)文的標(biāo)識(shí)信息時(shí),還包括啟動(dòng)定時(shí)器的步驟;所述步驟S3中若發(fā)送報(bào)文緩存隊(duì)列中緩存的標(biāo)識(shí)信息數(shù)小于所述預(yù)定值,且定時(shí)器超時(shí),則轉(zhuǎn)步驟S4,否則循環(huán)等待;所述步驟S4發(fā)送完報(bào)文緩存隊(duì)列中緩存的標(biāo)識(shí)信息對(duì)應(yīng)的報(bào)文后,復(fù)位定時(shí)器。其中,執(zhí)行步驟S2時(shí),若不存在發(fā)送報(bào)文緩存隊(duì)列,則先建立發(fā)送報(bào)文緩存隊(duì)列, 并將緩存的標(biāo)識(shí)信息數(shù)設(shè)置為0。其中,所述發(fā)送報(bào)文緩存隊(duì)列大小為1 η個(gè)待發(fā)送報(bào)文的標(biāo)識(shí)信息的總大小,所述預(yù)定值小于等于發(fā)送報(bào)文緩存隊(duì)列大小。其中,所述η為1到256中任意為2的冪的值。(三)有益效果本發(fā)明通過對(duì)多核系統(tǒng)中的發(fā)送報(bào)文采取批量發(fā)送的方式,一次性批量映射到網(wǎng)卡,與每次發(fā)送一個(gè)報(bào)文相比,批量發(fā)送報(bào)文減少了網(wǎng)卡發(fā)送爭(zhēng)奪總線的次數(shù),從而增加了網(wǎng)卡接收對(duì)總線的使用幾率,提高了系統(tǒng)的報(bào)文接收能力和系統(tǒng)吞吐量。
圖1是本發(fā)明實(shí)施例的一種基于多核架構(gòu)的批量式報(bào)文收發(fā)方法流程圖;圖2是本發(fā)明實(shí)施例的另一種基于多核架構(gòu)的批量式報(bào)文收發(fā)方法流程圖。
具體實(shí)施例方式下面結(jié)合附圖和實(shí)施例,對(duì)本發(fā)明的具體實(shí)施方式
作進(jìn)一步詳細(xì)描述。以下實(shí)施例用于說明本發(fā)明,但不用來限制本發(fā)明的范圍。實(shí)施例1本發(fā)明方法的實(shí)現(xiàn)位于以太網(wǎng)卡驅(qū)動(dòng)程序,需要修改網(wǎng)卡驅(qū)動(dòng)程序。首先本文方法在網(wǎng)卡驅(qū)動(dòng)初始化流程末,建立一個(gè)發(fā)送報(bào)文緩存隊(duì)列,用于緩存協(xié)議棧請(qǐng)求發(fā)送報(bào)文的標(biāo)識(shí)信息(具體指待發(fā)送報(bào)文的地址和報(bào)文描述信息的指針)。修改網(wǎng)卡驅(qū)動(dòng)程序發(fā)送函數(shù),將直接發(fā)送改為有條件發(fā)送,條件1 發(fā)送報(bào)文緩存隊(duì)列中已經(jīng)緩存了預(yù)定量的待發(fā)送報(bào)文的標(biāo)識(shí)信息,這個(gè)預(yù)定量根據(jù)具體系統(tǒng)的試驗(yàn)確定,通常可以選擇16,64,128等。如圖1所示,本發(fā)明的基于多核架構(gòu)的批量式報(bào)文收發(fā)方法包括步驟S201,上層協(xié)議棧調(diào)用網(wǎng)卡驅(qū)動(dòng)發(fā)送函數(shù)。步驟S202,網(wǎng)卡驅(qū)動(dòng)發(fā)送函數(shù)將待發(fā)送報(bào)文的標(biāo)識(shí)信息緩存至發(fā)送報(bào)文緩存隊(duì)列,發(fā)送報(bào)文緩存隊(duì)列緩存的標(biāo)識(shí)信息數(shù)遞增。在此之前,若未創(chuàng)建發(fā)送報(bào)文緩存隊(duì)列,則創(chuàng)建發(fā)送報(bào)文緩存隊(duì)列,其大小為1 η個(gè)待發(fā)送報(bào)文的標(biāo)識(shí)信息的總大小,并將緩存的標(biāo)識(shí)信息數(shù)設(shè)置為0,η優(yōu)選取值為1到256中任意為2的冪的值。步驟S103,網(wǎng)卡驅(qū)動(dòng)發(fā)送函數(shù)檢測(cè)所述發(fā)送報(bào)文緩存隊(duì)列中的標(biāo)識(shí)信息數(shù),若緩存的標(biāo)識(shí)信息數(shù)大于等于預(yù)定值,則轉(zhuǎn)步驟S4,否則不發(fā)送;步驟S104,發(fā)送所述發(fā)送報(bào)文緩存隊(duì)列中緩存的所有標(biāo)識(shí)信息對(duì)應(yīng)的待發(fā)送報(bào)文,并將緩存的標(biāo)識(shí)信息數(shù)歸0,轉(zhuǎn)步驟S2。本發(fā)明增加發(fā)送批量的大小,將上層軟件請(qǐng)求發(fā)送的報(bào)文的標(biāo)識(shí)信息入隊(duì),積攢到一定數(shù)目的待發(fā)報(bào)文,一次性批量映射到網(wǎng)卡,因?yàn)閹缀跛谐S镁W(wǎng)卡都支持批量發(fā)送。 與每次發(fā)送一個(gè)報(bào)文相比,批量發(fā)送減少了網(wǎng)卡發(fā)送爭(zhēng)奪總線的次數(shù),當(dāng)然這是建立在網(wǎng)卡發(fā)送事實(shí)上的高效率上。這樣自然增加了網(wǎng)卡接收對(duì)總線的使用幾率。網(wǎng)卡接收是從線路上將報(bào)文比特流緩存到卡上緩存中,然后等待總線空閑時(shí)機(jī)將緩存的報(bào)文批量DMA到內(nèi)存。實(shí)施例2進(jìn)一步地,發(fā)送時(shí)滿足以下條件2 條件2 定時(shí)器超時(shí),該定時(shí)器的作用是,避免長(zhǎng)時(shí)間沒有發(fā)送請(qǐng)求,條件1長(zhǎng)時(shí)間無法滿足,導(dǎo)致已經(jīng)緩存在隊(duì)列中的標(biāo)識(shí)信息對(duì)應(yīng)的報(bào)文無法發(fā)送。如圖2所示,本發(fā)明的基于多核架構(gòu)的批量式報(bào)文收發(fā)方法包括步驟S201,上層協(xié)議棧調(diào)用網(wǎng)卡驅(qū)動(dòng)發(fā)送函數(shù)。步驟S202,網(wǎng)卡驅(qū)動(dòng)發(fā)送函數(shù)將待發(fā)送報(bào)文的標(biāo)識(shí)信息緩存至發(fā)送報(bào)文緩存隊(duì)列,發(fā)送報(bào)文緩存隊(duì)列緩存的標(biāo)識(shí)信息數(shù)遞增,并啟動(dòng)定時(shí)器。在此之前,若未創(chuàng)建發(fā)送報(bào)文緩存隊(duì)列,則創(chuàng)建發(fā)送報(bào)文緩存隊(duì)列,其大小為1 η個(gè)待發(fā)送報(bào)文的標(biāo)識(shí)信息的總大小,并將緩存的標(biāo)識(shí)信息數(shù)設(shè)置為0,η優(yōu)選取值為1到256中任意為2的冪的值。步驟S203,所述網(wǎng)卡驅(qū)動(dòng)發(fā)送函數(shù)檢測(cè)發(fā)送報(bào)文緩存隊(duì)列中緩存的標(biāo)識(shí)信息數(shù), 若緩存的標(biāo)識(shí)信息數(shù)大于預(yù)定值,則轉(zhuǎn)步驟S204,否則退出網(wǎng)卡驅(qū)動(dòng)發(fā)送函數(shù),轉(zhuǎn)步驟 S205。這個(gè)預(yù)定值根據(jù)具體系統(tǒng)的試驗(yàn)確定,通??梢赃x擇16,64,1觀等,但小于等于發(fā)送報(bào)文緩存隊(duì)列的大小。步驟S204,啟動(dòng)硬件(網(wǎng)卡)發(fā)送隊(duì)列中緩存的所有標(biāo)識(shí)信息對(duì)應(yīng)的待發(fā)送報(bào)文, 并將緩存的標(biāo)識(shí)信息數(shù)歸0,并復(fù)位定時(shí)器;步驟S205,判斷定時(shí)器是否超時(shí),若超時(shí),則轉(zhuǎn)步驟S204,否則循環(huán)等待。定時(shí)器設(shè)置時(shí)間可根據(jù)當(dāng)前收發(fā)報(bào)文的任務(wù)量及網(wǎng)絡(luò)狀況確定。在實(shí)施例1的基礎(chǔ)上,步驟2中增加了定時(shí)器,避免長(zhǎng)時(shí)間沒有發(fā)送請(qǐng)求,條件1 長(zhǎng)時(shí)間無法滿足,導(dǎo)致已經(jīng)緩存在隊(duì)列中的標(biāo)識(shí)信息對(duì)應(yīng)的報(bào)文無法發(fā)送的情況。
以上實(shí)施方式僅用于說明本發(fā)明,而并非對(duì)本發(fā)明的限制,有關(guān)技術(shù)領(lǐng)域的普通技術(shù)人員,在不脫離本發(fā)明的精神和范圍的情況下,還可以做出各種變化和變型,因此所有等同的技術(shù)方案也屬于本發(fā)明的范疇,本發(fā)明的專利保護(hù)范圍應(yīng)由權(quán)利要求限定。
權(quán)利要求
1.一種基于多核架構(gòu)的批量式報(bào)文收發(fā)方法,其特征在于,包括以下步驟51上層協(xié)議棧調(diào)用網(wǎng)卡驅(qū)動(dòng)發(fā)送函數(shù);52所述網(wǎng)卡驅(qū)動(dòng)發(fā)送函數(shù)將待發(fā)送報(bào)文的標(biāo)識(shí)信息緩存至發(fā)送報(bào)文緩存隊(duì)列,所述發(fā)送報(bào)文緩存隊(duì)列緩存的標(biāo)識(shí)信息數(shù)遞增,所述標(biāo)識(shí)信息包括待發(fā)送報(bào)文的地址和報(bào)文描述信息的指針;53所述網(wǎng)卡驅(qū)動(dòng)發(fā)送函數(shù)檢測(cè)所述發(fā)送報(bào)文緩存隊(duì)列中的標(biāo)識(shí)信息數(shù),若緩存的標(biāo)識(shí)信息數(shù)大于等于預(yù)定值,則轉(zhuǎn)步驟S4,否則不發(fā)送;54發(fā)送所述發(fā)送報(bào)文緩存隊(duì)列中緩存的所有標(biāo)識(shí)信息對(duì)應(yīng)的待發(fā)送報(bào)文,并將緩存的標(biāo)識(shí)信息數(shù)歸0,轉(zhuǎn)步驟S2。
2.如權(quán)利要求1所述的基于多核架構(gòu)的批量式報(bào)文收發(fā)方法,其特征在于,所述步驟 S2中當(dāng)接收到第一個(gè)報(bào)文的標(biāo)識(shí)信息時(shí),還包括啟動(dòng)定時(shí)器的步驟;所述步驟S3中若發(fā)送報(bào)文緩存隊(duì)列中緩存的標(biāo)識(shí)信息數(shù)小于所述預(yù)定值,且定時(shí)器超時(shí),則轉(zhuǎn)步驟S4,否則循環(huán)等待;所述步驟S4發(fā)送完報(bào)文緩存隊(duì)列中緩存的標(biāo)識(shí)信息對(duì)應(yīng)的報(bào)文后,復(fù)位定時(shí)器。
3.如權(quán)利要求1或2所述的基于多核架構(gòu)的批量式報(bào)文收發(fā)方法,其特征在于,執(zhí)行步驟S2時(shí),若不存在發(fā)送報(bào)文緩存隊(duì)列,則先建立發(fā)送報(bào)文緩存隊(duì)列,并將緩存的標(biāo)識(shí)信息數(shù)設(shè)置為0。
4.如權(quán)利要求1 3中任一項(xiàng)所述的基于多核架構(gòu)的批量式報(bào)文收發(fā)方法,其特征在于,所述發(fā)送報(bào)文緩存隊(duì)列大小為1 η個(gè)待發(fā)送報(bào)文的標(biāo)識(shí)信息的總大小,所述預(yù)定值小于等于發(fā)送報(bào)文緩存隊(duì)列大小。
5.如權(quán)利要求4所述的基于多核架構(gòu)的批量式報(bào)文收發(fā)方法,其特征在于,所述η為1 到256中任意為2的冪的值。
全文摘要
本發(fā)明公開了一種基于多核架構(gòu)的批量式報(bào)文收發(fā)方法,涉及數(shù)據(jù)通信技術(shù)領(lǐng)域,包括S1上層協(xié)議棧調(diào)用網(wǎng)卡驅(qū)動(dòng)發(fā)送函數(shù);S2該函數(shù)將待發(fā)送報(bào)文的標(biāo)識(shí)信息緩存至發(fā)送報(bào)文緩存隊(duì)列,隊(duì)列中的標(biāo)識(shí)信息數(shù)遞增,并啟動(dòng)定時(shí)器;S3網(wǎng)卡驅(qū)動(dòng)發(fā)送函數(shù)檢測(cè)所述隊(duì)列中的標(biāo)識(shí)信息數(shù),若標(biāo)識(shí)信息數(shù)≥預(yù)定值,則轉(zhuǎn)步驟S4,否則退出網(wǎng)卡驅(qū)動(dòng)發(fā)送函數(shù),轉(zhuǎn)步驟S5;S4發(fā)送隊(duì)列中緩存的標(biāo)識(shí)信息對(duì)應(yīng)的報(bào)文,并將緩存的標(biāo)識(shí)信息數(shù)歸0,停止定時(shí)器;S5判斷定時(shí)器是否超時(shí),若是,則轉(zhuǎn)步驟S4,否則循環(huán)等待。本發(fā)明通過批量發(fā)送報(bào)文,減少了網(wǎng)卡發(fā)送爭(zhēng)奪總線的次數(shù),從而增加了網(wǎng)卡接收對(duì)總線的使用幾率,提高了系統(tǒng)的報(bào)文接收能力和系統(tǒng)吞吐量。
文檔編號(hào)H04L12/56GK102185770SQ20111011519
公開日2011年9月14日 申請(qǐng)日期2011年5月5日 優(yōu)先權(quán)日2011年5月5日
發(fā)明者殷建儒, 王博, 王琳 申請(qǐng)人:漢柏科技有限公司