CN113238856B - 一种基于rdma的内存管理方法及装置 - Google Patents

一种基于rdma的内存管理方法及装置 Download PDF

Info

Publication number
CN113238856B
CN113238856B CN202110255646.4A CN202110255646A CN113238856B CN 113238856 B CN113238856 B CN 113238856B CN 202110255646 A CN202110255646 A CN 202110255646A CN 113238856 B CN113238856 B CN 113238856B
Authority
CN
China
Prior art keywords
memory
bitmap
data
state bitmap
memory space
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.)
Active
Application number
CN202110255646.4A
Other languages
English (en)
Other versions
CN113238856A (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.)
Shaanxi Hongju Network Information Technology Co.,Ltd.
Original Assignee
Orca Data Technology Xian 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 Orca Data Technology Xian Co Ltd filed Critical Orca Data Technology Xian Co Ltd
Priority to CN202110255646.4A priority Critical patent/CN113238856B/zh
Publication of CN113238856A publication Critical patent/CN113238856A/zh
Application granted granted Critical
Publication of CN113238856B publication Critical patent/CN113238856B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3037Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a memory, e.g. virtual memory, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/324Display of status information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • G06F15/173Interprocessor communication using an interconnection network, e.g. matrix, shuffle, pyramid, star, snowflake
    • G06F15/17306Intercommunication techniques
    • G06F15/17331Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]
    • 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/5022Mechanisms to release resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于RDMA的内存管理方法,获取用于注册给网卡的内存空间,并根据内存空间构建第一内存状态位图;根据第一内存状态位图,获取待存储数据在内存空间中的存储位置信息;当待存储数据存储至内存空间后,更新第一内存状态位图;当内存空间存满数据时,获取远端服务器的第二内存状态位图;比较第一内存状态位图和第二内存状态位图,根据比较结果更新第一内存状态位图;根据更新后的第一内存状态位图,删除内存空间中的存储数据;本发明通过内存状态位图来表示每个内存块的存储状态,并且还可以结合远端服务器的内存状态位图来释放本端内存空间,进而减少了内存的申请和释放次数,优化了内存使用机制,提升了服务器的运行效率。

Description

