Implementing Flash-Cached Storage Systems UsingComputational Storage Drive with Built-inTransparen

摘要

本文研究利用内置透明压缩的不断增长的固态硬盘(ssd)家族来简化高速缓存设计的数据结构。这种存储硬件允许用户应用程序有意地不充分利用逻辑存储空间(例如,稀疏LBA利用率和稀疏存储块内容),而不牺牲物理存储空间。因此,本工作提出了一种无索引的缓存管理方法,通过利用带有内置透明压缩的ssd,在很大程度上简化了基于闪存的缓存管理。我们进行了各种实验来评估所提出的cache管理的写放大和读性能,结果表明,我们提出的无索引cache管理可以达到与传统策略相当或更好的性能,同时消耗更少的主机计算和内存资源。

1、介绍

本文研究了如何利用新兴的计算存储驱动器(CSD)[1],[2]来创新闪存缓存数据存储系统的设计。为存储设备赋予计算能力的简单概念可以追溯到20多年前的[3],最近又引起了人们的极大兴趣([4],[5])。作为一组特殊的CSD产品,TC-CSD(内置透明压缩的CSD)在内部执行基于硬件的每4kb数据压缩/解压缩,这对主机操作系统和用户应用程序是透明的。目前,TC-CSD是唯一一种已经成功商业化并部署在生产环境[6],[7]中的CSD。

除了在CPU开销为零的情况下降低存储成本,TC-CSD还支持两种类型的稀疏性,从而为系统级创新提供了独特的机会:(1) LBA(逻辑块地址)空间:TC-CSD可以公开一个比其内部物理存储空间大得多的LBA空间。(2)稀疏扇区内容:由于特殊的数据模式(如全零)可以被高度压缩,我们可以留下一个4KB扇区,部分填充有效的用户数据,而不牺牲真正的物理存储成本。通过这两种类型的稀疏性,TC-CSD将逻辑存储空间利用率与物理存储空间利用率[8]解耦。这允许系统有意地不充分利用逻辑存储空间,以便采用更简单的数据结构和算法,而不牺牲真正的物理存储成本。更简单的数据结构和算法可能会带来更高的系统性能和/或更低的CPU/内存成本。

       本工作设想使用TCCSD作为缓存设备的闪存缓存存储系统。我们特别关注块级缓存,它在块层管理缓存的存储系统,对上层文件系统和用户应用程序是透明的。虽然块级缓存可以在不改变上层软件的情况下方便地部署,但它的实现有两个主要问题:(1)缓存管理开销:缓存存储系统的传统实现使用基于散列(或基于树)的索引数据结构来维护缓存的HDD扇区与其在缓存设备上的位置之间的映射。这种索引数据结构的管理可能会导致不可忽视的CPU和内存开销。(2) HDD数据压缩的影响:HDD数据压缩通常使用较大的块(如32KB、64KB甚至256KB)来提高总存储成本的节约。因此,如果HDD数据压缩是由上层软件(例如,文件系统或用户应用程序)处理的,那么数据将以压缩数据块的单位缓存。这可能会降低缓存设备容量使用效率,特别是在以小型随机数据访问为主的工作负载下。

       为了解决上述两个问题,本文提出一种块级TC-CSD缓存存储系统的设计框架,具有以下两个特点:(1)Index-less缓存管理:利用TC-CSD的稀疏LBA空间,我们可以使用简单的位图来管理缓存,而不是使用传统的基于哈希/树的索引数据结构。这可以大大降低缓存管理复杂度和CPU/内存成本。我们还开发了一些技术,这些技术可以进一步减少位图内存的占用,并利用位图数据结构使缓存回收对HDD更加友好。(2) HDD上的透明压缩:对于第二个问题(即HDD数据压缩的影响),最根本的解决方案是让HDD数据压缩发生在块级缓存层以下。因此,HDD数据压缩和缓存对文件系统和用户应用程序都是透明的,而块级缓存在未压缩的存储空间上运行。因此,hdd驻留的数据被压缩成相对较大的块,而数据被缓存在单位为4KB的扇区中。这将允许系统充分利用缓存设备的IOPS和带宽。利用TC-CSD支持的稀疏扇区内容,我们开发了一个简单的数据结构来管理HDD数据压缩的实现。它支持工作负载自适应可变的压缩块大小,并可以完全避免在hdd驻留的数据出现随机更新时的读-修改-写操作。

2、背景和动机

A、TC-CSD的基本知识

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
将 Xtext 和 Xtend 用于实现特定领域语言(Domain-Specific Languages,DSL)是一种更容易和高效地开发自定义语言的方法。 Xtext 是一个开源框架,它允许开发人员通过定义语法和语义规则来创建自己的 DSL。使用 Xtext,可以在无需复杂的语法解析器的情况下,为特定领域定义语言的结构和规则。Xtext 提供了一个可视化编辑器,提供了代码自动补全、语法高亮、错误检查等功能,使得开发者能够更轻松地编写和维护 DSL。 Xtend 是一种基于 Java 的编程语言,它为 Xtext 提供了一种简洁而强大的方式来定义 DSL 的语义行为。通过使用 Xtend,可以编写表达式、函数和算法,使得自定义语言可以执行各种任务。Xtend 提供了强大的类型推断和模式匹配机制,使得编写 DSL 的语义行为变得更加易于理解和维护。 使用 Xtext 和 Xtend 开发特定领域语言具有许多好处。首先,我们可以利用 Xtext 提供的可视化编辑器快速创建和修改 DSL 的结构和规则。其次,使用 Xtend 编写语义行为能够使得自定义语言更加易于理解和使用。此外,Xtext 和 Xtend 提供了丰富的工具和插件生态系统,可以扩展和定制开发环境,以满足特定领域的需求。 总之,通过使用 Xtext 和 Xtend,可以更加高效地开发和维护特定领域语言,从而提高开发人员的生产力和代码质量。同时,这种方法也使得领域专家可以更容易地理解和使用自定义语言,从而加速软件开发和领域问题解决。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值