CN113485822A - 内存管理方法、系统、客户端、服务器及存储介质 - Google Patents

内存管理方法、系统、客户端、服务器及存储介质 Download PDF

Info

Publication number
CN113485822A
CN113485822A CN202010568853.0A CN202010568853A CN113485822A CN 113485822 A CN113485822 A CN 113485822A CN 202010568853 A CN202010568853 A CN 202010568853A CN 113485822 A CN113485822 A CN 113485822A
Authority
CN
China
Prior art keywords
memory
client
server
queue
data
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
CN202010568853.0A
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.)
ZTE Corp
Original Assignee
ZTE Corp
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 ZTE Corp filed Critical ZTE Corp
Priority to CN202010568853.0A priority Critical patent/CN113485822A/zh
Priority to PCT/CN2021/100120 priority patent/WO2021254330A1/zh
Publication of CN113485822A publication Critical patent/CN113485822A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种内存管理方法、系统、客户端、服务器及存储介质,属于通信技术领域,该方法包括:获取服务器分配给所述客户端的内存对应的内存信息;基于所述内存信息创建用于记录内存状态的队列;当所述客户端与所述服务器之间的数据交互发生变化时,更新所述队列中的内存状态。使得客户端可以监控已分配的内存的内存状态,并在数据交互发生变化时,及时更新队列中的内存状态,以便对内存状态进行有效监控,而不需要频繁向服务器申请内存,提高了数据传输的效率,以及提高了对地址管理的便捷性。

Description