一种基于RDMA的内存管理方法及装置
技术领域
本发明属于通信技术领域,尤其涉及一种基于RDMA的内存管理方法及装置。
背景技术
RDMA是直接内存访问技术(Remote Direct MemoryAccess,RDMA),是为了降低通信数据传输过程中CPU消耗的一种方法。在传统的RDMA技术中,需要先申请内存并注册给高速网卡驱动,然后在申请的内存中写入数据和发送数据,最后销毁数据释放内存。
因此,现有的RDMA内存控制策略会频繁的进行申请和释放内存,这样会给内存管理单元(Memory Management Unit,MMU)带来很大的压力,从而增加服务器的负担。
发明内容
本发明的目的是提供一种基于RDMA的内存管理方法及装置,以减少在RDMA中申请和释放内存的次数,优化内存使用机制,提升服务器运行效率。
本发明采用以下技术方案:一种基于RDMA的内存管理方法,包括以下步骤:
获取用于注册给网卡的内存空间,并根据内存空间构建第一内存状态位图;
根据第一内存状态位图,获取待存储数据在内存空间中的存储位置信息;
当待存储数据存储至内存空间后,更新第一内存状态位图;
当内存空间存满数据时,获取远端服务器的第二内存状态位图;
比较第一内存状态位图和第二内存状态位图,根据比较结果更新第一内存状态位图;
根据更新后的第一内存状态位图,删除内存空间中的存储数据。
进一步地,获取用于注册给网卡的内存空间包括:
根据内存块的预定空间大小、以及预定的内存块数量,计算内存空间的大小;
根据内存空间的大小确定内存空间的起始地址和结束地址。
进一步地,根据内存空间构建内存状态位图包括:
根据内存块的数量构建与内存空间对应的内存状态位图;其中,内存状态位图的位数等于内存块的数量。
进一步地,构建内存状态位图后还包括:初始化内存状态位图。
进一步地,当网卡的事件线程收到事件后还包括:
判断事件是远端事件还是本端事件;
当事件为远端事件时,向远端事件对应的应用程序发送通知,通知的内容为应用程序在内存空间中获取数据;
检测到应用程序获取数据后,将第一内存状态位图中与该数据对应的位的状态更新为闲置。
进一步地,当事件为本端事件时,不进行操作。
进一步地,获取待存储数据在内存空间中的存储位置信息包括:
从第一内存状态位图的起始位开始搜索,直至找到第一个状态为闲置的位;
将该第一个状态为闲置的位对应的存储块的起始地址作为待存储数据在内存空间中的起始存储地址。
进一步地,比较第一内存状态位图和第二内存状态位图包括:
将第一内存状态位图与第二内存状态位图中序数相同的位的状态进行位与运算。
本发明的另一种技术方案:一种基于RDMA的内存管理装置,包括:
构建模块,用于获取用于注册给网卡的内存空间,并根据内存空间构建第一内存状态位图;
第一获取模块,用于根据第一内存状态位图,获取待存储数据在内存空间中的存储位置信息;
更新模块,用于当待存储数据存储至内存空间后,更新第一内存状态位图;
第二获取模块,用于当内存空间存满数据时,获取远端服务器的第二内存状态位图;
比较模块,用于比较第一内存状态位图和第二内存状态位图,根据比较结果更新第一内存状态位图;
删除模块,用于根据更新后的第一状态位图,删除内存空间中的存储数据。
本发明的另一种技术方案:一种基于RDMA的内存管理装置,包括存储器、处理器以及存储在存储器中并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述的一种基于RDMA的内存管理方法。
本发明的有益效果是:本发明将注册给网卡的内存空间分为若干个内存块,并根据内存块的数量构建对应的内存状态位图,进而通过内存状态位图来表示每个内存块的存储状态,并且还可以结合远端服务器的内存状态位图来释放本端内存空间,进而减少了内存的申请和释放次数,优化了内存使用机制,提升了服务器的运行效率。
附图说明
图1为本发明实施例一种基于RDMA的内存管理方法的流程图;
图2为本发明实施例中本端服务器和远端服务器的内存空间和内存状态位图的对应关系图;
图3为本发明实施例中内存空间和内存状态位图的对应关系图;
图4为本发明实施例中内存空间的分配流程图;
图5为本发明实施例中存储数据示意图;
图6为本发明实施例中内存空间闲置处理流程图;
图7为本发明实施例中进行位与操作的流程图;
图8为本发明另一实施例一种基于RDMA的内存管理装置的模块示意图;
图9为本发明另一实施例一种基于RDMA的内存管理装置的示意图。
具体实施方式
下面结合附图和具体实施方式对本发明进行详细说明。
本发明通过申请一个大内存作为内存池(即内存空间),通过内存状态位图管理内存空间的使用情况,然后,当数据发送使用完整内存空间后,同步内存状态位图信息,来判断内存块是否可以继续使用。
为了方便理解本发明,以下将本行业惯用术语及本发明的技术用语进行解释。
自主高速网卡提供了以下操作:
双边操作:包括send和recv,双边操作指的是发起端发送消息给接收端,是两边的cpu都需要操作,俩边的接口也都知道对端操作完成与否。Send操作就是发送数据给远端。Recv操作就是从远端接收数据。
单边操作:包括put和get,指的是消息通信时,只有一端CPU参与操作,只有操作端参与控制。当然发起端可以通过注册远端事件,当远端操作完成后,可以报消息给对端应用进行操作。Put操作就是将本地的数据,通过调用远端的网卡的DMA,直接将数据写入到对应的预先分配的内存中。Get操作就是将远端的数据,通过调用远端的网卡的DMA,读取预先分配的指定的内存中的数据,然后将数据发送到本地的预先分配的指定的内存中来。
交换背板:指的是类似于以太网中的二层交换机。
NICID:指的是高速网卡在一个交换背板下的全局唯一ID。
MMU:内存管理单元,物理内存通过MMU分配给内核态或者用户态进程。
内存池(即内存空间):一个连续的length大内存,按照固定size大小分块,一共num=length/size个数据块。
内存状态位图:一个num位的二进制数,每一位对应一个内存池数据块。
位图引索:从0开始,bitset[0]指的是位图中第一个位的值。
本发明公开了一种基于RDMA的内存管理方法,如图1所示,包括以下步骤:步骤S110、获取用于注册给网卡的内存空间,并根据内存空间构建第一内存状态位图;步骤S120、根据第一内存状态位图,获取待存储数据在内存空间中的存储位置信息;步骤S130、当待存储数据存储至内存空间后,更新第一内存状态位图;步骤S140、当内存空间存满数据时,获取远端服务器的第二内存状态位图;步骤S150、比较第一内存状态位图和第二内存状态位图,根据比较结果更新第一内存状态位图;步骤S160、根据更新后的第一内存状态位图,删除内存空间中的存储数据。
本发明将注册给网卡的内存空间分为若干个内存块,并根据内存块的数量构建对应的内存状态位图,进而通过内存状态位图来表示每个内存块的存储状态,并且还可以结合远端服务器的内存状态位图来释放本端内存空间,进而减少了内存的申请和释放次数,优化了内存使用机制,提升了服务器的运行效率。
在一个通信网络中,如图2所示,可以在每个服务器上均应用该方法,为每个服务器的网卡构建内存池和对应的内存状态位图,进而方便管理内存。在本实施例中,内存池是真实进行RDMA传输数据的多个数据块组成。内存状态位图:每个内存池一个位图,内存池中的每个数据块(即内存块)对应位图中的一个位。为了方便描述,本实施例中内存状态位图中每一位均为一个二进制数字,1代表该位对应的内存块已经被占用,0代表该位对应的内存块为可用。
另外,关于每个服务器中的内存空间和内存状态位图对应关系如图3所示。下面举例说明通过位图引索找到内存地址的方法。当位图引索index=2;内存池起始地址位:addr=0x1;内存池内存块大小:size=4;则位图index对应的内存地址destAddr=addr+(index*size)结果为0x9。
在本发明实施例中,获取用于注册给网卡的内存空间的一种方法为:根据内存块的预定空间大小、以及预定的内存块数量,计算内存空间的大小;根据内存空间的大小确定内存空间的起始地址和结束地址。根据内存块的预定空间大小和内存块的数量可以使得将内存池均匀分割,这样可以方便构建与内存池对应的内存状态位置,以方便内存池的管理和使用。
当构建内存池之后,根据内存空间构建内存状态位图包括:根据内存块的数量构建与内存空间对应的内存状态位图;其中,内存状态位图的位数等于内存块的数量。初始化内存状态位图。
申请内存流程如为:假设申请内存块大小为size,内存块个数为len的内存池,并初始化内存池。构建len位的位图,并将位图中每一位的值均初始化为0,表示该内存池中所有内存块均为空,可以用来存放数据。
当有本端事件发生时,需要向内存空间中存储数据时,该流程如图4所示。从第一内存状态位图的起始位开始搜索,直至找到第一个状态为闲置的位;将该第一个状态为闲置的位对应的存储块的起始地址作为待存储数据在内存空间中的起始存储地址。
也就是说,首先从内存状态位图中找出第一个值为0的位,如果没有找到值为0的位,则向远端服务器发送请求,获取其的第二内存管理位图,再将远端服务器的第二内存状态位图和本端服务器的第一内存管理位图按位与运算,最后将得到的结果覆盖本端服务器的第一内存状态位图。
另外,如果从本端服务器的内纯状态位图中找到了值为0的位,则返回这个位的引索,就是内存池中的相同引索的数据块地址即可,将待存储数据以该数据块为起始数据块进行存储。
如图5所示,当有待存储数据需要存储时,首先从内存状态位图中找到第一个值为0的位,即第3位,这就表示在内存池中第3个数据块为空,可以存储数据,所以,将待存储数据存储到该数据块中。当该数据块存满后,如果待存储数据为存完,则重复选择下一个空的数据块,继续存储,假设该待存储数据需要3个数据块进行存储,则该待存储数据在本内存池中的存储数据块序号分别为3、4、5。
另外,在网卡不需要存储数据时,即为内存空间闲置状态,该过程中会收到事件信息,该类事件信息是随着put操作或get操作而产生的。当网卡的事件线程收到事件后,如图6所示,需要先判断该事件是远端事件还是本端事件。
当事件为远端事件时,提取远端事件的报文,从报文中获取到该事件在本端服务器中对应的应用程序的socketid,进而将事件信息通报到对应的应用程序,即向远端事件对应的应用程序(本端服务器的应用程序)发送通知,通知的内容为应用程序在内存空间中获取数据。当应用程序接收到通知时,用户可知有新的消息,则会前往内存池中对应的数据块读取数据,读取数据的方式有多种,可以为读取完数据不进行保存,也可以是读取数据过程中将数据保存到硬件存储设备中。不管是数据不保存还是已经保存,在本端服务器中,检测到应用程序获取数据后,将第一内存状态位图中与该数据对应的位的状态更新为闲置,即释放该事件对应的内存池的内存空间,已备后续其他应用程序进行使用。
另外,当事件为本端事件时,不进行操作,则表示本段服务器在进行put或get操作,然而,不管是put操作,还是get操作,对本端的内存池均不会影响,因此,不进行任何操作即可。
在本实施例中,当内存池的存储空间数据存满后,此时内存状态位图会显示全1位图。这种情况下,会发生在两个场景下,即数据存储过程中或者是数据存储之前,但是不管哪种情况,只要获取到内存状态位图的值为全1,则需要进行内存释放过程。
内存释放过程是先获取远端服务器的第二内存状态位图,再比较第一内存状态位图和所述第二内存状态位图,根据比较结果更新第一内存状态位图,最后根据更新后的第一内存状态位图,删除内存空间中的存储数据。
具体的,本实施例还给出了一种具体的比较形式,比如,比较第一内存状态位图和第二内存状态位图时,将第一内存状态位图与第二内存状态位图中序数相同的位的状态进行位与运算。通过进行位与运算可以将相互进行通信的服务器之间的冗余数据消除,达到内存数据释放的效果。
如图7所示,左侧为本端的第一内存状态位图和远端的第二内存状态位图,由图可知,第一内存状态位图已经存满数据,第二内存状态位图中仅有第8个数据块存储有数据,其与数据块均为空,则表明第1-7个数据块中的数据已使用完成,不需要在进行保存,因此,进行位与运算后,第一内存状态位图中1-7位均为0,第8位为1。进而,根据第一内存状态位图更新内存池,释放第1-7个数据块,保留第8个内存池的数据块。至此,即完成了内存释放过程。
本发明使用内存池机制,减少内存反复申请和释放;使用位图和内存池的数据块引索绑定,提高内存分配速度;并且本端事件不释放内存,远端事件释放内存,来解决踩内存问题(即内存重叠)。进而本发明提高了CPU和内存的控制效率,通过位图,控制大片内存,可以快速引索内存,通过俩端的位图按位与来解决持续发送数据带来的内存复用问题,大大提高了内存复用和分配的效率。
在该实施例中,本端和远端都进行申请固定相同大小的内存,并注册给高速网卡的DMA,用来进行单边操作。之后,本端的connect_package(即连接报文)通过send操作发送给高速网卡为NICID的远端。远端通过recv收到后,记录本端的内存、nicid还有socketid信息(即通信标识码,类似与TCP/IP协议中的ip地址+8010端口号)。远端的connect_package通过send操作发送给需要建立连接的本端;本端通过recv收到后,记录服务端的内存、nicid还有socketid信息。
socket是建立连接后记录连接信息的数据结构;其中,local_mem是注册给高速网卡DMA的本端内存起始地址,rmt_mem是注册给远端高速网卡DMA的内存起始地址,local_nicid是本端高速网卡的唯一标识,rmt_nicid是远端高速网卡的唯一标识,local_socketid是本端应用程序进行通信的通信标识码,rmt_socketid是远端应用程序进行通信的通信标识码。
connect_package是建立连接的请求报文。mem是注册给高速网卡DMA的内存地址,nicid是高速网卡的交换背板下的唯一标识。socketid是应用程序操作的高速网卡的标识。
数据包即上述的socket,包括本端服务器注册给网卡的DMA的内存空间的第一起始地址、远端服务器注册给其网卡的DMA的内存空间的第二起始地址、待传输数据起始地址相对于第一起始地址的第一偏移量、待传输数据相对于第二起始地址的第二偏移量、待传输数据的数据长度、本端服务器中写入待传输数据的第一应用程序的第一通信标识码和远端服务器读取待传输数据的第二应用程序的第二通信标识码。
构造数据包并通过网卡发送至远端服务器之后还包括:远端服务器的网卡接收数据包;解析数据包,获取第二通信标识码、第二偏移量和数据长度,并构建远端事件;根据远端事件将数据包发送至第二应用程序;第二应用程序解析数据包,获取第二偏移量和数据长度接收待传输数据。
本实施例中,本端服务器即为传送消息的发起端,可以为分布式存储系统中的任一数据存储服务器,远端服务器即为与该本端服务器处于同一分布式存储系统中的另外的数据存储服务器。初始情况下,双方建立连接之后,远端服务器等待接收数据,当本端服务器构造put_request后,通过高速网卡发送给远端,并注册本地事件和远端事件,远端收到事件后通过socketid发送给持有这个socket的应用程序,远端应用程序收到远端事件后,读取对应的内存的偏移地址开始的输出(即offset),大小为data_length,则远端接收数据完成。本端将数据发送出去以后会收到本地事件,收到本地事件后,通过socketid通知发送数据的应用程序,表示数据发送成功。
本发明的另一实施例还公开了一种基于RDMA的内存管理装置,如图8所示,包括:构建模块210,用于获取用于注册给网卡的内存空间,并根据内存空间构建第一内存状态位图;第一获取模块220,用于根据第一内存状态位图,获取待存储数据在内存空间中的存储位置信息;更新模块230,用于当待存储数据存储至内存空间后,更新第一内存状态位图;第二获取模块240,用于当内存空间存满数据时,获取远端服务器的第二内存状态位图;比较模块250,用于比较第一内存状态位图和第二内存状态位图,根据比较结果更新第一内存状态位图;删除模块260,用于根据更新后的第一状态位图,删除内存空间中的存储数据。
需要说明的是,上述模块之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,其具体功能及带来的技术效果,具体可参见方法实施例部分,此处不再赘述。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功模块,以完成以上描述的全部或者部分功能。实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能模块的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。上述系统中模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本发明的另一实施例还公开了一种基于RDMA的内存管理装置,如图9所示,包括存储器31、处理器32以及存储在存储器31中并可在处理器32上运行的计算机程序33,处理器执行计算机程序33时实现上述的一种基于RDMA的内存管理方法。
本发明另一实施例还公开了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,计算机程序被处理器执行时实现上述的一种基于RDMA的数据传输方法。
计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

