CN102291298B - 一种高效的面向长消息的计算机网络通信方法 - Google Patents

一种高效的面向长消息的计算机网络通信方法 Download PDF

Info

Publication number
CN102291298B
CN102291298B CN201110224064.6A CN201110224064A CN102291298B CN 102291298 B CN102291298 B CN 102291298B CN 201110224064 A CN201110224064 A CN 201110224064A CN 102291298 B CN102291298 B CN 102291298B
Authority
CN
China
Prior art keywords
data
buffering area
network interface
interface card
common share
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.)
Expired - Fee Related
Application number
CN201110224064.6A
Other languages
English (en)
Other versions
CN102291298A (zh
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.)
Pinghu Dynamic Electronics Co ltd
Original Assignee
Individual
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 Individual filed Critical Individual
Priority to CN201110224064.6A priority Critical patent/CN102291298B/zh
Publication of CN102291298A publication Critical patent/CN102291298A/zh
Application granted granted Critical
Publication of CN102291298B publication Critical patent/CN102291298B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Computer And Data Communications (AREA)

Abstract

一种高效的面向长消息计算机网络通信方法,当不同计算机间的进程需要进行长消息传递时,进行如下步骤的操作:①预留小部分物理内存作为共享通信缓冲区;②发送方进程从预留的空闲物理内存申请共享通信缓冲区;③把网络接口映射到用户空间,使发送方进程能够直接访问网络接口;发送方进程把待发数据拷贝到共享通信缓冲区;在发送方进程把部分待发数据拷贝到共享通信缓冲区后,发送方网卡通过DMA把发送方共享通信缓冲区的数据写入到网卡发送缓冲区;接收方网卡在部分数据写入共享通信缓冲区后,请求通信软件处理;通信软件向上层的接收方进程发送数据已接收到的信号,请求接收方进程处理;接收方进程拷贝共享通信缓冲区中的数据到目的地址。本发明的技术效果是:减少了网卡多次启动DMA的开销,显著加快了长消息的通信速率;又采用用户态内存拷贝与网卡DMA流水并行的方法,减少内存拷贝的代价。

Description

一种高效的面向长消息的计算机网络通信方法
技术领域
 本发明涉及一种通信方法,尤其涉及一种高效的面向长消息的计算机网络通信方法。
背景技术
为了解决高速网络传输大数据过程中需要很多次拷贝数据到通信缓冲区的问题,目前多数系统采用用户态通信机制与“零拷贝”技术。也就是在数据传输时把用户态的虚拟地址转变为对应的物理地址,并且把它锁定,然后把物理地址传递给网卡,以便进行DMA(Direct Memory Access,直接内存访问)方式的数据传输。
上述这种方式实现了通信过程中数据的零拷贝,去除了数据在内存的拷贝时间。但是,在系统负载很高的情况下(比如CPU与内存利用率均达到90%以上),通信效率大约为72%~80%之间,达不到轻载时的数值(实验测试表明,在两个计算节点没有运行大型任务的情况下,节点间带宽效率最高可以达到90%以上,这实际上是在系统负载很低的情况下获得的),该数值与系统的负载特别是内存的利用率很有关系。通过进一步的仔细分析,我们发现在内存利用率很高的情况下,如果发送的消息较长,则采用用户态通信机制或“零拷贝”技术通信时,需要多次启动DMA,占用的时间很多。其原因在于:当系统内存利用率很高时,整个物理内存的大块连续物理内存空间就非常少,多数是一些零散的页面,这时如果应用程序发送的消息较长,则该消息在物理内存的真实位置非常分散,也就是该消息所在的物理内存页面是不连续的,因此当网卡采用DMA方式发送该消息时,必然需要多次启动DMA从内存读取数据,这在发送方是很耗费时间的;同样的道理,当系统内存利用率很高并且接收的消息比较大时,接收方应用程序也只能提供给网卡绝大多数零散的物理内存页面,因此接受方的网卡也必然需要多次启动DMA把数据写入内存,这在接收方也是很耗费时间的。
发明内容
本发明的目的在于提供了一种高效的面向长消息的计算机网络通信方法,是为了解决长消息在传输过程中需要多次启动DMA的难题,具体地说:在操作系统启动时预留一部分物理内存区;通信时,可由应用程序和网卡共享该物理内存区。为了减小数据拷贝带来的影响,应用程序与网卡对共享内存区的操作采用了流水并行的技术,也就是让应用程序数据拷贝的大部分时间与网卡DMA的时间重叠,因此整个长消息通信过程中,真正耗费在数据拷贝操作上的时间并不多,比“零拷贝” 通信机制多次启动DMA的开销要小得多。
本发明是这样来实现的,一种高效的面向长消息的计算机网络通信方法,其特征在于当不同计算机间的进程需要进行长消息传递时,进行如下步骤的操作:
①为了预留物理内存,在Linux操作系统启动的配置文件中指定系统启动时初始化物理内存的数量,这样在系统重启后就可以预留部分物理内存;
②发送方进程从预留的空闲物理内存申请共享通信缓冲区;
③通信软件从预留的物理内存为发送方进程分配所需共享通信缓冲区,并把分配的该段内存映射到用户空间,这样发送方进程就可以获得该内存的虚拟地址并且访问该共享通信缓冲区,同时把网络接口映射到用户空间,使发送方进程能够直接访问网络接口;
发送方进程把待发数据拷贝到共享通信缓冲区,在部分数据拷贝到共享通信缓冲区后,启动发送操作,这里我们采用了流水并行的技术,使待发数据到共享通信缓冲区的拷贝操作,与共享通信缓冲区数据到网卡发送缓冲区的写入操作同时进行,这样可以把用户态数据拷贝的部分时间隐藏在网卡DMA把数据写入网卡发送缓冲区的时间之中,由于物理内存速度快于PCI速度,这样不会出现速度不匹配的现象;
     发送方网卡通过DMA把发送方共享通信缓冲区的数据写入到网卡发送缓冲区;