内存管理方法、系统、客户端、服务器及存储介质
技术领域
本申请涉及通信技术领域,具体涉及一种内存管理方法、系统、客户端、服务器及存储介质。
背景技术
远程直接数据存取(Remote Direct Memory Access,RDMA)是一种直接访问远端节点存储空间的网络传输技术,将数据从一个端快速传输到另一个端的存储空间,绕过操作系统内核协议栈,不占用节点中央处理器(central processing unit,CPU)的资源,能够显著提高数据传输性能。RDMA技术已经应用到各类业务场景,尤其是对带宽和时延要求非常高的分布式存储系统,采用RDMA网络传输大数据,可以充分发挥新型硬件的高性能。
现有技术中,RDMA数据传输的过程中,首先,客户端根据业务需要向服务器发起内存分配请求,服务器从内存池中分配空闲内存块给客户端,然后客户端向服务器内存写入数据,服务器检测到数据写入完成后,根据业务逻辑处理内存中的数据。客户端下次向服务器内存写入数据之前,重新发起内存分配请求,服务端再次从内存池中分配空闲内存块给客户端。因此,客户端每次传输数据前都需要向服务端申请内存空间,服务端根据内存使用情况分配空闲内存,这样服务器和客户端两侧CPU都需要参与的多次交互,降低了数据传输的效率。此外,在客户端现有向多个服务器申请内存的分布式存储场景,需要向多个服务器发起内存分配请求,客户端需要频繁向多个服务器申请内存,分布式同步协议实现更加复杂。
发明内容
本申请实施例提供一种内存管理方法、系统、客户端、服务器及存储介质,可以提高数据传输的效率,以及提高对地址管理的便捷性。
第一方面,本申请实施例提供了一种内存管理方法,所述内存管理方法应用于客户端,所述内存管理方法包括:
获取服务器分配给所述客户端的内存对应的内存信息;
基于所述内存信息创建用于记录内存状态的队列;
当所述客户端与所述服务器之间的数据交互发生变化时,更新所述队列中的内存状态。
第二方面,本申请实施例还提供了一种内存管理方法,所述内存管理方法应用于服务器,所述内存管理方法包括:
接收客户端发送的内存分配请求;
基于所述内存分配请求为所述客户端分配内存,并将分配的所述内存的内存信息发送给所述客户端,所述内存信息用于指示所述客户端创建用于记录内存状态的队列;
接收所述客户端发送的待处理的数据,对所述待处理的数据进行处理;
在对所述数据处理完成后,向所述客户端返回预设报文,所述预设报文用于指示所述客户端更新所述队列中内存的空闲状态。
第三方面,本申请实施例还提供了一种客户端,包括处理器和存储器,所述存储器中存储有计算机程序,所述处理器调用所述存储器中的计算机程序时执行本申请实施例提供的应用于客户端的任一种内存管理方法。
第四方面,本申请实施例还提供了一种服务器,包括处理器和存储器,所述存储器中存储有计算机程序,所述处理器调用所述存储器中的计算机程序时执行本申请实施例提供的应用于服务器的任一种内存管理方法。
第五方面,本申请实施例还提供了一种内存管理系统,包括客户端和服务器,所述客户端为本申请实施例提供的任一种客户端,所述服务器为本申请实施例提供的任一种服务器。
第六方面,本申请实施例还提供了一种存储介质,用于计算机可读存储,所述储介质用于存储计算机程序,所述计算机程序被处理器加载,以执行本申请实施例提供的任一种内存管理方法。
本申请实施例可以获取服务器分配给客户端的内存对应的内存信息,基于内存信息创建用于记录内存状态的队列,当客户端与服务器之间的数据交互发生变化时,更新队列中的内存状态。使得客户端可以监控已分配的内存的内存状态,并在数据交互发生变化时,及时更新队列中的内存状态,以便对内存状态进行有效监控,而不需要频繁向服务器申请内存,提高了数据传输的效率,以及提高了对地址管理的便捷性。
附图说明
图1是本申请一个实施例提供的内存管理方法的场景示意图;
图2是本申请一个实施例提供的内存管理方法的流程示意图;
图3是本申请另一实施例提供的内存管理方法的流程示意图;
图4是本申请一个实施例提供的更新循环队列中内存状态的示意图;
图5是本申请另一实施例提供的内存管理方法的流程示意图;
图6是本申请另一实施例提供的内存管理方法的流程示意图;
图7是本申请一个实施例提供的客户端的结构示意图;
图8是本申请一个实施例提供的服务器的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
附图中所示的流程图仅是示例说明,不是必须包括所有的内容和操作/步骤,也不是必须按所描述的顺序执行。例如,有的操作/步骤还可以分解、组合或部分合并,因此实际执行的顺序有可能根据实际情况改变。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
本申请的实施例提供了一种内存管理方法、系统、客户端、服务器及存储介质。其中,该内存管理方法可以应用于网络设备中,该网络设备可以包括集线器、交换机、网桥、路由器、网关、以及中继器等设备。
请参阅图1,图1是实施本申请实施例提供的内存管理方法的一场景示意图,如图1所示,内存管理方法可以应用于RDMA数据传输的内存管理场景,服务器可以与客户端建立连接,服务器与客户端之间可以进行数据交互,该客户端可以是集成在台式电脑、笔记本电脑、手机以及智能电视等终端上的客户端,该服务器可以是RDMA服务端。具体地,服务器可以配置内存池,客户端可以向服务器发送内存分配请求,然后服务器可以为客户端分配内存,并向客户端发送已分配的内存的内存信息,此时客户端可以基于内存信息创建用于记录内存状态的循环队列。客户端可以向服务器发送待处理的数据,并更新循环队列中的内存状态,例如,更新待处理的数据占用循环队列中内存的占用状态。服务器可以对待处理的数据进行处理,在对数据处理完成后,服务器向客户端发送预设报文,此时客户端可以基于预设报文更新循环队列中内存的空闲状态。使得客户端可以监控已分配的内存的内存状态,并在数据交互发生变化时,及时更新队列中的内存状态,以便对内存状态进行有效监控,而不需要频繁向服务器申请内存,提高了数据传输的效率,以及提高了对地址管理的便捷性。
请参阅图2,图2是本申请一实施例提供的内存管理方法的流程示意图。该内存管理方法应用于客户端,该内存管理方法可以包括但不限于步骤S101至步骤S103等,具体可以如下:
S101、获取服务器分配给客户端的内存对应的内存信息。
在一实施例中,内存信息可以包括内存地址、内存大小和主键信息(也可以称为key信息)等。客户端可以被动获取服务器分配给客户端的内存对应的内存信息,例如,服务器在定时分配或自动分配给客户端的内存后,可以向客户端发送已分配的内存对应的内存信息。
为了提高内存信息获取的灵活性,客户端可以主动获取服务器分配给客户端的内存对应的内存信息,在一实施例中,获取服务器分配给客户端的内存对应的内存信息可以包括:向服务器发送内存分配请求;接收服务器基于内存分配请求返回的内存信息。
例如,当需要服务器分配内存时,客户端可以向服务器发送内存分配请求,该内存分配请求中可以携带有所需内存大小等信息,例如客户端可以向服务器申请分配内存大小为R字节的内存。其中,若客户端待发送数据为L字节,则实际发送请求的内存大小可以为:R=min(ceil(L/m),r),其中,m表示每个内存块大小为m字节,r表示分配给客户端的内存中当前空闲内存的数量,ceil表示向上取整函数。此时,服务器在接收到客户端发送的内存分配请求后,可以基于内存分配请求为客户端分配内存,然后将已分配的内存的内存信息发送给客户端,客户端可以接收服务器基于内存分配请求返回的内存信息。
在一实施例中,向服务器发送内存分配请求可以包括:当客户端启动时,向服务器发送内存分配请求;或者,当客户端检测到服务器分配的内存不足时,向服务器发送内存分配请求。
为了提高内存分配请求发送的及时性,客户端可以在完成启动时,向服务器发送内存分配请求。或者,为了提高内存分配请求发送的灵活性,客户端可以基于待发送的数据,确定服务器已分配的内存是否充足,例如,客户端可以根据自身维护的内存状态确定空闲内存是否足够存储待发送的数据。当客户端检测到服务器分配的内存不足时,向服务器发送内存分配请求,当客户端检测到服务器分配的内存充足时,即使当前需要向服务器发送数据,此时也不需要向服务器发送内存分配请求。
需要说明的是,服务器可以预先配置内存池,并生成配置信息,该配置信息可以包括内存池中内存块数量(即内存池容量)、内存块大小(即单位字节)、空闲内存等待时长阈值(Max Available Time,MAT)、以及空闲内存累积阈值(Max Available Segments,MAS)等,该配置信息可以写入配置文件,该配置文件中可以指定RDMA内存池容量、内存块大小、MAT、MAS、以及同步方式等,该同步方式可以是服务器将内存状态同步给客户端的方式,例如,当内存块的空闲内存等待时长大于MAT时,将携带内存状态的预设报文(例如syn报文)发送给客户端,以便客户端基于接收到的预设报文更新自身维护的内存状态。例如,服务器可以配置容量为N的内存池,该内存池包括多个内存块,每个内存块为m字节,所有内存块可以分别注册到RNIC网卡。服务器在接收到客户端发送的携带所需内存大小为R字节的内存分配请求后,可以基于内存分配请求为客户端分配内存池中的内存,例如,服务器可以为客户端分配n个连续内存块,满足条件“m*n>=R”,将n个内存块的地址、内存大小、以及key信息等内存信息返回给客户端。
S102、基于内存信息创建用于记录内存状态的队列。
客户端在接收到内存信息后,可以基于内存块的地址、内存大小、以及key信息等内存信息创建用于记录内存状态的队列,该队列的类型和形式等可以根据实际需要进行灵活设置,例如,队列可以是列表的形式,该队列可以是循环队列,以实现基于循环队列的RDMA内存同步,用于记录内存状态的队列可以根据内存的变化及时更新内存状态,实现了将服务器的内存状态映射到本地,客户端能够及时感知内存占用状态或空闲状态,针对RDMA传输过程的内存同步。
例如,当服务器为客户端分配n块内存块时,客户端可以建立基于0至n-1的内存块构成的循环队列,循环队列的表长为n,基于循环队列维护服务器的内存状态,当循环队列中的所有内存块均处于空闲状态时,可以使用head指针和tail指针初始位置0,即head指针指向为0的内存块,tail指针指向为n-1的内存块,[tail]--->[head]之间内存状态为占用状态,[head]--->[tail]之间内存状态为空闲状态。例如,如图4所示,内存块0和内存块1处于占用状态,内存块2至内存块n-1处于空闲状态时,tail指针指向内存块0,head指针指向内存块2。
S103、当客户端与服务器之间的数据交互发生变化时,更新队列中的内存状态。
其中,客户端与服务器之间的数据交互发生变化可以包括客户端向服务器发送待处理的数据、以及服务器完成对数据(该数据为客户端向服务器发送的待处理的数据)的处理等,内存状态可以包括占用状态和空闲状态等,例如,当客户端需要向服务器发送数据时,若客户端检测到循环队列有足够空闲内存,则可以立即执行RDMA指令,此时需要消耗空闲内存,客户端更新循环队列中内存的占用状态,若客户端接收到服务器完成数据处理后返回syn报文,则客户端更新循环队列中内存的空闲状态,即增加空闲内存。解决了RDMA数据传输过程存在频繁申请内存的问题,优化了高速网络传输数据的速度。
参照图3,在一实施例中,在步骤S103可以包括但不限于步骤S1031至步骤S1033等,具体可以如下:
步骤S1031、向服务器发送待处理的数据,并更新数据占用队列中内存的占用状态。
步骤S1032、接收服务器对数据处理完成后返回的预设报文。
步骤S1033、基于预设报文更新队列中内存的空闲状态。
为了提高对内存状态更新的准确性和及时性,客户端可以向服务器发送待处理的数据,由于服务器接收到待处理的数据后,需要消耗内存缓存待处理的数据,因此服务器分配给客户端的内存会被占用部分或全部,此时客户端可以更新数据占用队列中内存的占用状态。
在一实施例中,队列为多个内存块构成的循环队列,更新数据占用队列中内存的占用状态可以包括:确定数据占用循环队列中内存的大小;根据循环队列中每个内存块大小和数据占用循环队列中内存的大小,确定数据占用循环队列中内存块区间;设置第一指针指向内存块区间的首部内存块,以指示数据占用循环队列中内存的占用状态。
以队列为包括多个内存块构成的循环队列为例,客户端可以确定待处理的数据需要占用循环队列中内存的大小,例如,如图4所示,待处理的数据需要占用内存的大小为2*m字节,循环队列中每个内存块的大小均为m字节,此时,可以根据循环队列中每个内存块大小m字节和待处理的数据占用循环队列中内存的大小2*m字节,确定待处理的数据占用循环队列中内存块区间为内存块0至内存块1,设置第一指针(例如tail指针)指向内存块区间的首部内存块,即tail指针指向内存块0,以指示数据占用循环队列中内存的占用状态,head指针指向内存块3,[tail]--->[head]之间的内存块0和内存块1的内存状态为占用状态,[head]--->[tail]之间的内存块3至内存块n-1的内存状态为空闲状态。后续,客户端继续向服务端端写入x*m字节的数据时,可以控制head指针可以向前滑动x个内存块。
服务器在接收到客户端发送的待处理的数据后,可以对待处理的数据逐一进行处理,其处理方式可以根据实际应用场景进行灵活设置,具体内容在此处不做限定。服务器在对数据处理完成后,用于存储数据的内存块更新为空闲状态,可以向客户端返回预设报文,该预设报文可以根据实际需要进行灵活设置,例如,该预设报文可以是syn报文,该预设报文中可以携带有已完成对数据处理的消息、以及已释放的内存大小(即处于空闲状态的内存大小)等信息。此时,客户端可以接收服务器对数据处理完成后返回的预设报文,基于预设报文中携带的信息确定内存的空闲状态,并更新队列中内存的空闲状态。
需要说明的是,服务器向客户端返回预设报文时,可以是在数据处理完成后,立即向客户端返回预设报文,即内存状态变化时立即同步。或者,服务器可以判断空闲内存等待时长是否大于空闲内存等待时长阈值,当客户端对应的空闲内存等待时长大于空闲内存等待时长阈值时,向客户端返回预设报文,当客户端对应的空闲内存等待时长小于或等于空闲内存等待时长阈值时,继续等待,此时不需要向客户端返回预设报文。或者,服务器可以判断空闲内存是否大于空闲内存累积阈值,当客户端对应的空闲内存大于空闲内存累积阈值时,向客户端返回预设报文,当客户端对应的空闲内存小于或等于空闲内存累积阈值时,继续等待,此时不需要向客户端返回预设报文。
在一实施例中,队列为多个内存块构成的循环队列,基于预设报文更新循环队列中内存的空闲状态可以包括:基于预设报文确定服务器已处理的数据;根据循环队列中每个内存块大小和已处理的数据占用的内存大小,确定循环队列中释放的内存块区间;设置第二指针指向释放的内存块区间的首部内存块,以指示循环队列中内存的空闲状态。
以队列为包括多个内存块构成的循环队列为例,客户端可以基于接收到的预设报文确定服务器已处理的数据,例如,已处理的数据占用内存的大小为6*m字节,循环队列中每个内存块的大小均为m字节,此时可以根据循环队列中每个内存块大小为m字节和已处理的数据占用的内存大小为6*m字节,确定循环队列中释放的内存块区间为内存块2至内存块7。可以设置第二指针(例如head指针)指向释放的内存块区间的首部内存块,即head指针指向内存块3,以指示循环队列中内存的空闲状态。若head指针指向内存块0,[tail]--->[head]之间的内存块0和内存块1的内存状态为占用状态,[head]--->[tail]之间的内存块3至内存块n-1的内存状态为空闲状态。后续,客户端收到携带已释放t*m字节内存块的syn报文后,可以控制tail指针向前滑动t个内存块,以更新内存状态为空闲状态,指针到达边界后从0重新循环,以便基于循环队列的内存同步机制更新内存状态。本申请实施例简化了RDMA单边数据传输操作,解决了现有RDMA单边操作需要多次申请内存的问题,只要循环队列中有空闲内存,客户端可以直接发起RDMA操作,不需要申请RDMA内存;服务端内存块空闲时,可以根据配置批量、或延时发送syn报文及时更新内存状态,使得单边操作的交互次数大为减少,显著提高数据传输效率,实现了真正意义上的单边操作。
需要说明的是,客户端可以向一个或多个服务器申请内存,当客户端可以向多个服务器申请内存时,客户端可以向各个服务器分别发送内存分配请求,各个服务器可以为客户端分配内存,并向客户端发送已分配的内存的内存信息,此时客户端可以基于各个服务器对应的内存信息分别创建循环队列,各个循环队列分别记录各个服务器对应的内存状态。客户端可以向各个服务器发送待处理的数据,并更新对应服务器的循环队列中的内存状态,例如,更新待处理的数据占用循环队列中内存的占用状态。各个服务器可以对待处理的数据进行处理,在对数据处理完成后,各个服务器向客户端发送预设报文,此时客户端可以基于预设报文中携带的服务器标识、以及空闲内存大小等信息更新循环队列中内存的空闲状态。例如,客户端A可以向服务器B、服务器C、以及服务器D分别申请长度为N的RDMA内存池,并创建服务器B对应的循环队列1、服务器C对应的循环队列2、以及服务器D对应的循环队列3等3个循环队列。客户端A需要向服务器B、服务器C、以及服务器D同步长度为L的数据,计算该数据占用的内存大小x为:x=min(ceil(L/m),min()),其中min()为循环队列空闲窗口最小值,ceil表示向上取整函数,m表示每个内存块的大小。客户端A依次向服务器B、服务器C、以及服务器D写入x字节数据,此时各个服务器对应的循环队列中head指针向前滑动x/m个内存块。各个服务器收到数据写入并对数据进行处理后,根据配置向客户端A返回syn报文,客户端A收到syn报文,各个服务器对应的循环队列中的tail指针前移更新内存状态,其中,不同服务器B、服务器C、以及服务器D的tail指针可以不同步。客户端A为各个服务器计算syn报文累计值ACKi,以根据raft协议的多数原则判断事务完成。本申请实施例的内存管理方法应用到raft同步场景,不仅可以减少客户端A与各个服务器的内存同步次数,而且syn报文可以作为raft响应消息,提高raft协议同步效率。
本申请实施例客户端可以获取服务器分配给客户端的内存对应的内存信息,基于内存信息创建用于记录内存状态的队列,当客户端与服务器之间的数据交互发生变化时,更新队列中的内存状态。使得客户端可以监控已分配的内存的内存状态,并在数据交互发生变化时,及时更新队列中的内存状态,以便对内存状态进行有效监控,而不需要频繁向服务器申请内存,提高了数据传输的效率,以及提高了对地址管理的便捷性。
请参阅图5,图5是本申请一实施例提供的内存管理方法的流程示意图。该内存管理方法应用于服务器,该内存管理方法可以包括但不限于步骤S201至步骤S203等,具体可以如下:
S201、接收客户端发送的内存分配请求。
在一实施例中,接收客户端发送的内存分配请求之前,内存管理方法还可以包括:配置内存池,生成配置信息。
在一实施例中,配置信息可以包括内存池中内存块数量、内存块大小、空闲内存等待时长阈值、以及空闲内存累积阈值。
在一实施例中,基于内存分配请求为客户端分配内存,并将分配的内存的内存信息发送给客户端可以包括:基于内存分配请求为客户端分配内存池中的内存;从配置信息中提取分配的内存的内存信息,将内存信息发送给客户端。
其中,内存信息可以包括内存地址、内存大小和主键信息(也可以称为key信息)等。
服务器可以预先配置内存池,并生成配置信息,该配置信息可以包括内存池中内存块数量(即内存池容量)、内存块大小(即单位字节)、空闲内存等待时长阈值MAT、以及空闲内存累积阈值MAS等,该配置信息可以写入配置文件,该配置文件中可以指定RDMA内存池容量、内存块大小、MAT、MAS、以及同步方式等,该同步方式可以是服务器将内存状态同步给客户端的方式,例如,当内存块的空闲内存等待时长大于MAT时,将携带内存状态的预设报文(例如syn报文)发送给客户端,以便客户端基于接收到的预设报文更新自身维护的内存状态。例如,服务器可以配置容量为N的内存池,该内存池包括多个内存块,每个内存块为m字节,所有内存块可以分别注册到RNIC网卡。服务器在接收到客户端发送的携带所需内存大小为R字节的内存分配请求后,可以基于内存分配请求为客户端分配内存池中的内存,例如,服务器可以为客户端分配n个连续内存块,满足条件“m*n>=R”,将n个内存块的地址、内存大小、以及key信息等内存信息返回给客户端。
需要说明的是,客户端可以在完成启动时,向服务器发送内存分配请求。或者,为了提高内存分配请求发送的灵活性,客户端可以基于待发送的数据,确定服务器已分配的内存是否充足,例如,客户端可以根据自身维护的内存状态确定空闲内存是否足够存储待发送的数据。当客户端检测到服务器分配的内存不足时,向服务器发送内存分配请求,当客户端检测到服务器分配的内存充足时,即使当前需要向服务器发送数据,此时也不需要向服务器发送内存分配请求。
S202、基于内存分配请求为客户端分配内存,并将分配的内存的内存信息发送给客户端,内存信息用于指示客户端创建用于记录内存状态的队列。
例如,当需要服务器分配内存时,客户端可以向服务器发送内存分配请求,该内存分配请求中可以携带有所需内存大小等信息,例如客户端可以向服务器申请分配内存大小为R字节的内存。其中,若客户端待发送数据为L字节,则实际发送请求的内存大小可以为:R=min(ceil(L/m),r),其中,m表示每个内存块大小为m字节,r表示分配给客户端的内存中当前空闲内存的数量,ceil表示向上取整函数。此时,服务器在接收到客户端发送的内存分配请求后,可以基于内存分配请求为客户端分配内存,然后将已分配的内存的内存信息发送给客户端,客户端可以接收服务器基于内存分配请求返回的内存信息。
客户端在接收到内存信息后,可以基于内存块的地址、内存大小、以及key信息等内存信息创建用于记录内存状态的队列,该队列的类型和形式等可以根据实际需要进行灵活设置,例如,队列可以是列表的形式,该队列可以是循环队列,以实现基于循环队列的RDMA内存同步,用于记录内存状态的队列可以根据内存的变化及时更新内存状态,实现了将服务器的内存状态映射到本地,客户端能够及时感知内存占用状态或空闲状态,针对RDMA传输过程的内存同步。
例如,当服务器为客户端分配n块内存块时,客户端可以建立基于0至n-1的内存块构成的循环队列,循环队列的表长为n,基于循环队列维护服务器的内存状态,当循环队列中的所有内存块均处于空闲状态时,可以使用head指针和tail指针初始位置0,即head指针指向为0的内存块,tail指针指向为n-1的内存块,[tail]--->[head]之间内存状态为占用状态,[head]--->[tail]之间内存状态为空闲状态。例如,如图4所示,内存块0和内存块1处于占用状态,内存块2至内存块n-1处于空闲状态时,tail指针指向内存块0,head指针指向内存块2。
S203、接收客户端发送的待处理的数据,对待处理的数据进行处理。
S204、在对数据处理完成后,向客户端返回预设报文,预设报文用于指示客户端更新队列中内存的空闲状态。
由于服务器接收到待处理的数据后,需要消耗内存缓存待处理的数据,因此服务器分配给客户端的内存会被占用部分或全部,此时客户端可以更新数据占用队列中内存的占用状态。
服务器在接收到客户端发送的待处理的数据后,可以对待处理的数据逐一进行处理,其处理方式可以根据实际应用场景进行灵活设置,具体内容在此处不做限定。服务器在对数据处理完成后,用于存储数据的内存块更新为空闲状态,可以向客户端返回预设报文,该预设报文可以根据实际需要进行灵活设置,例如,该预设报文可以是syn报文,该预设报文中可以携带有已完成对数据处理的消息、以及已释放的内存大小(即处于空闲状态的内存大小)等信息。此时,客户端可以接收服务器对数据处理完成后返回的预设报文,基于预设报文中携带的信息确定内存的空闲状态,并更新队列中内存的空闲状态。
在一实施例中,向客户端返回预设报文可以包括:当客户端对应的空闲内存等待时长大于空闲内存等待时长阈值时,向客户端返回预设报文;或者,当客户端对应的空闲内存大于空闲内存累积阈值时,向客户端返回预设报文。
服务器向客户端返回预设报文时,可以是在数据处理完成后,立即向客户端返回预设报文,即内存状态变化时立即同步。或者,服务器可以判断空闲内存等待时长是否大于空闲内存等待时长阈值,当客户端对应的空闲内存等待时长大于空闲内存等待时长阈值时,向客户端返回预设报文,当客户端对应的空闲内存等待时长小于或等于空闲内存等待时长阈值时,继续等待,此时不需要向客户端返回预设报文。或者,服务器可以判断空闲内存是否大于空闲内存累积阈值,当客户端对应的空闲内存大于空闲内存累积阈值时,向客户端返回预设报文,当客户端对应的空闲内存小于或等于空闲内存累积阈值时,继续等待,此时不需要向客户端返回预设报文。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见上文针对内存管理方法的详细描述,此处不再赘述。
本申请实施例服务器可以接收客户端发送的内存分配请求,基于内存分配请求为客户端分配内存,并将分配的内存的内存信息发送给客户端,内存信息用于指示客户端创建用于记录内存状态的队列。接收客户端发送的待处理的数据,对待处理的数据进行处理,在对数据处理完成后,向客户端返回预设报文,预设报文用于指示客户端更新队列中内存的空闲状态。该方案可以将内存信息发送给客户端,以便客户端基于内存信息创建用于记录内存状态的队列,对已分配的内存的内存状态行有效监控,以及在对数据处理完成后向客户端返回预设报文,以便客户端基于预设报文更新队列中内存的空闲状态,而不需要频繁申请内存,减少了服务器与客户端之间的交互次数,提高了数据传输的效率,以及提高了对地址管理的便捷性。
请参阅图6,图6是本申请一实施例提供的内存管理系统中客户端和服务器交互的流程示意图。具体可以如下:
S10、服务器配置内存池。
服务器可以配置内存池,生成配置信息。
S11、客户端向服务器发送内存分配请求。
当客户端启动时,可以向服务器发送内存分配请求;或者,当客户端检测到服务器分配的内存不足时,可以向服务器发送内存分配请求。
S12、服务器基于接收到的内存分配请求为客户端分配内存,并向客户端发送内存信息。
服务器向客户端发送分配给客户端的内存对应的内存信息,该内存信息可以包括内存地址、内存大小和主键信息等。该内存信息用于指示客户端创建用于记录内存状态的队列。
S13、客户端基于接收到的内存信息创建循环队列。
客户端接收服务器基于内存分配请求返回的内存信息,基于内存信息创建用于记录内存状态的队列,当客户端与服务器之间的数据交互发生变化时,可以更新队列中的内存状态。
S14、客户端向服务器发送待处理的数据。
S15、客户端更新循环队列中的内存状态。
客户端可以更新数据占用循环队列中内存的占用状态。需要说明的是,步骤S14和步骤S15之间的执行顺序,可以是先执行步骤S14,后执行步骤S15;或者可以是先执行步骤S15,后执行步骤S14;或者可以是步骤S14和步骤S15同时执行。
S16、服务器对数据进行处理。
服务器在接收到客户端发送的待处理的数据后,可以对待处理的数据进行处理。
S17、在对数据处理完成后,服务器向客户端发送预设报文。
在对数据处理完成后,服务器向客户端返回预设报文,预设报文用于指示客户端更新队列中内存的空闲状态。
例如,当客户端对应的空闲内存等待时长大于空闲内存等待时长阈值时,向客户端返回预设报文;或者,当客户端对应的空闲内存大于空闲内存累积阈值时,向客户端返回预设报文。
S18、客户端更新循环队列中的内存状态。,
客户端接收服务器对数据处理完成后返回的预设报文,基于预设报文更新队列中内存的空闲状态。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见上文针对内存管理方法的详细描述,此处不再赘述。
请参阅图7,图7是本申请实施例提供的一种客户端的结构示意性框图。
如图7所示,该客户端300可以包括通过系统总线301连接的处理器302、存储器303和通信接口304,其中,存储器303可以包括非易失性计算机可读存储介质和内存储器。
非易失性计算机可读存储介质可存储计算机程序。该计算机程序包括程序指令,该程序指令被执行时,可使得处理器执行任意一种内存管理方法。
处理器302用于提供计算和控制能力,支撑整个客户端的运行。
存储器303为非易失性计算机可读存储介质中的计算机程序的运行提供环境,该计算机程序被处理器302执行时,可使得处理器302执行任意一种内存管理方法。
该通信接口304用于通信。本领域技术人员可以理解,图7中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的客户端300的限定,具体的客户端300可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
应当理解的是,该总线301比如为I2C(Inter-integrated Circuit)总线,存储器303可以是Flash芯片、只读存储器(ROM,Read-Only Memory)磁盘、光盘、U盘或移动硬盘等,处理器302可以是中央处理单元(Central Processing Unit,CPU),该处理器302还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
其中,在一实施例中,处理器302用于运行存储在存储器303中的计算机程序,以执行如下步骤:
获取服务器分配给客户端的内存对应的内存信息,基于内存信息创建用于记录内存状态的队列;当客户端与服务器之间的数据交互发生变化时,更新队列中的内存状态。
在一实施例中,在更新队列中的内存状态时,处理器302还执行:向服务器发送待处理的数据,并更新数据占用队列中内存的占用状态;接收服务器对数据处理完成后返回的预设报文;基于预设报文更新队列中内存的空闲状态。
在一实施例中,队列为多个内存块构成的循环队列,在更新数据占用队列中内存的占用状态时,处理器302还执行:确定数据占用循环队列中内存的大小;根据循环队列中每个内存块大小和数据占用循环队列中内存的大小,确定数据占用循环队列中内存块区间;设置第一指针指向内存块区间的首部内存块,以指示数据占用循环队列中内存的占用状态。
在一实施例中,队列为多个内存块构成的循环队列,在基于预设报文更新循环队列中内存的空闲状态时,处理器302还执行:基于预设报文确定服务器已处理的数据;根据循环队列中每个内存块大小和已处理的数据占用的内存大小,确定循环队列中释放的内存块区间;设置第二指针指向释放的内存块区间的首部内存块,以指示循环队列中内存的空闲状态。
在一实施例中,内存信息包括内存地址、内存大小和主键信息。
在一实施例中,在获取服务器分配给客户端的内存对应的内存信息时,处理器302还执行:向服务器发送内存分配请求;接收服务器基于内存分配请求返回的内存信息。
在一实施例中,在向服务器发送内存分配请求时,处理器302还执行:当客户端启动时,向服务器发送内存分配请求;或者,当客户端检测到服务器分配的内存不足时,向服务器发送内存分配请求。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见上文针对内存管理方法的详细描述,此处不再赘述。
请参阅图8,图8是本申请实施例提供的一种服务器的结构示意性框图。
如图8所示,该服务器400可以包括通过系统总线401连接的处理器402、存储器403和通信接口404,其中,存储器403可以包括非易失性计算机可读存储介质和内存储器。
非易失性计算机可读存储介质可存储计算机程序。该计算机程序包括程序指令,该程序指令被执行时,可使得处理器执行任意一种内存管理方法。
处理器402用于提供计算和控制能力,支撑整个服务器的运行。
存储器403为非易失性计算机可读存储介质中的计算机程序的运行提供环境,该计算机程序被处理器402执行时,可使得处理器402执行任意一种内存管理方法。
该通信接口404用于通信。本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的服务器400的限定,具体的服务器400可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
应当理解的是,该总线401比如为I2C(Inter-integrated Circuit)总线,存储器403可以是Flash芯片、只读存储器(ROM,Read-Only Memory)磁盘、光盘、U盘或移动硬盘等,处理器402可以是中央处理单元(Central Processing Unit,CPU),该处理器402还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
其中,在一实施例中,处理器402用于运行存储在存储器403中的计算机程序,以执行如下步骤:
接收客户端发送的内存分配请求,基于内存分配请求为客户端分配内存,并将分配的内存的内存信息发送给客户端,内存信息用于指示客户端创建用于记录内存状态的队列;接收客户端发送的待处理的数据,对待处理的数据进行处理,在对数据处理完成后,向客户端返回预设报文,预设报文用于指示客户端更新队列中内存的空闲状态。
在一实施例中,在接收客户端发送的内存分配请求之前,处理器402还执行:配置内存池,生成配置信息。
在一实施例中,在基于内存分配请求为客户端分配内存,并将分配的内存的内存信息发送给客户端时,处理器402还执行:基于内存分配请求为客户端分配内存池中的内存;从配置信息中提取分配的内存的内存信息,将内存信息发送给客户端。
在一实施例中,配置信息包括内存池中内存块数量、内存块大小、空闲内存等待时长阈值、以及空闲内存累积阈值。
在一实施例中,在向客户端返回预设报文时,处理器402还执行:当客户端对应的空闲内存等待时长大于空闲内存等待时长阈值时,向客户端返回预设报文;或者,当客户端对应的空闲内存大于空闲内存累积阈值时,向客户端返回预设报文。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见上文针对内存管理方法的详细描述,此处不再赘述。
本申请的实施例中还提供一种存储介质,该存储介质为计算机可读存储介质,,计算机可读存储介质存储有计算机程序,该计算机程序中包括程序指令,处理器执行程序指令,实现本申请实施例提供的任一项内存管理方法。以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
其中,计算机可读存储介质可以是前述实施例的移动终端的内部存储单元,例如移动终端的硬盘或内存。计算机可读存储介质也可以是移动终端的外部存储设备,例如移动终端上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)等。
由于该计算机可读存储介质中所存储的计算机程序,可以执行本申请实施例所提供的任一种内存管理方法,因此,可以实现本申请实施例所提供的任一种内存管理方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。以上所述,仅是本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (15)

