• 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相关论文

  • 相关阅读:
    水仙花数
    Edge browser hosts file
    tt0034583
    JavaScript中的面向对象
    滚动
    无缝滚动
    MySQL(一)
    JavaScript 精粹
    MYSQL新手入门篇
    用github来展示你的前端页面吧
  • 原文地址:https://www.cnblogs.com/LuoboLiam/p/15322001.html
Copyright © 2020-2023  润新知