[MSST'14] CBM
CBM: A Cooperative Buffer Management for SSD
作者: Qingsong Wei, Cheng Chen, Jun Yang Data Storage Institute, A-STAR Singapore
论文概要
Abstract
随机写(Random Write)极大地限制了SSD的应用。虽然提出了几种buffer管理算法来减少随机写入,但他们处理顺序、随机混和的访问负载的能力有限。 本文提出了一种协同的buffer管理方案,协调write buffer和read cache,以充分利用I/O密集型工作负载的时间、空间局部性。为了提高缓冲区的命中率和destage sequentiality,CBM将写buffer分为Page Region
和Block Region
。page region处理随机写,Block Region处理顺序写(以block的粒度)。CBM利用基于阈值的迁移将随机写入与顺序写入动态分类。当一个块被逐出写缓冲区时,写缓冲区中的脏页和属于被逐出块的读缓存中的干净页被合并,以最大化形成全bull block write的可能性。
核心思想

几个关键技术点:
读写cache协同,以充分利用时间局部性和空间局部性;
混合的写buffer,通过page-level和block-level的管理,来共同管理buffer,以提升命中率和
destage sequentiality
;动态调整migration的阈值、顺序/随机写的分类标准;
从cache中flush数据到SSD中时,应当尽量避免flush单独的页。而是尽量将属于同一个block的都flush下来。
read buffer采取DRAM,并搭配传统的缓存算法,比如LRU; write buffer分为page区域和block区域,并设置了阈值来判断page区域的数据是否应该转换为block区域的数据。这个阈值是动态变化的,变化的依据是保证block buffer的区域占到整个write buffer的10%以下。(如果超过了,就增大阈值;不足就调小阈值)。
写buffer的数据用一个B+数来维护,每个结点代表一个逻辑块,包含统计信息,并给出了具体每个逻辑页的位置。
设计
我的思考
可以学到的
对于I/O密集型负载来说,随机小请求是很多的;
随机写+混合写的性能,甚至会低于纯随机写的性能。
Last updated
Was this helpful?