Claims (9)

1.一种基于RDMA的内存管理方法,其特征在于,包括以下步骤:
获取用于注册给网卡的内存空间,并根据所述内存空间构建第一内存状态位图;
根据所述第一内存状态位图,获取待存储数据在所述内存空间中的存储位置信息;
当所述待存储数据存储至所述内存空间后,更新所述第一内存状态位图;
当所述内存空间存满数据时,获取远端服务器的第二内存状态位图;
比较所述第一内存状态位图和所述第二内存状态位图,根据比较结果更新所述第一内存状态位图;
根据更新后的所述第一内存状态位图,删除所述内存空间中的存储数据;
其中,比较所述第一内存状态位图和所述第二内存状态位图包括:
将所述第一内存状态位图与所述第二内存状态位图中序数相同的位的状态进行位与运算。
2.如权利要求1所述的一种基于RDMA的内存管理方法,其特征在于,获取用于注册给网卡的内存空间包括:
根据内存块的预定空间大小、以及预定的内存块数量,计算所述内存空间的大小;
根据所述内存空间的大小确定所述内存空间的起始地址和结束地址。
3.如权利要求2所述的一种基于RDMA的内存管理方法,其特征在于,根据所述内存空间构建内存状态位图包括:
根据所述内存块的数量构建与所述内存空间对应的内存状态位图;其中,所述内存状态位图的位数等于所述内存块的数量。
4.如权利要求2或3所述的一种基于RDMA的内存管理方法,其特征在于,构建内存状态位图后还包括:初始化所述内存状态位图。
5.如权利要求4所述的一种基于RDMA的内存管理方法,其特征在于,当网卡的事件线程收到事件后还包括:
判断所述事件是远端事件还是本端事件;
当所述事件为远端事件时,向所述远端事件对应的应用程序发送通知,所述通知的内容为应用程序在所述内存空间中获取数据;
检测到所述应用程序获取数据后,将所述第一内存状态位图中与该数据对应的位的状态更新为闲置。
6.如权利要求5所述的一种基于RDMA的内存管理方法,其特征在于,当所述事件为本端事件时,不进行操作。
7.如权利要求6所述的一种基于RDMA的内存管理方法,其特征在于,获取待存储数据在所述内存空间中的存储位置信息包括:
从所述第一内存状态位图的起始位开始搜索,直至找到第一个状态为闲置的位;
将该第一个状态为闲置的位对应的存储块的起始地址作为所述待存储数据在所述内存空间中的起始存储地址。
8.一种基于RDMA的内存管理装置,其特征在于,包括:
构建模块,用于获取用于注册给网卡的内存空间,并根据所述内存空间构建第一内存状态位图;
第一获取模块,用于根据所述第一内存状态位图,获取待存储数据在所述内存空间中的存储位置信息;
更新模块,用于当所述待存储数据存储至所述内存空间后,更新所述第一内存状态位图;
第二获取模块,用于当所述内存空间存满数据时,获取远端服务器的第二内存状态位图;
比较模块,用于比较所述第一内存状态位图和所述第二内存状态位图,根据比较结果更新所述第一内存状态位图;
删除模块,用于根据更新后的所述第一内存 状态位图,删除所述内存空间中的存储数据;
其中,比较所述第一内存状态位图和所述第二内存状态位图包括:
将所述第一内存状态位图与所述第二内存状态位图中序数相同的位的状态进行位与运算。
9.一种基于RDMA的内存管理装置,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7任一项所述的一种基于RDMA的内存管理方法。
CN202110255646.4A 2021-03-09 2021-03-09 一种基于rdma的内存管理方法及装置 Active CN113238856B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110255646.4A CN113238856B (zh) 2021-03-09 2021-03-09 一种基于rdma的内存管理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110255646.4A CN113238856B (zh) 2021-03-09 2021-03-09 一种基于rdma的内存管理方法及装置

