CN105426321B - 采用远程位置信息的rdma友好缓存方法 - Google Patents
采用远程位置信息的rdma友好缓存方法 Download PDFInfo
- Publication number
- CN105426321B CN105426321B CN201510778699.9A CN201510778699A CN105426321B CN 105426321 B CN105426321 B CN 105426321B CN 201510778699 A CN201510778699 A CN 201510778699A CN 105426321 B CN105426321 B CN 105426321B
- Authority
- CN
- China
- Prior art keywords
- key
- client
- caching
- server
- request
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/084—Multiuser, multiprocessor or multiprocessing cache systems with a shared cache
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1081—Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
- H04L67/5682—Policies or rules for updating, deleting or replacing the stored data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
Landscapes
- Engineering & Computer Science (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)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供了一种采用远程位置信息的RDMA友好缓存方法,包括:步骤1,客户端与服务器端建立连接;步骤2,客户端查询客户端本地的缓存中是否存在请求的键在服务器的内存地址;若存在,则进入步骤4继续执行;若不存在,则进入步骤3继续执行;步骤3,客户端读取服务器端中的哈希表;客户端从哈希表中获得与请求的键的哈希值对应的地址,作为请求的键在服务器的内存地址;步骤4,客户端向服务器端发送远程内存直接访问的读请求,读取请求的键在服务器的内存地址中的实际值。本发明能够在不影响服务器端性能的情况下,减少平均的RDMA访问次数,缩短键值请求的延迟,增大系统的吞吐量。
Description
技术领域
本发明涉及一种内存键值系统的方法,具体的说,涉及一种采用远程位置信息的RDMA友好缓存方法。
背景技术
大规模的网络应用需要使用内存来存储数据,使得大数据集的访问速度能够满足用户需求。而内存键值系统正是一种满足这种需求的高速数据缓存系统。内存键值系统的优势在于将所有数据存储在内存,从而当访问数据时,只需要访问内存,避免了以往存储系统访问磁盘导致的性能下降。
远程直接内存访问(RDMA,Remote Direct Memory Access),是当前高性能网络设备提供的一种模式,能够直接对远端节点已注册的内存空间进行读写访问,完全不需要服务器机器的CPU进行协助。使用RDMA时,传输带宽和网络延时则分别能够达到149.6万次和3微秒,相比之下在InfiniBand网卡提供的兼容以太网编程接口的IP over InfiniteBand(IPoIB)模式下,带宽达和延时分别只有每秒12.2万次和60微秒,性能差距达到一个数量级。
现有的基于远程直接内存访问的键值系统都是需要客户端直接查表找到具体键值对的地址的,通常查表需要至少一次的远程直接内存访问,读具体值也需要至少一次的远程内存访问,至少两次的远程直接内存访问开销比较。减少请求次数的传统方法是使用缓存(cache),即读到内容之后缓存到客户端本地。但是在使用RDMA的情况下,缓存键值对的内容额外引入一些问题,这导致缓存键值对的内容带来的好处无法得到体现。
因此如何针对远程直接内存访问(RDMA)模式特征,以及缓存内容的传统方式的问题,设计基于缓存位置信息的内存键值系统,充分发挥高性能网络互联设备性能,减少平均的远程直接内存访问次数,提高内存键值系统的带宽,降低请求的延迟,已成为本领域技术人员亟待解决的技术难题。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种采用远程位置信息的RDMA友好缓存方法,其充分利用高性能网络互联设备提供的远程直接内存访问(RDMA)模式,提高内存键值系统的带宽,降低请求的延迟。
根据本发明提供的一种采用远程位置信息的RDMA友好缓存方法,包括如下步骤:
步骤1,客户端向服务器端发送连接请求;服务器端接收到连接请求后,向客户端发送回执消息,从而客户端和服务器端双方建立连接,其中,客户端拥有服务器端中部分或全部内存的远程内存直接访问的权限;
步骤2,客户端查询客户端本地的缓存中是否存在请求的键在服务器的内存地址;若存在,则进入步骤4继续执行;若不存在,则进入步骤3继续执行;
步骤3,客户端向服务器端发送RDMA读请求,以读取服务器端中的哈希表;客户端从哈希表中获得与请求的键的哈希值对应的地址,作为请求的键在服务器的内存地址;
步骤4,客户端向服务器端发送远程内存直接访问的读请求,读取请求的键在服务器的内存地址中的实际值。
优选地,还包括如下步骤:
目标键地址对写入缓存步骤,具体为:客户端将目标键地址对写入客户端本地的缓存,其中,所述目标键地址对,是指:请求的键以及请求的键在服务器的内存地址。
优选地,还包括如下步骤:
非目标键地址对写入缓存步骤,具体为:客户端将非目标键地址对写入客户端本地的缓存,其中,所述非目标键地址对,是指:客户端读取到的哈希表中所述请求的键之外的其它的键以及所述其它的键在服务器的内存地址。
优选地,还包括如下步骤:
步骤5,客户端检查客户端本地的缓存是否过期;若过期,则删除客户端本地的缓存中的键以及键在服务器的内存地址,进入步骤2继续执行。
优选地,每个客户端中的多个工作线程共享同一个缓存,缓存内部划分为多个空槽,每个空槽具有多个缓存项,每一缓存项用于存储一个键地址对,每个空槽附带一个锁;
在对缓存进行查询或者更新时,将查询或者更新针对的空槽附带的锁进行上锁操作,完成查询或者更新后释放锁;
其中,所述键地址对,是指:键以及键在服务器的内存地址。
优选地,所述空槽中的缓存项具有不同的优先级;
当缓存命中的时候,将命中的缓存项的优先级提升到最高,并删除缓存项最低的缓存项;
当写入新缓存的时候,将新写入的缓存项的优先级提升到最高,并删除缓存项最低的缓存项。
与现有技术相比,本发明具有如下的有益效果:
本发明提出的采用远程位置信息的RDMA友好缓存方法,能够在不影响服务器端性能的情况下,减少平均RDMA访问次数,缩短键值请求的延迟,增大系统的吞吐量。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1是本发明基于远程位置信息缓存的哈希表的流程图。
图2是本发明基于远程位置信息缓存的哈希表的结构图。
图3是本发明中本地缓存的结构图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
根据本发明提供的一种采用远程位置信息的RDMA友好缓存方法,包括如下步骤:
步骤0,服务器端初始化内存键值系统。如图2所示。
步骤1,客户端向服务器端发送连接请求;服务器端接收到连接请求后,向客户端发送回执消息,从而客户端和服务器端双方建立连接,其中,客户端拥有服务器端中部分或全部内存的远程内存直接访问的权限;
步骤2,客户端查询客户端本地的缓存中是否存在请求的键在服务器的内存地址;若存在,则进入步骤4继续执行;若不存在,则进入步骤3继续执行;
步骤3,客户端向服务器端发送单向RDMA读请求,以读取服务器端中的哈希表;客户端从哈希表中获得与请求的键的哈希值对应的地址,作为请求的键在服务器的内存地址;
步骤4,客户端向服务器端发送远程内存直接访问的读请求,读取请求的键在服务器的内存地址中的实际值;
步骤5,客户端检查客户端本地的缓存是否过期;若过期,则删除客户端本地的缓存中的键以及键在服务器的内存地址,进入步骤2继续执行。
所述采用远程位置信息的RDMA友好缓存方法,还包括如下步骤:
目标键地址对写入缓存步骤,具体为:客户端将目标键地址对写入客户端本地的缓存,其中,所述目标键地址对,是指:请求的键以及请求的键在服务器的内存地址;
非目标键地址对写入缓存步骤,具体为:客户端将非目标键地址对写入客户端本地的缓存,其中,所述非目标键地址对,是指:客户端读取到的哈希表中所述请求的键之外的其它的键以及所述其它的键在服务器的内存地址。
每个客户端中的多个工作线程共享同一个缓存,缓存内部划分为多个空槽,每个空槽具有多个缓存项,每一缓存项用于存储一个键地址对,每个空槽附带一个锁;
在对缓存进行查询或者更新时,将查询或者更新针对的空槽附带的锁进行上锁操作,完成查询或者更新后释放锁;
其中,所述键地址对,是指:键以及键在服务器的内存地址。
所述空槽中的缓存项具有不同的优先级;
当缓存命中的时候,将命中的缓存项的优先级提升到最高,并删除缓存项最低的缓存项;
当写入新缓存的时候,将新写入的缓存项的优先级提升到最高,并删除缓存项最低的缓存项。
本发明采用缓存位置信息而不是传统的缓存值的方式,主要原因是缓存值的传统方法会让缓存的管理变得复杂无比。传统的缓存值的方法有如下问题:
(1)缓存值容易失效,每当有其他客户端修改过值的内容的时候,这个值的缓存就失效了,这会导致每个缓存能发挥的作用并不多;
(2)缓存失效难以检测,RDMA的表达力是有限的,它仅仅是加速远端直接内存访问这个过程,本质上内存还是分开的,服务端内存被修改后客户端并不能检测出来。
而本发明采用的缓存位置信息的方法比起缓存值的方法,因为RDMA操作延迟很低所以性能差距不大,而且在其他方面更有优势:
(1)缓存位置信息发挥作用时间很久,失效概率很低,因为缓存的是位置信息,而键值对的位置信息改变的情况并不多。
(2)共享简单,多个工作线程可以很容易地共享键值对的位置信息,无论是读操作还是写操作使用的都是同样的位置信息。
(3)不影响服务端。如果采用传统的缓存值的方式,缓存失效后往往需要服务端通知客户端,这时候服务端往往需要记录具体哪些客户端缓存了值,所以服务端需要划分额外的内存以及CPU来进行缓存失效的处理。而缓存位置信息则不需要服务端的参与,即使在失效的情况下,客户端也能很容易地自己检测出来,从而自己删除失效缓存。
简单地每个客户端线程自己维护自己的缓存效果并不好,存在的主要问题在于客户端需要的缓存数量占用空间太大,针对这一问题,本发明采用共享缓存方式进行处理。每个客户端的多个工作线程共享同一个缓存,缓存内部划分为N个空槽,每个空槽存储4个键-地址项,每个空槽附带一个锁。每次查询或者更新缓存的时候,对对应的空槽的锁进行上锁操作,完成查询或者更新后释放锁。
直接替换容易误将有用的缓存替换掉。本发明采用LRU的方式进行缓存替换管理。每个空槽有4个项,优先级从左往右依次降低。当缓存命中的时候,或者写入新缓存的时候,则该缓存优先级被提升到最高,即将该缓存交换到最左边。当空间不足的时候,需要剔除优先级最低的缓存,则把最右边的缓存剔除。
当某个键地址对被删除的时候,缓存可能会过期。本发明采用的方式是检查自增量来判断缓存是否过期。值身上附带一个自增量,缓存上也附带一个自增量,值被删除的时候自增量会加1。如果两者不一致,说明缓存过期,则将该缓存删除并重新读哈希表,重新读值。
综上所述,本发明提出的基于缓存的远程直接内存访问(RDMA)模式的内存键值系统的方法,通过利用硬件I/O设备提供的远程直接内存访问(Remote Direct MemoryAccess,RDMA)支持,能够在不影响服务器端性能的情况下,充分利用高性能网络互联设备提供的远程直接内存访问(Remote Direct Memory Access,RDMA)模式提供的高带宽和低延时特性,减少平均的RDMA访问次数,提高内存键值系统的带宽,降低延迟。提高整体性能。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。
Claims (4)
1.一种采用远程位置信息的RDMA友好缓存方法,其特征在于,包括如下步骤:
步骤1,客户端向服务器端发送连接请求;服务器端接收到连接请求后,向客户端发送回执消息,从而客户端和服务器端双方建立连接,其中,客户端拥有服务器端中部分或全部内存的远程内存直接访问的权限;
步骤2,客户端查询客户端本地的缓存中是否存在请求的键在服务器的内存地址;若存在,则进入步骤4继续执行;若不存在,则进入步骤3继续执行;
步骤3,客户端读取服务器端中的哈希表;客户端从哈希表中获得与请求的键的哈希值对应的地址,作为请求的键在服务器的内存地址;
步骤4,客户端向服务器端发送远程内存直接访问的读请求,读取请求的键在服务器的内存地址中的实际值;
所述的采用远程位置信息的RDMA友好缓存方法,还包括如下步骤:
目标键地址对写入缓存步骤,具体为:客户端将目标键地址对写入客户端本地的缓存,其中,所述目标键地址对,是指:请求的键以及请求的键在服务器的内存地址;
所述的采用远程位置信息的RDMA友好缓存方法,还包括如下步骤:
步骤5,客户端检查客户端本地的缓存是否过期;若过期,则删除客户端本地的缓存中的键以及键在服务器的内存地址,进入步骤2继续执行。
2.根据权利要求1所述的采用远程位置信息的RDMA友好缓存方法,其特征在于,还包括如下步骤:
非目标键地址对写入缓存步骤,具体为:客户端将非目标键地址对写入客户端本地的缓存,其中,所述非目标键地址对,是指:客户端读取到的哈希表中所述请求的键之外的其它的键以及所述其它的键在服务器的内存地址。
3.根据权利要求1所述的采用远程位置信息的RDMA友好缓存方法,其特征在于,每个客户端中的多个工作线程共享同一个缓存,缓存内部划分为多个空槽,每个空槽具有多个缓存项,每一缓存项用于存储一个键地址对,每个空槽附带一个锁;
在对缓存进行查询或者更新时,将查询或者更新针对的空槽附带的锁进行上锁操作,完成查询或者更新后释放锁;
其中,所述键地址对,是指:键以及键在服务器的内存地址。
4.根据权利要求3所述的采用远程位置信息的RDMA友好缓存方法,其特征在于,所述空槽中的缓存项具有不同的优先级;
当缓存命中的时候,将命中的缓存项的优先级提升到最高,并删除缓存项最低的缓存项;
当写入新缓存的时候,将新写入的缓存项的优先级提升到最高,并删除缓存项最低的缓存项。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510778699.9A CN105426321B (zh) | 2015-11-13 | 2015-11-13 | 采用远程位置信息的rdma友好缓存方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510778699.9A CN105426321B (zh) | 2015-11-13 | 2015-11-13 | 采用远程位置信息的rdma友好缓存方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105426321A CN105426321A (zh) | 2016-03-23 |
CN105426321B true CN105426321B (zh) | 2018-11-16 |
Family
ID=55504537
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510778699.9A Active CN105426321B (zh) | 2015-11-13 | 2015-11-13 | 采用远程位置信息的rdma友好缓存方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105426321B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106844048B (zh) * | 2017-01-13 | 2020-11-06 | 上海交通大学 | 基于硬件特性的分布式共享内存方法及系统 |
CN109492020A (zh) * | 2018-11-26 | 2019-03-19 | 北京知道创宇信息技术有限公司 | 一种数据缓存方法、装置、电子设备及存储介质 |
CN109783499B (zh) * | 2019-01-18 | 2023-09-22 | 成都宝瓜科技有限公司 | 一种数据缓存方法、装置和服务器 |
CN111858418B (zh) * | 2019-04-30 | 2023-04-07 | 华为技术有限公司 | 一种基于远程直接内存访问rdma的内存通信方法及装置 |
CN110109889A (zh) * | 2019-05-09 | 2019-08-09 | 重庆大学 | 一种分布式内存文件管理系统 |
CN111078147B (zh) * | 2019-12-16 | 2022-06-28 | 南京领行科技股份有限公司 | 一种缓存数据的处理方法、装置、设备及存储介质 |
CN111400307B (zh) * | 2020-02-20 | 2023-06-23 | 上海交通大学 | 支持远程并发访问的持久哈希表访问系统 |
CN111538603B (zh) * | 2020-04-20 | 2022-03-22 | 上海交通大学 | 机器学习和rdma加速的键值存储读访问方法及系统 |
CN112003860B (zh) * | 2020-08-21 | 2021-09-21 | 上海交通大学 | 适用于远程直接内存访问的内存管理方法、系统及介质 |
CN112817887B (zh) * | 2021-02-24 | 2021-09-17 | 上海交通大学 | 分离可组合式架构下的远内存访问优化方法及系统 |
CN114553521A (zh) * | 2022-02-21 | 2022-05-27 | 杭州时代银通软件股份有限公司 | 一种远端内存访问方法、装置、设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101887398A (zh) * | 2010-06-25 | 2010-11-17 | 浪潮(北京)电子信息产业有限公司 | 一种动态提高服务器输入输出吞吐量的方法和系统 |
CN103227778A (zh) * | 2013-03-26 | 2013-07-31 | 华为技术有限公司 | 内存访问方法、设备和系统 |
CN104410681A (zh) * | 2014-11-21 | 2015-03-11 | 上海交通大学 | 基于远程直接内存访问的虚拟机动态迁移优化方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120137079A1 (en) * | 2010-11-26 | 2012-05-31 | International Business Machines Corporation | Cache coherency control method, system, and program |
-
2015
- 2015-11-13 CN CN201510778699.9A patent/CN105426321B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101887398A (zh) * | 2010-06-25 | 2010-11-17 | 浪潮(北京)电子信息产业有限公司 | 一种动态提高服务器输入输出吞吐量的方法和系统 |
CN103227778A (zh) * | 2013-03-26 | 2013-07-31 | 华为技术有限公司 | 内存访问方法、设备和系统 |
CN104410681A (zh) * | 2014-11-21 | 2015-03-11 | 上海交通大学 | 基于远程直接内存访问的虚拟机动态迁移优化方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105426321A (zh) | 2016-03-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105426321B (zh) | 采用远程位置信息的rdma友好缓存方法 | |
CN112578997B (zh) | 一种数据迁移方法、系统及相关设备 | |
CN107888657A (zh) | 低延迟分布式存储系统 | |
CN105224255B (zh) | 一种存储文件管理方法及装置 | |
WO2001084338A2 (en) | Cluster configuration repository | |
CN108833503A (zh) | 一种基于ZooKeeper的Redis集群方法 | |
CN108418900A (zh) | 一种服务器集群系统中的缓存方法、写入点客户端和读客户端 | |
US11245774B2 (en) | Cache storage for streaming data | |
US20160323238A1 (en) | Ip management method, client and server | |
US11263270B1 (en) | Heat balancing in a distributed time-series database | |
CN106777085A (zh) | 一种数据处理方法、装置及数据查询系统 | |
CN112307119A (zh) | 数据同步方法、装置、设备及存储介质 | |
US20230359628A1 (en) | Blockchain-based data processing method and apparatus, device, and storage medium | |
US20220311773A1 (en) | Method and device for communication between microservices | |
US11409771B1 (en) | Splitting partitions across clusters in a time-series database | |
CN109391487A (zh) | 一种配置更新方法和系统 | |
CN103365987B (zh) | 一种基于共享磁盘架构的集群数据库系统及数据处理方法 | |
CN107992270B (zh) | 一种多控存储系统全局共享缓存的方法及装置 | |
US11055259B2 (en) | Method and system for deleting obsolete files from a file system | |
US8510513B2 (en) | Network load reducing method and node structure for multiprocessor system with distributed memory | |
US11366598B1 (en) | Dynamic lease assignments in a time-series database | |
US20230336368A1 (en) | Block chain-based data processing method and related apparatus | |
CN103853504A (zh) | 一种缓存系统数据存取方法 | |
CN105930519A (zh) | 一种基于集群文件系统的全局共享读缓存方法 | |
CN107203890A (zh) | 凭证数据发放方法、装置及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |