Paper Reading 01 Efficient and Consistent NVMM Cache for SSD-Based File System

Paper Reading 01

Efficient and Consistent NVMM Cache for SSD-Based File System — 基于SSD文件系统的高效且一致的NVMM缓存

研究背景

基于DRAM-SSD体系的缓存管理以页粒度进行换入换出,当有同步操作时,需要把同步的数据所在的页全部写到SSD中,照成很大的I/O开销,然而实际上,只需要将同步页中的脏数据写回SSD即可。那有什么办法既可以同步数据,又减小开销吗?有,引入NVM,将同步页中的dirty cacheline写入NVM中保证持久化,在DRAM中建立每个文件同步数据在NVM中的索引,在NVM中建立dirty cacheline到相应的SSD页文件的映射,这样当发生系统奔溃时,也能保证之前同步操作的正确。同时大大提升了缓存的空间利用率,并且NVM/DRAM的存取远低于SSD,大大减少了I/O开销,减少SSD的写入次数。

但是这么做可能有几个问题:
1)用细粒度管理缓存数据会导致索引开销增大,可能会导致判断是否cache hit的时间增加,导致读写性能下降。
2)细粒度管理会在NVM中引入额外的元数据(用于崩溃后恢复),当DRAM同步page中dirty cacheline占比很大(比如接近100%)时,一个NVM page已经不够缓存了,这就会降低缓存利用率。
3)细粒度管理是崩溃一致性的保证更困难。
4)当同步操作在实际工作负载中占比很小时,这个工作带来的收益很小,甚至可能不足以抵消它带来的开销。

文章基于两个发现:
1)同步操作在实际工作负载中占比较大
2)同步页中dirty cacheline占比远小于100%

混合缓存体系结构

1
DRAM缓存用于服务正常的读写负载,NVMM缓存用于服务同步操作和崩溃恢复。

SFCM(simple fine-grained cache scheme )

一种简单的细粒度管理方案
在这里插入图片描述
当同步操作发生时,将相应的pages中的dirty cacheline写入NVM。重要的问题有:
1)DRAM中的page和NVM中cacheline的映射关系。
2)NVM的数据存储格式。
3)NVM数据和相应SSD页的映射关系。
问题一由DRAM中的NVMM Cache Index解决,SFCM在DRAM中为每一个逻辑页维护一个基于链表的索引,每个索引项由一个三元组<逻辑 文件地址, NVM物理地址, 映射长度>构成。
问题三可以在NVM中加一个映射表,表示每个cacheline到SSD文件的映射
SFCM以连续的页划分NVM空间,每个page的格式如上图所示,由于细粒度管理,每个页需要维护额外512KB(实际为464KB,为了cacheline对齐)的元数据,实际数据空间只有3584KB,即56个cacheline。
元数据结构:
1)Cacheline Bitmap:用于识别相应cacheline是否有效或者空闲。
2)Version Bitmap:用于一致性控制
3)Cacheline Mapping Table:用于解决问题三
4)Padding Record:使元数据64字节对齐

SFCM的问题

当同步页中dirty ratio 很大时,比如接近100%,60+个dirty cacheline。而一个NVMpage只有56个data cacheline,显然会降低缓存利用率。

AFCM(Adaptive Fine-grained Cache Management)

自适应细粒度管理方案。
针对SFCM的问题,一种解决方案是让NVM同时支持page粒度和cacheline粒度,根据同步页的dirty radio,AFCM自主选择同步整个page还是dirty cacheline。

具体一点,究竟应该怎么自主选择缓存模式呢?
假设一个同步页有total_cnt个cacheline,dirty_cnt个dirty cacheline,那么采用细粒度缓存模式带来的空间收益为:benefit = (total_cnt - dirty_cnt) * 64KB。而采用细粒度缓存模式每个cacheline需要分摊的元数据开销为:ave_cost = 512 56 \frac {512}{56} 56512KB,因此整体开销为:cost = dirty_cnt * ave_cost

当cost>benefit时,采用粗粒度缓存模式,将整个同步页写入NVM中,否则采用细粒度模式。

在这里插入图片描述
AFCM设计如上图所示,除了保留SFCM的设计,AFCM增加粗粒度的data page和元数据页。
元数据页中包含Data pages的状态图(fine-grained, coarse-grained, or free )和粗粒度page的version bitmap和到SSD对应页的映射。

一致性

NVM只能保证8字节写入原子性,而不管是粗粒度还是细粒度缓存模式,每次同步操作,NVM需要修改的远不止8字节,因此,当系统发生崩溃时,很可能会处于不一致状态。
AFCM采用Transactional Copy-on-Write来保证一致性。写时复制+事务日志保证一致性以及崩溃后恢复。

在这里插入图片描述

日志结构如上图所示,采用的是循环数组。
假设一个同步操作有两个dirty page(设为P1,P2),那么操作如下
1)初始化head执行的日志项,Num为P1的dirty_cnt,SSD Addr为相应的SSD地址,previous为之前的NVM页号(细粒度或者没命中则为空)
2)head循环++
3)如果之前NVM缓存了P1,那么将对于的cacheline or page的version mapbit设置为old,并将日志项的state置为1
4) 在NVM分配新的空间给P1,日志项的current指向新分配的页号(细粒度则为空),写入相应的数据(粗粒度整页写入,细粒度dirty cacheline写入),更新state为2.
5)对P2重复1-4
6)释放所有version mapbit为old的缓存空间,并将tail指向和head相同的项。

为了能够在崩溃后恢复,上述步骤都是严格有序的,因此要用硬件指令保证比如(mfence和clfulsh)

恢复

这里不在讲了,有兴趣可以看论文。

References

[1] Youmin Chen, Youyou Lu (陆游游), Pei Chen, Jiwu Shu (舒继武): Efficient and Consistent NVMM Cache for SSD-Based File System. IEEE Trans. Computers 68(8): 1147-1158 (2019)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值