持久内存-RDMA让远程数据不再远
第一届「中国云计算基础架构开发者大会」(以下简称 CID)将在 2020 年 10 月 25 日举办。会中看到有新硬件PM结合RDMA的议题,这是数据库方面前沿技术,对下一代数据库发展有重要影响。听后进行总结。
正文
包括以下几个议题:PRMEM是什么、技术细节、性能、使用场景及开发的库。
1、什么是PMEM
SSD已经结合了RDMA技术,需要客户端将数据从DRAM通过PCIe拷贝到网卡,传输到服务端网卡再拷贝到DRAM,最后通过PCIe持久化到SSD。具有额外的数据copy。结合PM新硬件,可以消除这部分的影响。
数据从客户端到网卡后,通过RDMA网络直接到对端的网卡,然后直接到PM。消除了经过DRAM的拷贝流程以及CPU的参与,解放出来服务端的CPU,进行其他操作。
2、技术细节
标准的RDMA数据流路径为:数据经过L3 cache->RNIC在通过RDMA网络->远端的RNIC->L3 cache->持久设备。
问题:数据的可视化和持久化
数据对CPU可视,不是对人。数据到达L3 cache及以上才能对CPU可视,但是并不是持久化到远端,宕机会丢失数据。ADR是Intel的异步自刷新技术,使用这个技术的话,当数据达到memory controller这个点后就已经持久化到PM,否则需要到达NVM的controller刷写到PM点才算持久化。
数据到远端的RDMA网卡后,并不能确定数据是在RNIC网卡buffer还是PCIEbuffer还是已经到持久化设备里面。需要额外的步骤来保证数据持久化。
Intel的DDIO技术,提高整体吞吐率,降低延迟,减小能源消耗,让服务器更快处理网络接口数据,只能保证数据对CPU可见。DDIO下数据放到L3 cache里,避免经过内存的拷贝,减小延迟。有两个方案保证持久性。这两种方案哪种最好?
DDIO打开:主要是远端执行CLWB指令刷完cache lines后调用sfence指令,确保数据全部到持久化内存。
DDIO关闭时:数据不经过远端的L3 cache,需要加个read指令,来确保数据都到持久内存。
3、性能
RDMA已经比TCP/IP快了近30%,rpmem以6.8微秒,延迟大大降低
红色表示CPU参与,该技术没有CPU参与。网络和硬盘的延迟都大大降低。
Rpmem的延迟在平均4kb的写进行复制场景下,延迟小于10us。
4、案例
计算节点和存储节点分离,与之前的X8代相比,该一体机使用RDMA访问PM能够获得快10倍的事务处理延迟及2.5倍的事务IOS。
OLTP数据库复制场景下的高延迟问题。因为PM是持久的,所以相比DRAM来说可以直接反馈master可以提交,然后slave异步进行回放。
AI方面。
6、额外步骤保证数据到持久内存
Intel开发的librma可方便进行编程。相比librpmem,软件层次更少,简化软件系统复杂度,更注重API的应用程度,方便工程师使用更少代码实现相同功能。
Librma使用push transfer模型,大大减小RDMA复制的操作,RDMA flush后,由硬件完成数据持久化到PM。同时不需要CPU参与,降低了延迟。
Librma从github上下载。持久化内存编程的书籍《programming persistent memory》年底完成中文版翻译,期待完成后开源。