IPADS 17年的工作:Soft Updates Made Simple and Fast on Non-volatile Memory 閱讀筆記
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相關論文