[Trans'18]ECI-Cache
ECI-Cache: A High-Endurance and Cost-Efficient I/O Caching Scheme for Virtualized Platforms
文章概述
Abstract
近年来,人们对在数据中心和云计算中使用虚拟机的浓厚兴趣极大地增加了对高性能数据存储系统的需求。提供高性能存储系统的一种简单方法是使用固态盘。然而,与硬盘相比,在存储系统中包含固态硬盘的成本要高得多。最近的研究建议将固态硬盘用作虚拟化平台中基于硬盘的存储子系统的缓存层。这些研究忽略了固态硬盘的耐用性和成本,这可能会显著影响输入/输出缓存的效率。此外,以前的研究仅配置缓存大小以提供每个虚拟机所需的性能级别,而忽略了其他重要参数,如缓存写入策略和请求类型,这会对每成本性能和耐用性产生不利影响
本问提出了一种新的high-Endurance and Cost-efficient I/O Caching (ECI-Cache)机制,与以前提出的输入/输出缓存方案相比,该方案可以显著提高存储子系统的单位成本性能和耐用性。与传统的仅基于访问重用距离分配缓存大小的输入/输出缓存方案不同,我们提出了一种新的度量标准——有用重用距离(URD),它在重用距离计算中考虑了请求类型,从而提高了固态硬盘缓存的单位成本性能和耐用性。通过工作负载的在线表征和使用URD,ECI-Cache跨虚拟机对固态硬盘缓存进行分区,并能够动态调整每个虚拟机的缓存大小和写入策略。为了评估所提出的方案,我们在运行CentOS 7操作系统(内核版本3.10.0327)的服务器上,在开源虚拟机管理程序QEMU(版本2.8.0)中实现了ECI-Cache。实验结果表明,与先进的动态缓存分区方案相比,我们提出的方案分别将固态硬盘缓存的性能、单位成本性能和持久性提高了17%、30%和65%。
Introduction
常常用SSD作为HDD的缓冲层,然而以往的研究要么将SSD用作一个共享的global cache,要么在VM之间静态划分。前一种方案无法为每个虚拟机提供有保证的最小缓存空间。这是因为整个缓存在所有虚拟机之间共享,每个虚拟机可能会占用无限的整个缓存空间,从而影响其他虚拟机的性能;后一种方案①可能导致一些VM对cache的利用很低;②分区方案要在离线时静态完成,因此并不灵活,也无法充分利用资源。为了解决这两种方案的切点,已经提出了partitioned I/O caching
。这种技术的变体通过估计每个虚拟机的有效缓存大小来动态地估计和分配每个虚拟机的缓存空间。们是通过计算工作负载的重用距离来实现的,即对同一地址的两次访问之间的最大距离。不幸的是,这种方案只关注于估计虚拟机的缓存大小,而忽略了其他关键参数,如写策略(即写请求如何由缓存处理)、请求类型(即读或写请求)及其对工作负载重用距离的相应影响,这极大地影响了固态硬盘缓存的单位成本性能和耐用性。
本文提出了一种高耐久、高性价比的I/O caching策略(ECI-Cache)机制,旨在通过配置
高效的Cache size,从而最大限度提高VM性能;
高效的write policy,从而提高每个VM的耐用性以及
performance-per-cost
。
为此,我们提出了一种称为有用重用距离(URD)的度量标准,它可以最大限度地减少为每个虚拟机分配的缓存空间,同时保持虚拟机的性能。URD的主要目标是减少为每个VM分配的Cache空间。cache空间的减少是通过基于请求类型计算UDR来实现的,而不考虑任何不必要的写访问(即,写了一个block但是再也没有读过)。使用URD技术可以最大限度提高单位成本性能,通过分配更小的缓存空间来增加SSD的耐用性。我们还建议详细分析写策略对固态硬盘缓存的性能和耐用性的影响,明确说明对具有不同访问模式(如以前的研究中所用)的虚拟机使用相同的写策略对输入输出性能和固态硬盘耐用性的负面影响。为了获得足够高的命中率,ECI-Cache在虚拟机之间动态划分缓存。
主要关注两种方法:
基于URD的每个虚拟机的cache大小估计;
通过在线监控和分析每个虚拟机的I/O请求,为每个虚拟机分配有效的cache写策略。
利用QEMU进行了实现,实验结果表明,ECI-Cache 1)与最先进的缓存分区方案相比,性能提高了17%,单位成本性能提高了30%,2)提交给固态硬盘的写入次数减少了65%,从而大大提高了固态硬盘的寿命。
具体贡献:
首次提出基于请求的类型来区分
reuse distanse
这个概念,即Useful Reuse Distance (URD),
,其目标是通过为每个虚拟机分配较小的缓存大小来降低固态硬盘缓存的成本。通过进行广泛的工作负载分析,我们展示了在
每个虚拟机上动态调整缓存cache写策略
的重要性,以前的I/O Caching策略没有明确考虑到这一点。我们开发了一种机制,该机制可以在每个虚拟机上有效地调整缓存大小和写入策略。我们提出了ECI-Cache,它由两个关键的新组件组成:1)动态的per-VM缓存大小估计,以及使用URD度量的缓存分区;2)per-VM写策略,以提高系统的每成本性能和固态硬盘缓存寿命。
我们在QEMU中实现了ECI-Cache,这是一个开源的虚拟机管理程序。我们对ECI-Cache在大量不同工作负载上的广泛评估表明,ECI-Cache比以前最好的动态缓存分区策略显著提高了单位成本性能,并减少了对固态硬盘的写入数量。
Related Work
以前对虚拟化平台中I/O Cache的研究调查1)缓存的位置或2)缓存分区策略。
对于多个VM的SSD cache策略的三种选择,可以参考S-CAVE中的描述,这里不再赘述。
基于hypervisor的I/O Cache
Global Cachine以及静态Cache分区
在全局缓存中,每个虚拟机可能会用完整个固态硬盘缓存,从而对其他虚拟机的性能产生潜在的负面影响
在静态缓存分区中,固态硬盘缓存空间根据平台中的虚拟机数量在虚拟机之间平均分区,而不考虑每个虚拟机的数据访问和重用模式。静态缓存分区也无法在在线操作期间为新添加的虚拟机分配缓存空间。
动态Cache分区
这些技术根据每个虚拟机的缓存空间需求在虚拟机之间划分固态硬盘缓存,并且它们了解虚拟机的数据访问和重用模式。
总结来看
S-CAVE
、vCacheShare
、Centaur
和CloudCache
都很接近本文的提议, 然而他们只考虑Cache的空间分区,而不考虑自适应写策略。
这里列举了很多相关工作,等之后需要写论文的时候可以参考
Motivation and Illustration Example
采用高性能缓存层的主要目的是减少对磁盘子系统的访问次数。理论上,理想的固态硬盘缓存层将提供与固态硬盘设备访问延迟相等的访问延迟。但是,由于固态硬盘大小有限和写入策略不完善,观察到的固态硬盘缓存访问平均延迟远远高于固态硬盘设备延迟。例如,我们发现[A Capacity-Optimized SSD Cache for Primary Storage. ATC'14]中提出的缓存技术的访问延迟比所用固态硬盘设备的原始访问延迟高50倍。
影响I/O Cache性能的主要参数是Cache size
、Write Policy
和replacement policy
。在这项工作中,我们主要研究了缓存大小和写策略对固态硬盘缓存性能和耐久性的影响。比较不同缓存配置性能的常用指标是缓存命中率。
三种不同的写策略:
Write-Back (WB):写只在cache中进行,知道cache替换的时候才会写入下层存储,因此可以减少下层存储的写入次数;可靠性差;
Write-Through (WT):写操作同时在cache和下层存储写入,提高了只读操作的性能,更可靠;
Read-Only (RO):仅缓存读操作,不能提高写操作的性能,但能保持它们的可靠性。
后面通过实验来验证三种策略对写耐久的影响,准确说,没有WT策略,因为WT和WB对Cache的写入是相同的,而且性能还略差一些。

五个观察结果:
在
fileserve
负载中,SSD的缓存性能在WB模式下提升了2.4倍,而在RO模式下只有1.6倍(a)WB策略提高了
RandomRW
和Varmail
工作负载的IO性能,两者都优于无缓存(b和c)Webserver
和Webproxy
通过WB和RO写入策略实现了良好且相似的性能(d和f)采用固态硬盘缓存对
CopyFiles
工作负载的性能有负面影响(e)RO写策略可以显著提高
Mongo
和SingleStreamRead
工作负载的性能,分别提高20%和48%(g和h)
因此,实验可以得到如下结论:
在
Fileserver
,Varmail
, 和SingleStreamRead
等工作负载中,只有特定的缓存配置才能提高I/O性能。约45%的工作负载更喜欢WB策略,约33%的工作负载更喜欢RO策略。因此,有必要为I/O Cache采用工作负载感知的写策略。Random-access and writeintensive workloads更喜欢WB,而random-access and read-intensive workloads可以通过RO策略来满足。在20%的工作负载(如
Webserver
,Webproxy
)中,WB和RO可以带来类似的提升,因此为了减少对SSD的写入,可以使用RO而不是WB。这种随机、读密集的工作负载没有利用SSD Cache对写的缓存。在
Mongo
和CopyFiles
等工作负载中,固态硬盘缓存几乎没有提高性能。因此,可以将固态硬盘缓存空间分配给其他工作负载。通过避免将Cache分配给没有收益的负载,可以减少SSD Cache不必要的写入次数。
Useful Reuse Distance(URD)
相比于传统的Reuse Distance
,Useful Reuse Distance
能够为VM分配更少的Cache空间,同时保持其I/O性能。
我们只为读请求定义cache hit。根据访问类型将访问顺序分为四组: 1. 读后读(RAR):第一次缓存可以导致第二次命中,代价是一次SSD写; 2. 读后写(WAR):第一次读取提取到缓存中,第二次修改缓存中的数据,但是并不对该块进行访问,因此第一次读缓存并没有提高命中率,但是会以两次SSD写为代价; 3. 写后读(RAW):第一次写入缓存为第二次带来了收益,代价是一次SSD写; 4. 写后写(WAW)第一次访问将数据写入缓存。第二次访问在没有任何读访问的情况下修改数据。在这种情况下,缓存第一次访问的数据块不会提高命中率,但会以两次写入缓存为代价。
总结来看就是,如果下一次操作是写,上一次操作就没必要缓存?
因此URD在计算重用距离的时候,没有考虑WAW和WAR,而是仅仅考虑RAR和RAW。使用URD可以使用更小的Cache空间,达到与原来类似的命中率。
ECI-Cache架构
收集并分析VM的访问模式;
为每个VM分配高效且有效的Cache size和write policy
ECI-Cache主要由三个组件组成,监视器捕获并收集关于每个虚拟机的输入输出行为的信息。分析器通过描述相应虚拟机的输入输出行为来决定缓存大小和写入策略。执行器通过为固态硬盘缓存中的每个虚拟机分配高效的缓存空间和写策略来实现分析器做出的决策。 1. Monitor监视器:接收来自虚拟机的所有输入输出请求,并通过使用blktrace
提取重要信息,如虚拟机标识号(VM-ID)、请求类型、目标地址和请求大小。 2. Analyzer分析器:决定
给定I/O请求的目的地;
每个VM的有效Cache大小
每个VM的I/O Cache的写策略
Actuator执行器,负责实现Analyzer的决策。为每个虚拟机分配确定的缓存空间,配置确定的写入策略,并将I/O请求路由到固态硬盘缓存或存储子系统。维护了一个
Map Table
来保存日志,记录一个block是在SSD Cache中还是在底层存储系统中。
对于顺序访问模式的负载:局部性很差,因此缓冲数据并计算重用距离表现很大。
在具有随机访问模式的工作负载中,引用先前访问的块的概率明显大于具有顺序访问模式的工作负载,因此用随机访问模式缓冲数据提高了命中率。
因此,在提出的这个架构中,Cache空间仅仅分配给具有随机读/写模式的VM。
高效的Cache大小估计
我们提出了一种ECI-Cache大小分配算法,旨在根据运行工作负载的重用距离为每个虚拟机分配一个有效的缓存大小。 1. 它可以为VM分配尽可能小的Cache,从而提高了performance-per-cost; 2. 减少了对SSD Cache不必要的写(WAW和WAR),提高了SSD的生命周期。
ECI-Cache会定期计算虚拟机中正在运行的工作负载的URD,然后估计每个虚拟机的有效缓存大小。了为所有虚拟机提供最小延迟,我们采用了一种满足等式条件的优化算法。
在等式中:是每个分配的cache空间, C是SSD的总Cache空间,N是运行中的VM数量,代表当为分配的缓存空间的时候,其命中率。和分别表示SSD和HDD的平均读写延迟。
所以根据"Objective"这个公式的意思,整个系统的设计目标是使延迟和最小吗?
有两种情况:
使用URD计算的每个VM的Cache空间和小于SSD空间
使用URD计算的每个VM的Cache空间和大于SSD空间
对于情况1
,就直接按照计算的cache空间为每个VM进行分配,从而最大化命中率;
对于情况2
,由于缓存空间不足,有必要重新计算每个虚拟机的缓存大小。
下面是N个VM的场景下,ECI-Cache是如何估计并分配Cache空间的算法:

最开始为每个VM分配一个最小的Cache大小
(1-2行)在给定的时间周期中,把每个运行中workload的I/O trace输出到文本文件中。trace中包含的信息有下面几种,由
Monitor
提取:目的地址
size
请求类型
虚拟机标识
(4行)利用
calculateURD
函数计算工作负载的URD(5行)使用
calculateURDbasedSize
函数,根据URD计算每个VM所需的缓存空间。比较估计得到的Cache总和与SSD空间的关系
如果,缓存分配称为
Feasible
;否则称为infeasible
对于infeasible的情况,需要重新计算每个VM的cache空间,从而爆炸Cache空间足够。这次执行的是
calculateEffSize
函数。它采用优化的最小化算法(“fmincon”)来寻找最有效的缓存空间分配集,在总分配缓存空间小于固态硬盘缓存容量的约束下,最小化所有虚拟机的总延迟。 输入SSD Cache总容量
,根据URD算出的缓存空间$$(H(c))下的每个VM的命中率函数$$
以及之前算法所算出的缓存大小
下面的算法给出了hit ratio function
。给出了为分配的Cache空间可以得到的命中率。
page 14 5.1节的最后一段话有些绕,后面再来回顾
写策略估计
为每个VM选择RO
和WB
写策略的其中一个。核心思想是使用: 1. RO: 具有写操作但没有任何进一步读访问的虚拟机;读密集(包括RAR, RAW) 2. WB:具有引用写操作(即具有进一步读访问的写操作)的虚拟机。
RO策略提高了读取操作的性能,并延长了固态硬盘的寿命。此外,这种方案更可靠,因为它不在缓存中缓冲写入。
分析器会检测WAW和WAR的比例, 如果比例超过了定义的阈值,将写策略更改为RO
,避免在Cache中存储大量写的块。
这种工作负载包括大量写入,将这种写入保存在SSD缓存中可能不会对命中率产生积极影响
缓存如此大量的写入对SSD的耐用性产生负面影响。
当虚拟机的工作负载包含大量RAW请求的时候,使用WB。
最初,我们为虚拟机的缓存空间分配WB策略。然后,我们会定期分析正在运行的工作负载的行为,并重新评估写入策略。
被引用
1. ReCA: An efficient reconfigurable cache architecture for storage systems with online workload characterization
会议:IEEE Trans. Parallel Distributed Syst. 29(7): 1605-1620 (2018)
摘要:近年来,固态硬盘在计算和存储系统中获得了极大的关注,因为它比硬盘有了显著的性能提升。然而,固态硬盘的单位容量成本使其无法完全替代此类系统中的硬盘。有效利用固态硬盘的一种方法是将固态硬盘用作存储性能关键数据块的缓存层,以减少对基于硬盘的磁盘子系统的访问次数。由于基于闪存的固态盘的特点,例如:写耐久度有限、写操作延迟长,在操作系统(OS)级别使用caching算法需要考虑这些特点。以前的操作系统级缓存技术只针对一种类型的应用程序进行了优化,这影响了通用性和适用性。此外,当工作负载模式随时间变化时,它们是不适用的。本文提出了一种高效的存储系统可重新配置的Cache体系结构(Reconfigurable Cache Architecture,ReCA),该体系结构利用综合的工作负载特征为I/O密集型应用找到最佳的高速缓存配置。为此,我们首先研究各种类型的输入/输出工作负载,并将它们分为五大类。基于这一特征,为每一类工作负载提供了最佳的缓存配置。然后,使用每个类的主要特性,我们在系统运行时持续监控应用程序的特性,如果应用程序从一个类更改为另一个类的工作负载,则重新配置缓存组织。缓存重新配置是在线完成的,工作负载类可以扩展到新出现的输入/输出工作负载,以保持其效率和输入/输出请求的特性。通过在运行Linux 3.17.0的具有SATA 6Gb/s磁盘接口的4U机架式服务器上实现ReCA获得的实验结果表明,所提出的体系结构将性能和生命周期分别提高了24%和33%
2. An analytical model for performance and lifetime estimation of hybrid DRAM-NVM main memories
会议:IEEE Trans. Computers 68(8): 1114-1130 (2019)
摘要:新兴的非易失性存储器(NVM)与现有的主流主存储器技术——DRAM相比,具有很大的优势(例如,较低的空闲功率、较高的密度和非易失性)。然而,非易失性存储器也有缺点(例如,更长latency、更高活跃功率和有限的耐久性)。因此,系统架构师正在研究混合动态DRAM-NVM主存储器,以实现NVM的优点,同时尽可能避免缺点。然而不幸的是,由于NVM的种类繁多,而且特性快速变化,混合memory的研究空间很大、也很复杂。因此,使用传统模拟方法优化基于混合存储器的计算平台的性能和寿命以及它们的实验评估可能非常耗时,有时甚至不切实际。因此,有必要开发一种快速灵活的分析模型来估计混合内存在各种工作负载下的性能和寿命。提出了一种基于马尔可夫决策过程的混合内存分析模型。所提出的模型估计了DRAM-NVM混合主存储器的各种配置的命中率和寿命。我们的模型还提供了数据迁移策略对混合内存命中率(即由DRAM或NVM提供的访问的百分比)的影响的准确估计,这是混合内存性能和生命周期中最重要的因素之一。这种分析模型可以帮助设计者调整混合内存配置以提高性能和/或寿命。我们提出了几个优化,使我们的模型更有效,同时保持其准确性。我们使用PARSEC基准测试套件进行的实验评估表明,所提出的模型(a)与最先进的混合内存模拟器相比,能够准确预测混合内存命中率,在商用服务器(配备192 GB主内存和四核至强处理器)上的平均(最大)错误率为4.61%(13.6%),(b)能够准确估计NVM生命周期,平均(最大)错误率为2.93%(8.8%),(c)比传统状态平均(高达)4倍(10倍)
3. Modeling impact of human errors on the data unavailability and data loss of storage systems
(目前参考价值不大)
会议: IEEE Trans. Reliab. 67(3): 1111-1127 (2018)
摘要:数据存储系统及其可用性在当代数据中心中起着至关重要的作用。尽管在数据中心使用了自动故障转移等机制,但人工代理的角色及其破坏性错误是不可避免的。由于数据库云服务器数据中心使用大量磁盘驱动器及其高故障率,存储系统中的磁盘子系统已成为由人为错误引发的数据不可用和数据丢失的主要来源。在本文中,我们研究了不正确的磁盘更换服务(IDRS)对直接存储系统可用性和可靠性的影响。为此,我们分析了IDRS在磁盘阵列中的后果,并进行蒙特卡罗模拟,以评估任务期间的数据单元和数据单元。所提出的建模框架可以处理不同的存储阵列配置和数据对象可生存性,表示系统级冗余(如远程备份和镜像)的影响。在提议的框架中,模型参数是从工业和科学报告以及现场数据中获得的,这些数据是从一个有70个存储机架的数据中心提取的。结果表明,忽略IDRS的影响会导致不可用性被低估多达三个数量级。此外,我们的研究表明,通过考虑人为错误的影响,关于不同冗余独立磁盘阵列机制的可靠性的传统信念应该得到修正。结果表明,在存在人为错误的情况下,与RAID5相比,RAID1的可用性更低。结果还表明,采用自动故障转移策略(使用热备盘)可以将人为错误的严重影响降低两个数量级。
4. Dependability analysis of data storage systems in presence of soft errors
会议:IEEE Trans. Reliab. 68(1): 201-215 (2019)
摘要:近年来,数据存储系统的高可用性和可靠性受到存储控制器中出现的软错误的严重威胁。由于其特定的功能和软硬件堆栈,决策支持系统中的错误传播和表现形式与通用计算架构大相径庭。据我们所知,以前没有研究检查过软错误对决策支持系统可用性和可靠性的系统级影响。本文首先分析了存储控制器的服务器处理器中出现的软错误对整个存储系统可靠性的影响。为此,我们实现了典型数据存储系统控制器的主要功能,运行在存储系统操作系统的完整堆栈上,并开发了一个框架来使用完整的系统模拟器执行故障注入实验。然后,我们提出了一个新的指标,存储系统漏洞因子(SSVF),以准确捕捉存储系统中的软错误的影响。通过进行广泛的实验,发现根据控制器的配置,高达40%的高速缓存内存包含最终用户数据,其中任何不可恢复的软错误都将以不可逆的方式导致数据丢失。但是,操作系统和存储应用程序填充的其余缓存内存中的软错误将导致存储系统级别的数据不可用(DU)。我们的分析还表明,缓存数据字段中可检测到的不可恢复的错误是存储系统中数据丢失的主要原因,而缓存标签和数据字段中的静默数据损坏是存储系统中数据丢失的主要原因。
5. An efficient hybrid I/O caching architecture using heterogeneous SSDs
会议: IEEE Trans. Parallel Distributed Syst. 30(6): 1238-1250 (2019)
摘要: 在数据密集型应用中,存储子系统被认为是计算机系统的性能瓶颈。固态硬盘是一种新兴的存储设备,与硬盘不同,它没有机械部件,因此与硬盘相比具有更高的性能。由于固态硬盘的高成本,用固态硬盘完全取代固态硬盘在经济上是不合理的。此外SSD的写耐久有限,为了减轻固态盘的缺点,同时利用其高性能,SSD caching在学术界和工业界都有很多的研究。以前提出的Cache体系结构只关注性能paerformance或耐用性endurance,而忽略了同时考虑两个参数。此外,此类架构的成本、可靠性和功耗也未进行评估。本文提出了一种混合I/O Caching架构," This paper proposes a hybrid I/O caching architecture that while offers higher performance than previous studies, it also improves power consumption with a similar budget"。这个架构使用DRAM, 读优化的SSD(RO-SSD)和写优化的SSD(WO-SSD),将WO-SSD发送写请求的同时,尝试有效地将读请求重定向到DRAM或RO-SSD中。为了提供高可靠性,脏页被写入至少两个设备,这消除了任何单点故障。功耗也通过减少对固态硬盘的访问次数来管理。提出的这个体系结构基于工作负载特征在性能和耐久性优化策略之间重新配置自身,以保持性能和耐久性之间的有效平衡。我们已经在配备工业固态硬盘和硬盘的服务器上实施了建议的架构。实验结果表明,与最先进的研究相比,所提出的体系结构分别平均提高了8%和28%的性能和功耗,降低了5%的成本,同时增加了4.7%的耐久性成本和可忽略的可靠性损失
6. LBICA: A Load Balancer for I/O Cache Architectures
会议: DATE 2019
摘要: 近你那来企业级SSD被用作高性能服务器的Cache层,以缩小处理单元和存储子系统之间不断扩大的性能差距。基于固态硬盘的I/O caching通常在突发访问的工作负载中无效,在突发访问中,缓存层本身由于大量访问而成为性能瓶颈。现有的I/O Caching体系结构主要关注最大化缓存命中率,而忽略了访问的平均排队时间。以前的研究建议在识别突发访问时绕过缓存。然而,这些方案不适用于一般的高速缓存配置,并且还会导致突发访问的显著性能下降。
本文提出一种新的I/O Cache Load平衡策略(LBICA),使用adaptice write policy来管理,防止I/O Cache称为爆发访问时的性能瓶颈。之前的方案在突发访问中禁用输入/输出缓存或绕过请求进入磁盘子系统,而我们的方案选择性地减少固态硬盘队列中的等待访问次数,并在提供最大性能的同时平衡输入/输出缓存和磁盘子系统之间的负载。所提出的方案基于队列中请求的类型来表征工作负载,并分配有效的缓存写入策略。我们的目标是绕过 ① 由磁盘子系统提供更快服务的访问; ② 不能与I/O Cache queue中其他访问合并的访问。这样选定的请求由磁盘层响应,防止输入/输出缓存过载。我们对物理系统的评估表明,与最新的负载平衡方案相比,LBICA将输入/输出缓存的负载减少了48%,并将突发工作负载的性能提高了30%。
7. Fair write attribution and allocation for consolidated flash cache
会议: ASPLOS 2020
摘要: 将多个工作负载整合到一个基于闪存的存储设备上现在是一种常见的做法。我们发现了一个关于lifetime management
相关的新问题:如何在整合的workload中分配设备资源,从而使得所有负载对设备的磨损是公平分配的(由写导致,包括由于垃圾回收导致的隐藏写入)。当闪存用作cache/buffer时,这种公平性非常重要,因为它会影响使用闪存服务的各种工作负载的流量,进而影响其性能。我们首先阐明为什么写贡献问题(即,哪个工作负载贡献了多少写入)不是无关紧要的。然后,我们提出了一种受合作博弈论中的经典概念沙普利值(Shapley Value)
启发的技术,并证明了它的准确性、公平性和可行性。接下来,我们考虑如何将设备的总体“写入预算”(即在给定时间段内允许的总写入量)视为值得明确管理的一流资源。为此,我们提出了一种新颖的写预算分配技术。最后,我们通过将上述元素放在一起,为整合的设备构建了一个动态生命周期管理框架。我们使用真实工作负载的实验表明,我们的写分配和写归因技术可以在整合的工作负载中实现性能公平。
8. MLCache: a space-efficient cache scheme based on reuse distance and machine learning for NVMe SSDs
会议: ICCAD 2020
摘要: NVMe SSD已经在新兴存储系统中广泛采用,它可以提供多个I/O队列和高速总线,以最大限度地提高高数据传输速率。NVMe固态硬盘使用stream(也称为“Multi-Queue”)将相关数据存储在相关位置或用于其他性能增强。NVMe固态硬盘内置的片上DRAM可以有效减少磁盘访问,延长固态硬盘的使用寿命,从而提高存储系统的整体效率。然而,在以前的研究中,这种SSD缓存仅用作所有流的共享缓存或每个流的静态分区缓存,这可能会严重降低每个流的性能,并且没有充分利用宝贵的缓存资源。
在本文中,我们提出了多层缓存,一个空间高效的NVMe固态硬盘共享缓存管理方案,最大限度地提高写命中率,以及提高固态硬盘的寿命。我们将缓存空间分配表述为一个机器学习问题。通过学习重用距离对缓存分配的影响,我们建立了一个特定工作负载的神经网络模型。在运行时,MLCache持续监控神经网络模块的重用距离分布,以获得节省空间的分配决策。实验结果表明,与Baseline相比,多层缓存将固态硬盘的写命中率提高了24%,响应时间减少了13.36%。MLCache与理想模型有96%的相似性。
这篇文章研究的是盘内DRAM的多流划分问题。然而是借用机器学习来实现的
9. ETICA: Efficient Two-Level I/O Caching Architecture for Virtualized Platforms
会议: IEEE Transactions on Parallel and Distributed Systems (2021)
摘要: 近年来,大规模数据中心和云计算对虚拟机的输入/输出需求不断增加,这促使系统架构师设计高性能存储系统。提高性能的一种常见方法是使用固态驱动器等快速存储设备作为较慢存储设备的输入/输出缓存层。固态硬盘提供高性能,尤其是在随机请求时,但它们的耐用性有限:它们只支持有限数量的写操作,因此可能会因写操作而相对较快地磨损。除了应用程序生成的写入请求之外,固态硬盘缓存中的每次读取未命中都是以对固态硬盘执行写入操作(将数据块复制到缓存中)为代价的,导致固态硬盘中的写入数量更大。以前虚拟化平台上的I/O缓存方案只能部分缓解基于SSD的I/O缓存的耐用性限制;他们主要关注为虚拟机分配高效的缓存写入策略和缓存空间。此外,现有的高速缓存空间分配方案效率低下:在计算运行工作负载的重用距离时,它们没有考虑高速缓存写入策略的影响,因此为高速缓存无法提供服务的访问保留高速缓存块。
在本文中,我们为虚拟化平台提出了一种高效的两级I/O缓存架构(ETICA),该架构可以显著提高I/O延迟、耐用性和成本,同时保持写挂起数据块的可靠性。与以前的单层I/O Caching机制相反,我们提出的体系结构:① 通过在虚拟化平台的I/O Caching中同时使用DRAM和固态硬盘,提供两级缓存;② 有效地在运行的虚拟机之间划分缓存空间,以实现最大性能和最小缓存大小。为了管理两级缓存,不像以前的重用距离计算方案,如有用重用距离(URD),只考虑请求类型而忽略缓存写策略的影响,我们提出了一个新的指标,策略优化重用距离(POD)。POD的关键思想是通过同时考虑1)请求类型和2)缓存写策略,有效计算重用距离,估计要分配的两级DRAM+SSD缓存空间量。通过仅仅为被I/O cache服务的请求分配Cache Block,可以提高性能并减小缓存大小。通过1)在输入/输出缓存层次结构的每一级分配一个有效且固定的写策略,以及2)在缓存级之间采用有效的promotion和eviction方法,ETICA保持了写挂起数据块的可靠性并提高了性能。我们对所提出的两级存储缓存体系结构的实际实施进行了广泛的实验,结果表明,与虚拟化平台中最先进的缓存方案相比,ETICA提供了45%的高性能,同时将缓存大小和固态硬盘耐用性分别提高了51.7%和33.8%。
10. A Modeling Framework for Reliability of Erasure Codes in SSD Arrays
闪存可靠性研究,目前看来参考意义不大。
会议: IEEE Trans. Computers 69(5): 649-665 (2020)
摘要: 固态硬盘的出现发展了数据存储行业,由于其在性能和功耗方面的优势,固态硬盘正在迅速取代硬盘。同时,固态硬盘由于位错误、坏块和坏芯片而存在可靠性问题。为了提高可靠性,最初旨在提高硬盘性能和可靠性的独立磁盘冗余阵列配置也适用于固态硬盘阵列。然而,传统的硬盘RAID可靠性模型不能完整地应用于固态硬盘阵列,因为固态硬盘的故障性质与硬盘完全不同。以前对固态硬盘阵列可靠性的研究是基于不推荐使用的固态硬盘故障数据,仅关注有限的故障类型、设备故障和由位错误引起的页面故障,而最近的现场研究报告了其他故障类型,包括坏块和坏芯片,以及故障之间的高度相关性。在本文中,我们使用现场存储轨迹和传统和新兴擦除代码的真实系统实现来研究固态硬盘阵列的可靠性。可靠性是通过统计故障注入实验来评估的,该实验对从实际系统实现中获得的使用日志进行后处理,而故障/故障属性是通过以前的工作从最先进的现场数据中获得的。作为一个案例研究,我们使用开源软件磁盘阵列控制器MD(在Linux内核版本3.10.0-327中)和三星850 Pro固态硬盘阵列,从可靠性和性能两个方面研究了传统的RAID5和RAID6以及新兴的部分MDS (PMDS)代码、扇区磁盘(SD)代码和STAIR代码。我们对数据丢失细分的详细分析表明,a)新兴的擦除代码在可靠性方面无法取代RAID6,b)逐行擦除代码是当代SSD设备最有效的选择,c)以前的型号将SSD阵列的可靠性高估了多达六个数量级,因为它们只关注数据条带中坏页(位错误)和坏芯片的一致性,而数据条带是SSD阵列中数据丢失的少数根本原因。我们的实验表明,坏芯片和坏块的组合被认为是RAID5和新兴代码中数据丢失的主要来源(分别占RAID5和新兴代码中数据丢失的54%和90%以上),而RAID6在这些故障组合下仍然保持稳健。最后,故障注入结果显示,固态硬盘阵列的可靠性以及故障故障与固态硬盘类型显著相关。
11. Evaluating Reliability of SSD-Based I/O Caches in Enterprise Storage Systems
缓存可靠性的研究,目前阶段没有参考意义。
会议: CoRR abs/1912.01555 (2019)
摘要: 为了提高大规模数据中心中输入输出密集型应用的性能,输入输出缓存技术被广泛应用于企业存储系统中。由于与硬盘驱动器相比具有更高的性能,与动态随机存取存储器相比具有更低的价格和非易失性,基于闪存的固态驱动器被用作存储系统缓存层的主要介质。虽然固态硬盘被称为非易失性设备,但最近的研究报告了固态硬盘因断电而导致的大量数据故障。为了克服基于固态硬盘的输入/输出缓存方案的可靠性影响,通常使用RAID-1(镜像)配置来避免因未提交的写操作而导致的数据丢失。但是,由于固态硬盘中的相关故障,这种配置可能仍然会在缓存层中出现数据丢失。据我们所知,以前没有任何研究调查过企业存储系统中基于固态硬盘的输入/输出缓存方案的可靠性。
在本文中,我们对基于固态硬盘的输入/输出缓存体系结构在断电和高工作温度下的可靠性进行了全面的分析。我们探索顶级供应商的各种固态硬盘,并研究镜像配置中的缓存可靠性。为此,我们首先开发了一个物理故障注入和故障检测平台,然后研究了在数据中心存在断电和高温故障两种常见故障类型时,工作负载相关参数对I/O缓存可靠性的影响。我们在Linux操作系统中使用开源的输入输出缓存模块实现了一个输入输出缓存方案。通过对采用不同写入策略的输入/输出缓存进行两万多次物理故障注入所获得的实验结果表明,输入/输出缓存的故障率受到工作负载相关参数的显著影响。我们的结果表明,与工作负载请求访问模式不同,其他依赖于工作负载的参数,如请求大小、工作集大小(WSS)和访问顺序,对输入/输出缓存故障率有相当大的影响。我们观察到,通过减少请求的大小(超过14倍),工作负载的故障率显著增加。此外,我们观察到,除了写入之外,在突然断电的情况下,对输入/输出缓存的读取访问也会失败(失败主要发生在将数据提升到缓存的过程中)。此外,我们观察到输入/输出缓存在高温故障时不会出现数据故障。
12. ElBench: a microbenchmark to evaluate virtual machine and container strategies on executing elastic applications in the cloud
会议: Int. J. Comput. Sci. Eng. 21(3): 457-469 (2020)
摘要: 云计算的一个主要特点就是资源的弹性。虚拟机是该功能的典型实现,因为它们提供了复制和隔离机制。除了虚拟机之外,今天我们还看到了实现这些设施的容器技术的出现;然而,我们的调查没有列出一个描述比较形式主义的计划来评估在云中运行高性能计算弹性应用的两种技术。本文探讨了这一差距,提出了一个名为ElBench的微基准,重点是提供一个框架来比较虚拟机和容器在云中执行弹性并行应用程序。ElBench方法使用自动弹性(一种在云中运行弹性并行应用程序的中间件)、科学应用程序和两种工作负载,产生了有利于容器的结果:平均而言,与虚拟机相比,它们在执行时间上增加了20%,在成本上节省了60%。
Last updated
Was this helpful?