SoupFS 论文阅读

SoupFS notes

题目:Soft Updates Made Simple and Fast on Non-volatile Memory

keyWords: soft updates, dual views

soft updates 避免了同步的metadate刷新,但是这样不保证cache的一致性。

dual views 在不同的视图中共享相同的数据,但是使用不同的指针,保证cache一致性以及可用性。

Soft Updates

Soft Updates meets disk

作用:使用对metadata更新的延迟写,在meatdata的更新中,跟踪每个pointer在内存中的依赖,并且在写回disk的时候把这些依赖关系维护起来。

缺点:复杂。

本文认为,复杂度主要来自:

  1. 依赖关系更新的粒度(pointer maybe byte)与磁盘更新的粒度 (block) 不匹配。
  2. 延迟写增加了依赖关系的复杂程度。

soft updates meets nvm

nvm 特性(低延迟,字节寻址)的优点:

  1. 消除false sharing(soft updates的概念)
  2. 避免循环依赖以及复杂的roll forward/back 操作
  3. 在目录组织里面使用hash表简化文件系统操作的依赖
  4. remove page cache and disk scheduler(分层结构简化了,所以依赖关系也简化了。)
  5. in-place writes 来简化依赖关系

总的来说,就是nvm的字节寻址特性以及低延迟,来简化dependency tracking。

虽然但是,因为page cache被去掉了,所以cache的更新是直接写到nvm中的。因为之前的cpu cache更新会更新到page cache里,之后从page cache再同步到disk中,但是现在的情况是去掉了page cache,而且cpu cache是硬件管理的,文件系统无权过问,所以,对cpu cache的一致性我们无法保证。

传统的处理方法是使用logging或者shadow paging,而nvm文件系统则应更倾向于及时刷新关键的metadata,防止cache line以错误的顺序换出造成数据错误,这就需要一些高性能的cpu指令支持(clflush,clflush+sfence),增加了一些关键路径的延迟。

为了防止cache line的错误换出(without page cache and cache flush operations),提出了dual views的机制。一个latest view,一个consistent view。

latest view中即使发生cache line的换出,也不影响consistent view,consistent view中的数据是持久的。latest 到 consistent的持久化通过持久化进程persister来做(using clflushopt+sfence),这样的好处是持久化不在关键路径上,syscall的延迟不会受到影响。具体实现方式后文详述。

总结

使用nvm来实现soft updates时,关键在于简化dependency tracking,page cache的去除有效的提升了性能,但是也引入了cache一致性的问题。

Analysis: soft updates in nvm

filesystem based nvm need to redesign

一些nvm的redesign要点:

  1. 更小的原子写单位(one cache line size vs. disk block)
  2. 硬件控制的更新顺序:主要是CPU cache是硬件控制的,非预期的换出行为可能会影响sfence、mfence等指令控制的顺序。所以使用clflushopt指令与sfence、mfence指令进行配合,因为clflush是同步刷新的,clflushopt是异步刷新的。此时我们发现syscall的关键路径上需要来flush,增加了延迟。
  3. software efficiency:cache line刷新的成本会很高,因此需要尽可能避免其成为瓶颈。

cost of consistency

一致性的问题之前是使用journaling处理的,这样会带来大量的clflush,增加开销。

soft updates

soft updates 虽然提供了crash consistency,但是在传统的disk上相当复杂:

  1. block-oriented directory 使得依赖关系变得复杂(比如很多个dentry在一个block中,这就需要允许循环依赖的存在,就必须要通过roll-back或者roll-forward来解决)。
  2. 延迟写,与同步写入相比,异步磁盘写入(延迟写)将吞吐量提高了两倍,但soft updates必须跟踪延迟操作的状态,来保持完整性和安全性。
  3. roll-back/roll-forward 增加复杂度。

dependency tracking and dual views

(待续)

相关资料以及后续阅读

soft updates相关论文

posted @ 2021-09-22 22:13  xinze  阅读(118)  评论(0编辑  收藏  举报