Publications (2)

Publication Number Publication Date
CN113238856A CN113238856A (zh) 2021-08-10
CN113238856B true CN113238856B (zh) 2022-07-26

Family

ID=77130236

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110255646.4A Active CN113238856B (zh) 2021-03-09 2021-03-09 一种基于rdma的内存管理方法及装置

Country Status (1)

Country Link
CN (1) CN113238856B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112954068B (zh) * 2021-03-09 2022-09-27 西安奥卡云数据科技有限公司 一种基于rdma的数据传输方法及装置
CN115357384B (zh) * 2022-08-17 2024-02-02 广州鼎甲计算机科技有限公司 重复数据删除存储系统的空间回收方法和装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101577716A (zh) * 2009-06-10 2009-11-11 中国科学院计算技术研究所 基于InfiniBand网络的分布式存储方法和系统
CN105404546A (zh) * 2015-11-10 2016-03-16 上海交通大学 基于rdma和htm的分布式并发控制方法
CN105978985A (zh) * 2016-06-07 2016-09-28 华中科技大学 一种用户态RPC over RDMA的内存管理方法
CN108268208A (zh) * 2016-12-30 2018-07-10 清华大学 一种基于rdma的分布式内存文件系统
CN110221779A (zh) * 2019-05-29 2019-09-10 清华大学 分布式持久性内存存储系统的构建方法
CN111274176A (zh) * 2020-01-15 2020-06-12 联想(北京)有限公司 一种信息处理方法、电子设备、系统及存储介质
CN111400307A (zh) * 2020-02-20 2020-07-10 上海交通大学 支持远程并发访问的持久哈希表访问系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6417727B2 (ja) * 2014-06-09 2018-11-07 富士通株式会社 情報集約システム、プログラム、および方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101577716A (zh) * 2009-06-10 2009-11-11 中国科学院计算技术研究所 基于InfiniBand网络的分布式存储方法和系统
CN105404546A (zh) * 2015-11-10 2016-03-16 上海交通大学 基于rdma和htm的分布式并发控制方法
CN105978985A (zh) * 2016-06-07 2016-09-28 华中科技大学 一种用户态RPC over RDMA的内存管理方法
CN108268208A (zh) * 2016-12-30 2018-07-10 清华大学 一种基于rdma的分布式内存文件系统
CN110221779A (zh) * 2019-05-29 2019-09-10 清华大学 分布式持久性内存存储系统的构建方法
CN111274176A (zh) * 2020-01-15 2020-06-12 联想(北京)有限公司 一种信息处理方法、电子设备、系统及存储介质
CN111400307A (zh) * 2020-02-20 2020-07-10 上海交通大学 支持远程并发访问的持久哈希表访问系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于RDMA的分布式内存文件系统的设计与实现;李江川;《电子科技大学硕士学位论文》;CNKI;20200815;全文 *

