CN114741214A - 一种数据传输方法、装置及设备 - Google Patents
一种数据传输方法、装置及设备 Download PDFInfo
- Publication number
- CN114741214A CN114741214A CN202210348472.0A CN202210348472A CN114741214A CN 114741214 A CN114741214 A CN 114741214A CN 202210348472 A CN202210348472 A CN 202210348472A CN 114741214 A CN114741214 A CN 114741214A
- Authority
- CN
- China
- Prior art keywords
- data packet
- memory
- processes
- subprocess
- cache queue
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 464
- 230000005540 biological transmission Effects 0.000 title claims abstract description 35
- 230000008569 process Effects 0.000 claims abstract description 397
- 238000012545 processing Methods 0.000 claims abstract description 75
- 238000011161 development Methods 0.000 claims description 4
- 238000012217 deletion Methods 0.000 claims 1
- 230000037430 deletion Effects 0.000 claims 1
- 230000007246 mechanism Effects 0.000 abstract description 5
- 238000010586 diagram Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 9
- 238000013507 mapping Methods 0.000 description 9
- 238000004590 computer program Methods 0.000 description 7
- 208000032825 Ring chromosome 2 syndrome Diseases 0.000 description 6
- 208000035217 Ring chromosome 1 syndrome Diseases 0.000 description 5
- 238000004891 communication Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 230000002618 waking effect Effects 0.000 description 3
- 238000010295 mobile communication Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4418—Suspend and resume; Hibernate and awake
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W88/00—Devices specially adapted for wireless communication networks, e.g. terminals, base stations or access point devices
- H04W88/08—Access point devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D30/00—Reducing energy consumption in communication networks
- Y02D30/70—Reducing energy consumption in communication networks in wireless communication networks
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本申请提供了一种数据传输方法、装置和设备。在各进程传输数据包时,无论是主进程处理该数据包之后向次进程传输该数据包,还是次进程处理该数据包之后按顺序向下一次进程传输该数据包时,都不再频繁从指定内存拷贝该数据包以进行传输,而是向下一个进程通过其共享的缓存队列传输该数据包在指定内存中的内存地址,以供下一个进程依据该内存地址获取该数据包以进行处理,直至所有的次进程都依据上一个进程传输的虚拟地址对该数据包进行处理。可见,本实施例提供的技术方案在进程间传输数据包时,采用的是零拷贝机制,使得CPU不再将数据包拷贝到另一地址处处理,进而能够减小CPU负载,提升程序性能。
Description
技术领域
本申请涉及网络通信技术,特别涉及一种数据传输方法、装置及设备。
背景技术
第五代移动通信技术(5th Generation Mobile Communication Technology,简称5G)具有高速率、低时延和多连接特点的新一代宽带移动通信技术是新一代的高速网络基础设施。5G基站设备相对于4G基站需要更高的吞吐率和更低的时延,对数据传输的优化尤为重要。而终端系统中进程间的数据传输处理会影响整个基站系统的规格和性能。
目前,基于Linux系统的进程间的数据传输多数采用共享内存方法进行数据传输,这是因为进程对于内存的直接访问一般都会优于传统进程通信所造成的系统函数的调用。多个进程可以共享同一个设定好的存储区域,这样就可以在该存储区域中按设定的规则进行交换数据,以达到数据在多进程间高速传输的目的。但是在多个进程传输数据时,均会从同一个作为存储区域的共享内存拷贝数据包,如通过进程A将已处理的数据包拷贝到共享内存,再通过进程B访问共享内存以拷贝该数据包进一步处理,这就使数据包从进程A传输到进程B时,对该数据包进行了两次数据拷贝,进而使得数据在进程间传输时,会造成频繁访问共享内存,加重系统开销,影响CPU的处理性能。
发明内容
本申请提供了一种数据传输方法、装置及设备,以减小CPU负载。
本申请提供的技术方案包括:
第一方面,本申请实施例提供了一种数据传输方法,应用于5G基站,所述5G基站运行至少N个进程,所述N个进程中的其中一个进程被指定为主进程,剩余的进程被指定为次进程;所述主进程和各次进程按照顺序部署且相邻两个进程共享同一缓存队列,所述主进程和各次进程共享同一指定内存;该方法包括:
通过所述主进程访问指定内存以获得当前数据包,按照所述主进程被赋予的报文处理方式对所述当前数据包进行处理,得到目标数据包,将所述目标数据包存放在所述指定内存中,以及将所述指定内存中存放所述目标数据包的内存地址写入至与所述主进程共享的目标缓存队列,唤醒与所述主进程相邻的次进程;
通过被唤醒的次进程访问共享的目标缓存队列以获取所述内存地址,依据所述内存地址访问所述指定内存以获得所述目标数据包,按照所述次进程被赋予的报文处理方式对所述目标数据包进行处理,将处理后的目标数据包存放在所述指定内存中,并在所述次进程不为按照顺序被部署的最后一个进程时,将所述指定内存中存放所述目标数据包的内存地址存放至所述次进程与相邻的下一个次进程共享的目标缓存队列,并唤醒所述下一个次进程,返回通过被唤醒的次进程访问目标缓存队列的步骤。
第二方面,本申请实施例提供了一种数据传输装置,应用于5G基站,所述5G基站运行至少N个进程,所述N个进程中的其中一个进程被指定为主进程,剩余的进程被指定为次进程;所述主进程和各次进程按照顺序部署且相邻两个进程共享同一缓存队列,所述主进程和各次进程共享同一指定内存;该装置包括:
主进程处理单元,用于通过所述主进程访问指定内存以获得当前数据包,按照所述主进程被赋予的报文处理方式对所述当前数据包进行处理,得到目标数据包,将所述目标数据包存放在所述指定内存中,以及将所述指定内存中存放所述目标数据包的内存地址写入至与所述主进程共享的目标缓存队列,唤醒与所述主进程相邻的次进程;
次进程处理单元,用于通过被唤醒的次进程访问共享的目标缓存队列以获取所述内存地址,依据所述内存地址访问所述指定内存以获得所述目标数据包,按照所述次进程被赋予的报文处理方式对所述目标数据包进行处理,将处理后的目标数据包存放在所述指定内存中,并在所述次进程不为按照顺序被部署的最后一个进程时,将所述指定内存中存放所述目标数据包的内存地址存放至所述次进程与相邻的下一个次进程共享的目标缓存队列,并唤醒所述下一个次进程,返回通过被唤醒的次进程访问目标缓存队列的步骤。
由以上技术方案可以看出,本申请中,5G基站运行至少N个进程,N个进程中的其中一个进程被指定为主进程,剩余的进程被指定为次进程;主进程和各次进程按照顺序部署且相邻两个进程共享同一缓存队列,主进程和各次进程共享同一指定内存;基于此,在各进程传输数据包时,无论是主进程处理该数据包之后向次进程传输该数据包,还是次进程处理该数据包之后按顺序向下一次进程传输该数据包时,都不再频繁从指定内存拷贝该数据包以进行传输,而是向下一个进程通过其共享的缓存队列传输该数据包在指定内存中的内存地址,以供下一个进程依据该内存地址获取该数据包以进行处理,直至所有的次进程都依据上一个进程传输的虚拟地址对该数据包进行处理。可见,本实施例提供的技术方案在进程间传输数据包时,采用的是零拷贝机制,使得CPU不再将数据包拷贝到另一地址处处理,进而能够减小CPU负载,提升CPU的处理性能。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
图1为一种现有的数据传输方法的示意图;
图2为本申请提供的一种数据传输方法的流程图;
图3为本申请提供的一种数据传输架构的示意图;
图4为本申请提供的一种数据传输装置的结构示意图;
图5为电子设备的结构示意图。
具体实施方式
5G具有高速率、低时延和多连接的新一代移动通信技术,是新一代的高速网络基础设施。5G基站设备相对于4G基站需要更高的吞吐率和更低的时延,对数据传输的优化尤为重要。而终端系统中进程间的数据传输处理会影响整个基站系统的规格和性能。
基于Linux系统的进程间的数据传输多数采用共享内存方法进行数据传输,这是因为进程对于内存的直接访问一般都会优于传统进程通信所造成的系统函数的调用。多个进程可以共享同一个设定好的存储区域,这样就可以在该存储区域中按设定的规则进行交换数据,以达到数据在多进程间高速传输的目的。具体如图1所示,在通过进程A处理数据包时,进程A通过地址空间和映射页表将已处理的数据包拷贝在作为存储区域的共享内存中,当进程B需要进一步处理该数据包时,则需要通过属于进程B的地址空间和映射页表,从共享内存中获取该数据包。
可见,数据从进程A传输到进程B时,需要有两次拷贝,一次是在通过进程A处理数据处之后将该数据包拷贝到共享内存,另一次是在通过进行B处理数据包时,从共享内存中拷贝该数据包。对于多个进程传输数据的场景,会使得数据在进程间传输时,造成频繁访问共享内存,加重系统开销,影响CPU的性能。
为了解决上述技术问题,本申请实施例提供了一种数据传输方法,应用于5G基站,5G基站运行至少N个进程,N个进程中的其中一个进程被指定为主进程,剩余的进程被指定为次进程;主进程和各次进程按照顺序部署且相邻两个进程共享同一缓存队列,主进程和各次进程共享同一指定内存;该方法包括:通过主进程访问指定内存以获得当前数据包,按照主进程被赋予的报文处理方式对当前数据包进行处理,得到目标数据包,将目标数据包存放在指定内存中,以及将指定内存中存放目标数据包的内存地址写入至与主进程共享的目标缓存队列,唤醒与主进程相邻的次进程;通过被唤醒的次进程访问共享的目标缓存队列以获取内存地址,依据内存地址访问指定内存以获得目标数据包,按照次进程被赋予的报文处理方式对目标数据包进行处理,将处理后的目标数据包存放在指定内存中,并在次进程不为按照顺序被部署的最后一个进程时,将指定内存中存放目标数据包的内存地址存放至次进程与相邻的下一个次进程共享的目标缓存队列,并唤醒下一个次进程,返回通过被唤醒的次进程访问目标缓存队列的步骤。
可见,在各进程传输数据包时,无论是主进程处理该数据包之后向次进程传输该数据包,还是次进程处理该数据包之后按顺序向下一次进程传输该数据包时,都不再频繁从指定内存拷贝该数据包以进行传输,而是向下一个进程通过其共享的缓存队列传输该数据包在指定内存中的内存地址,以供下一个进程依据该内存地址获取该数据包以进行处理,直至所有的次进程都依据上一个进程传输的虚拟地址对该数据包进行处理。可见,本实施例提供的技术方案在进程间传输数据包时,采用的是零拷贝机制,使得CPU不再将数据包拷贝到另一地址处处理,进而能够减小CPU负载,提升CPU的处理性能。
基于上面描述,下面对本申请提供的图2所示流程进行描述:
参见图2,图2为本申请提供的一种数据传输方法的流程图。该方法应用于5G基站,所述5G基站运行至少N个进程,所述N个进程中的其中一个进程被指定为主进程,剩余的进程被指定为次进程;所述主进程和各次进程按照顺序部署且相邻两个进程共享同一缓存队列,所述主进程和各次进程共享同一指定内存。
在本实施例中,N为自然数,N的取值与实际的业务场景有关系,这也就是说,N可以依据业务场景确定数量,本实施例对此并不限定。主进程和次进程是依据实际业务场景事先确定好先后顺序,其中,主进程是用于从指定内存中申请资源并控制该资源向下一个进程的传输。基于此,主进程和次进程之间的执行顺序是先执行主进程,之后再按照各次进程之间的执行顺序执行各次进程。
作为一个实施例,指定内存可以为DPDK(Date Plane Development Kit,数据面开发套件)特性下的大页内存,大页内存中的大页内存页表可以是2M或者1024M,可以依据实际需求确定大页内存页表大小,而Linux的共享内存依然需要映射页表,由于映射页表较小,一般为4K,这就会造成存放数据地址映射关系的空间映射页表中的映射条目TLB丢失概率增加,而相对于映射页表,大页内存页表能够降低TLB丢失概率。
如图2所示,该流程可包括以下步骤:
步骤201,通过所述主进程访问指定内存以获得当前数据包,按照所述主进程被赋予的报文处理方式对所述当前数据包进行处理,得到目标数据包,将所述目标数据包存放在所述指定内存中,以及将所述指定内存中存放所述目标数据包的内存地址写入至与所述主进程共享的目标缓存队列,唤醒与所述主进程相邻的次进程。
在本步骤201中,上述指定内存中的数据包是按照预设规则存放的,这些数据包事先已被按照被进程处理的先后顺序放置在指定内存中,使得主进程在处理数据包时,从指定内存中获得优先被处理的数据包。
每一个进程都被事先赋予了针对数据包的报文处理方式,如主进程被赋予针对报文协议A进行处理,次进程针对报文协议B进行处理等。至于进程中被赋予的报文处理方式可以依据实际业务场景被设置。
一些实施例中,主进程处理完当前数据包之后,会将处理后得到的目标数据包存放在目标数据包未被处理之前的当前数据包的存放位置,这也就是说,目标数据包和当前数据包为同一存储位置,这样,通过覆盖当前数据包,以避免目标数据包额外占用指定内存空间。
将指定内存中存放目标数据包的内存地址写入至与所述主进程共享的目标缓存队列,唤醒与所述主进程相邻的次进程。
本实施例的内存地址为虚拟地址,而不是物理地址,本实施例通过缓存队列传递虚拟地址能够避免次进程对物理地址进行虚拟地址的转换。
作为一个实施例,相邻进程共享的缓存队列中存放唤醒信号;唤醒信号用于指示在第一进程写入内存地址至所述缓存队列时唤醒相邻的第二进程,所述第一进程和所述第二进程为相邻进程且所述第一进程的顺序先于所述第二进程。
这里,第一进程和第二进程并不特指某两个固定的进程,而是可以指代5G设备上任意两个进程,本发明实施例后续不再复述。
基于上述实施例,实现本步骤中唤醒与所述主进程相邻的次进程的实现方式为:通过主进程将指定内存中存放所述目标数据包的内存地址写入至与所述主进程共享的目标缓存队列,存放在该目标缓存队列的唤醒信号向主进程相邻的次进程发送用于表示目标缓存队列已有内存地址的通知,以使得次进程被唤醒。这样,被唤醒的次进程就可以从目标缓存队列中获得该内存地址。
作为一个实施例,上述唤醒信号可以为一个信号量,如当该信号量为第一信号时,表示目标缓存队列未有内存地址,当该信号量为第二信号时,表示目标缓存队列有内存地址,并唤醒相邻的次进程。
可见,本实施例提供的技术方案能够避免相邻次进程频繁轮询目标缓存队列以确定目标缓存队列中是否存有内存地址,能够减小因频繁轮询目标缓存队列增加CPU的负担。
步骤202,通过被唤醒的次进程访问共享的目标缓存队列以获取所述内存地址,依据所述内存地址访问所述指定内存以获得所述目标数据包,按照所述次进程被赋予的报文处理方式对所述目标数据包进行处理,将处理后的目标数据包存放在所述指定内存中,并在所述次进程不为按照顺序被部署的最后一个进程时,将所述指定内存中存放所述目标数据包的内存地址存放至所述次进程与相邻的下一个次进程共享的目标缓存队列,并唤醒所述下一个次进程,返回通过被唤醒的次进程访问目标缓存队列的步骤。
本实施例中被唤醒的次进程可以是步骤201中主进程之后的下一个次进程,也可以是任一个次进程之后的下一个次进程,至于被唤醒的次进程是哪一个次进程,这与被唤醒的次进程相邻的上一个次进程有关,而上一个次进程就是已处理目标数据包、且相邻该次进程的进程,即按照步骤201的实现方式执行完毕,直至最后一个次进程也已经将该目标数据包处理完毕。
为了释放缓存队列的空间,作为一个实施例,在通过被唤醒的次进程访问共享的目标缓存队列以获取所述内存地址之后,删除所述目标缓存队列写入的内存地址。
本实施例中,在本次进程不为按照顺序被部署的最后一个进程,这就表示,还存在未处理该目标数据的次进程,基于此,将指定内存中存放目标数据包的内存地址存放至本次进程与相邻的下一个次进程共享的目标缓存队列,并唤醒本次进程的下一个次进程,并唤醒下一个次进程,继续返回执行步骤202,在本次进程为按照顺序被部署的最后一个进程,则表示所有的进程均处理了目标数据包。
至此,完成图2所示的描述。
由以上技术方案可以看出,本申请中,5G基站运行至少N个进程,N个进程中的其中一个进程被指定为主进程,剩余的进程被指定为次进程;主进程和各次进程按照顺序部署且相邻两个进程共享同一缓存队列,主进程和各次进程共享同一指定内存;基于此,在各进程传输数据包时,无论是主进程处理该数据包之后向次进程传输该数据包,还是次进程处理该数据包之后按顺序向下一次进程传输该数据包时,都不再频繁从指定内存拷贝该数据包以进行传输,而是向下一个进程通过其共享的缓存队列传输该数据包在指定内存中的内存地址,以供下一个进程依据该内存地址获取该数据包以进行处理,直至所有的次进程都依据上一个进程传输的虚拟地址对该数据包进行处理。可见,本实施例提供的技术方案在进程间传输数据包时,采用的是零拷贝机制,使得CPU不再将数据包拷贝到另一地址处处理,进而能够减小CPU负载,提升程序性能。
在完成图2的流程图之后,作为一个实施例,在通过所述主进程访问指定内存以获得当前数据包之前,该方法进一步还包括如下步骤A1~步骤A2:
步骤A1,通过所述主进程创建N-1个缓存队列。
本步骤的缓存队列的数量是和进程的数量相关,如果进程N为5个,那么,缓存队列的数量就为4个。
步骤A2,按照所述主进程和各次进程的顺序为每一缓存队列确定该缓存队列绑定的两个相邻进程,并通知该两个相邻进程共享该缓存队列。
针对每一个缓存队列,按照所述主进程和各次进程的顺序为该缓存队列确定与该缓存队列绑定的两个相邻进程。
作为一个实施例,按照所述主进程和各次进程的顺序为每一缓存队列确定该缓存队列绑定表示两个相邻进程的进程ID索引,以通过该进程ID索引通知该两个相邻进程共享该缓存队列。
示例性的,缓存队列绑定的进程ID索引为进程A1索引和进程A2索引,进程A1和进程A2是相邻进程,则进程A1和进程A2均在获得进程A1索引和进程A2索引之后,控制进程A1和进程A2与该缓存队列建立连接。
作为另一个实施例,针对每一个缓存队列,为该缓存队列绑定一个唤醒信号,以指示在第一进程写入内存地址至该缓存队列时唤醒第二进程,第一进程和第二进程共享该缓存队列,第一进程的顺序先于第二进程。
本实施例的缓存队列可以是椭圆形结构,也可以是长条结构,还可以是矩形结构,本实施例对此并不限定。
至此,完成方法实施例的描述。
为了对上述实施例更加容易理解,现举一具体实施例,如图3所示,应用于5G基站,该5G基站运行3个进程,按照部署顺序分别为进程A、进程B和进程C,进程A被指定为主进程Primary process,进程B和进程C均被指定为次进程Secondary process;进程A和进程B共享缓存队列ring1,进程B和进程C共享缓存队列ring2,ring1和ring2采用圆环状,ring1绑定一个用于指示进程B唤醒的唤醒信号wake up,ring2绑定一个用于指示进程C唤醒的唤醒信号wake up,进程A、进程B和进程C共享基于DPDK特性下的同一大页内存,该大页内存的数据包Data11、Data22、Data33……是按照数据包被进程处理顺序排列存放的,该方法包括:
通过进程A使用记录数据包的内存地址与物理地址映射关系的大页内存页表访问大页内存以获得Data11,按照进程A被赋予的报文处理方式对Data11进行处理,得到处理之后的Data12,将Data12存放在大页内存中,以及将大页内存中存放Data12的内存地址写入至ring1,并通过该目标唤醒队列绑定的唤醒信号唤醒进程B。
通过进程B访问ring1以获取内存地址,依据内存地址使用大页内存页表访问大页内存以获得Data12,按照进程B被赋予的报文处理方式对Data12进行处理,得到处理之后的Data13,将Data13存放在大页内存中,判定进程B是不是按照顺序被部署的最后一个进程,在确定不为最后一个次进程,则将大页内存中存放Data13的内存地址存放至ring2中,并通过ring2中绑定的唤醒信号唤醒进程C。
通过进程C访问ring2以获取内存地址,依据内存地址使用大页内存页表访问大页内存以获得Data13,按照进程C被赋予的报文处理方式对Data13进行处理,得到处理之后的Data14,将Data14存放在大页内存中,判定进程C是不是按照顺序被部署的最后一个进程,经确定是最后一个进程,则确定各个进程已均对Data11进行了处理。
上述示例描述完毕。
下面对本申请提供的装置进行描述:
参见图4,图4为本申请提供的一种数据传输装置400,应用于5G基站,所述5G基站运行至少N个进程,所述N个进程中的其中一个进程被指定为主进程,剩余的进程被指定为次进程;所述主进程和各次进程按照顺序部署且相邻两个进程共享同一缓存队列,所述主进程和各次进程共享同一指定内存;该装置包括:
主进程处理单元401,用于通过所述主进程访问指定内存以获得当前数据包,按照所述主进程被赋予的报文处理方式对所述当前数据包进行处理,得到目标数据包,将所述目标数据包存放在所述指定内存中,以及将所述指定内存中存放所述目标数据包的内存地址写入至与所述主进程共享的目标缓存队列,唤醒与所述主进程相邻的次进程;
次进程处理单元402,用于通过被唤醒的次进程访问共享的目标缓存队列以获取所述内存地址,依据所述内存地址访问所述指定内存以获得所述目标数据包,按照所述次进程被赋予的报文处理方式对所述目标数据包进行处理,将处理后的目标数据包存放在所述指定内存中,并在所述次进程不为按照顺序被部署的最后一个进程时,将所述指定内存中存放所述目标数据包的内存地址存放至所述次进程与相邻的下一个次进程共享的目标缓存队列,并唤醒所述下一个次进程,触发次进程处理单元402。
作为一个实施例,所述指定内存为数据面开发套件DPDK特性下的大页内存。
作为一个实施例,该装置还包括:相邻进程共享的缓存队列中存放唤醒信号;所述唤醒信号用于指示在第一进程写入内存地址至所述缓存队列时唤醒相邻的第二进程,所述第一进程和所述第二进程为相邻进程且所述第一进程的顺序先于所述第二进程。
作为一个实施例,该装置还包括删除单元,所述删除单元,用于删除所述目标缓存队列写入的内存地址。
作为一个实施例,该装置还包括:
创建单元,用于通过所述主进程创建N-1个缓存队列;按照所述主进程和各次进程的顺序为每一缓存队列确定该缓存队列绑定的两个相邻进程,并通知该两个相邻进程共享该缓存队列。
由此可见,在本申请实施例的技术方案中,5G基站运行至少N个进程,N个进程中的其中一个进程被指定为主进程,剩余的进程被指定为次进程;主进程和各次进程按照顺序部署且相邻两个进程共享同一缓存队列,主进程和各次进程共享同一指定内存;基于此,在各进程传输数据包时,无论是主进程处理该数据包之后向次进程传输该数据包,还是次进程处理该数据包之后按顺序向下一次进程传输该数据包时,都不再频繁从指定内存拷贝该数据包以进行传输,而是向下一个进程通过其共享的缓存队列传输该数据包在指定内存中的内存地址,以供下一个进程依据该内存地址获取该数据包以进行处理,直至所有的次进程都依据上一个进程传输的虚拟地址对该数据包进行处理。可见,本实施例提供的技术方案在进程间传输数据包时,采用的是零拷贝机制,使得CPU不再将数据包拷贝到另一地址处处理,进而能够减小CPU负载,提升程序性能。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
本申请实施例提供的电子设备,从硬件层面而言,硬件架构示意图可以参见图5所示。包括:机器可读存储介质和处理器,其中:所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;所述处理器用于执行机器可执行指令,以实现上述示例公开的数据传输操作。
本申请实施例提供的机器可读存储介质,所述机器可读存储介质存储有机器可执行指令,所述机器可执行指令在被处理器调用和执行时,所述机器可执行指令促使所述处理器实现上述示例公开的数据传输操作。
这里,机器可读存储介质可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(RadomAccess Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可以由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其它可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
而且,这些计算机程序指令也可以存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或者多个流程和/或方框图一个方框或者多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或者其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
至此,完成图5所示设备的描述。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
Claims (11)
1.一种数据传输方法,其特征在于,应用于5G基站,所述5G基站运行至少N个进程,所述N个进程中的其中一个进程被指定为主进程,剩余的进程被指定为次进程;所述主进程和各次进程按照顺序部署且相邻两个进程共享同一缓存队列,所述主进程和各次进程共享同一指定内存;该方法包括:
通过所述主进程访问指定内存以获得当前数据包,按照所述主进程被赋予的报文处理方式对所述当前数据包进行处理,得到目标数据包,将所述目标数据包存放在所述指定内存中,以及将所述指定内存中存放所述目标数据包的内存地址写入至与所述主进程共享的目标缓存队列,唤醒与所述主进程相邻的次进程;
通过被唤醒的次进程访问共享的目标缓存队列以获取所述内存地址,依据所述内存地址访问所述指定内存以获得所述目标数据包,按照所述次进程被赋予的报文处理方式对所述目标数据包进行处理,将处理后的目标数据包存放在所述指定内存中,并在所述次进程不为按照顺序被部署的最后一个进程时,将所述指定内存中存放所述目标数据包的内存地址存放至所述次进程与相邻的下一个次进程共享的目标缓存队列,并唤醒所述下一个次进程,返回通过被唤醒的次进程访问目标缓存队列的步骤。
2.根据权利要求1所述的方法,其特征在于,所述指定内存为数据面开发套件DPDK特性下的大页内存。
3.根据权利要求1所述的方法,其特征在于,相邻进程共享的缓存队列中存放唤醒信号;
所述唤醒信号用于指示在第一进程写入内存地址至所述缓存队列时唤醒相邻的第二进程,所述第一进程和所述第二进程为相邻进程且所述第一进程的顺序先于所述第二进程。
4.根据权利要求1所述的方法,其特征在于,在所述通过被唤醒的次进程访问共享的目标缓存队列以获取所述内存地址之后,还包括:
删除所述目标缓存队列写入的内存地址。
5.根据权利要求1~4中任一所述的方法,其特征在于,该方法之前进一步包括:
通过所述主进程创建N-1个缓存队列;
按照所述主进程和各次进程的顺序为每一缓存队列确定该缓存队列绑定的两个相邻进程,并通知该两个相邻进程共享该缓存队列。
6.一种数据传输装置,其特征在于,应用于5G基站,所述5G基站运行至少N个进程,所述N个进程中的其中一个进程被指定为主进程,剩余的进程被指定为次进程;所述主进程和各次进程按照顺序部署且相邻两个进程共享同一缓存队列,所述主进程和各次进程共享同一指定内存;该装置包括:
主进程处理单元,用于通过所述主进程访问指定内存以获得当前数据包,按照所述主进程被赋予的报文处理方式对所述当前数据包进行处理,得到目标数据包,将所述目标数据包存放在所述指定内存中,以及将所述指定内存中存放所述目标数据包的内存地址写入至与所述主进程共享的目标缓存队列,唤醒与所述主进程相邻的次进程;
次进程处理单元,用于通过被唤醒的次进程访问共享的目标缓存队列以获取所述内存地址,依据所述内存地址访问所述指定内存以获得所述目标数据包,按照所述次进程被赋予的报文处理方式对所述目标数据包进行处理,将处理后的目标数据包存放在所述指定内存中,并在所述次进程不为按照顺序被部署的最后一个进程时,将所述指定内存中存放所述目标数据包的内存地址存放至所述次进程与相邻的下一个次进程共享的目标缓存队列,并唤醒所述下一个次进程,返回通过被唤醒的次进程访问目标缓存队列的步骤。
7.根据权利要求6所述的装置,其特征在于,所述指定内存为数据面开发套件DPDK特性下的大页内存。
8.根据权利要求6所述的装置,其特征在于,该装置还包括:相邻进程共享的缓存队列中存放唤醒信号;所述唤醒信号用于指示在第一进程写入内存地址至所述缓存队列时唤醒相邻的第二进程,所述第一进程和所述第二进程为相邻进程且所述第一进程的顺序先于所述第二进程。
9.根据权利要求6所述的装置,其特征在于,该装置还包括删除单元,所述删除单元,用于删除所述目标缓存队列写入的内存地址。
10.根据权利要求6~9中任一所述的装置,其特征在于,该装置还包括:
创建单元,用于通过所述主进程创建N-1个缓存队列;按照所述主进程和各次进程的顺序为每一缓存队列确定该缓存队列绑定的两个相邻进程,并通知该两个相邻进程共享该缓存队列。
11.一种电子设备,其特征在于,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令;所述处理器用于执行机器可执行指令,以实现权利要求1-5任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210348472.0A CN114741214B (zh) | 2022-04-01 | 2022-04-01 | 一种数据传输方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210348472.0A CN114741214B (zh) | 2022-04-01 | 2022-04-01 | 一种数据传输方法、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114741214A true CN114741214A (zh) | 2022-07-12 |
CN114741214B CN114741214B (zh) | 2024-02-27 |
Family
ID=82278352
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210348472.0A Active CN114741214B (zh) | 2022-04-01 | 2022-04-01 | 一种数据传输方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114741214B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017024783A1 (zh) * | 2015-08-11 | 2017-02-16 | 华为技术有限公司 | 一种虚拟化方法、装置和系统 |
CN111309649A (zh) * | 2020-02-11 | 2020-06-19 | 支付宝(杭州)信息技术有限公司 | 一种数据传输和任务处理方法、装置及设备 |
US20200364080A1 (en) * | 2018-02-07 | 2020-11-19 | Huawei Technologies Co., Ltd. | Interrupt processing method and apparatus and server |
-
2022
- 2022-04-01 CN CN202210348472.0A patent/CN114741214B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017024783A1 (zh) * | 2015-08-11 | 2017-02-16 | 华为技术有限公司 | 一种虚拟化方法、装置和系统 |
US20200364080A1 (en) * | 2018-02-07 | 2020-11-19 | Huawei Technologies Co., Ltd. | Interrupt processing method and apparatus and server |
CN111309649A (zh) * | 2020-02-11 | 2020-06-19 | 支付宝(杭州)信息技术有限公司 | 一种数据传输和任务处理方法、装置及设备 |
Non-Patent Citations (1)
Title |
---|
王小峰;时向泉;苏金树;: "一种TCP/IP卸载的数据零拷贝传输方法", 计算机工程与科学, no. 02, 15 February 2008 (2008-02-15) * |
Also Published As
Publication number | Publication date |
---|---|
CN114741214B (zh) | 2024-02-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109062512B (zh) | 一种分布式存储集群、数据读写方法、系统及相关装置 | |
CN107402722B (zh) | 一种数据迁移方法及存储设备 | |
CN110119304B (zh) | 一种中断处理方法、装置及服务器 | |
CN114244790B (zh) | PCIe设备与主机设备的通信方法、系统及设备 | |
US11231964B2 (en) | Computing device shared resource lock allocation | |
US20110296437A1 (en) | Method and apparatus for lockless communication between cores in a multi-core processor | |
CN115964319A (zh) | 远程直接内存访问的数据处理方法及相关产品 | |
EP2845110B1 (en) | Reflective memory bridge for external computing nodes | |
CN102520879B (zh) | 基于优先级的文件信息存储方法、装置及系统 | |
CN110895517B (zh) | 基于fpga的传输数据的方法、设备及系统 | |
CN114785662B (zh) | 一种存储管理方法、装置、设备及机器可读存储介质 | |
CN114741214B (zh) | 一种数据传输方法、装置及设备 | |
CN115048047A (zh) | 一种数据处理系统和方法 | |
US10664407B2 (en) | Dual first and second pointer for memory mapped interface communication with lower indicating process | |
CN110647493B (zh) | 一种数据传输方法、处理器和pcie系统 | |
CN116601616A (zh) | 一种数据处理装置、方法及相关设备 | |
CN108874560B (zh) | 进行通信的方法和通信设备 | |
US20160062925A1 (en) | Method and system for managing storage device operations by a host device | |
JP2009020776A (ja) | スワップアウト制御装置 | |
CN117407356B (zh) | 基于共享内存的核间通信方法、装置、存储介质及终端 | |
CN112003860B (zh) | 适用于远程直接内存访问的内存管理方法、系统及介质 | |
CN114610661B (zh) | 数据处理装置、方法和电子设备 | |
JP7468272B2 (ja) | ストレージ装置及びストレージ制御方法 | |
US11188140B2 (en) | Information processing system | |
US10762011B2 (en) | Reflective memory bridge for external computing nodes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |