两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

數(shù)據(jù)接收方法和計(jì)算機(jī)的制作方法

文檔序號(hào):7814682閱讀:312來(lái)源:國(guó)知局
專利名稱:數(shù)據(jù)接收方法和計(jì)算機(jī)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及計(jì)算機(jī)領(lǐng)域,并且特別地,涉及一種數(shù)據(jù)接收方法和計(jì)算機(jī)。
背景技術(shù)
目前,千兆網(wǎng)卡的零拷貝技術(shù)主要基于傳統(tǒng)intel千兆網(wǎng)卡來(lái)實(shí)現(xiàn)。通常,在網(wǎng)絡(luò)數(shù)據(jù)包的收包過(guò)程中,應(yīng)用程序需要以拷貝的方式與內(nèi)核中的網(wǎng)卡報(bào)文緩沖區(qū)進(jìn)行交互,這種拷貝處理必然會(huì)降低性能和速率,無(wú)法在大流量場(chǎng)景中使用。并且,目前的千兆零拷貝都是基于單隊(duì)列的技術(shù)來(lái)實(shí)現(xiàn)的,但是,在萬(wàn)兆接入的情況下,單位時(shí)間內(nèi)的數(shù)據(jù)包速率將提高大約10倍,而千兆網(wǎng)卡下單一的傳輸隊(duì)列以及緩沖區(qū)交互將存在很高的性能損失,所以,傳統(tǒng)的技術(shù)將無(wú)法應(yīng)對(duì)如此高的數(shù)據(jù)速率,進(jìn)而成為萬(wàn)兆零拷貝技術(shù)發(fā)展的瓶頸。針對(duì)相關(guān)技術(shù)中無(wú)法在大流量要求下高效地實(shí)現(xiàn)數(shù)據(jù)接收的問(wèn)題,目前尚未提出有效的解決方案。

發(fā)明內(nèi)容
針對(duì)相關(guān)技術(shù)中無(wú)法在大流量要求下高效地實(shí)現(xiàn)數(shù)據(jù)接收的問(wèn)題,本發(fā)明提出一種數(shù)據(jù)接收方法和計(jì)算機(jī),能夠有效提高數(shù)據(jù)包接收的速率,改善收包效率,能夠應(yīng)對(duì)萬(wàn)兆網(wǎng)卡等高速收包的場(chǎng)景。。本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的根據(jù)本發(fā)明的一個(gè)方面,提供了一種數(shù)據(jù)接收方法,用于在多CPU環(huán)境下實(shí)現(xiàn)數(shù)據(jù)接收。該方法包括對(duì)于接收的數(shù)據(jù),網(wǎng)卡確定數(shù)據(jù)對(duì)應(yīng)的CPU,并將數(shù)據(jù)發(fā)送至確定的 CPU對(duì)應(yīng)的存儲(chǔ)區(qū);每個(gè)CPU從各自對(duì)應(yīng)的存儲(chǔ)區(qū)中獲取數(shù)據(jù)。其中,網(wǎng)卡確定數(shù)據(jù)對(duì)應(yīng)的CPU包括網(wǎng)卡對(duì)數(shù)據(jù)進(jìn)行哈希計(jì)算,并根據(jù)計(jì)算結(jié)果確定數(shù)據(jù)所對(duì)應(yīng)的CPU。該方法可進(jìn)一步包括將每個(gè)CPU對(duì)應(yīng)的存儲(chǔ)區(qū)中的數(shù)據(jù)映射到該數(shù)據(jù)所對(duì)應(yīng)的應(yīng)用中。此外,每個(gè)CPU將其對(duì)應(yīng)的存儲(chǔ)區(qū)映射為隊(duì)列,該CPU通過(guò)相應(yīng)的隊(duì)列獲取存儲(chǔ)區(qū)中的數(shù)據(jù)。并且,每個(gè)CPU對(duì)應(yīng)的隊(duì)列采用循環(huán)結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu)。此外,對(duì)于每個(gè)CPU,該CPU對(duì)應(yīng)的存儲(chǔ)區(qū)為內(nèi)存中為該CPU分配的存儲(chǔ)區(qū),并且多個(gè)CPU的存儲(chǔ)區(qū)彼此間在邏輯上獨(dú)立。根據(jù)本發(fā)明的另一方面,提供了一種計(jì)算機(jī)。根據(jù)本發(fā)明實(shí)施例的計(jì)算機(jī)包括網(wǎng)卡,對(duì)于接收的數(shù)據(jù),網(wǎng)卡用于確定數(shù)據(jù)對(duì)應(yīng)的CPU,并將數(shù)據(jù)發(fā)送至確定的CPU對(duì)應(yīng)的存儲(chǔ)區(qū);多個(gè)CPU,其中,每個(gè)CPU用于從各自對(duì)應(yīng)的存儲(chǔ)區(qū)中獲取數(shù)據(jù)。
其中,網(wǎng)卡用于對(duì)數(shù)據(jù)進(jìn)行哈希計(jì)算,并根據(jù)計(jì)算結(jié)果確定數(shù)據(jù)所對(duì)應(yīng)的CPU。此外,該計(jì)算機(jī)可進(jìn)一步包括映射模塊,用于將每個(gè)CPU對(duì)應(yīng)的存儲(chǔ)區(qū)中的數(shù)據(jù)映射到該數(shù)據(jù)所對(duì)應(yīng)的應(yīng)用中。此外,對(duì)于每個(gè)CPU,該CPU對(duì)應(yīng)的存儲(chǔ)區(qū)為內(nèi)存中為該CPU分配的存儲(chǔ)區(qū),并且多個(gè)CPU的存儲(chǔ)區(qū)彼此間在邏輯上獨(dú)立。本發(fā)明通過(guò)使每個(gè)CPU核處理各自存儲(chǔ)區(qū)中的數(shù)據(jù),從而充分利用了多核CPU的處理能力,實(shí)現(xiàn)了數(shù)據(jù)包的并行接收,能夠有效提高數(shù)據(jù)包接收的速率,改善收包效率,能夠應(yīng)對(duì)萬(wàn)兆網(wǎng)卡等高速收包的場(chǎng)景。


圖1是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)接收方法的流程圖;圖2是根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)接收方法的原理示意圖。
具體實(shí)施例方式根據(jù)本發(fā)明的實(shí)施例,提供了一種數(shù)據(jù)接收方法,用于在多CPU環(huán)境下實(shí)現(xiàn)數(shù)據(jù)接收。如圖1所示,根據(jù)本發(fā)明實(shí)施例的數(shù)據(jù)接收方法包括步驟S101,對(duì)于接收的數(shù)據(jù),網(wǎng)卡確定數(shù)據(jù)對(duì)應(yīng)的CPU,并將數(shù)據(jù)發(fā)送至確定的 CPU對(duì)應(yīng)的存儲(chǔ)區(qū);步驟S103,每個(gè)CPU從各自對(duì)應(yīng)的存儲(chǔ)區(qū)中獲取數(shù)據(jù)。其中,在網(wǎng)卡確定數(shù)據(jù)對(duì)應(yīng)的CPU時(shí),網(wǎng)卡可以對(duì)數(shù)據(jù)進(jìn)行哈希計(jì)算,并根據(jù)計(jì)算結(jié)果確定數(shù)據(jù)所對(duì)應(yīng)的CPU。此外,該方法可以進(jìn)一步包括將每個(gè)CPU對(duì)應(yīng)的存儲(chǔ)區(qū)中的數(shù)據(jù)映射到該數(shù)據(jù)所對(duì)應(yīng)的應(yīng)用中,從而當(dāng)存儲(chǔ)區(qū)中的數(shù)據(jù)發(fā)生變化(例如,被修改)的情況下,能夠直接在應(yīng)用層得到體現(xiàn),使操作員能夠清楚、直觀地看到這些數(shù)據(jù)變化。另外,每個(gè)CPU將其對(duì)應(yīng)的存儲(chǔ)區(qū)映射為隊(duì)列,該CPU通過(guò)相應(yīng)的隊(duì)列獲取存儲(chǔ)區(qū)中的數(shù)據(jù)。可選地,每個(gè)CPU對(duì)應(yīng)的隊(duì)列采用循環(huán)結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu),而算法為無(wú)鎖 (lock-free)算法,從而避免了加鎖對(duì)性能的影響??蛇x地,對(duì)于每個(gè)CPU,該CPU對(duì)應(yīng)的存儲(chǔ)區(qū)為內(nèi)存中為該CPU分配的存儲(chǔ)區(qū),并且多個(gè)CPU的存儲(chǔ)區(qū)彼此間在邏輯上獨(dú)立。例如,對(duì)于萬(wàn)兆網(wǎng)卡的應(yīng)用場(chǎng)景,本發(fā)明能夠針對(duì)萬(wàn)兆網(wǎng)卡多接收隊(duì)列的特點(diǎn),為每個(gè)CPU核分配一個(gè)網(wǎng)卡硬件描述符隊(duì)列,并且分配相應(yīng)的軟件描述符隊(duì)列。對(duì)于每個(gè)隊(duì)列,都為其分配了獨(dú)立的數(shù)據(jù)緩沖區(qū),這樣,每個(gè)CPU核在處理時(shí)只需要訪問(wèn)自己對(duì)應(yīng)的隊(duì)列。這些內(nèi)存分配都是按照CPU核的位置來(lái)分配的,通過(guò)上述配置,使本發(fā)明的方案能夠充分利用CPU的處理性能,例如,可以充分利用X86多核的numa架構(gòu),保證每個(gè)CPU核都只需要訪問(wèn)本地的內(nèi)存,從而提升內(nèi)存訪問(wèn)效率。并且,通過(guò)內(nèi)存映射的方式將數(shù)據(jù)緩沖區(qū)隊(duì)列映射到應(yīng)用程序中去,從而驅(qū)動(dòng)對(duì)緩沖區(qū)的修改可以直接反映到應(yīng)用程序中來(lái),從而避免了不必要的內(nèi)存拷貝,進(jìn)一步提高了數(shù)據(jù)接收的效率。
根據(jù)本發(fā)明的實(shí)施例,還提供了一種計(jì)算機(jī)。該計(jì)算機(jī)包括網(wǎng)卡,對(duì)于接收的數(shù)據(jù),網(wǎng)卡用于確定數(shù)據(jù)對(duì)應(yīng)的CPU,并將數(shù)據(jù)發(fā)送至確定的CPU對(duì)應(yīng)的存儲(chǔ)區(qū);多個(gè)CPU,其中,每個(gè)CPU用于從各自對(duì)應(yīng)的存儲(chǔ)區(qū)中獲取數(shù)據(jù)。其中,網(wǎng)卡用于對(duì)數(shù)據(jù)進(jìn)行哈希計(jì)算,并根據(jù)計(jì)算結(jié)果確定數(shù)據(jù)所對(duì)應(yīng)的CPU。該計(jì)算機(jī)可以進(jìn)一步包括映射模塊,用于將每個(gè)CPU對(duì)應(yīng)的存儲(chǔ)區(qū)中的數(shù)據(jù)映射到該數(shù)據(jù)所對(duì)應(yīng)的應(yīng)用中??蛇x地,對(duì)于每個(gè)CPU,該CPU對(duì)應(yīng)的存儲(chǔ)區(qū)為內(nèi)存中為該CPU分配的存儲(chǔ)區(qū),并且多個(gè)CPU的存儲(chǔ)區(qū)彼此間在邏輯上獨(dú)立。如圖2所示,計(jì)算機(jī)中的多個(gè)CPU包括CPUO、CPUl、CPU2和CPU3 (CPU的數(shù)量可以更多或更少,本文不再一一列舉不同數(shù)量CPU的場(chǎng)景),這四個(gè)CPU具有各自的內(nèi)存(例如, 圖中所示的共享內(nèi)存),用于存儲(chǔ)需要接收的數(shù)據(jù),這些數(shù)據(jù)來(lái)自于網(wǎng)卡(例如,Intel萬(wàn)兆網(wǎng)卡)。通過(guò)共享內(nèi)存,CPU能夠?qū)π枰邮盏臄?shù)據(jù)進(jìn)行并行訪問(wèn)。綜上所述,借助于本發(fā)明的上述技術(shù)方案,通過(guò)使每個(gè)CPU核訪問(wèn)各自的存儲(chǔ)區(qū)并處理其中的數(shù)據(jù),從而充分利用了多核CPU的處理能力,實(shí)現(xiàn)了數(shù)據(jù)包的并行接收,能夠有效提高數(shù)據(jù)包接收的速率,改善收包效率,能夠應(yīng)對(duì)萬(wàn)兆網(wǎng)卡等高速收包的場(chǎng)景。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種數(shù)據(jù)接收方法,用于在多CPU環(huán)境下實(shí)現(xiàn)數(shù)據(jù)接收,其特征在于,所述方法包括對(duì)于接收的數(shù)據(jù),網(wǎng)卡確定所述數(shù)據(jù)對(duì)應(yīng)的CPU,并將所述數(shù)據(jù)發(fā)送至確定的所述CPU 對(duì)應(yīng)的存儲(chǔ)區(qū);每個(gè)CPU從各自對(duì)應(yīng)的存儲(chǔ)區(qū)中獲取數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)接收方法,其特征在于,網(wǎng)卡確定所述數(shù)據(jù)對(duì)應(yīng)的CPU包括所述網(wǎng)卡對(duì)所述數(shù)據(jù)進(jìn)行哈希計(jì)算,并根據(jù)計(jì)算結(jié)果確定所述數(shù)據(jù)所對(duì)應(yīng)的CPU。
3.根據(jù)權(quán)利要求1所述的數(shù)據(jù)接收方法,其特征在于,進(jìn)一步包括 將每個(gè)CPU對(duì)應(yīng)的存儲(chǔ)區(qū)中的數(shù)據(jù)映射到該數(shù)據(jù)所對(duì)應(yīng)的應(yīng)用中。
4.根據(jù)權(quán)利要求1所述的數(shù)據(jù)接收方法,其特征在于,每個(gè)CPU將其對(duì)應(yīng)的存儲(chǔ)區(qū)映射為隊(duì)列,該CPU通過(guò)相應(yīng)的隊(duì)列獲取存儲(chǔ)區(qū)中的數(shù)據(jù)。
5.根據(jù)權(quán)利要求4所述的數(shù)據(jù)接收方法,其特征在于,每個(gè)CPU對(duì)應(yīng)的隊(duì)列采用循環(huán)結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu)。
6.根據(jù)權(quán)利要求1至5中任一項(xiàng)所述的數(shù)據(jù)接收方法,其特征在于,對(duì)于每個(gè)CPU,該 CPU對(duì)應(yīng)的存儲(chǔ)區(qū)為內(nèi)存中為該CPU分配的存儲(chǔ)區(qū),并且所述多個(gè)CPU的存儲(chǔ)區(qū)彼此間在邏輯上獨(dú)立。
7.一種計(jì)算機(jī),其特征在于,包括網(wǎng)卡,對(duì)于接收的數(shù)據(jù),所述網(wǎng)卡用于確定所述數(shù)據(jù)對(duì)應(yīng)的CPU,并將所述數(shù)據(jù)發(fā)送至確定的所述CPU對(duì)應(yīng)的存儲(chǔ)區(qū);多個(gè)CPU,其中,每個(gè)CPU用于從各自對(duì)應(yīng)的存儲(chǔ)區(qū)中獲取數(shù)據(jù)。
8.根據(jù)權(quán)利要求7所述的計(jì)算機(jī),其特征在于,所述網(wǎng)卡用于對(duì)所述數(shù)據(jù)進(jìn)行哈希計(jì)算,并根據(jù)計(jì)算結(jié)果確定所述數(shù)據(jù)所對(duì)應(yīng)的CPU。
9.根據(jù)權(quán)利要求7所述的計(jì)算機(jī),其特征在于,進(jìn)一步包括映射模塊,用于將每個(gè)CPU對(duì)應(yīng)的存儲(chǔ)區(qū)中的數(shù)據(jù)映射到該數(shù)據(jù)所對(duì)應(yīng)的應(yīng)用中。
10.根據(jù)權(quán)利要求7至9中任一項(xiàng)所述的計(jì)算機(jī),其特征在于,對(duì)于每個(gè)CPU,該CPU對(duì)應(yīng)的存儲(chǔ)區(qū)為內(nèi)存中為該CPU分配的存儲(chǔ)區(qū),并且所述多個(gè)CPU的存儲(chǔ)區(qū)彼此間在邏輯上獨(dú)立。
全文摘要
本發(fā)明公開(kāi)了一種數(shù)據(jù)接收方法和計(jì)算機(jī),該方法包括對(duì)于接收的數(shù)據(jù),網(wǎng)卡確定數(shù)據(jù)對(duì)應(yīng)的CPU,并將數(shù)據(jù)發(fā)送至確定的CPU對(duì)應(yīng)的存儲(chǔ)區(qū);每個(gè)CPU從各自對(duì)應(yīng)的存儲(chǔ)區(qū)中獲取數(shù)據(jù)。本發(fā)明通過(guò)使每個(gè)CPU核處理各自存儲(chǔ)區(qū)中的數(shù)據(jù),從而充分利用了多核cpu的處理能力,實(shí)現(xiàn)了數(shù)據(jù)包的并行接收,能夠有效提高數(shù)據(jù)包接收的速率,改善收包效率,能夠應(yīng)對(duì)萬(wàn)兆網(wǎng)卡等高速收包的場(chǎng)景。
文檔編號(hào)H04L12/56GK102571580SQ20111045963
公開(kāi)日2012年7月11日 申請(qǐng)日期2011年12月31日 優(yōu)先權(quán)日2011年12月31日
發(fā)明者萬(wàn)偉, 劉興彬, 劉鐵, 孫一鳴, 曹振南, 朱春屹, 李云華, 李博文, 楊錦濤, 王潑, 王清, 范玉峰, 董建珊, 邵宗有, 陳科 申請(qǐng)人:曙光信息產(chǎn)業(yè)股份有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
武义县| 吉安市| 万安县| 和田市| 定州市| 涞源县| 信宜市| 辉县市| 南雄市| 盐源县| 新津县| 澄城县| 策勒县| 康保县| 鄯善县| 恭城| 隆德县| 汽车| 萨迦县| 石棉县| 吴川市| 姜堰市| 禹州市| 通许县| 闸北区| 黔西| 乌什县| 马关县| 于田县| 平湖市| 武强县| 华阴市| 南昌县| 肇州县| 皮山县| 阿荣旗| 浪卡子县| 丁青县| 新建县| 永城市| 中西区|