接收方网卡通过DMA把网卡接收缓冲区的数据写入接受方共享通信缓冲区,在部分数据写入共享通信缓冲区后,向上层发送数据已接收到的信号,请求通信软件处理;
通信软件对网卡发送的“数据已接收到的信号”作相应处理,然后向上层的接收方进程发送数据已接收到的信号, 请求接收方进程处理;
接收方进程拷贝共享通信缓冲区中的数据到目的地址,类似于发送方,这里接收方也采用了流水并行的技术,使共享通信缓冲区到目的地址的拷贝操作,与网卡接收缓冲区到共享通信缓冲区数据的写入操作同时进行,这样在接收方也可以把用户态数据拷贝的部分时间隐藏在网卡通过DMA把数据写入共享通信缓冲区的时间之中。在接收方,由于内存速度快于PCI速度,因此需要仔细设计,计算好共享通信缓冲区到目的地址的拷贝时间与网卡通过DMA把数据写入共享通信缓冲区的时间,以防止在并行操作过程中出现错误。
本发明提出了一种物理内存预留共享的通信方法,能够提供通信过程中所需的大块连续物理内存,使分散在物理内存中的长消息拷贝入连续的预留物理内存空间,从而启动一次或者少数几次DMA,即可将长消息全部送入网卡,从而减少了网卡多次启动DMA的开销,显著加快了长消息的通信速率。为了减小内存拷贝的开销,又采用用户态内存拷贝与网卡DMA流水并行的方法,用以减少内存拷贝的代价。
本发明的技术效果是:该方法为了提高面向长消息的计算机网络通信性能,提出了一种物理内存预留共享的通信方法,在Linux操作系统启动的配置文件中指定系统启动时初始化物理内存的数量,这样在系统重启后就可以保留小部分物理内存,从而能够提供通信过程中所需的大块连续物理内存,使分散在物理内存中的长消息拷贝入连续的预留物理内存空间,从而启动一次或者少数几次DMA,即可将长消息全部送入网卡。用内存拷贝的代价,减少了网卡多次启动DMA的开销,显著加快了长消息的通信速率;又采用用户态内存拷贝与网卡DMA流水并行的方法,减少内存拷贝的代价。
附图说明
图1为本发明的面向长消息的计算机网络通信方法的数据传输过程。
具体实施方式
本发明是这样实现的,图1说明了在长消息通信过程中,从发送方到接收方的传输过程(双方事先必须建立连接),主要包括以下几个步骤:
1)       发送方进程从预留的空闲物理内存申请共享通信缓冲区;
2)       通信软件从预留的物理内存分配所需内存,并把分配的该段内存映射到用户空间,这样发送方进程就可以获得该内存的虚拟地址并且访问该共享通信缓冲区。同时把网络接口映射到用户空间,使发送方进程能够直接访问网络接口;
3)       发送方进程把待发数据拷贝到共享通信缓冲区,在部分数据拷贝到共享通信缓冲区后,启动发送操作。这里我们采用了流水并行的技术,使待发数据到共享通信缓冲区的拷贝操作与共享通信缓冲区数据到网卡发送缓冲区的写入操作部分并行进行,这样可以把用户态数据拷贝的部分时间隐藏在网卡DMA把数据写入网卡发送缓冲区的时间之中。由于物理内存速度快于PCI速度(在我们测试的系统上,DDR266的内存理论带宽为2100MB/s,而32位33Mhz的PCI理论带宽为133MB/s),这样不会出现速度不匹配的现象。
4)       发送方网卡通过DMA把发送方共享通信缓冲区的数据写入网卡发送缓冲区;
5)       接收方网卡通过DMA把网卡接收缓冲区的数据写入接受方共享通信缓冲区;
6)       接收方网卡在部分数据写入共享通信缓冲区后,向上层发送数据已接收到的信号,请求通信软件处理;
7)       通信软件对网卡发送的数据已接收到的信号作相应处理,然后向接收方进程发送数据已接收到的信号, 请求接收方进程处理;
接收方进程拷贝共享通信缓冲区中的数据到目的地址。这里接收方也采用了流水并行的技术,使共享通信缓冲区到目的地址的拷贝操作与网卡接收缓冲区到共享通信缓冲区数据的写入操作部分并行进行,这样在接收方也可以把用户态数据拷贝的部分时间隐藏在网卡通过DMA把数据写入共享通信缓冲区的时间之中。在接收方,由于内存速度快于PCI速度,因此需要仔细设计,计算好共享通信缓冲区到接收方目的地址的拷贝时间与网卡通过DMA把数据写入共享通信缓冲区的时间,以防止在并行操作过程中出现错误。

