分布式系统学习——NVM相关资料整理

存储器 - 金字塔层次结构介绍

Non-volatile memory - Wikipedia

Persistant memory fs

Better I/O Through Byte-Addressable, Persistent Memory

问题:原来的存储系统都是基于慢的,块设备接口。但是新的存储介质是基于字节,永久性存储技术,提供快的,细粒度的访问。

设计新的 FS 和硬件结构,适应字节寻址和可持久性。

应用

非易失性内存在阿里生产环境的首次应用:Tair NVM 最佳实践总结

构建在缓存场景,作为 DRAM 的补充。

使用方式

  • Tair MDB 使用 NVM 设备的方式,是把 NVM 以块设备的形式使用 Pmem-Aware File System 挂载(DAX 挂载模式)。分配 NVM 空间对应的操作是在对应的文件系统路径上创建并打开文件,使用 posix_fallocate 分配空间。

会议笔记

PM 的使用方式

  • Memory 使用
  • Persistent Storage 使用(一般)
  • Persistant Memory 使用

需要再查的事情

  • Persistent Memory 完全替代(几乎完全)
    • 失去了 log 的功能
  • DRAM 和 Persist Memory
    • 还存在 log 功能
  • File Emulation with DAX(FLEX)
    • RocksDB
    • Google 2019
    • falloc 预分配文件空间会好很多
    • open 替代为 open+mmap 操作
  • Tim Harris
  • SplitFS
  • nova 里面做了哪些数据结构
    • LSM Tree

我自己可以做的事情

  • 复现一下 Nova(机器上已经在跑了) 做一些 bench mark
  • Li 建议可以在上面多跑一些应用,其他数据的可以。

科研方向

  • BloomFilter(写放大问题的研究,好像又没必要)

6.12 会议记录

下面是 6.12 的会议记录

B-Tree、LSM Tree()、SQL

张:从应用角度去考虑,更好一些?结合场景的应用。

李:三种应用场景:Memory 扩展、Persistant Storage、Persistant Memory。KV 也有一些工作。在文件系统层次上可以做一些应用,做一些密集访问文件系统的应用。另外一个就是研究数据结构,数据结构放在这个设备上,同步上做的时候,要不要改变。

张:文件系统都属于 Kernel 态,用户操作都在用户态 User 态,一次系统调用(system call)就超过了你在 kernel 里面做的优化了。

李:SplitFS 是这种思路,转换了一部分操作到 User 态。

张:是数据操作还是/操作仍旧放在了内核态(一部分),所以还是一部分。

李:SplitFS 能力比 NOVA 大四倍。LevelDB 在上面变成两倍。

张:LevelDB 还是一个 CPU bound(嘿嘿嘿),所以现在还有一个思路就是换其他数据结构,可能 Hash Table。

关于网络方面的研究

张:RDMA 跟 TCP/IP 有了差距,Memory 通过 RDMA 暴露给 Leader,Leader 可以直接在后面 append。Raft 和 Paxos 是针对传统 TCP/IP,RDMA 不一样,有了

在 PM 上做一个分布式的 Hash Table。分布式存储里面的一个特点,粒度越细,数据量越多。之前一个问题,元数据过多,大于 Memory 的容量,导致部分存储在磁盘,性能就不好了。有的用很大的 Memory 来保护这些元数据。如果有分布式的 PM 上的 Hash Table,就会对上层编程提供很大便利。

元数据的 bottle neck

张:举个例子,在元数据看,每数据粒度(一个 block)为 256MB 有一个元数据的记录,只有这样可以把元数据压在一个内存中。如果有 Hash Table,就可以缩小粒度!写程序会非常方便!,这是一个 Performance 上的体验。

LevelDB 提供原子性,就已经提供了很多很大的便利。

从需求的角度来看,非常需要PM 上的 Hash Table

张:怎么做 Replication 是个非常有意思的地方,一种是 RDMA+??、一种是 Raft 这种 Replication。

李:是一直在跑 Raft 么?选举,replication 也是用 raft。

张:选举的时候用 Raft(或者 Paxos),replication 上不全用 Raft,比如 kernel write(没听清)??

张:inline replication 整个流程:server 中写 4K 的数据,inlin replication 首先在 hash table(分布式/单机)查一下有没有这个 key,在另一个 teble 上 查,发挥结果。miss 的话,读一次磁盘,然后插入新 key 再插入。

李:解释一下,写操作一次,两次元数据操作+一次数据操作。由于磁盘持久化本来是负担很大的事情。

