SWARM: Replicating Shared Disaggregated-Memory Data in No Time——论文泛读

embedded/2024/11/18 14:44:47/

SOSP 2024 Paper 论文阅读笔记整理

问题

内存分解是一种新兴的数据中心架构,允许服务器使用RDMA[30]和CXL[10]等技术访问外部内存,可以提高资源利用率和可扩展性。然而,内存节点的故障会严重干扰用户并降低整体系统的可靠性。复制是确保应用程序容错的关键,但在分解的内存中复制共享数据有以下两个困难:

  • 需要多次到内存节点的网络往返,这至少使分解内存的延迟加倍。

  • 通常需要在数据旁运行代码以进行并发控制,例如:跟踪时间戳、用旧时间戳过滤消息、投票。但分解的内存可能没有计算能力(CXL内存),或者会增加运行代码的额外开销(RDMA需要昂贵的双边操作[31,32])。

本文方法

本文提出了SWARM(Swift WAit free Replication in disgregation Memory),用于分离式内存共享对象的复制方案。可以提供:常见情况下(没有故障和争用、时钟几乎同步)的单次往返读写;复制大或小对象;线性化形式的强一致性;wait-freedom形式的强活性。

需要解决以下挑战:

  • 必须处理同一对象上的并发读写,同时确保强一致性,且在常见情况下几乎没有通信。

  • 不能在内存节点中运行计算。

  • 必须原子性地处理大于分解内存支持的最大原子更新的对象的读写。

SWARM模块设计:

  • Safe Guess,一种无等待复制协议,实现单次往返操作、线性化、wait-freedom,需要内存节点支持最大寄存器对象,该对象跟踪大于字长的最大值写入。在内部,推测性地编写猜测顺序时间戳,以节省往返时间;通常猜测是正确的,实现一次往返中写入;否则,使用一种称为时间戳锁的无等待锁机制来解决与潜在读取器的冲突,以便在需要时可以使用更好的时间戳安全地重新执行写入。

  • In-n-Out,可以在一次往返中提供分解内存中大缓冲区的有条件原子更新和原子检索。对于写操作,首先通过CAS修改元数据,随后更新。当没有争用时,使用就地更新来快速执行;当CAS失败,说明有其他写操作产生冲突,会回退到异地更新,如图3。对于读操作,通过验证数据与哈希值决定读取就地数据还是异地数据。此外,使用硬件订购保证优化了错位写入,使其在一次往返中运行。

开源代码:GitHub - LPD-EPFL/swarm-kv: A fault-tolerant RDMA-based disaggregated key-value store with 1-RTT UPDATEs and GETs thanks to the SWARM replication protocol

使用SWARM构建了SWARM-KV,一个低延迟、强一致性和高可用性的分离式键值存储。与未复制的键值存储FUSEE相比,具有更低的延迟(Get速度最高提高2倍,Update速度最高提高3.4倍)和更好的可用性(无停机时间),但分离式内存消耗是FUSEE的2倍。

总结

针对分离式内存上共享对象的复制问题,现有方法需要多次到内存节点的网络往返,需要在数据处运行代码以实现并发控制。本文提出SWARM,实现单次往返的读写、大小对象支持、强一致性、无需额外并发控制。包括两个技术:(1)Safe Guess,推测性地使用时间戳,以节省往返时间。猜测正确则实现一次往返中写入;否则使用无等待的时间戳锁机制来解决冲突,用于后续的CAS检测冲突。(2)In-n-Out,用于读写的原子性。对于写,通过CAS判断冲突,无冲突则原地更新,有冲突则异地更新随后修改元数据。对于读,通过验证数据和哈希值判断读取原地还是异地数据。


http://www.ppmy.cn/embedded/138564.html

相关文章

以太坊基础知识结构详解

以太坊的历史和发展 初创阶段 2013年:Vitalik Buterin 发表了以太坊白皮书,提出了一个通用的区块链平台,不仅支持比特币的货币功能,还能支持更复杂的智能合约。2014年:以太坊项目启动,进行了首次ICO&…

结合源码讲解下Android中的截图流程

在Android中,截图过程主要涉及以下几个关键步骤: 捕获屏幕内容生成Bitmap图像将Bitmap传递给用户应用 在系统内部,截图流程涉及Android Framework、SurfaceFlinger和Gralloc等模块的协作。下面详细介绍这几个步骤的实现过程,并结…

2024山西省网络建设运维第十八届职业院校技能大赛解析答案(7. mariadb 服务)

\7. mariadb 服务 任务描述:请安装 mariadb 服务,建立数据表,具体要求如下: (1)配置 linux5 为 mariadb 服务器,创建数据库用户 xiao,在任意机 器上对所有数据库有完全权限。 (2)配置linux6为mariadb客户端,使用数据库用户xiao远程登录mariadb 服务器,创建数据库 userd…

探索C/C++的奥秘之vector

vector<int>是一个类模板&#xff0c;要显示的实例化&#xff0c;并且vector<char>不能代替string。原因&#xff1a; 1.string和vector<char>再结构上有所不同&#xff0c;string要保证末尾有\0&#xff0c;sting就是自动生成的\0&#xff0c;vector<ch…

POI和easyExcel的讲解和使用

目录 应用场景&#xff1a; Apache POI&#xff1a; EasyExcel&#xff1a; POI具体实现&#xff1a; POI-Excel 写&#xff1a; POI-Excel 读&#xff1a; 大文件写HSSF&#xff1a; 大文件写XSSF&#xff1a; 大文件写SXSSF&#xff1a; EasyExcel&#xff1a; 导…

【GeekBand】C++设计模式笔记11_Builder_构建器

1. “对象创建” 模式 通过 “对象创建” 模式绕开new&#xff0c;来避免对象创建&#xff08;new&#xff09;过程中所导致的紧耦合&#xff08;依赖具体类&#xff09;&#xff0c;从而支持对象创建的稳定。它是接口抽象之后的第一步工作。典型模式 Factory MethodAbstract …

生成式GPT商品推荐:精准满足用户需求

生成式GPT商品推荐&#xff1a;精准满足用户需求 随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;电商平台正在逐步迎来一场前所未有的变革。尤其是生成式GPT&#xff08;Generative Pre-trained Transformer&#xff09;技术的应用&#xff0c;正在重新定…

使用真实 Elasticsearch 进行更快的集成测试

作者&#xff1a;来自 Elastic Piotr Przybyl 了解如何使用各种数据初始化和性能改进技术加快 Elasticsearch 的自动化集成测试速度。 在本系列的第 1 部分中&#xff0c;我们探讨了如何编写集成测试&#xff0c;让我们能够在真实的 Elasticsearch 环境中测试软件&#xff0c;并…