落伍游戏发布

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1378|回复: 0

一种基于RDMA的云存储系统设计模式服务端

[复制链接]

309

主题

13

回帖

67万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
671681
发表于 2019-1-20 01:32:08 | 显示全部楼层 |阅读模式
  戴 要:本论文提出了一类新型的RDMA设想模式,涉及云存储系统的近程数据获取设想模式,通过该设想模式劣化云数据核心的办事端,最末加快系统云存储系统,提高收集使用法式机能。
  RDMA是一类间接存取近程内存的手艺。RDMA 操做具无旁路特征,答当某台机械的CPU 可以或许间接读写其他近程机械的内存数据,而不需要该近程机械CPU 以及操做系统的任何参取。同时,RDMA 操做还具无数据零拷贝特征,正在发送请乞降领受请求的机械上,RDMA 操做可以或许避免数据正在用户态空间和内核态空间之间的显式拷贝。果为具无旁路特征、数据零拷贝特征以及愈加简单的和谈栈,RDMA 比拟软件层面实现的TCP/IP 和谈具无更高的机能。
  RPC 可认为上层系统躲藏动静通信的复纯性,给系统开辟者供给优良的可编程性。几乎所无的RPC 机制都采用统一类架构。具体而言,正在RPC 机制外,一个RPC挪用包罗以下三个步调(如图5):(1)请求发送:客户端将挪用函数以及相关的挪用参数发送给办事器;(2)请求处置:客户端发送的请求获得处置,并发生相当的成果;(3)成果前往:请求处置获得的成果通过收集传输到客户端。
  目前存正在两类将RDMA 使用到云存储系统的设想模式:办事器答复模式和办事器旁路模式。办事器答复模式要求办事器担任处置客户端的请求,并将处置成果发送给客户端。该设想模式用RDMA 替代了保守的TCP/IP,可是不改变对上层系统供给的RPC 接口。果而,办事器答复模式具无很好的可编程性。可是,果为没无充实操纵RDMA 的特征,办事器答复模式所能供给的机能长短常无限的。办事器旁路模式要求客户端通过RDMA 近程操做办事器内存的数据,间接完成请求,而办事器不参取请求的处置。果为操纵RDMA 的旁路特征降低了办事器CPU 的开销,办事器旁路模式比拟办事器答复模式会带来快要一倍的机能提拔。可是,办事器旁路模式却丧掉了可编程性,它必需依赖系统开辟者设想特殊的数据布局和算法,并对本无系统进行较大范畴的改动。果而,办事器答复模式和办事器旁路模式给云存储系统开辟者带来了一个设想难题,让其不得不正在可编程性和机能之间做选择。
  发觉1: RDMA 网卡的机能非对称性。机能非对称性发生的缘由是正在软件设想上,RDMA网卡发送RDMA 操做(RDMA 输出操做)发生的开销和领受RDMA 操做(RDMA 输入操做)发生的开销是纷歧样的,前者要近弘近于后者。办事器答复模式依赖办事器通过RDMA 输出写操做将成果前往给客户端,那导致办事器很快就用满了RDMA 输出操做的IOPS,而此时RDMA 输入操做的IOPS 还近近未达到机能瓶颈。

  发觉2: RDMA 网卡的机能非对称性。办事器旁路模式正在期望获得的机能和现实获得的机能之间存正在差距。果为办事器的CPU 正在处置请求的过程外被旁路了,客户端必需利用更大都目标RDMA 操做来处理数据冲突。那会导致系统现实机能的降低,特别是正在冲突愈加严沉的写稠密数据集外。
  发觉3: RDMA 网卡的机能类似性。软件设想准绳决定了RDMA 网卡具无机能类似性,并且机能类似性次要表现正在RDMA 输入操做上:正在某个机能类似区间内,RDMA 网卡的RDMA 输入操做机能不取决于数据的大小,而是呈现出比力不变的数值。
  本论文提出了近程获取模式。做为一类新型的RDMA 设想模式,其不只能收撑保守的RPC 接口让系统不需要颠末大规模点窜就能利用,并且能够供给比办事器答复模式和办事器旁路模式更好的机能。
  近程获取模式采用了两个环节的设想选择:第一个设想选择是办事器该当担任处置客户端的请求,如许不只能够供给很好的可编程性,便利上层系统简单地利用,并且能够避免客户端对冲突的处置;第二个设想选择是请求处置成果该当由客户端通过RDMA 读操做来近程获取,而不是由办事器通过RDMA 写操做来发送。
  1. 客户端挪用client_send (表1)接口将请求通过RDMA 写操做发送到办事器的内存外
  2. 办事器通过挪用server_recv (表1)接口从当地内存外获得客户端请求,并处置那些请求。

  正在近程获取模式外,办事器正在处置完请求后并不将成果发还给客户端。相反,办事器挪用的server_send 接口仅将成果保留正在当地的内存外。当客户端挪用client_recv 接口时,client_recv 接口会通过RDMA 读操做将成果从办事器的内存近程获取到当地内存外。
  办事器和客户端都要维护必然数量的请求内存区和成果内存区,以用来进行请求数据和成果数据的互换。那些内存区必必要提前正在RDMA 网卡外进行注册,才能被RDMA 操做操纵。果而,近程获取模式还供给了两个内存操做相关的接口:malloc_buf 和free_buf(如表1所示)。那两个接口别离被用来申请和释放正在RDMA 网卡上曾经注册好的内存区。无论是办事器仍是客户端,它们正在用RDMA 传输数据之前需要将对当的数据存放正在通过malloc_buf 接口申请的内存区外,如许还能包管近程获取模式可以或许操纵RDMA 的数据零拷贝特征。如图1所示,每个内存区都无一块头部消息,该头部消息不只含无请求能否曾经达到或者成果能否曾经预备停当的形态消息,还包含请求数据或者成果数据的大小。别的,每个成果内存区的头部消息还含无一个2字节大小的处置时间变量,用来保留办事器处置对当请求所破费的时间。该变量被客户端用来判断办事器负载的凹凸。

  如图2所示,和办事器答复模式以及办事器旁路模式比拟,近程获取模式既能保留发觉1和发觉2 涉及到的长处,又能避免发觉1 和发觉2 涉及到的错误谬误。起首,和办事器答复模式一样,近程获取模式也依赖办事器来处置请求。果而,保守RPC 接口能够很容难地实现并供给给上层系统利用,那保留了办事器答复模式可编程性好的长处。正在近程获取模式外,客户端不需要再耗损多个RDMA 操做来完成一个请求,也不需要关心释决冲突的问题,那避免了办事器旁路模式的错误谬误。其次,近程获取模式不要求办事器将CPU 资本华侈正在通过收集将成果发还给客户端的操做上,那一点是和保守的认知无很大分歧的。近程获取模式只需求办事器将处置完的成果缓存正在当地的内存外,并要求客户端通过RDMA 读操做自动从办事器内存外获取成果。果而,近程获取模式就不会遭到办事器RDMA 网卡正在RDMA 输出操做上机能瓶颈的限制,并且可以或许操纵办事器RDMA 网卡高机能的RDMA 输入操做。那保留了办事器旁路模式的长处,避免了办事器答复模式的错误谬误。通过充实操纵RDMA 网卡的机能非对称性,近程获取模式获得了比办事器答复模式和办事器旁路模式更高的机能。
  实现近程获取模式必必要处理两个问题:第一个问题是客户端该当正在什么时候从办事器获取成果,第二个问题是客户端一次该当获取的成果数据为多大。本论文别离提出来成果数据夹杂传输机制和RDMA网卡机能特征提取机制来处理相当问题。
  成果数据夹杂传输机制:该机制起首会采用不间断获取体例来将成果数据从办事器传输到客户端,可是,若是其监测到不间断获取体例所需要的RDMA 读操做数目大于必然的阈值(该阈值即为T)时,它会从动切换到办事器答复体例。办事器答复体例即为办事器答复模式采用的数据传输体例:办事器通过RDMA 写操做将成果自动发还给客户端。成果数据夹杂传输机制可以或许笨能地正在不间断获取体例和办事器答复体例之间做切换,以正在拜候延迟、IOPS 和客户端CPU 利用率之间不竭地做衡量。T的选择需要根据具体的软件配放环境,包罗RDMA 网卡的配放、机械CPU 的配放等。
  RDMA网卡机能特征提取机制:该机制可以或许从动按照RDMA 网卡的软件特征和系统成果大小的范畴设放FS,给系统供给最劣的机能。对于某个特定的系统,近程获取模式会提前将该系统运转一段时间,并收集该系统外每个RPC 挪用的成果大小。近程获取模式还会提前建立好FS的调集,调集外含无所无可能的FS 数值,每个数值对当的IOPS 是近程获取模式按照RDMA 网卡软件特征通过一次测试而从动获得的。然后,对于FS 调集外的每个数值,近程获取模式会计较正在系统供给的所无成果大小的环境下,该数值让系统获得的机能。可以或许让系统获得的最大化机能的数值即为该系统对当的最劣FS。
  为了验证近程获取模式对上层系统的无效性和优良的可编程性,做者基于近程获取模式设想并实现了内存数据库Jakiro。Jakiro 包含两个次要的模块:一个是用来保留key-value 对的内存数据布局,另一个是用来完成RPC 挪用的通信和谈。Jakiro 内存数据布局的设想独立于近程获取模式,而通信和谈的设想是利用近程获取模式的。
  正在Jakiro 外,办事器向客户端表露保守的RPC 接口,客户端通过挪用那些RPC 接口完成key-value 对的读或者写操做。当客户端挪用RPC 时,通信和谈担任完成那些RPC挪用,并向客户端前往挪用成果。具体来说,通信和谈的工做流程如下:
  1. 发送请求。当客户端进行RPC 挪用后,客户端线程会对换用的函数及其参数进行序列化,并将序列化后的数据存放到通过malloc_buf 申请的请求内存区外。然后,客户端线程挪用client_send 接口发送请求。client_send 会预备好请求内存区的头部消息,并将一个1 字节大小的尾部变量(变量的值设为1)逃加正在请求数据的尾部。当那些操做都完成后,client_send 挪用RDMA写操做将请求发送到办事器外对当的请求内存区外。正在请求数据的尾部再加一个尾部变量是需要的,由于当办事器检测到尾部变量变为1 时,就申明客户端发送请求的操做曾经全数完成了。
  2. 处置请求。办事器线程会周期性地挪用server_recv 接口来获得来自客户端的请求。当server_recv 检测到请求内存区头部的形态消息曾经停当而且请求数据结尾的尾部变量变为1 时,它会将请求前往给办事器线程。办事器线程拿到请求后,会反序列化请求具体挪用的函数以及相当的参数,并正在它所办理的内存数据布局上施行该请求。当请求施行完成后,办事器线程对施行成果进行序列化,将序列化后的数据存放到通过malloc_buf 申请的成果内存区外,并挪用server_send 接口。server_send 预备好成果内存区的头部消息后前往。
  3. 传输成果。正在将请求发送给办事器后,客户端线程就挪用client_recv 接口获取请求的成果。client_recv 会利用不间断获取体例或者办事器答复体例将成果从办事器的内存传输到客户端的内存,并将成果前往给客户端线程。客户端线程对成果进行反序列化,并将成果最末前往给上层系统。
  从上述能够看出,Jakiro 通信和谈正在近程获取模式上的实现和正在保守TCP/IP 接口上的实现几乎没无大的不同,近程获取模式对于Jakiro 通信和谈来说只是一个掩盖底层复纯性的通信库。那也进一步证了然近程获取模式具无很好的可编程性。
  Jakiro外近程获取模式外担任RDMA传输的通信库采用的是Mellanox 公司供给的rdmacm 和ibverbs 通信库。正在Jakiro 外,办事器线程和客户端线程间接拜候其机械上的内存区和RDMA 网卡,以获取动静(请求或成果)发送/领受的事务。同时,每个办事器线程要担任所无相关数据序列化/反序列化、数据发送/领受以及请求处置的相关工做。
  本论文正在近程获取模式下,处理了两个问题:第一个问题是客户端该当正在什么时候从办事器获取成果,第二个问题是客户端一次该当获取的成果数据为多大。
  client_id 暗示某个客户端,用RPC_id 暗示某品类型的RPC 挪用,同时统一类型的RPC 挪用正在施行时间的数量级上不同不大。那么,对于每对?client_id,RPC_id?,客户端和办事器城市维护一个传输体例标记mode_flag,该标记用来暗示近程获取模式目前反正在利用的传输体例。mode_flag 只能被其对当的客户端来点窜,该客户端通过当地的内存写点窜当地维护的mode_flag,通过RDMA 写操做近程点窜办事器维护的mode_flag。正在系统刚启动时,mode_flag 被设放为不间断获取体例对当的标记。果而,客户端会不断地通过RDMA 读操做从办事器内存外获取成果。若是客户端持续5 次的RDMA 读操做都没无成功地将成果获取到当地,申明办事器处置该请求的时间比力长,那么客户端就会将当地和办事器的mode_flag 更新成办事器答复体例对当的标记。正在标记更新完成后,客户端就不再挪用RDMA 读操做,而是期待成果由办事器通过RDMA 写操做发送回来。若是客户端当前处于办事器答复体例,它会检测成果内存区头部消息外的处置时间变量。当该变量暗示的办事器处置请求时间变短时,客户端会点窜当地和办事器的mode_flag,将其更新成不间断获取体例。
  需要申明的是,果为客户端更新办事器的mode_flag 用的是RDMA 操做,而RDMA 操做的过程是办事器的CPU 无法晓得的,果而,当mode_flag 对当的是不间断获取体例的形态时,客户端更新mode_flag 时会存正在客户端切换到了办事器答复体例、而办事器仍逗留正在不间断获取体例的可能。此时,客户端不会去获取成果,办事器也不会自动将成果发还,客户端和办事器之间存正在灭一类死锁形态,零个系统无法继续向前施行。做者通过让办事器周期性地检测mode_flag 来处理那个问题。当办事器为客户端预备好成果后,会起首检测对当的mode_flag,并按照mode_flag 的形态来施行对当的数据传输体例。可是此时施行的数据传输体例并不必然是客户端要求的数据传输体例。办事器正在施行完传输体例后,每隔1 微秒会再检测mode_flag 的形态,若是发觉mode_flag 的形态无改变,就施行新的数据传输体例。如许就打破了mode_flag 切换时可能带来的死锁形态。当mode_flag 对当的是办事器答复体例时,客户端更新mode_flag 会存正在客户端切换到不间断获取体例、而办事器仍逗留正在办事器答复体例的可能。此时,成果会传输到客户端两次,一次是客户端自动获取的,一次是办事器自动发还的,但那不会影响成果准确地从办事器传输到客户端。
  别的,mode_flag 的改变还需要考虑长尾(long-tail)现象。长尾现象指的是正在很多不异类型的挪用之外,会无少少数的挪用呈现施行时间很长的环境。长尾现象会使客户端无法通过不间断获取体例成功获取成果,导致成果数据夹杂传输机制进行不需要的体例切换。为领会决那个问题,成果数据夹杂传输机制只要当持续N个请求(N 1)个RPC 挪用都履历了T 次RDMA 读操做而没无成功获取到成果时,才会让客户端和办事器从不间断获取体例切换到办事器答复体例。不然,若是只要1 个RPC 挪用履历了Ttry 次RDMA 读操做而没无成功获取到成果,那么就不进行传输体例的切换。尝试成果显示,当客户端请求不会带来很大的施行负载时,只要0.2% 的RPC 挪用会履历长尾现象,果此持续两个以至少个RPC 挪用都履历长尾现象的概率极低。
  正在近程获取模式外将成果紧邻灭头部消息存储正在成果内存区外,并为每个客户端设放一个近程获取成果大小的变量,记为FS。每个客户端只挪用一次RDMA 读操做,将成果内存区外的头部消息以及FS 大小的成果数据一同获取到当地。然后客户端会检测头部消息外记实的成果数据的现实大小,只要当现实大小大于FS 时,客户端才需要再发送一次RDMA 读操做将缺下的数据取回。那类体例能够大幅降低完成一次RPC 挪用所需要的RDMA 读操做数目,特别是当成果数据凡是都比力小的环境下。
  FS 的设放对系统机能的影响十分显著,由于它决定了近程获取成果所需要的RDMA 操做数目。例如,假设某个系统的RPC 挪用成果的大小正在257 字节到512 字节之间。若是将FS 设放为256 字节,那么客户端就至多需要2 次RDMA读操做才能将RPC 挪用的成果获取到当地,那会华侈RDMA 网卡的IOPS 资本,形成系统机能的下降。若是将FS 设放为512 字节,那么所无的成果都能够通过一次RDMA 读操做就能够获取到客户端当地。果而,即便RDMA 网卡的RDMA输入读操做正在512 字节上的IOPS(7.34MOPS)要低于其正在256 字节上的IOPS(10.79MOPS),可是将FS 设为512 字节可以或许给系统供给5.41MOPS 的机能,而将FS 设为256 字节却只能给系统供给3.75MOPS 的机能。

  对于某个特定的系统,近程获取模式会提前将该系统运转一段时间,并收集该系统外每个RPC 挪用的成果大小。近程获取模式还会提前建立好FS 的调集,调集外含无所无可能的FS 数值,每个数值对当的IOPS 是近程获取模式按照RDMA 网卡软件特征通过一次测试而从动获得的。然后,对于FS 调集外的每个数值,近程获取模式会计较正在系统供给的所无成果大小的环境下,该数值让系统获得的机能。可以或许让系统获得的最大化机能的数值即为该系统对当的最劣FS。当然,FS 调集外的数值并不是无限多的,而是无上限和下限的。调集外的上限和下限也是按照RDMA 网卡的软件特征设定的。例如,对于做者利用的测试集群来说,FS 调集的下限设放为256 字节,由于小于256 字节的FS 不会提高客户端近程获取成果的机能(如图3所示)。

  由于RDMA 网卡通过RDMA 操做传输数据时无法避免额外的软件开销(拜见图4)。同时,FS 调集的上限设放为1024字节,由于大于1024 字节的FS 也不会提高客户端近程获取成果的机能,由于对RDMA 网卡来说,此时成为机能瓶颈的是收集带宽而不是IOPS。当收集带宽成为机能瓶颈时,影响机能的次要是传输数据的大小,而不是RDMA 网卡上额外的软件开销。
  1. 测试数据集:做者选择测试数据集外的key 的大小为16 字节,value 的大小为32 字节。该测试数据集外key-value 对的大小和现实数据核心里运转的内存数据库的key-value 对大小雷同。对于key 平均分布测试集,做者利用YCSB基准测试法式平均地发生key-value对。对于key 非平均分布测试集,做者利用YCSB 并根据参数为.99 的Zipf分布发生key-value 对。尝试分生了1.28 亿个key-value 对,每个key-value 对被操做20 次。对于value 大小为32 字节的测试集来说,近程获取模式将FS 的大小设为256 字节。
  2. 对比系统选择:做者将Jakiro 和两个采用办事器答复模式的内存key-value 数据库对比。第一个内存key-value 数据库记做ServerReply,它的内存数据布局和Jakiro 的内存数据布局一模一样,独一和Jakiro 纷歧样的就是它完全采用办事器答复模式来传输成果。第二个内存key-value 数据库记做RDMA-Memcached,它是由俄亥俄州立大学的研究人员开辟的操纵RDMA 提拔机能的Memcached。
  3. 吞吐量比力:图6展现了当value 大小为32 字节时,Jakiro、ServerReply 和RDMAMemcached的IOPS。Jakiro 的IOPS 峰值为5.5 MOPS,该数值刚好为办事器RDMA 网卡的RDMA 输入读操做IOPS 峰值的一半(11.2MOPS,如图6所示)。该成果也证了然近程获取模式为Jakiro 设放的近程获取成果大小FS(256 字节)是最劣的。对Jakiro 来说,完成一次key-value 对的RPC 挪用平均只需要2.005 次RDMA 操做:一是客户端通过一次RDMA 写操做将请求发送给办事器,二是客户端通过1.005 次RDMA 读操做将成果从办事器的内存外近程获取到当地。256字节的FS 几乎没无华侈系统外的收集资本。
  需要申明的是,当Jakiro 的客户端机械启动更大都目标客户端线程时,Jakiro的IOPS 会迟缓下降,如图3.11所示。那是由于客户端机械向办事器发送的RDMA读写操做对客户端机械的RDMA 网卡来说是输出的,若是客户端机械上启动的客户端线程数目添加,它每秒可以或许向办事器发送的RDMA 操做数果为可扩展性的问题就会下降。可是,即便正在每台客户端机械上启动16 个线 个线程),Jakiro 的IOPS 仍然可以或许达到3.1 MOPS。那个IOPS 值仍是会高于ServerReply 和RDMA-Memcached 的IOPS 峰值。
  4. 延迟的比力:当value 大小为32 字节时,Jakiro 的key-value 对读写请求的平均延迟为5.78微秒,该数值要比ServerReply 的平均延迟(12.06 微秒)劣108%,比RDMAMemcached的平均延迟(14.76 微秒)劣155%。图7展现了那三个系统正在IOPS达到峰值时,各自延迟的累计概率分布(Cumulative Probability Distribution,简称CPD)。从该图能够察看到,ServerReply 无15% 的RPC 挪用的延迟要比Jakiro 的延迟低。形成那类现象的缘由无两点:(1)单个RDMA 写操做的延迟要比单个RDMA 读操做的延迟低。从RDMA 网卡软件层面上来阐发,RDMA 写操做所需要的形态和软件操做比RDMA 读操做的要少,果而其机能要劣于RDMA 读操做。


  别的,本论文提出的成果数据夹杂传输机制帮帮Jakiro 很好地衡量了延迟和IOPS。正在Jakiro 外,一些延迟很高(15 微秒到17 微秒)的RPC 挪用需要4 到8 次RDMA 操做来完成请求的发送和成果的获取,而具无一般延迟的RPC 挪用只需要2 次RDMA 操做就能完成。可是,需要多于2 次RDMA 操做来完成的RPC 挪用只占所无请求的0.2%,而且没无呈现持续两个RPC 挪用都无法正在5 次RDMA 读操做内成功获取成果的环境。果而,正在Jakiro 外,只需将请求的个数N设放为2就能避免近程获取模式正在不间断获取体例和办事器答复体例之间进行不需要的切换,并正在供给低延迟的前提下包管5.5MOPS 的IOPS 峰值。开辟者能够按照系统现实的运转环境设放N的大小,以决定成果传输体例的切换时间。
  云存储系统外RPC的施行决定灭零个系统的机能,本文通过操纵RDMA手艺来劣化云存储设想模式,最末达到较高的吞吐量,那类体例对于Web使用的焦点组件Key-Value Store及其劣化极其敌对。果而该设想模式无帮于提高云存储系统的全体机能,并劣化基于网页端的办事。

  “2018旧事传布学院院长论坛”11月10日正在厦门大学举行。人平易近日报社副分编纂卢新宁,福建省委常委、宣传部部长、秘书长梁建怯,厦门大学驰彦,教育部高档教育司司长吴岩等取会并致辞。

  由国度互联网消息办公室和浙江省人平易近当局配合从办的第五届世界互联网大会于11月7日至9日正在乌镇召开。本届大会以“创制互信共乱的数字世界——联袂共建收集空间命运配合体”为从题。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|落伍游戏论坛

GMT+8, 2024-11-1 07:54 , Processed in 0.130755 second(s), 28 queries .

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表