张:关注的一个参考的内容 Intel DAOS

落脚点:分布式哈希 Table (DHT)与 PM 结合

学长:Hardware TSX(Transactional Synchronization Extensions)

李,张:提到的是最近没什么人提到了,Software 这类是架了一层中间件,Hardware 是纯粹的硬件层。

ACID:

李:把 Transaction 分成两部分,PM+RMDA 高速网络环境下,

张:总结,分布式 hash 与 PM 结合是个最终目标。一步一步,分布式的 Hash Table 就很难了,ReHash(扩容),静态的意义不大,现在的意义。

李:下一步地再做,带 Transaction 的 Hash Table。

张:现有 DHT 和我们所想的不大一样,是一种寻址的算法和方式。但我们想要的是一个的确能在机器上运行的内存中存在的分布式 Hash Table。

1
2
3
4
5
14:37:13	  Kyle Zhang : daos
14:37:36 Cheng Li : https://www.intel.com/content/www/us/en/high-performance-computing/daos-high-performance-storage-brief.html
14:40:18 Cheng Li : https://www.cs.utexas.edu/~v
ijay/papers/sosp19-recipe.pdf
14:41:19 Cheng Li : https://arxiv.org/pdf/2003.07302.pdf

6.19 会议记录

下面是 6.19 日会议记录

  • Paper1: Using RDMA Efficiently for Key-Value Services

  • Paper2: FaRM

    • Fast Remote Memory
    • 微软?
    • 构建的是面向内存的,分布式 KV-Store(我们是研究 PM 上的)
    • 李:我们是希望用 PM 的特性,这里面是不是有一些冗余部分(一致性部分?)
    • 张:做的是分布式内存管理,可以作为我们研究的基础,但是应用场景有下列不同
      • 第一个:还是一个 Memory 的结构,感觉这个并不符合每个操作 Atomic(虽然有日志)
  • RDMA 操作 PM 和 DM 不同,操作 DM(无论写在哪里)都告知成功了,操作 PM 不能确定写持久化了。
  • 张:RDMA 对面是内存,那不能确定持久化了(还需要一次 commit 操作),如果 RDMA 对面是 PM,那就可以省去 commit。
  • 李:核心问题:RDMA 和关注两个 CC,Concurrency Control、Commit Control

  • 张:里面还是有一些 miss-match 的地方,这些都是基于 DM 的工作,而 PM 有一致性的地方。
  • 李:提供一篇对 RDMA 更好的论文

  • Paper3:Design Guidelines for High Performance RDMA Systems

用于分布式系统元数据管理的 workload 需求?(张总的需求?)

张:文件系统元数据与 KV 的区别

  • 文件系统元数据树形,有时候要考虑锁
  • 文件系统元数据设计一般不考虑横向扩展性(Octopus 好像有个扩展)

李:张总那边的 Workload 的特征?

张:

  • 分布式可横向扩展:CPU 和内存容量要同步横向扩展,扩展 memory,现今情况都会带 cpu,可以利用上。仔细想一下其中的通信
    • client-server:发送请求
    • server-server:跑 Paxos 协议?
    • 一种是提交给一台机器,然后 log replication,另一种是提交给多台机器。
    • 李:不考虑 logging,用 CoW、Shadow 尝试下。现阶段 log 是 sequential 的,然后 batch 到一起往下刷(这样就很快),我问的问题的回答:batch 的性能优化体现在, function call,(函数调用、系统调用、网络调用)如果能 batch 到一起的话,能极大的降低 overhead 和 latency。

后续的工作:

  • SmartX 的需求:K-V 来做文件系统元数据,常见的操作有哪些
  • 考虑把 FaRM 搬到 PM 上
  • RDMA 和 PM 结合

6.19 Summary

Read more papers on RDMA usage in distributed systems:

  • FaRM: Fast Remote Memory
  • Using RDMA Efficiently for Key-Value Services
  • Design Guidelines for High Performance RDMA Systems
  • Deconstructing RDMA-enabled Distributed Transactions: Hybrid is Better!
  • Orion: A Distributed File System for Non-Volatile Main Memory and RDMA-Capable Networks

Find suitable model for distributed key-value store:

  • Partition
  • Caching
  • Local data structure
  • Space allocation
  • Replication
  • how to use RDMA more efficiently
  • How to make better use of servers' CPU
  • How to implement atomicity/transaction

Evaluate FaRM on our machines