CN102571580A - 数据接收方法和计算机 - Google Patents
数据接收方法和计算机 Download PDFInfo
- Publication number
- CN102571580A CN102571580A CN2011104596335A CN201110459633A CN102571580A CN 102571580 A CN102571580 A CN 102571580A CN 2011104596335 A CN2011104596335 A CN 2011104596335A CN 201110459633 A CN201110459633 A CN 201110459633A CN 102571580 A CN102571580 A CN 102571580A
- Authority
- CN
- China
- Prior art keywords
- data
- cpu
- memory block
- network interface
- interface card
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种数据接收方法和计算机,该方法包括:对于接收的数据,网卡确定数据对应的CPU,并将数据发送至确定的CPU对应的存储区;每个CPU从各自对应的存储区中获取数据。本发明通过使每个CPU核处理各自存储区中的数据,从而充分利用了多核cpu的处理能力,实现了数据包的并行接收,能够有效提高数据包接收的速率,改善收包效率,能够应对万兆网卡等高速收包的场景。
Description
技术领域
本发明涉及计算机领域,并且特别地,涉及一种数据接收方法和计算机。
背景技术
目前,千兆网卡的零拷贝技术主要基于传统intel千兆网卡来实现。
通常,在网络数据包的收包过程中,应用程序需要以拷贝的方式与内核中的网卡报文缓冲区进行交互,这种拷贝处理必然会降低性能和速率,无法在大流量场景中使用。并且,目前的千兆零拷贝都是基于单队列的技术来实现的,但是,在万兆接入的情况下,单位时间内的数据包速率将提高大约10倍,而千兆网卡下单一的传输队列以及缓冲区交互将存在很高的性能损失,所以,传统的技术将无法应对如此高的数据速率,进而成为万兆零拷贝技术发展的瓶颈。
针对相关技术中无法在大流量要求下高效地实现数据接收的问题,目前尚未提出有效的解决方案。
发明内容
针对相关技术中无法在大流量要求下高效地实现数据接收的问题,本发明提出一种数据接收方法和计算机,能够有效提高数据包接收的速率,改善收包效率,能够应对万兆网卡等高速收包的场景。。
本发明的技术方案是这样实现的:
根据本发明的一个方面,提供了一种数据接收方法,用于在多CPU环境下实现数据接收。
该方法包括:对于接收的数据,网卡确定数据对应的CPU,并将数据发送至确定的CPU对应的存储区;每个CPU从各自对应的存储区中获取数据。
其中,网卡确定数据对应的CPU包括:网卡对数据进行哈希计算,并根据计算结果确定数据所对应的CPU。
该方法可进一步包括:将每个CPU对应的存储区中的数据映射到该数据所对应的应用中。
此外,每个CPU将其对应的存储区映射为队列,该CPU通过相应的队列获取存储区中的数据。
并且,每个CPU对应的队列采用循环结构的数据结构。
此外,对于每个CPU,该CPU对应的存储区为内存中为该CPU分配的存储区,并且多个CPU的存储区彼此间在逻辑上独立。
根据本发明的另一方面,提供了一种计算机。
根据本发明实施例的计算机包括:网卡,对于接收的数据,网卡用于确定数据对应的CPU,并将数据发送至确定的CPU对应的存储区;多个CPU,其中,每个CPU用于从各自对应的存储区中获取数据。
其中,网卡用于对数据进行哈希计算,并根据计算结果确定数据所对应的CPU。
此外,该计算机可进一步包括:映射模块,用于将每个CPU对应的存储区中的数据映射到该数据所对应的应用中。
此外,对于每个CPU,该CPU对应的存储区为内存中为该CPU分配的存储区,并且多个CPU的存储区彼此间在逻辑上独立。
本发明通过使每个CPU核处理各自存储区中的数据,从而充分利用了多核cpu的处理能力,实现了数据包的并行接收,能够有效提高数据包接收的速率,改善收包效率,能够应对万兆网卡等高速收包的场景。
附图说明
图1是根据本发明实施例的数据接收方法的流程图;
图2是根据本发明实施例的数据接收方法的原理示意图。
具体实施方式
根据本发明的实施例,提供了一种数据接收方法,用于在多CPU环境下实现数据接收。
如图1所示,根据本发明实施例的数据接收方法包括:
步骤S101,对于接收的数据,网卡确定数据对应的CPU,并将数据发送至确定的CPU对应的存储区;
步骤S103,每个CPU从各自对应的存储区中获取数据。
其中,在网卡确定数据对应的CPU时,网卡可以对数据进行哈希计算,并根据计算结果确定数据所对应的CPU。
此外,该方法可以进一步包括:将每个CPU对应的存储区中的数据映射到该数据所对应的应用中,从而当存储区中的数据发生变化(例如,被修改)的情况下,能够直接在应用层得到体现,使操作员能够清楚、直观地看到这些数据变化。
另外,每个CPU将其对应的存储区映射为队列,该CPU通过相应的队列获取存储区中的数据。可选地,每个CPU对应的队列采用循环结构的数据结构,而算法为无锁(lock-free)算法,从而避免了加锁对性能的影响。
可选地,对于每个CPU,该CPU对应的存储区为内存中为该CPU分配的存储区,并且多个CPU的存储区彼此间在逻辑上独立。
例如,对于万兆网卡的应用场景,本发明能够针对万兆网卡多接收队列的特点,为每个CPU核分配一个网卡硬件描述符队列,并且分配相应的软件描述符队列。
对于每个队列,都为其分配了独立的数据缓冲区,这样,每个CPU核在处理时只需要访问自己对应的队列。这些内存分配都是按照CPU核的位置来分配的,通过上述配置,使本发明的方案能够充分利用CPU的处理性能,例如,可以充分利用x86多核的numa架构,保证每个CPU核都只需要访问本地的内存,从而提升内存访问效率。
并且,通过内存映射的方式将数据缓冲区队列映射到应用程序中去,从而驱动对缓冲区的修改可以直接反映到应用程序中来,从而避免了不必要的内存拷贝,进一步提高了数据接收的效率。
根据本发明的实施例,还提供了一种计算机。
该计算机包括:网卡,对于接收的数据,网卡用于确定数据对应的CPU,并将数据发送至确定的CPU对应的存储区;多个CPU,其中,每个CPU用于从各自对应的存储区中获取数据。
其中,网卡用于对数据进行哈希计算,并根据计算结果确定数据所对应的CPU。
该计算机可以进一步包括:映射模块,用于将每个CPU对应的存储区中的数据映射到该数据所对应的应用中。
可选地,对于每个CPU,该CPU对应的存储区为内存中为该CPU分配的存储区,并且多个CPU的存储区彼此间在逻辑上独立。
如图2所示,计算机中的多个CPU包括CPU0、CPU1、CPU2和CPU3(CPU的数量可以更多或更少,本文不再一一列举不同数量CPU的场景),这四个CPU具有各自的内存(例如,图中所示的共享内存),用于存储需要接收的数据,这些数据来自于网卡(例如,Intel万兆网卡)。通过共享内存,CPU能够对需要接收的数据进行并行访问。
综上所述,借助于本发明的上述技术方案,通过使每个CPU核访问各自的存储区并处理其中的数据,从而充分利用了多核CPU的处理能力,实现了数据包的并行接收,能够有效提高数据包接收的速率,改善收包效率,能够应对万兆网卡等高速收包的场景。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种数据接收方法,用于在多CPU环境下实现数据接收,其特征在于,所述方法包括:
对于接收的数据,网卡确定所述数据对应的CPU,并将所述数据发送至确定的所述CPU对应的存储区;
每个CPU从各自对应的存储区中获取数据。
2.根据权利要求1所述的数据接收方法,其特征在于,网卡确定所述数据对应的CPU包括:
所述网卡对所述数据进行哈希计算,并根据计算结果确定所述数据所对应的CPU。
3.根据权利要求1所述的数据接收方法,其特征在于,进一步包括:
将每个CPU对应的存储区中的数据映射到该数据所对应的应用中。
4.根据权利要求1所述的数据接收方法,其特征在于,每个CPU将其对应的存储区映射为队列,该CPU通过相应的队列获取存储区中的数据。
5.根据权利要求4所述的数据接收方法,其特征在于,每个CPU对应的队列采用循环结构的数据结构。
6.根据权利要求1至5中任一项所述的数据接收方法,其特征在于,对于每个CPU,该CPU对应的存储区为内存中为该CPU分配的存储区,并且所述多个CPU的存储区彼此间在逻辑上独立。
7.一种计算机,其特征在于,包括:
网卡,对于接收的数据,所述网卡用于确定所述数据对应的CPU,并将所述数据发送至确定的所述CPU对应的存储区;
多个CPU,其中,每个CPU用于从各自对应的存储区中获取数据。
8.根据权利要求7所述的计算机,其特征在于,所述网卡用于对所述数据进行哈希计算,并根据计算结果确定所述数据所对应的CPU。
9.根据权利要求7所述的计算机,其特征在于,进一步包括:
映射模块,用于将每个CPU对应的存储区中的数据映射到该数据所对应的应用中。
10.根据权利要求7至9中任一项所述的计算机,其特征在于,对于每个CPU,该CPU对应的存储区为内存中为该CPU分配的存储区,并且所述多个CPU的存储区彼此间在逻辑上独立。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011104596335A CN102571580A (zh) | 2011-12-31 | 2011-12-31 | 数据接收方法和计算机 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011104596335A CN102571580A (zh) | 2011-12-31 | 2011-12-31 | 数据接收方法和计算机 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102571580A true CN102571580A (zh) | 2012-07-11 |
Family
ID=46416081
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011104596335A Pending CN102571580A (zh) | 2011-12-31 | 2011-12-31 | 数据接收方法和计算机 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102571580A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102970244A (zh) * | 2012-11-23 | 2013-03-13 | 上海寰创通信科技股份有限公司 | 一种多cpu核间负载均衡的网络报文处理方法 |
CN103309840A (zh) * | 2013-07-08 | 2013-09-18 | 天津汉柏汉安信息技术有限公司 | 一种新建连接的方法及其装置 |
CN104821924A (zh) * | 2014-01-30 | 2015-08-05 | 西门子公司 | 一种网络数据包处理方法、装置和网络处理设备 |
CN105630731A (zh) * | 2015-12-24 | 2016-06-01 | 曙光信息产业(北京)有限公司 | 一种多cpu环境下网卡数据处理方法和装置 |
CN108628676A (zh) * | 2017-03-16 | 2018-10-09 | 哈尔滨英赛克信息技术有限公司 | 一种面向多核***的内存管理装置及方法 |
CN111240845A (zh) * | 2020-01-13 | 2020-06-05 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置和存储介质 |
CN111884945A (zh) * | 2020-06-10 | 2020-11-03 | 中国电信股份有限公司重庆分公司 | 一种网络报文的处理方法和网络接入设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101650698A (zh) * | 2009-08-28 | 2010-02-17 | 曙光信息产业(北京)有限公司 | 直接存储器访问的实现方法 |
CN101901167A (zh) * | 2010-07-22 | 2010-12-01 | 网御神州科技(北京)有限公司 | 一种多cpu架构下的多网络安全审计方法和*** |
-
2011
- 2011-12-31 CN CN2011104596335A patent/CN102571580A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101650698A (zh) * | 2009-08-28 | 2010-02-17 | 曙光信息产业(北京)有限公司 | 直接存储器访问的实现方法 |
CN101901167A (zh) * | 2010-07-22 | 2010-12-01 | 网御神州科技(北京)有限公司 | 一种多cpu架构下的多网络安全审计方法和*** |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102970244A (zh) * | 2012-11-23 | 2013-03-13 | 上海寰创通信科技股份有限公司 | 一种多cpu核间负载均衡的网络报文处理方法 |
CN102970244B (zh) * | 2012-11-23 | 2018-04-13 | 上海寰创通信科技股份有限公司 | 一种多cpu核间负载均衡的网络报文处理方法 |
CN103309840A (zh) * | 2013-07-08 | 2013-09-18 | 天津汉柏汉安信息技术有限公司 | 一种新建连接的方法及其装置 |
CN104821924A (zh) * | 2014-01-30 | 2015-08-05 | 西门子公司 | 一种网络数据包处理方法、装置和网络处理设备 |
CN104821924B (zh) * | 2014-01-30 | 2018-11-27 | 西门子公司 | 一种网络数据包处理方法、装置和网络处理设备 |
CN105630731A (zh) * | 2015-12-24 | 2016-06-01 | 曙光信息产业(北京)有限公司 | 一种多cpu环境下网卡数据处理方法和装置 |
CN108628676A (zh) * | 2017-03-16 | 2018-10-09 | 哈尔滨英赛克信息技术有限公司 | 一种面向多核***的内存管理装置及方法 |
CN111240845A (zh) * | 2020-01-13 | 2020-06-05 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置和存储介质 |
CN111240845B (zh) * | 2020-01-13 | 2023-10-03 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置和存储介质 |
CN111884945A (zh) * | 2020-06-10 | 2020-11-03 | 中国电信股份有限公司重庆分公司 | 一种网络报文的处理方法和网络接入设备 |
CN111884945B (zh) * | 2020-06-10 | 2022-09-02 | 中国电信股份有限公司重庆分公司 | 一种网络报文的处理方法和网络接入设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102541803A (zh) | 数据发送方法和计算机 | |
JP6549663B2 (ja) | ミドルウェアマシン環境においてマルチノードアプリケーションのためのメッセージキューを提供および管理するためのシステムおよび方法 | |
Kumar et al. | PAMI: A parallel active message interface for the Blue Gene/Q supercomputer | |
CN102571580A (zh) | 数据接收方法和计算机 | |
Sur et al. | RDMA read based rendezvous protocol for MPI over InfiniBand: design alternatives and benefits | |
CN103810133B (zh) | 用于管理对共享读缓冲器资源的访问的方法和装置 | |
Wu et al. | PVFS over InfiniBand: Design and performance evaluation | |
Bayatpour et al. | Bluesmpi: Efficient mpi non-blocking alltoall offloading designs on modern bluefield smart nics | |
US20090006546A1 (en) | Multiple node remote messaging | |
EP2284702A1 (en) | Operating cell processors over a network | |
Daglis et al. | Manycore network interfaces for in-memory rack-scale computing | |
CN102567226A (zh) | 数据访问的实现方法和装置 | |
CN114095251A (zh) | 一种基于dpdk与vpp的sslvpn实现方法 | |
CN102375789B (zh) | 一种通用网卡非缓存的零拷贝方法及零拷贝*** | |
Contini et al. | Enabling Reconfigurable HPC through MPI-based Inter-FPGA Communication | |
Jang et al. | A low-overhead networking mechanism for virtualized high-performance computing systems | |
Cardellini et al. | Overlapping communication with computation in MPI applications | |
Shim et al. | Design and implementation of initial OpenSHMEM on PCIe NTB based cloud computing | |
JP6283376B2 (ja) | クラスタにおけるワークシェアリング多重化をサポートするためのシステムおよび方法 | |
Kandalla et al. | A novel functional partitioning approach to design high-performance mpi-3 non-blocking alltoallv collective on multi-core systems | |
Ren et al. | Design, implementation, and evaluation of a NUMA-aware cache for iSCSI storage servers | |
Balaji et al. | Impact of high performance sockets on data intensive applications | |
CN102495764A (zh) | 数据分流的实现方法和装置 | |
Jung et al. | Gpu-ether: Gpu-native packet i/o for gpu applications on commodity ethernet | |
Wickramasinghe et al. | Hybrid mpi: A case study on the xeon phi platform |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20120711 |