Claims (1)

1.一种面向长消息计算机网络通信方法,其特征在于当不同计算机间的进程需要进行长消息传递时,进行如下步骤的操作:
①在Linux操作系统启动的配置文件中指定系统启动时初始化物理内存的数量,在系统重启后就能够预留部分物理内存;
②发送方进程从预留的空闲物理内存申请共享通信缓冲区;
③通信软件从预留的物理内存为发送方进程分配所需共享通信缓冲区,并把分配的物理内存映射到用户空间,发送方进程获得该内存的虚拟地址并且访问该共享通信缓冲区,同时通信软件把网络接口映射到用户空间,使发送方进程能够直接访问网络接口;
④发送方进程把待发数据拷贝到共享通信缓冲区,在部分数据拷贝到共享通信缓冲区后,启动发送操作,采用流水并行的方式,使待发数据到共享通信缓冲区的拷贝操作,与共享通信缓冲区数据到网卡发送缓冲区的写入操作同时进行,从而把用户态数据拷贝的部分时间隐藏在网卡DMA把数据写入网卡发送缓冲区的时间之中,由于物理内存速度快于PCI速度,不会出现速度不匹配的现象;
⑤发送方网卡通过DMA把发送方共享通信缓冲区的数据写入到网卡发送缓冲区;
⑥接收方网卡通过DMA把网卡接收缓冲区的数据写入接收方共享通信缓冲区,在部分数据写入共享通信缓冲区后,向上层发送数据已接收到的信号,请求通信软件处理;
⑦通信软件对网卡发送的该数据已接收到的信号作相应处理,然后向上层的接收方进程发送数据已接收到的信号, 请求接收方进程处理;
⑧接收方进程拷贝共享通信缓冲区中的数据到目的地址,也采用流水并行的方式,使共享通信缓冲区到目的地址的拷贝操作,与网卡接收缓冲区到共享通信缓冲区数据的写入操作几乎同时进行,在接收方也把用户态数据拷贝的部分时间隐藏在网卡通过DMA把数据写入共享通信缓冲区的时间之中;
在接收方,由于内存速度快于PCI速度,因此需计算好共享通信缓冲区到目的地址的拷贝时间与网卡通过DMA把数据写入共享通信缓冲区的时间,以防止在并行操作过程中出现错误。
CN201110224064.6A 2011-08-05 2011-08-05 一种高效的面向长消息的计算机网络通信方法 Expired - Fee Related CN102291298B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110224064.6A CN102291298B (zh) 2011-08-05 2011-08-05 一种高效的面向长消息的计算机网络通信方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110224064.6A CN102291298B (zh) 2011-08-05 2011-08-05 一种高效的面向长消息的计算机网络通信方法

Publications (2)

Publication Number Publication Date
CN102291298A CN102291298A (zh) 2011-12-21
CN102291298B true CN102291298B (zh) 2014-10-22

Family

ID=45337416

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110224064.6A Expired - Fee Related CN102291298B (zh) 2011-08-05 2011-08-05 一种高效的面向长消息的计算机网络通信方法

