好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

联合缓冲区缓存和日志记录层与非易失性存储器.doc

17页
  • 卖家[上传人]:zhuli****0000
  • 文档编号:13781567
  • 上传时间:2017-10-26
  • 文档格式:DOC
  • 文档大小:719.50KB
  • / 17 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 联合缓冲区缓存和日志记录层与非易失性存储器摘要日志技术广泛应用于现代文件系统为他们提供高可靠性和快速恢复系统故障然而,它减少了性能好的缓冲区缓存作为日志占大部分的存储写在现实系统环境在本文中,我们提出了一种新的缓冲区缓存架构,贯穿到缓存和日志记录功能利用非易失性内存如 PCM(相变内存)或STT- MRAM(旋转扭矩传递磁性随机存取存储器)具体地说, 我们的缓冲区缓存支持我们所说的就地提交方案该方案避免了日志,但仍然提供了相同的日志效应通过简单地改变缓存块冻的状态作为一个冻块仍然执行缓存的功能,我们表明, 就地承诺不会降低缓存性能我们在 Linux 上 2. 6. 38 实现我们的计划并且测量吞吐量和该计划在各种文件 I / O 基准的执行时间结果表明, 我们的方案平均提高 I / O 性能76%,相比现有的 Linux ext4(外在的)缓冲区缓存提升了 240%并且没有任何损失的可靠性1. 介绍非易失性内存如 PCM(相变内存)和 stt mram(旋转扭矩传递磁RAM)被视为替代 DRAM 内存(动态随机存取存储器(Dynamic Random Access Memory))[1 – 8]。

      虽然目前由于成本不适合完成替换但非易失性存储器已成为一个可行的组件,可能被添加到当前的系统来提高性能[9]临时的非易失性存储器解决方案在以支持超级电容器 DRAM(动态随机存取存储器)的形式出现在服务器市场 [10]作为非易失性内存预计将为 DRAM 提供性能竞争力,同时保留非易失性特征最近利用这些双重特征的研究产生了兴趣(1 - 8)本文也探索了这些通过合并缓冲区缓存和日志记录层新的内存技术非易失性的特点我们相信,我们所掌握的最好知识即我们的工作是第一个提出这样的一个团队在传统的系统,主存是易丢失的, 在系统突然崩溃时文件系统可能会进入一个不一致的和/或过时的状态 [11]为了缓解这个问题,日志记录是一种记录更新到非易失性存储在一个短时间段为高可靠性和快速的系统恢复,是广泛采用现代文件系统[12]然而, 由于其频繁的存储访问,日志是一个严重的阻碍了高性能例如,最近的一项研究表明, 由于日志存储在移动主导交通手持设备,同步写导致严重放缓的闪存存储[13]在云存储系统, 即使有一个共识,日志记录是必要的, 由于高成本的网络访问参与日志所以它不能部署 [14]在这项研究中,我们提出一个新颖的缓冲区缓存架构,消除几乎所有的存储访问由于日志没有任何损失的可靠性由智能采用非易失性内存作为缓冲区缓存。

      乍看之下,仅仅采用一种非易失性缓冲区缓存似乎不足以提供高可靠的文件系统然而,这并非如此,其中有两个需求所需的支持文件系统的可靠性:耐用性和一致性一种非易失性的缓冲区缓存, 即使在停电后只需,确保耐久性作为它维护数据然而,一致性无法保证在系统崩溃仅仅提供非波动到缓冲区缓存例如,一个典型的情况下,写操作需要两个数据和元数据的更新,但更新后系统崩溃只有元数据然后,数据的缓冲区缓存失去一致性, 最终导致不一致的文件系统状态我们提出一个新的缓冲区缓存架构,称为 UBJ(合并的缓冲区缓存和日志),通过图1提供的功能解决了这个问题我们的提交进程缓冲区缓存和原日志缓冲区缓存比较日志没有频繁的存储访问具体来说,我们建议改变就地提交更新的状态缓存块冻(即 、写保护) 和管理它们作为一个事务权利在当前的位置这个方案不执行另外的日志只是收获同样的效果只是通过改变一个状态此外,随着块在冷冻状态仍然可以被用作一个缓存块, 缓冲区缓存的有效性不恶化图1显示了我们提交的进程缓冲区缓存与现有结合日志缓冲区缓存的比较与之前的工作最密切相关的是本研究也试图缓解日志记录开销采用非易失性内存文件系统和数据库管理(15、16、17)。

      他们提高性能通过添加非易失性内存作为一个单独的日志区或者作为一个写缓冲区日志文件然而,在这些方案里,非易失性内存不能作为一个缓存功能,分别从缓冲区缓存保存我们的方案是不同的,我们的日志记录功能智能的结合到缓冲区缓存架构,从而尽量减少额外的内存复制和空间开销我们实现了一个原型的缓冲区缓存与就地提交在 Linux 中2 .6 .38测量结果与各种存储基准显示我们的方案提高了文件系统的性能平均提高了76%,相比现有的把 ext4设置为日志模式 Linux 缓冲区缓存提高了240%本文的其余部分组织如下第二节探讨在写日志存储交通的影响第三节我们在细节描述了缓冲区缓存架构和算法在第四节,我们讨论缓存性能问题的方案第五部分提出了一个简短的描述,讨论了实现实验结果的实现第六节总结本文分析存储写交通图2显示了一定数量的写交通从缓冲区缓存来存储当日志是采用相对于它不是为各种工作负载如图2所示,当使用日志写交通大大增加;使用日志记录的平均数据存储是没有日志记录的2.7 倍当我们不使用日志记录,存储写道的发生只有当脏块从缓存中删除或当有一个明确的同步操作然而,随着日志, 有两个或更多的情况下,导致存储写道第一种情况下,一个致力于日志区域发生。

      第二种情况是当检查点写更新的数据到不变的图2有日志的写交通和我们提出方案(UBJ)相对于当没有为各种工作负载使用日志文件系统位置的重现,检查点是周期性的触发,也激活当空闲空间的大小在日志区低于某个阈值正如我们所见,因为所有工作负载 ,的日志占相当大一部分存储写道 ,因此,它是一种性能退化的潜在来源如图2所示, 然而, 我们的 UBJ 方案执行日志记录除了消除了大部分的存储写. .3.缓冲区缓存与就地提交在 UBJ,缓冲区缓存和日志区共享相同的分配空间每一块在这个空间功能要么作为一个缓存块,一个日志块,或一个缓存和日志块同时有双重功能的块我们可以描述每一块状态作为一个三个组合的状态指标:冷冻/正常状态,脏/清洁状态,和最新/ 过时的状态( 参见图3)冷冻/正常状态的区分是根据是否块是一个(普通的)缓存块或一个(冻) 日志块脏/清洁状态指示是从它进入缓存是否已被修改的块最新/过时的状态指示块是否是最新版本这最后的区别是十分必要的,因为对相同数据的多个块可能存在于缓冲/ 期刊空间下面,我们使用这些状态州和这些状态之间的转换来描述图3状态图的一个在我们的计划 UBJ 缓存块的工作原理该计划被描述为三种不同的操作:读/写操作,提交操作,和检查点操作。

      a .读 /写操作写请求反应取决于块的状态如果块是正常的,它只是更新否则, 也就是说,如果它是冷冻(日志块), 一份是到复制一个新的位置和更新的数据写入副本复制然后成为最新的,而原来的变得过时这允许登录数据保持安全与系统故障另一方面读请求是被作用的,不顾块的状态和不会改变块的状态块这是因为阅读数据不影响一致性的街区b .提交操作作为事务管理、UBJ 定期提交数据,改变正常脏块的状态冻脏块这是通过保持和操纵交易保持为列表有三种类型的事务如图4所示第一个是一个运行的事务,维护正常的脏块列表,脏了之后,以前的提交操作当提交操作是发布,这个运行的事务被转换为一个提交事务此时,提交事务上的块是正常状态是就地提交(因此,名称是就地提交)只需将其状态转换为冻结状态新块的写到达这一转换过程仅仅是添加到新的运行的事务创建下一个提交时间在状态转换过程中,如果相同的数据块被提交 UBJ 也检查,如果是这样,跟踪前面的块作为旧提交块对于高效的空间管理,这些旧提交块可能会立即释放当所有脏数据块在提交事务成为冻结状态,我们把事务的状态更改为一个检查点事务检查点的事务维持在缓冲区缓存,直到他们通过检查点被反映到文件系统。

      系统崩溃时, 他们用于文件系统恢复到一个一致和最新的状态C.检查点操作检查点操作更新文件系统提交的数据UBJ 扫描检查点的事务列表和反映了他们自己在文件系统中固定的位置当一个数据块发生多次提交,只有最后提交块设置检查点, 以减少检查点开销事务检查点完成后,缓存空间被冻块回收在这个过程中, 如果是最新的,我们使用它作为一个缓冲区缓存块通过改变其状态为正常,清洁 ,和更新相关的元数据另一方面, 如果块是过时的,空间回收作为一个自由的块图4.UBJ 的数据结构当频繁执行提交操作时,以减少漏洞窗口的可靠性,检查点可以做更少当它并不直接影响系统的可靠性然而,过度延迟检查点可能有负面影响随着检查点间隔的增长, 越来越多的缓存空间将被冻块占用,有效减少缓冲区缓存,它可能导致缓冲区缓存性能的退化为了防止这种情况,我们计划触发检查点当冻块的数量大于某个阈值,这个阀值是用传统的日志记录检查点通过页面也引发回收守护进程当从缓存中清除脏块图5 我们 UBJ 方案和原始缓冲区缓存日志的比较表一 总结工作负载特征5.举例图5显示 UBJ 的工作与一个典型的缓冲区缓存方案的比较在这个例子中,提交和检查点周期分别设置为30 和90秒。

      块 A 的初始内容是 D0在时刻 10写请求修改块 A 的内容 D1,并将它转换成脏块20秒后,提交为了维持提交,UBJ 只是改变块 A 的状态为冻结状态,而一个典型的缓冲区缓存会招致写入存储假设另一个对块 A 的写发生在时刻 40UBJ 此时复制块 A 到另一个位置 A`,然后将新数据写入位置块 A`然后块 A 变得过时,而块 A`现在最新的我们量化同一数据有多个副本块的影响)随后写在块 A`被执行当它被提交(在这个例子中,写在时刻50),因此冻结(在时刻 60) 当检查点时间发生在时刻 90,UBJ只反映块 A`的最新版本,它的内容是 D3,进入文件系统消除不必要的写(D1和 D2)在检查点之后,块 A 占据的空间被释放,而块 A`的最新版本被重用作为缓冲区缓存数据块在本例中,我们看到 UBJ 写入存储只有一次当有检查点时当它提交或检查点时一个典型的缓冲区缓存方案每次生成存储写这导致块的写最终被覆盖,不需要保存在实际中,提交比检查点更频繁,减少存储写的数量可能会更多E.系统恢复系统崩溃导致不一致问题,当数据可能仍然在缓冲区缓存部分更新, 日志区域和文件系统因此,在重启异常终止,UBJ 经历以下步骤进行恢复。

      首先,检查运行的事务列表这个列表是驻留在缓冲区缓存块, 可能是部分更新然而,由于这些都是未提交的数据, 因此, 没有体现在文件系统上 ,我们只是使这些块失效接下来,我们考虑提交事务列表在提交事务之间发生崩溃时, 提交事务列表可能会在部分提交状态包含一个混合的提交和还未提交的块在这种情况下,当正常提交操作没有完成,当它运行的事务列表时 UBJ 只是以同样的方式使数据无效最后利用检查点事务,系统状态是一致的即使文件系统可能损坏当在执行检查点操作发生崩溃时,系统可以恢复到一个一致的状态只需重新运行所有检查点操作,当所有的检查点事务仍然驻留在缓冲区缓存图6 缓存丢失率作为缓存大小的功能4.缓存性能正如我们计划保留日志块在缓冲区缓存,一个数据块可能占领多个缓存块,降低缓冲区缓存的空间效率为了研究这种影响,我们比较原始缓冲区缓存即只用于缓存的缓冲区的丢失率和没有日志块(BF-no)和 UBJ,这些缓存和日志空间是合并的此外,出于比较目的,我们也观察到的丢失率的假设方案,使用一半的内存空间分配专用缓冲区缓存和另外一半作为专门日志区我们将调用这个方案缓冲区缓存与内存日志(BFJm)这个方案实现就像传统的日志记录日志,除了这样一个事实:日志区不是存储在内存中,可能是存储在非易失性内存中。

      图6划出3个对文件工作台标准的缓冲区缓存方案的缓存丢失率,这个标准是一个代表性的文件系统标准表1总结了本文文件工作台工作负载使用的特性我们相对于 I / O 足迹改变缓存大小从0.1 到2.0一般来说,由于缓存将同时容纳所有块引用的痕迹所以缓存大小是1.0和无限缓存容量是相同的然而,随着 UBJ 和 BF-J。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.