1.一种内存管理方法,其特征在于,所述内存管理方法应用于客户端,所述内存管理方法包括:
获取服务器分配给所述客户端的内存对应的内存信息;
基于所述内存信息创建用于记录内存状态的队列;
当所述客户端与所述服务器之间的数据交互发生变化时,更新所述队列中的内存状态。
2.根据权利要求1所述的内存管理方法,其特征在于,所述当所述客户端与所述服务器之间的数据交互发生变化时,更新所述队列中的内存状态包括:
向服务器发送待处理的数据,并更新所述数据占用所述队列中内存的占用状态;
接收所述服务器对所述数据处理完成后返回的预设报文;
基于所述预设报文更新所述队列中内存的空闲状态。
3.根据权利要求2所述的内存管理方法,其特征在于,所述队列为多个内存块构成的循环队列,所述更新所述数据占用所述队列中内存的占用状态包括:
确定所述数据占用所述循环队列中内存的大小;
根据所述循环队列中每个内存块大小和所述数据占用所述循环队列中内存的大小,确定所述数据占用所述循环队列中内存块区间;
设置第一指针指向所述内存块区间的首部内存块,以指示所述数据占用所述循环队列中内存的占用状态。
4.根据权利要求2所述的内存管理方法,其特征在于,所述队列为多个内存块构成的循环队列,所述基于所述预设报文更新所述循环队列中内存的空闲状态包括:
基于所述预设报文确定所述服务器已处理的数据;
根据所述循环队列中每个内存块大小和所述已处理的数据占用的内存大小,确定所述循环队列中释放的内存块区间;
设置第二指针指向所述释放的内存块区间的首部内存块,以指示所述循环队列中内存的空闲状态。
5.根据权利要求1所述的内存管理方法,其特征在于,所述内存信息包括内存地址、内存大小和主键信息。
6.根据权利要求1至5任一项所述的内存管理方法,其特征在于,所述获取服务器分配给所述客户端的内存对应的内存信息包括:
向所述服务器发送内存分配请求;
接收所述服务器基于所述内存分配请求返回的所述内存信息。
7.根据权利要求6所述的内存管理方法,其特征在于,所述向所述服务器发送内存分配请求包括:
当所述客户端启动时,向所述服务器发送内存分配请求;或者,
当所述客户端检测到所述服务器分配的内存不足时,向所述服务器发送内存分配请求。
8.一种内存管理方法,其特征在于,所述内存管理方法应用于服务器,所述内存管理方法包括:
接收客户端发送的内存分配请求;
基于所述内存分配请求为所述客户端分配内存,并将分配的所述内存的内存信息发送给所述客户端,所述内存信息用于指示所述客户端创建用于记录内存状态的队列;
接收所述客户端发送的待处理的数据,对所述待处理的数据进行处理;
在对所述数据处理完成后,向所述客户端返回预设报文,所述预设报文用于指示所述客户端更新所述队列中内存的空闲状态。
9.根据权利要求8所述的内存管理方法,其特征在于,所述接收客户端发送的内存分配请求之前,所述内存管理方法还包括:
配置内存池,生成配置信息;
所述基于所述内存分配请求为所述客户端分配内存,并将分配的所述内存的内存信息发送给所述客户端包括:
基于所述内存分配请求为所述客户端分配所述内存池中的内存;
从所述配置信息中提取分配的所述内存的内存信息,将所述内存信息发送给所述客户端。
10.根据权利要求9所述的内存管理方法,其特征在于,所述配置信息包括内存池中内存块数量、内存块大小、空闲内存等待时长阈值、以及空闲内存累积阈值。
11.根据权利要求10所述的内存管理方法,其特征在于,所述向所述客户端返回预设报文包括:
当所述客户端对应的空闲内存等待时长大于所述空闲内存等待时长阈值时,向所述客户端返回预设报文;或者,
当所述客户端对应的空闲内存大于所述空闲内存累积阈值时,向所述客户端返回预设报文。
12.一种客户端,其特征在于,包括处理器和存储器,所述存储器中存储有计算机程序,所述处理器调用所述存储器中的计算机程序时执行如权利要求1至7任一项所述的内存管理方法。
13.一种服务器,其特征在于,包括处理器和存储器,所述存储器中存储有计算机程序,所述处理器调用所述存储器中的计算机程序时执行如权利要求8至11任一项所述的内存管理方法。
14.一种内存管理系统,其特征在于,包括客户端和服务器,所述客户端为权利要求12所述的客户端,所述服务器为权利要求13所述的服务器。
15.一种存储介质,用于计算机可读存储,其特征在于,所述存储介质用于存储计算机程序,所述计算机程序被处理器加载以执行权利要求1至7任一项所述的内存管理方法,或者所述计算机程序被处理器加载以执行权利要求8至11任一项所述的内存管理方法。
CN202010568853.0A 2020-06-19 2020-06-19 内存管理方法、系统、客户端、服务器及存储介质 Pending CN113485822A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202010568853.0A CN113485822A (zh) 2020-06-19 2020-06-19 内存管理方法、系统、客户端、服务器及存储介质
PCT/CN2021/100120 WO2021254330A1 (zh) 2020-06-19 2021-06-15 内存管理方法、系统、客户端、服务器及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010568853.0A CN113485822A (zh) 2020-06-19 2020-06-19 内存管理方法、系统、客户端、服务器及存储介质

Publications (1)

Publication Number Publication Date
CN113485822A true CN113485822A (zh) 2021-10-08

Family

ID=77932643

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010568853.0A Pending CN113485822A (zh) 2020-06-19 2020-06-19 内存管理方法、系统、客户端、服务器及存储介质

Country Status (2)

Country Link
CN (1) CN113485822A (zh)
WO (1) WO2021254330A1 (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113986141A (zh) * 2021-11-08 2022-01-28 北京奇艺世纪科技有限公司 服务端模型更新方法、系统、电子设备及可读存储介质
CN114253733A (zh) * 2021-12-24 2022-03-29 苏州浪潮智能科技有限公司 一种内存管理方法、装置、计算机设备和存储介质
CN115174484A (zh) * 2022-06-16 2022-10-11 阿里巴巴(中国)有限公司 基于rdma的数据传输方法、装置、设备及存储介质
CN117093508A (zh) * 2023-10-17 2023-11-21 苏州元脑智能科技有限公司 一种内存资源管理方法、装置、电子设备及存储介质
CN117215995A (zh) * 2023-11-08 2023-12-12 苏州元脑智能科技有限公司 远程直接内存访问方法、分布式存储系统及电子设备
CN117251292A (zh) * 2023-11-13 2023-12-19 山东泽赢信息科技服务有限公司 内存管理方法、系统、终端及存储介质

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114297107B (zh) * 2021-12-29 2024-05-24 成都智明达电子股份有限公司 一种标签Tag的管理方法、设备及介质
CN114363428B (zh) * 2022-01-06 2023-10-17 齐鲁空天信息研究院 基于socket的数据传递方法
CN114490076A (zh) * 2022-02-07 2022-05-13 北京高途云集教育科技有限公司 内存分配方法、装置、计算机设备和存储介质
CN114968890A (zh) * 2022-05-27 2022-08-30 中国第一汽车股份有限公司 一种同步通信控制方法、装置、系统及存储介质
CN116777009B (zh) * 2023-08-24 2023-10-20 之江实验室 基于内存池的智能计算系统架构和并行训练方法

Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003233531A (ja) * 2002-02-12 2003-08-22 Seiko Epson Corp メモリ管理装置、プロキシサーバ、メモリ管理プログラム及びサーバ用プログラム、並びにメモリ管理方法
CN1979443A (zh) * 2005-11-30 2007-06-13 英业达股份有限公司 计算机平台内存状态数据主机端自动显示方法及系统
WO2007109920A1 (fr) * 2006-03-27 2007-10-04 Zte Corporation Procédé de construction et d'utilisation d'un pool de mémoire
CN101964821A (zh) * 2010-10-12 2011-02-02 北京中科院软件中心有限公司 远程终端运行环境的加载方法及系统
CN102123061A (zh) * 2011-03-28 2011-07-13 杭州电子科技大学 一种确定Web服务器性能的方法
CN102279810A (zh) * 2011-08-11 2011-12-14 浪潮(北京)电子信息产业有限公司 一种网络存储服务器及其缓存数据的方法
CN104965793A (zh) * 2014-09-26 2015-10-07 浙江大华技术股份有限公司 一种云存储数据节点装置
CN105224433A (zh) * 2014-06-23 2016-01-06 阿里巴巴集团控股有限公司 一种内存监控方法及服务器
CN105469173A (zh) * 2014-08-19 2016-04-06 西安慧泽知识产权运营管理有限公司 一种静态内存进行优化管理的方法
CN105978985A (zh) * 2016-06-07 2016-09-28 华中科技大学 一种用户态RPC over RDMA的内存管理方法
CN106537375A (zh) * 2014-06-26 2017-03-22 英特尔公司 具有本地高速缓存的内存缓存系统
CN106657365A (zh) * 2016-12-30 2017-05-10 清华大学 一种基于rdma的高并发数据传输方法
CN107124456A (zh) * 2017-04-27 2017-09-01 合肥城市云数据中心股份有限公司 基于分布内存队列的xmpp服务器内存消息中转系统及其中转方法
CN107305506A (zh) * 2016-04-20 2017-10-31 阿里巴巴集团控股有限公司 动态分配内存的方法、装置及系统
WO2018018896A1 (zh) * 2016-07-29 2018-02-01 华为技术有限公司 内存管理装置和方法
CN110209493A (zh) * 2019-04-11 2019-09-06 腾讯科技(深圳)有限公司 内存管理方法、装置、电子设备及存储介质

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103440202B (zh) * 2013-08-07 2016-12-28 华为技术有限公司 一种基于rdma的通信方法、系统及通信设备
CN104915302B (zh) * 2014-03-10 2018-07-03 华为技术有限公司 数据传输处理方法和数据传输器
US20160026605A1 (en) * 2014-07-28 2016-01-28 Emulex Corporation Registrationless transmit onload rdma
CN108268208B (zh) * 2016-12-30 2020-01-17 清华大学 一种基于rdma的分布式内存文件系统
CN106953797B (zh) * 2017-04-05 2020-05-26 苏州浪潮智能科技有限公司 一种基于动态连接的rdma数据传输的方法与装置

Patent Citations (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003233531A (ja) * 2002-02-12 2003-08-22 Seiko Epson Corp メモリ管理装置、プロキシサーバ、メモリ管理プログラム及びサーバ用プログラム、並びにメモリ管理方法
CN1979443A (zh) * 2005-11-30 2007-06-13 英业达股份有限公司 计算机平台内存状态数据主机端自动显示方法及系统
WO2007109920A1 (fr) * 2006-03-27 2007-10-04 Zte Corporation Procédé de construction et d'utilisation d'un pool de mémoire
CN101964821A (zh) * 2010-10-12 2011-02-02 北京中科院软件中心有限公司 远程终端运行环境的加载方法及系统
CN102123061A (zh) * 2011-03-28 2011-07-13 杭州电子科技大学 一种确定Web服务器性能的方法
CN102279810A (zh) * 2011-08-11 2011-12-14 浪潮(北京)电子信息产业有限公司 一种网络存储服务器及其缓存数据的方法
CN105224433A (zh) * 2014-06-23 2016-01-06 阿里巴巴集团控股有限公司 一种内存监控方法及服务器
CN106537375A (zh) * 2014-06-26 2017-03-22 英特尔公司 具有本地高速缓存的内存缓存系统
CN105469173A (zh) * 2014-08-19 2016-04-06 西安慧泽知识产权运营管理有限公司 一种静态内存进行优化管理的方法
CN104965793A (zh) * 2014-09-26 2015-10-07 浙江大华技术股份有限公司 一种云存储数据节点装置
CN107305506A (zh) * 2016-04-20 2017-10-31 阿里巴巴集团控股有限公司 动态分配内存的方法、装置及系统
CN105978985A (zh) * 2016-06-07 2016-09-28 华中科技大学 一种用户态RPC over RDMA的内存管理方法
WO2018018896A1 (zh) * 2016-07-29 2018-02-01 华为技术有限公司 内存管理装置和方法
CN106657365A (zh) * 2016-12-30 2017-05-10 清华大学 一种基于rdma的高并发数据传输方法
CN107124456A (zh) * 2017-04-27 2017-09-01 合肥城市云数据中心股份有限公司 基于分布内存队列的xmpp服务器内存消息中转系统及其中转方法
CN110209493A (zh) * 2019-04-11 2019-09-06 腾讯科技(深圳)有限公司 内存管理方法、装置、电子设备及存储介质

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113986141A (zh) * 2021-11-08 2022-01-28 北京奇艺世纪科技有限公司 服务端模型更新方法、系统、电子设备及可读存储介质
CN114253733A (zh) * 2021-12-24 2022-03-29 苏州浪潮智能科技有限公司 一种内存管理方法、装置、计算机设备和存储介质
CN114253733B (zh) * 2021-12-24 2024-01-12 苏州浪潮智能科技有限公司 一种内存管理方法、装置、计算机设备和存储介质
CN115174484A (zh) * 2022-06-16 2022-10-11 阿里巴巴(中国)有限公司 基于rdma的数据传输方法、装置、设备及存储介质
CN117093508A (zh) * 2023-10-17 2023-11-21 苏州元脑智能科技有限公司 一种内存资源管理方法、装置、电子设备及存储介质
CN117093508B (zh) * 2023-10-17 2024-01-23 苏州元脑智能科技有限公司 一种内存资源管理方法、装置、电子设备及存储介质
CN117215995A (zh) * 2023-11-08 2023-12-12 苏州元脑智能科技有限公司 远程直接内存访问方法、分布式存储系统及电子设备
CN117215995B (zh) * 2023-11-08 2024-02-06 苏州元脑智能科技有限公司 远程直接内存访问方法、分布式存储系统及电子设备
CN117251292A (zh) * 2023-11-13 2023-12-19 山东泽赢信息科技服务有限公司 内存管理方法、系统、终端及存储介质
CN117251292B (zh) * 2023-11-13 2024-03-29 山东泽赢信息科技服务有限公司 内存管理方法、系统、终端及存储介质

Also Published As

Publication number Publication date
WO2021254330A1 (zh) 2021-12-23

Similar Documents

Publication Publication Date Title
CN113485822A (zh) 内存管理方法、系统、客户端、服务器及存储介质
WO2017133623A1 (zh) 一种数据流处理方法、装置和系统
CN108023908B (zh) 数据更新方法、装置及系统
CN107846443B (zh) 网络中的分布式处理
CN111857992B (zh) 一种Radosgw模块中线程资源分配方法和装置
CN106330741B (zh) 一种报文传输方法和装置
WO2023103419A1 (zh) 基于消息队列的5g消息批量发送方法、装置及电子设备
CN111586140A (zh) 一种数据交互的方法及服务器
CN116774933A (zh) 存储设备的虚拟化处理方法、桥接设备、系统及介质
CN108304272B (zh) 一种数据io请求的处理方法及装置
CN112579515B (zh) 线程消息处理方法及相关产品
CN112822299B (zh) 基于rdma的数据传输方法、装置及电子设备
CN113157465B (zh) 基于指针链表的消息发送方法及装置
CN112822300B (zh) 基于rdma的数据传输方法、装置及电子设备
CN114500403A (zh) 一种数据处理方法、装置及计算机可读存储介质
CN112104679A (zh) 处理超文本传输协议请求的方法、装置、设备和介质
CN113691466B (zh) 一种数据的传输方法、智能网卡、计算设备及存储介质
CN110737530B (zh) 一种提升handle标识解析系统收包能力的方法
CN117041147A (zh) 智能网卡设备、主机设备和方法及系统
CN115189977B (zh) 一种基于axi协议的广播传输方法、系统及介质
CN115412502B (zh) 一种网络端口扩展和报文快速均衡处理方法
CN110912958A (zh) Http连接的处理方法、装置、设备和介质
CN110895517A (zh) 基于fpga的传输数据的方法、设备及系统
CN114726657A (zh) 中断管理和数据收发管理的方法、装置及智能网卡
CN109491948B (zh) 一种针对固态硬盘双端口的数据处理方法和装置

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