Country Status (1)

Country Link
CN (1) CN102291298B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104918058A (zh) * 2015-05-26 2015-09-16 江苏高科物流科技股份有限公司 一种高效传送数据流的方法

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107102957A (zh) * 2016-02-22 2017-08-29 深圳市知穹科技有限公司 一种基于gpu与nic之间的内存高速直接交换的方法及系统
CN109117288B (zh) * 2018-08-15 2022-04-12 无锡江南计算技术研究所 一种低延迟旁路的消息优化方法
CN110086571A (zh) * 2019-04-10 2019-08-02 广州华多网络科技有限公司 一种数据发送及接收的方法、装置及数据处理系统
CN113485834A (zh) * 2021-07-12 2021-10-08 深圳华锐金融技术股份有限公司 共享内存管理方法、装置、计算机设备和存储介质
CN113923167B (zh) * 2021-09-16 2024-05-03 深圳致星科技有限公司 联邦学习中数据传输优化方法
CN116455612B (zh) * 2023-03-23 2023-11-28 京信数据科技有限公司 一种隐私计算中间数据流零拷贝装置及方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101150488B (zh) * 2007-11-15 2012-01-25 曙光信息产业(北京)有限公司 一种零拷贝网络报文接收方法
CN101833422B (zh) * 2010-03-08 2012-01-04 成都市华为赛门铁克科技有限公司 磁盘阵列的数据处理方法及设备

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104918058A (zh) * 2015-05-26 2015-09-16 江苏高科物流科技股份有限公司 一种高效传送数据流的方法

Also Published As

Publication number Publication date
CN102291298A (zh) 2011-12-21

Similar Documents

Publication Publication Date Title
CN102291298B (zh) 一种高效的面向长消息的计算机网络通信方法
CN110647480B (zh) 数据处理方法、远程直接访存网卡和设备
CN110402568B (zh) 一种通信的方法及装置
US10216419B2 (en) Direct interface between graphics processing unit and data storage unit
US8478926B1 (en) Co-processing acceleration method, apparatus, and system
WO2020247042A1 (en) Network interface for data transport in heterogeneous computing environments
US9405725B2 (en) Writing message to controller memory space
US11709774B2 (en) Data consistency and durability over distributed persistent memory systems
CN102467473B (zh) 一种在用户空间和内核之间传输数据的方法和装置
KR100758272B1 (ko) 데이터 무 복사 파일 이동 방법
CN104102542A (zh) 一种网络数据包处理方法和装置
WO2015180513A1 (zh) 一种数据传输方法及计算机
US20170004101A1 (en) Data copying method, direct memory access controller, and computer system
US7469309B1 (en) Peer-to-peer data transfer method and apparatus with request limits
US20180181421A1 (en) Transferring packets between virtual machines via a direct memory access device
EP3077914A1 (en) System and method for managing and supporting virtual host bus adaptor (vhba) over infiniband (ib) and for supporting efficient buffer usage with a single external memory interface
EP3465450B1 (en) Improving throughput in openfabrics environments
US20140149528A1 (en) Mpi communication of gpu buffers
CN109857517B (zh) 一种虚拟化系统及其数据交换方法
WO2015055117A1 (zh) 一种内存访问的方法、设备和系统
US20150121376A1 (en) Managing data transfer
US10523741B2 (en) System and method for avoiding proxy connection latency
US20180026916A1 (en) Multi-processor computing systems
CN105591979A (zh) 报文的处理系统和方法
US20140372655A1 (en) System and Method for Symmetrical Direct Memory Access (SDMA)

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20191022

Address after: 536000 Beihai city jinhaian Road No. 45 the Guangxi Zhuang Autonomous Region North Bay technology innovation center 4 Building No. 0905

Patentee after: BEIHAI HESI TECHNOLOGY Co.,Ltd.

Address before: 343009 Department of computer science, School of telecommunication, Jinggangshan University, Ji'an, Jiangxi

Patentee before: Zeng Xiaohui

TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20191125

Address after: 314205 south building, No.158, flywheels Road, Xincang Town, Pinghu City, Jiaxing City, Zhejiang Province

Patentee after: PINGHU DYNAMIC ELECTRONICS CO.,LTD.

Address before: 536000 Beihai city jinhaian Road No. 45 the Guangxi Zhuang Autonomous Region North Bay technology innovation center 4 Building No. 0905

Patentee before: BEIHAI HESI TECHNOLOGY Co.,Ltd.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20141022