CN102567226A - 数据访问的实现方法和装置 - Google Patents
数据访问的实现方法和装置 Download PDFInfo
- Publication number
- CN102567226A CN102567226A CN2011104559266A CN201110455926A CN102567226A CN 102567226 A CN102567226 A CN 102567226A CN 2011104559266 A CN2011104559266 A CN 2011104559266A CN 201110455926 A CN201110455926 A CN 201110455926A CN 102567226 A CN102567226 A CN 102567226A
- Authority
- CN
- China
- Prior art keywords
- data
- data access
- virtual
- buffer
- access unit
- 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
本发明公开了一种数据访问的实现方法和装置,该方法包括:将网卡的硬件队列中的数据存储至物理内存中的多个数据缓冲区中;由多个数据访问单元对多个缓冲区中的数据进行访问,其中,每个数据缓冲区对应于一个虚拟缓冲区,每个数据访问单元通过访问虚拟缓冲区来访问相应数据缓冲区中的数据。本发明通过多队列的处理方式,由多个数据访问单元并行对缓冲区进行访问,并且将缓冲区直接映射给网卡驱动使用,从而避免了传统技术中缓冲区交互和报文的拷贝,有效提高了报文处理的效率,减少了数据处理延时,简化了数据处理过程。
Description
技术领域
本发明涉及计算机领域,并且特别地,涉及一种数据访问的实现方法和装置。
背景技术
目前,千兆网卡的零拷贝技术主要基于传统intel千兆网卡来实现。
通常,在网络数据包的收包过程中,应用程序需要以拷贝的方式与内核中的网卡报文缓冲区进行交互,这种拷贝处理必然会降低性能和速率,无法在大流量场景中使用。并且,目前的千兆零拷贝都是基于单队列的技术来实现的,但是,在万兆接入的情况下,单位时间内的数据包速率将提高大约10倍,而千兆网卡下单一的传输队列以及缓冲区交互将存在很高的性能损失,所以,传统的技术将无法应对如此高的数据速率,进而成为万兆零拷贝技术发展的瓶颈。
针对相关技术中无法在大流量要求下高效地实现数据接收的问题,目前尚未提出有效的解决方案。
发明内容
针对相关技术中无法在大流量要求下高效地实现数据接收的问题,本发明提出一种数据访问的实现方法和装置,能够提高数据接收的效率,减少数据接收处理的延迟。
本发明的技术方案是这样实现的:
根据本发明的一个方面,提供了一种数据访问的实现方法。
该方法包括:将网卡的硬件队列中的数据存储至物理内存中的多个数据缓冲区中;由多个数据访问单元对多个缓冲区中的数据进行访问,其中,每个数据缓冲区对应于一个虚拟缓冲区,每个数据访问单元通过访问虚拟缓冲区来访问相应数据缓冲区中的数据。
该方法可进一步包括:预先设置多个数据缓冲区与多个虚拟缓冲区的一一对应关系。
此外,网卡包括多个硬件队列,并且多个硬件队列与多个数据缓冲区一一对应,并且每个硬件队列中的数据被存储至与该硬件队列对应的数据缓冲区中。
此外,数据访问单元与虚拟缓冲区一一对应,并且,每个数据访问单元对该数据访问单元对应的虚拟缓冲区进行访问。
并且,优选地,上述多个虚拟缓冲区的虚拟地址连续。
根据本发明的另一方面,提供了一种数据访问的实现装置。
该装置包括:物理内存,包括多个数据缓冲区;存储控制模块,用于将网卡的硬件队列中的数据存储至物理内存中的多个数据缓冲区中;多个数据访问单元,用于对多个缓冲区中的数据进行访问,其中,每个数据缓冲区对应于一个虚拟缓冲区,每个数据访问单元通过访问虚拟缓冲区来访问相应数据缓冲区中的数据。
该装置可进一步包括:映射模块,用于预先通过映射的方式设置多个数据缓冲区与多个虚拟缓冲区的一一对应关系。
此外,网卡包括多个硬件队列,并且多个硬件队列与多个数据缓冲区一一对应,并且,存储控制模块用于每个硬件队列中的数据存储至与该硬件队列对应的数据缓冲区中。
此外,数据访问单元与虚拟缓冲区一一对应设置,并且,每个数据访问单元对该数据访问单元对应的虚拟缓冲区进行访问。
此外,优选地,上述多个虚拟缓冲区的虚拟地址连续。
本发明通过多队列的处理方式,由多个数据访问单元并行对缓冲区进行访问,并且将缓冲区直接映射给网卡驱动使用,从而避免了传统技术中缓冲区交互和报文的拷贝,有效提高了报文处理的效率,减少了数据处理延时,简化了数据处理过程。
附图说明
图1是根据本发明实施例的数据访问的实现方法的流程图;
图2是根据本发明实施例的数据访问的实现方案中设置多队列数据结构的流程图;
图3是根据本发明实施例的数据访问的实现方法的原理示意图;
图4是根据本发明实施例的数据访问的实现装置的框图。
具体实施方式
根据本发明的实施例,提供了一种数据访问的实现方法。
如图1所示,根据本发明实施例的数据访问的实现方法包括:
步骤S101,将网卡的硬件队列中的数据存储至物理内存中的多个数据缓冲区中;
步骤S103,由多个数据访问单元对多个缓冲区中的数据进行访问,其中,每个数据缓冲区对应于一个虚拟缓冲区,每个数据访问单元通过访问虚拟缓冲区来访问相应数据缓冲区中的数据。
在实现本发明的方案时,可以预先设置多个数据缓冲区与多个虚拟缓冲区的一一对应关系。
具体地,可以利用字符设备,从内核态分配不连续的内存页面映射到应用程序中。
如图2所示,首先创建名为dash的字符设备(char device),然后定义出多队列的数据结构。定义字符设备的mmap方法以定义映射策略,真实内存页面的分配在nopage方法中实现。根据映射到的地址空间的位置,计算出对应的CPU号,并从该CPU上进行内存分配,从而利用NUMA特性提高了内存访问的效率。
在本发明的方案中,网卡可以包括多个硬件队列,并且多个硬件队列与多个数据缓冲区一一对应,并且每个硬件队列中的数据被存储至与该硬件队列对应的数据缓冲区中。
此外,数据访问单元与虚拟缓冲区一一对应,并且,每个数据访问单元对该数据访问单元对应的虚拟缓冲区进行访问。
另外,多个虚拟缓冲区的虚拟地址连续。
具体地,如图3所示,以CPU0、CPU1、CPU2和CPU3四个CPU为例,网卡队列包括队列0、队列1、队列2和队列3,每个队列对应一个CPU核,并在每个CPU核对应的物理内存区域中分配内存(不连续),并以连续的方式对应到应用程序的地址空间中,即,映射到虚拟的数据缓冲区中,应用进程地址空间中的数据缓冲区就是虚拟缓冲区,应用进程地址空间中的数据缓冲区0-3(虚拟缓冲区)与CPU0-3分别一一对应。为方便应用程序的使用,应用进程地址空间中的数据缓冲区可分配到连续的地址空间上。
在相关技术中,网络数据包发包过程中,应用程序需要以拷贝的方式与内核中的网卡报文缓冲区进行交互,而本发明的上述技术方案能够通过内存映射的方式,将应用程序缓冲区直接映射给网卡驱动使用,从而减少这一次不必要的拷贝操作,提高了性能。
在万兆网卡下,本发明提出了支持多个传输队列的内存缓冲区映射方式,基于多硬件队列技术实现了高速发包,由于多队列可以很好利用当前多核的架构,所以使捕包性能得到明显提升。
应当注意,本发明的方案同样可以应用于其他CPU进行数据接收的场景中,并且能够达到类似的效果,其处理方式类似,本文不再一一列举。
根据本发明的实施例,提供了一种数据访问的实现装置。
如图4所示,根据本发明实施例的数据访问的实现装置包括:
物理内存41,包括多个数据缓冲区(未示出);
存储控制模块42,连接至物理内存41,用于将网卡的硬件队列中的数据存储至物理内存中的多个数据缓冲区中;
多个数据访问单元43(图4中仅示出了一个数据访问单元,其他未示出的数据访问单元均可以采用类似的方式进行连接),能够与物理内存41通信,用于对多个缓冲区中的数据进行访问,其中,每个数据缓冲区对应于一个虚拟缓冲区,每个数据访问单元通过访问虚拟缓冲区来访问相应数据缓冲区中的数据。
该装置可以进一步包括:
映射模块(未示出),用于预先通过映射的方式设置多个数据缓冲区与多个虚拟缓冲区的一一对应关系。
并且,网卡包括多个硬件队列,并且多个硬件队列与多个数据缓冲区一一对应,并且,存储控制模块用于每个硬件队列中的数据存储至与该硬件队列对应的数据缓冲区中。
此外,数据访问单元与虚拟缓冲区一一对应设置,并且,每个数据访问单元对该数据访问单元对应的虚拟缓冲区进行访问。
优选地,多个虚拟缓冲区的虚拟地址连续。
综上所述,借助于本发明的上述技术方案,通过多队列的处理方式,由多个数据访问单元并行对缓冲区进行访问,并且将缓冲区直接映射给网卡驱动使用,从而避免了传统技术中缓冲区交互和报文的拷贝,有效提高了报文处理的效率,减少了数据处理延时,简化了数据处理过程。本发明的方案可以适用于多种数据接收场景,例如,可以在万兆网卡实现多队列上的零拷贝,利用numa特性提高内存访问的性能。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种数据访问的实现方法,其特征在于,包括:
将网卡的硬件队列中的数据存储至物理内存中的多个数据缓冲区中;
由多个数据访问单元对所述多个缓冲区中的数据进行访问,其中,每个数据缓冲区对应于一个虚拟缓冲区,每个数据访问单元通过访问虚拟缓冲区来访问相应数据缓冲区中的数据。
2.根据权利要求1所述的实现方法,其特征在于,进一步包括:
预先设置所述多个数据缓冲区与所述多个虚拟缓冲区的一一对应关系。
3.根据权利要求1所述的实现方法,其特征在于,所述网卡包括多个硬件队列,并且所述多个硬件队列与所述多个数据缓冲区一一对应,并且每个硬件队列中的数据被存储至与该硬件队列对应的数据缓冲区中。
4.根据权利要求1所述的实现方法,其特征在于,数据访问单元与虚拟缓冲区一一对应,并且,每个数据访问单元对该数据访问单元对应的虚拟缓冲区进行访问。
5.根据权利要求1至4中任一项所述的实现方法,其特征在于,所述多个虚拟缓冲区的虚拟地址连续。
6.一种数据访问的实现装置,其特征在于,包括:
物理内存,包括多个数据缓冲区;
存储控制模块,用于将网卡的硬件队列中的数据存储至物理内存中的所述多个数据缓冲区中;
多个数据访问单元,用于对所述多个缓冲区中的数据进行访问,其中,每个数据缓冲区对应于一个虚拟缓冲区,每个数据访问单元通过访问虚拟缓冲区来访问相应数据缓冲区中的数据。
7.根据权利要求6所述的实现装置,其特征在于,进一步包括:
映射模块,用于预先通过映射的方式设置所述多个数据缓冲区与所述多个虚拟缓冲区的一一对应关系。
8.根据权利要求6所述的实现装置,其特征在于,所述网卡包括多个硬件队列,并且所述多个硬件队列与所述多个数据缓冲区一一对应,并且,所述存储控制模块用于每个硬件队列中的数据存储至与该硬件队列对应的数据缓冲区中。
9.根据权利要求6所述的实现装置,其特征在于,数据访问单元与虚拟缓冲区一一对应设置,并且,每个数据访问单元对该数据访问单元对应的虚拟缓冲区进行访问。
10.根据权利要求6至9中任一项所述的实现装置,其特征在于,所述多个虚拟缓冲区的虚拟地址连续。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011104559266A CN102567226A (zh) | 2011-12-31 | 2011-12-31 | 数据访问的实现方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2011104559266A CN102567226A (zh) | 2011-12-31 | 2011-12-31 | 数据访问的实现方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102567226A true CN102567226A (zh) | 2012-07-11 |
Family
ID=46412686
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2011104559266A Pending CN102567226A (zh) | 2011-12-31 | 2011-12-31 | 数据访问的实现方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102567226A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103414535A (zh) * | 2013-07-31 | 2013-11-27 | 华为技术有限公司 | 数据发送方法和数据接收方法及相关装置 |
CN104205730A (zh) * | 2013-12-31 | 2014-12-10 | 华为技术有限公司 | 网元数据访问方法、装置以及网络管理系统 |
CN105450986A (zh) * | 2015-11-12 | 2016-03-30 | 厦门雅迅网络股份有限公司 | 一种Linux下视频处理方法 |
CN106371925A (zh) * | 2016-08-31 | 2017-02-01 | 北京中测安华科技有限公司 | 一种高速大数据的检测方法及装置 |
WO2018054271A1 (zh) * | 2016-09-20 | 2018-03-29 | 华为技术有限公司 | 一种数据传输方法及装置 |
CN109564502A (zh) * | 2016-08-19 | 2019-04-02 | 华为技术有限公司 | 应用于存储设备中的访问请求的处理方法和装置 |
CN110048963A (zh) * | 2019-04-19 | 2019-07-23 | 杭州朗和科技有限公司 | 虚拟网络中的报文传输方法、介质、装置和计算设备 |
CN110798412A (zh) * | 2019-10-18 | 2020-02-14 | 北京浪潮数据技术有限公司 | 组播业务处理方法、装置、云平台、设备及可读存储介质 |
CN111181736A (zh) * | 2019-12-31 | 2020-05-19 | 奇安信科技集团股份有限公司 | 数据传输方法、装置、系统、介质及程序产品 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040073765A1 (en) * | 2002-10-10 | 2004-04-15 | International Business Machines Corporation | Method and system of managing virtualized physical memory in a memory controller and processor system |
CN1908917A (zh) * | 2006-08-24 | 2007-02-07 | 上海科泰世纪科技有限公司 | 基于数据源的虚拟内存处理方法 |
CN101650698A (zh) * | 2009-08-28 | 2010-02-17 | 曙光信息产业(北京)有限公司 | 直接存储器访问的实现方法 |
CN101719872A (zh) * | 2009-12-11 | 2010-06-02 | 曙光信息产业(北京)有限公司 | 基于零拷贝方式的多队列报文发送和接收方法和装置 |
-
2011
- 2011-12-31 CN CN2011104559266A patent/CN102567226A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040073765A1 (en) * | 2002-10-10 | 2004-04-15 | International Business Machines Corporation | Method and system of managing virtualized physical memory in a memory controller and processor system |
CN1908917A (zh) * | 2006-08-24 | 2007-02-07 | 上海科泰世纪科技有限公司 | 基于数据源的虚拟内存处理方法 |
CN101650698A (zh) * | 2009-08-28 | 2010-02-17 | 曙光信息产业(北京)有限公司 | 直接存储器访问的实现方法 |
CN101719872A (zh) * | 2009-12-11 | 2010-06-02 | 曙光信息产业(北京)有限公司 | 基于零拷贝方式的多队列报文发送和接收方法和装置 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103414535A (zh) * | 2013-07-31 | 2013-11-27 | 华为技术有限公司 | 数据发送方法和数据接收方法及相关装置 |
CN103414535B (zh) * | 2013-07-31 | 2017-04-19 | 华为技术有限公司 | 数据发送方法和数据接收方法及相关装置 |
CN104205730A (zh) * | 2013-12-31 | 2014-12-10 | 华为技术有限公司 | 网元数据访问方法、装置以及网络管理系统 |
WO2015100628A1 (zh) * | 2013-12-31 | 2015-07-09 | 华为技术有限公司 | 网元数据访问方法、装置以及网络管理系统 |
CN104205730B (zh) * | 2013-12-31 | 2017-09-29 | 华为技术有限公司 | 网元数据访问方法、虚拟网元、网络管理服务器及网络管理系统 |
CN105450986B (zh) * | 2015-11-12 | 2020-02-07 | 厦门雅迅网络股份有限公司 | 一种Linux下视频处理方法 |
CN105450986A (zh) * | 2015-11-12 | 2016-03-30 | 厦门雅迅网络股份有限公司 | 一种Linux下视频处理方法 |
CN109564502B (zh) * | 2016-08-19 | 2020-12-08 | 华为技术有限公司 | 应用于存储设备中的访问请求的处理方法和装置 |
CN109564502A (zh) * | 2016-08-19 | 2019-04-02 | 华为技术有限公司 | 应用于存储设备中的访问请求的处理方法和装置 |
CN106371925A (zh) * | 2016-08-31 | 2017-02-01 | 北京中测安华科技有限公司 | 一种高速大数据的检测方法及装置 |
WO2018054271A1 (zh) * | 2016-09-20 | 2018-03-29 | 华为技术有限公司 | 一种数据传输方法及装置 |
US11023373B2 (en) | 2016-09-20 | 2021-06-01 | Huawei Technologies Co., Ltd. | Data transmission method and apparatus using resources in a resource pool of a same NUMA mode |
US11734172B2 (en) | 2016-09-20 | 2023-08-22 | Huawei Technologies Co., Ltd. | Data transmission method and apparatus using resources in a resource pool of a same NUMA node |
CN110048963A (zh) * | 2019-04-19 | 2019-07-23 | 杭州朗和科技有限公司 | 虚拟网络中的报文传输方法、介质、装置和计算设备 |
CN110798412A (zh) * | 2019-10-18 | 2020-02-14 | 北京浪潮数据技术有限公司 | 组播业务处理方法、装置、云平台、设备及可读存储介质 |
CN111181736A (zh) * | 2019-12-31 | 2020-05-19 | 奇安信科技集团股份有限公司 | 数据传输方法、装置、系统、介质及程序产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102567226A (zh) | 数据访问的实现方法和装置 | |
US11929927B2 (en) | Network interface for data transport in heterogeneous computing environments | |
Tezuka et al. | Pin-down cache: A virtual memory management technique for zero-copy communication | |
US7979645B2 (en) | Multiprocessor system for memory mapping of processing nodes | |
CN101304373B (zh) | 一种实现局域网内高效传输大块数据的方法及系统 | |
CN101150488B (zh) | 一种零拷贝网络报文接收方法 | |
US20160132541A1 (en) | Efficient implementations for mapreduce systems | |
CN102541803A (zh) | 数据发送方法和计算机 | |
CN1647054A (zh) | 网络设备驱动体系结构 | |
CN102402487A (zh) | 一种零拷贝接收报文的方法和系统 | |
US11936571B2 (en) | Reliable transport offloaded to network devices | |
EP3563534B1 (en) | Transferring packets between virtual machines via a direct memory access device | |
CN108366018A (zh) | 一种基于dpdk的网络数据包处理方法 | |
CN103763173A (zh) | 数据传输方法和计算节点 | |
CN102571580A (zh) | 数据接收方法和计算机 | |
CN102291298B (zh) | 一种高效的面向长消息的计算机网络通信方法 | |
CN110519180B (zh) | 网卡虚拟化队列调度方法及系统 | |
CN109857517B (zh) | 一种虚拟化系统及其数据交换方法 | |
CN102375789A (zh) | 一种通用网卡非缓存的零拷贝方法及零拷贝系统 | |
Yu et al. | High performance support of parallel virtual file system (pvfs2) over quadrics | |
Shim et al. | Design and implementation of initial OpenSHMEM on PCIe NTB based cloud computing | |
US7929439B1 (en) | Multiple network interface core apparatus and method | |
Theodoropoulos et al. | REMAP: Remote mEmory manager for disaggregated platforms | |
Trams et al. | Memory Management in a combined VIA/SCI Hardware | |
Aumage et al. | High-performance multi-rail support with the newmadeleine communication library |
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 |