采用远程位置信息的RDMA友好缓存方法与流程

文档序号:15951300发布日期:2018-11-16 20:29阅读:431来源:国知局
采用远程位置信息的RDMA友好缓存方法与流程

本发明涉及一种内存键值系统的方法,具体的说,涉及一种采用远程位置信息的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 Memory Access,RDMA)支持,能够在不影响服务器端性能的情况下,充分利用高性能网络互联设备提供的远程直接内存访问(Remote Direct Memory Access,RDMA)模式提供的高带宽和低延时特性,减少平均的RDMA访问次数,提高内存键值系统的带宽,降低延迟。提高整体性能。

以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1