TL;DR:

I. INTRODUCTION

现代数据中心使用微服务来提升敏捷性、弹性和模块化,微服务大量使用RPC通信,然而,传统的值传递RPC会带来大量额外的数据移动,

这里论证值传递的RPC造成冗余数据传递问题,有多么严重。。。

引入全局地址空间后可以实现按引用传递的RPC,然而,这样的全局地址空间直接与RPC的语义相矛盾,并且耦合了RPC调用者和被调用者。共享相同内存的微服务需要相互同步以保持数据一致。这需要微服务中的额外逻辑来处理共享,从而使微服务的开发变得复杂。

因此,一些特定领域的应用程序不是直接使用 RPC,而是倾向于构建在专用框架 [50]、[52]、[57] 之上,例如用于数据处理的 Apache Spark [73] 和分布式 Pytorch [45] ] 用于机器学习。该框架通常与内存数据存储服务集成。调用者进程不是直接在 RPC 中传输大数据,而是将数据复制到数据存储服务并发送返回的引用。
当远程被调用者进程需要访问数据时,它使用引用通过网络将调用者的数据存储中复制的数据获取到自己的数据存储中。被调用者数据存储中复制的数据是不可更改的,它必须再次从数据存储复制到进程的堆空间。两个副本无需处理数据一致性问题。

然而,存在性能问题,不满足微服务高带宽低延迟的需求。

disaggregated memory可以实现按引用传递的RPC,先前的DM系统都需要复杂的同步原语来支持跨host共享数据,因此简单地将它们应用于数据中心RPC会损害微服务的敏捷性和模块化。

们提出了 DmRPC,这是一种用于数据密集型数据中心应用程序的 DM 感知数据中心 RPC。
首先,它提供了基于DM的共享全局地址空间,为RPC中的大对象传输提供了引用语义传递,从而缓解了嵌套RPC调用中的冗余数据移动问题。
同时,它像以前的RPC系统一样采用按值传递语义进行小对象传输,以避免内存管理开销。
其次,DmRPC采用写时复制机制,将复制延迟到需要的时候,通过以页为粒度的复制来减少复制量。写时复制机制无需在微服务逻辑中处理数据一致性,从而避免微服务开发和部署的复杂化。

image.png
我们使用综合的 7 层微服务应用程序和广泛使用的微服务基准(即 DeathStarBench [26])来评估 DmRPC。在 DeathStarBench 中,DmRPC-net 的吞吐量比基准高 3.1 倍,平均延迟低 2.5 倍。

  • 我们为数据密集型数据中心应用程序提供了 DM 感知的数据中心 RPC。
  • 我们提出基于DM的引用语义传递来解决冗余数据移动的问题。
  • 我们提出了一种写时复制机制和 DM,以在不牺牲性能的情况下为 RPC 提供编程简单性。

II. BACKGROUND

第二个称为 G-FAM(全局结构附加内存)。 G-FAM 提供高度可扩展的内存资源,可供 CXL 结构内的所有主机(∼100 到∼1000)访问。 G-FAM 只有一个所有主机共用的 DPA 空间。为了创建共享内存,不同的主机分配其物理地址空间的连续地址范围,该地址范围被映射到G-FAM的DPA。 G-FAM 设备将负责从每个主机的物理地址到 DPA 的地址转换。这样,不同的主机就可以访问G-FAM中的相同内容。