CN102571580A - 数据接收方法和计算机 - Google Patents

数据接收方法和计算机 Download PDF

Info

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
Application number
CN2011104596335A
Other languages
English (en)
Inventor
万伟
刘兴彬
王泼
刘铁
陈科
朱春屹
王清
李云华
李博文
董建珊
杨锦涛
孙一鸣
范玉峰
曹振南
邵宗有
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Dawning Information Industry Co Ltd
Original Assignee
Dawning Information Industry Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Dawning Information Industry Co Ltd filed Critical Dawning Information Industry Co Ltd
Priority to CN2011104596335A priority Critical patent/CN102571580A/zh
Publication of CN102571580A publication Critical patent/CN102571580A/zh
Pending legal-status Critical Current

Links

Images

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的存储区彼此间在逻辑上独立。
CN2011104596335A 2011-12-31 2011-12-31 数据接收方法和计算机 Pending CN102571580A (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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架构下的多网络安全审计方法和系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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) 数据发送方法和计算机
Tsai et al. LITE kernel RDMA support for datacenter applications
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
US7788334B2 (en) Multiple node remote messaging
Wu et al. PVFS over InfiniBand: Design and performance evaluation
CN104050091B (zh) 基于非一致性内存访问系统的网络设备及其设置方法
Bayatpour et al. Bluesmpi: Efficient mpi non-blocking alltoall offloading designs on modern bluefield smart nics
EP2284702A1 (en) Operating cell processors over a network
Daglis et al. Manycore network interfaces for in-memory rack-scale computing
CN102567226A (zh) 数据访问的实现方法和装置
CN102375789B (zh) 一种通用网卡非缓存的零拷贝方法及零拷贝系统
Jang et al. A low-overhead networking mechanism for virtualized high-performance computing systems
Cardellini et al. Overlapping communication with computation in MPI applications
JP6283376B2 (ja) クラスタにおけるワークシェアリング多重化をサポートするためのシステムおよび方法
Suresh et al. A novel framework for efficient offloading of communication operations to bluefield smartnics
Balaji et al. Impact of high performance sockets on data intensive applications
CN102495764A (zh) 数据分流的实现方法和装置
Vaidyanathan et al. Designing efficient asynchronous memory operations using hardware copy engine: A case study with I/OAT
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
Deri et al. Exploiting commodity multi-core systems for network traffic analysis
Panda MVAPICH2: A high performance MPI library for NVIDIA GPU clusters with InfiniBand

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