- Author: Daehyeok Kim(CMU Computer Science) Yibo Zhu (Bytedance)
Distributed Storage System, Replicated transactions, RDMA NIC-offloading
摘要
数据中心的存储系统是大规模在线服务的重要组成部分。它们通常执行复制备份操作,以实现数据可用性和完整性。
然而,今天,即使最近的内核旁路和存储优化(RDMA),此类操作也会受到高速延迟的影响,从而影响这些服务的预测端到端性能的可预测性。我们观察到这些操作的根本原因。问题在于CPU(多租户设置中的宝贵商品)在复制交易的关键路径中的参与。
在本文中,我们介绍HyperLoop,一个新的框架,通过将CPU卸载到商用RDMA网卡,将CPU从存储系统中复制事务的关键路径中移除。为此,我们开发了新的和通用的NIC卸载原语,可以在复制组中的所有节点上执行内存操作,同时保证ACID属性而不涉及CPU。
组会:
- RDMA NIC + NVM(Non-Volatile Memory)
- leveragingg the progrgammability with RDMA NICs
- APIS covering key transactional operations
引入:
分布式存储系统是重要现代在线服务的组成部分。为了保证数据的可用性和完整性,这些系统将每个数据对象的多个副本保存在不同的服务器上,并依赖于复制(replicated transational)操作,以确保在所有副本上一致地和原语地执行更新。
这种复制的事务可能会产生大量且不可预测的延迟,从而影响存储密集型应用程序的整体性能。认识到这个问题,从两个方面:网络
和存储
都提出了许多解决方案来减少此类系统的平均和尾部延迟。
- 网络方面的解决方案,包括内核旁路技术,如RDMA(远程直接内存访问)和用户空间网络技术。类似地,已经努力集成非易失性主存储器(NVM)和用户空间固态磁盘(SSD)绕过OS存储堆栈以减少延迟。
虽然内核旁路等优化确实可以提高独立存储服务和设备(如只运行单个服务的系统)的性能。在整个集群中,它们无法为多租户存储系统提供低且可预测的延迟。
为什么呢?原因有二:
首先,许多提出的减少平均和尾部延迟的技术依赖于使用CPU进行I / O轮询(polling)。但是,在多租户云设置中,提供商无法以这种方式刻录核心以实现经济可行性。
其次,即使没有轮询,CPU也会在复制存储事务中涉及太多步骤。以写操作为例:
- i)它需要CPU来记录,处理日志记录和截断日志,以确保事务中列出的所有修改都是原语的;
- ii)CPU还运行一致性协议,以确保在向客户端发送ACK之前,所有副本都达到相同的状态;
- iii)在transaction期间,CPU必须参与锁定所有副本以便在不同事务之间进行隔离以确保正确性;
- iv)最后,CPU确保来自网络堆栈的数据在发送ACK之前到达持久存储介质。
- CPU可能会导致频繁的上下文切换和其他调度问题。完全从关键路径中删除CPU。
在本文中,我们介绍HyperLoop,HyperLoop,我们为NVM访问引入新的和通用的基于组的NIC卸载原语,而传统的RDMA操作只通过易失性存储器卸载点对点通信。HyperLoop具有加速复制事务的必要机制,这有助于在一组服务器的持久数据上执行逻辑上相同且语义上强大的内存操作,而无需远程CPU的参与。
Realizing these primitives,为了实现这些原语。
- 首先,我们重新调整了一项研究较少且广泛支持的RDMA操作,该操作允许NIC在特殊队列中执行RDMA操作之前等待某些事件。
- 其次,我们开发了一个远程RDMA操作发布方案,允许NIC将RDMA操作排入网络中的其他NIC。
我们的方法非常通用,因为它只使用商用RDMA网卡,因此应用程序可以轻松采用我们的原语。例如,我们修改了RocksDB(Google LevelDB的开源替代品)和MongoDB(Azure CosmosDB和Amazon DynamoDB的开源替代品),以使用HyperLoop和1000行代码。