Also Published As

Publication number Publication date
CN113238856A (zh) 2021-08-10

Similar Documents

Publication Publication Date Title
CN112948318B (zh) 一种Linux操作系统下基于RDMA的数据传输方法及装置
US7502826B2 (en) Atomic operations
CN113238856B (zh) 一种基于rdma的内存管理方法及装置
US20040093454A1 (en) USB endpoint controller flexible memory management
CN106487896B (zh) 用于处理远程直接内存访问请求的方法和装置
CN109564502B (zh) 应用于存储设备中的访问请求的处理方法和装置
WO2022017475A1 (zh) 一种数据访问方法及相关设备
CN108512930B (zh) 一种共享文件的管理方法、装置、服务器和存储介质
CN114201421A (zh) 一种数据流处理方法、存储控制节点及可读存储介质
CN115470156A (zh) 基于rdma的内存使用方法、系统、电子设备和存储介质
CN113127139A (zh) 一种基于数据面开发套件dpdk的内存分配方法和装置
CN112954068B (zh) 一种基于rdma的数据传输方法及装置
CN112422485B (zh) 一种传输控制协议的通信方法及装置
US7822040B2 (en) Method for increasing network transmission efficiency by increasing a data updating rate of a memory
CN117492661A (zh) 数据写入方法、介质、装置和计算设备
CN110019347A (zh) 一种区块链的数据处理方法、装置及终端设备
CN116069262A (zh) 一种分布式存储卸载方法、装置、电子设备及存储介质
CN115695326A (zh) 数据帧传输方法、装置、计算机设备和存储介质
CN115495406A (zh) 一种基于PCIe的报文传输方法、装置、设备及存储介质
CN105117353A (zh) 带有通用数据交互模块的fpga及采用该fpga的信息处理系统
CN109428861A (zh) 网络通信方法及设备
CN114327262A (zh) 一种用于智能网卡的维护端口映射的方法和装置
CN114827300A (zh) 硬件保障的数据可靠传输系统、控制方法、设备及终端
CN110659143B (zh) 一种容器间的通讯方法、装置及电子设备
CN112732188A (zh) 基于分布式存储逻辑卷id分配效率的优化方法及系统

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
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220829

Address after: 19th Floor, Wenchuang Building, Yaodian Street Office, Qinhan New Town, Xixian New District, Xi'an City, Shaanxi Province 710075

Patentee after: Shaanxi Hongju Network Information Technology Co.,Ltd.

Address before: No.6-2, Changxin Industrial Park, east section of Tiangong 1st Road, banxinzhuang village, ZhouLing street, Qinhan new town, Xixian New District, Xi'an City, Shaanxi Province, 710000

Patentee before: Xi'an Okayun Data Technology Co.,Ltd.