持久内存+RDMA让远程数据不再远-总结

简介: 持久内存+RDMA让远程数据不再远-总结

持久内存-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可视,但是并不是持久化到远端,宕机会丢失数据。ADRIntel的异步自刷新技术,使用这个技术的话,当数据达到memory controller这个点后就已经持久化到PM,否则需要到达NVMcontroller刷写到PM点才算持久化。

数据到远端的RDMA网卡后,并不能确定数据是在RNIC网卡buffer还是PCIEbuffer还是已经到持久化设备里面。需要额外的步骤来保证数据持久化。

IntelDDIO技术,提高整体吞吐率,降低延迟,减小能源消耗,让服务器更快处理网络接口数据,只能保证数据对CPU可见。DDIO下数据放到L3 cache里,避免经过内存的拷贝,减小延迟。有两个方案保证持久性。这两种方案哪种最好?

DDIO打开:主要是远端执行CLWB指令刷完cache lines后调用sfence指令,确保数据全部到持久化内存。

DDIO关闭时:数据不经过远端的L3 cache,需要加个read指令,来确保数据都到持久内存。


3、性能


RDMA已经比TCP/IP快了近30%rpmem6.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参与,降低了延迟。

Librmagithub上下载。持久化内存编程的书籍《programming persistent memory》年底完成中文版翻译,期待完成后开源。


目录
相关文章
|
8天前
|
存储 编译器 数据处理
C 语言结构体与位域:高效数据组织与内存优化
C语言中的结构体与位域是实现高效数据组织和内存优化的重要工具。结构体允许将不同类型的数据组合成一个整体,而位域则进一步允许对结构体成员的位进行精细控制,以节省内存空间。两者结合使用,可在嵌入式系统等资源受限环境中发挥巨大作用。
30 11
|
4月前
|
存储 编译器 C语言
【C语言篇】数据在内存中的存储(超详细)
浮点数就采⽤下⾯的规则表⽰,即指数E的真实值加上127(或1023),再将有效数字M去掉整数部分的1。
387 0
|
2月前
|
监控 算法 应用服务中间件
“四两拨千斤” —— 1.2MB 数据如何吃掉 10GB 内存
一个特殊请求引发服务器内存用量暴涨进而导致进程 OOM 的惨案。
|
2月前
|
存储 C语言
数据在内存中的存储方式
本文介绍了计算机中整数和浮点数的存储方式,包括整数的原码、反码、补码,以及浮点数的IEEE754标准存储格式。同时,探讨了大小端字节序的概念及其判断方法,通过实例代码展示了这些概念的实际应用。
63 1
|
2月前
|
存储
共用体在内存中如何存储数据
共用体(Union)在内存中为所有成员分配同一段内存空间,大小等于最大成员所需的空间。这意味着所有成员共享同一块内存,但同一时间只能存储其中一个成员的数据,无法同时保存多个成员的值。
|
2月前
|
监控 Java easyexcel
面试官:POI大量数据读取内存溢出?如何解决?
【10月更文挑战第14天】 在处理大量数据时,使用Apache POI库读取Excel文件可能会导致内存溢出的问题。这是因为POI在读取Excel文件时,会将整个文档加载到内存中,如果文件过大,就会消耗大量内存。以下是一些解决这一问题的策略:
104 1
|
2月前
|
缓存 安全 Java
使用 Java 内存模型解决多线程中的数据竞争问题
【10月更文挑战第11天】在 Java 多线程编程中,数据竞争是一个常见问题。通过使用 `synchronized` 关键字、`volatile` 关键字、原子类、显式锁、避免共享可变数据、合理设计数据结构、遵循线程安全原则和使用线程池等方法,可以有效解决数据竞争问题,确保程序的正确性和稳定性。
42 2
|
2月前
|
存储 编译器
数据在内存中的存储
数据在内存中的存储
42 4
|
2月前
|
存储 机器学习/深度学习 人工智能
数据在内存中的存储
数据在内存中的存储
|
3月前
|
存储 网络协议 大数据
一文读懂RDMA: Remote Direct Memory Access(远程直接内存访问)
该文档详细介绍了RDMA(远程直接内存访问)技术的基本原理、主要特点及其编程接口。RDMA通过硬件直接在应用程序间搬移数据,绕过操作系统协议栈,显著提升网络通信效率,尤其适用于高性能计算和大数据处理等场景。文档还提供了RDMA编程接口的概述及示例代码,帮助开发者更好地理解和应用这一技术。
下一篇
无影云桌面