ACM Transactions on Storage
,
Vol.
号
183
、第二十一条。出版日期:
2022
年
8
月
对于4KB逻辑块中的100 B对象,将另外涉及实质上的LWA-40-
其与dlwa相乘。如上所述,将微小
的对象转换为较大的元对象
,将lw A从逻辑块转换为元对象,但没有解决该问题。
2.3 目前的做法和相关工作
本节讨论闪存缓存的现有解决方案及其缓存微小对象的缺点
。
键值存储:
Flash高效的键值存储已经被开发和演示[8,33,
48,56,70],当需要缓存时,考
虑它们是很诱人的 但是键值存储
通常假设删除是罕见的,并且存储的值必须保留,直到被告
知否则。相比之下,高速缓存频繁地并且根据它们自己的判断(即,每次项目被逐出时)。 频
繁删除,键值存储经历严重的写入放大,有效容量低得多
,或两者兼而有之[15,22,34,
65,70]。
作为一个具体的例子,考虑SILT [48],
在其高级设计中最接近Kangaroo的键值存储。与
Kangaroo一样,SILT使用多层闪存设计来平衡内存
索引大小与写入放大不幸的是,SILT例
如,SILT由于这些层是不可变的,删除操作将被记录,并且不会立即回收空间。因此,高速缓
存逐出导致空洞(即,减少的高速缓存容量)直到下一次压缩(合并和重新
排序)发生。人们
可以通过更频繁的压缩来减少丢失的高速缓存容量,但这会对性能和LWA造成很大的损
失。
DELETE
的类似问题影响大多数键值存储,通常在压缩频率和不可变数据结构中的漏洞之间进
行相同的权衡通过协调驱逐与压缩操作,可以在一定程度上减少这些开销,但这并不是微不足
道的,也不是这些系统的设计方式例如,Netflix使用RocksDB [8]作为闪存缓存
,由于这个问题,
不得不过度提供67%[22]。 一些键值存储通过
降低读取效率来减少alw a [49,56,70],但并
没有回避
DELETE
浪费容量的根本挑战。相比之下,闪存缓存可以在方便的时候自由地驱逐对象
这使得闪存缓存可以共同设计数据结构和策略,从而提高删除效率,并将浪费的
空间降至最
低。
日志结构缓存:
为了减少写入放大,许多闪存缓存
在闪存上采用日志结构,并在DRAM中使
用索引来跟踪对象虽然这种
解决方案通常适用于较大的对象,但对于
微小的对象,它需要大
量的DRAM,因为索引必须为每个对象保留一个条目索引可以溢出到闪存上[70],但是
溢
出增加了用于查找的闪存读取和闪存写入,以在对象被接纳
和驱逐时更新索引。
即使是Flashield [34],一个最近针对小对象的日志结构缓存设计,也面临着较大闪存设备的
DRAM在优化其DRAM使用后,Flashield需要每个对象20位用于索引,加上每个对象大约10位
用于Bloom过滤器。因此,Flashield将需要75 GB的DRAM来跟踪2 TB的100 B对象。事实上,
Flashield DRAM缓存
必须随着闪存容量的增长而增长,否则预测精度将受到影响,从而导致
更多的未命中。
因此,日志结构的高速缓存所需的总DRAM可以迅速超过可用的量,并显着增加系统成本和
功率。随着时间的推移,技术趋势将使这些问题
变得更糟,因为闪存的每比特成本继续比DRAM
更快地下降[27,71]。
组关联闪存缓存:
通过限制对象的可能位置,可以减少在闪存上定位对象的元数据[53]。
Meta