Distributed Shared Persistent Memory

NVM:Next-generation non-volatile memories,一种非易失性,按字节寻址,低延迟(接近DRAM的读写性能),新型设备
Hotpot 应该是第一个支持 PM 的 DSM 系统,传统的 DSM 都没有为 PM 做过真正意义上的支持。17年的Octopus也算是一个支持 PM 的 DSM 系统,但是它只有文件系统接口
Octopus: an RDMA-enabled DistributedPersistent Memory File System
因此,作者实现了一个支持 PM 的(所以叫DSPM区别于传统的DSM),内核态的DSM 系统,然后把一个 NoSQL 数据库部署到了 Hotpot 上,性能提升了3倍

1. 场景

作者发现 Tensorflow 和 PowerGraph 这类应用程序,在多个线程之间有大量的共享数据。
但是这个地方我没太理解,DSM 系统对同机多线程之间的数据共享是没有价值的,因为多线程本来就共享一个地址空间,数据只有一份
唯一的解析可能是,dsm 可以让这类系统,实现跨node级别的线性扩展

2. DSPM 的挑战

First)应该提供什么样的接口来同时支持直接内存访问,以及数据持久化?同时如果支持直接内存访问,会带来一个新的问题,怎么保证“指针”在不同机器上的一致性?
Second) 如何有效地组织DSPM中的数据以提供良好的应用程序性能?
Finally) 分布式缓存的数据一致性和可靠性怎么解决?

3. Hotpot 架构

0
看样子多node之间使用了rdma技术

3.1. Application Execution and Data Access Abstraction

Hotpot为每个应用程序提供一个全局虚拟内存地址空间。在节点上运行的应用程序线程可以使用全局虚拟内存地址执行本机内存加载和存储指令,以访问本地和远程PM
如果页面在本地存在,虚拟内存地址可以映射到本地物理页面,不然就生成一个page fault,该fault会由Hotpot通过获取远程页面完成
0

3.2. Persistent Naming

hotpot 使用了一种扁平的命名机制来减少元数据管理开销,而不是传统的分层文件命名,没有任何目录或层次结构
因为使用 hotpot 的都是一些大数据集应用,扁平的命名方式简单高效

3.3. Consistent and Persistent Pointers

为了解决指针数据一致性的问题,论文使用的方法简单粗暴:同一个数据集,在跨节点的app里,都具有相同的虚拟地址
为了实现这一点,hotpot 实现了虚拟地址的全局分配和管理:数据集被第一次打开时,全局查找可用的虚拟地址,一旦找到,这个虚拟地址将在所有节点上预留出来
由于现代服务器都是64位的,因此总是能找到空闲的虚拟地址空间
剩下的都是怎么具体实现的问题了,细节可以看论文
发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注