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的时候把这些依赖关系维护起来。
缺点:复杂。
本文认为,复杂度主要来自:
- 依赖关系更新的粒度(pointer maybe byte)与磁盘更新的粒度 (block) 不匹配。
- 延迟写增加了依赖关系的复杂程度。
soft updates meets nvm
nvm 特性(低延迟,字节寻址)的优点:
- 消除false sharing(soft updates的概念)
- 避免循环依赖以及复杂的roll forward/back 操作
- 在目录组织里面使用hash表简化文件系统操作的依赖
- remove page cache and disk scheduler(分层结构简化了,所以依赖关系也简化了。)
- 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要点:
- 更小的原子写单位(one cache line size vs. disk block)
- 硬件控制的更新顺序:主要是CPU cache是硬件控制的,非预期的换出行为可能会影响sfence、mfence等指令控制的顺序。所以使用clflushopt指令与sfence、mfence指令进行配合,因为clflush是同步刷新的,clflushopt是异步刷新的。此时我们发现syscall的关键路径上需要来flush,增加了延迟。
- software efficiency:cache line刷新的成本会很高,因此需要尽可能避免其成为瓶颈。
cost of consistency
一致性的问题之前是使用journaling处理的,这样会带来大量的clflush,增加开销。
soft updates
soft updates 虽然提供了crash consistency,但是在传统的disk上相当复杂:
- block-oriented directory 使得依赖关系变得复杂(比如很多个dentry在一个block中,这就需要允许循环依赖的存在,就必须要通过roll-back或者roll-forward来解决)。
- 延迟写,与同步写入相比,异步磁盘写入(延迟写)将吞吐量提高了两倍,但soft updates必须跟踪延迟操作的状态,来保持完整性和安全性。
- roll-back/roll-forward 增加复杂度。
dependency tracking and dual views
(待续)
相关资料以及后续阅读
soft updates相关论文