SMR学习之《Evaluating Host Aware SMR Drives》

 

出处:IEEE TRANSACTIONS ON MAGNETICS, VOL. 47, NO. 10, OCTOBER 2011

摘要:Shingled磁记录(SMR)技术提高了硬盘驱动器的面积密度。在目前市场上的三种SMR驱动器中,主机感知SMR (HA-SMR)驱动器看起来最有前途。在本文中,我们对HA-SMR驱动器的性能进行了评估,目的是使用这种驱动器构建大型存储系统。我们的重点是评估HA-SMR驱动器的特殊特性,如开放区域问题和媒体缓存清理效率。基于我们的观察,我们提出了一种新的主机控制的间接缓冲区,以提高驱动器的I/O性能。最后,我们提出了一个开放区域问题的案例研究,以显示这种主机控制的间接缓冲区在HA-SMR驱动器中的潜力。

 

1、介绍

为了进一步提高硬盘驱动器的面积密度,Shingled磁记录(SMR)技术以Shingled(顺序重叠)方式放置数据轨道,同时仍然确保数据可以从轨道[1]的未覆盖部分读取。

目前市场上有三种类型的SMR驱动器,即驱动管理式、主机管理式和主机感知式SMR驱动器[2]。DriveManaged SMR (DM-SMR)驱动将更新I/O请求(或非顺序写)重定向到媒体缓存(或磁盘的一部分的持久缓存),然后通过清理过程将这些重定向的数据块迁移回原始位置。这种媒体缓存操作,即重定向和清理,对主机[3][4]是透明的。相反,主机管理式SMR (HMSMR)驱动器向主机公开内部数据布局信息,例如区域类型/状态和写指针,它们不接受非顺序的写请求;因此,它们不需要媒体缓存组件[2][5][6]。主机感知SMR (HA-SMR)驱动器是另外两种类型在功能上的超集,即,它们既可以处理非顺序写操作,又可以为主机提供内部数据布局信息[2][5][6]。在本文中,我们选择HA-SMR驱动器进行研究,因为在构建未来的大型企业存储系统时,HA-SMR驱动器将是三种类型中最受欢迎的。

我们对几个示例HASMR驱动器进行性能测试,以确定HA-SMR驱动器的特性,如开放区域问题和非顺序区域问题。我们特别关注它们对突发和持续、顺序和非顺序写性能以及不同工作负载下的媒体缓存清理效率的性能影响。

根据我们的测试观察,我们进一步探索主机控制的间接缓冲区(H-Buffer)的好处,它是一个循环日志缓冲区,由几个区域组成,可以临时重定向写I/O请求。我们相信,这种主机控制的间接缓冲区将为提高基于HA-SMR驱动系统的I/O性能开辟一个新的设计空间。使用额外的H-Buffer,主机和驱动器都可以单独管理它们对应的缓冲区来进行重定向和迁移(驱动器控制媒体缓存,而主机控制H-Buffer)。在这种情况下,高级应用程序可以灵活地在所有三种数据路径之间切换(直接写到目的地、媒体缓存缓冲和H-Buffer缓冲)。这样,它们就可以结合这些数据路径的优点,通过将不需要的I/O工作负载模式重新组织为HASMR驱动器所需要的模式,结合不同路径的长处从而提高I/O性能。我们以HA-SMR开放区问题为例,论证了H-buffer的潜力。

2、前言

T10 ZBC[5]和T13 ZAC[6]标准将SMR驱动器建模为一组区域,这些区域是连续逻辑块地址(LBA)的集合。SMR带在概念上抽象为写指针区,每个写指针区都有一个关联的写指针指示下一个到该区域的写操作应该写入的区域内的LBA。注意,可以有选择地使用少量常规区域来表示磁盘上的常规记录区域(我们的示例驱动器允许常规容量的0.2%)。在本文中,我们主要关注写指针区域,除非另有说明,否则本文其余部分将把写指针区域称为区域,以保持简洁。

应用程序可以遵循或不遵循写指针,相应的写操作分别定义为顺序写和非顺序写。对于顺序写,数据被写到写指针,并且写指针将相应地被推进。对于非顺序写,通常HA-SMR驱动器会将其重定向到媒体缓存,并将区域状态更改为非顺序媒体缓存为磁盘的一部分,将每一个非顺序写入的数据记录到一个自描述的日志[4]中。稍后,媒体缓存清理将通过Read-Modify-Write操作将非顺序数据迁移回其原始区域。一旦对该区域进行了清理,写指针将指向最后一个有效数据块的下一个LBA,并将区域状态更改回sequence

在HA-SMR驱动器[5]中有一个建议的最大开放区域数(开放区域问题)。在提供写I/O请求之前,必须打开一个空的或封闭的区域,以便为其分配一个开放的区域资源,以便经常访问和更改的区域元数据(例如写指针和标志)能够在意外的断电情况下持续存在。对封闭区域的写操作将隐式地打开该区域。由于开放区域资源是有限的,当所有的开放区域都被分配时,打开一个新区域将释放旧开放区域的开放区域资源。这样的资源重新分配操作将同步区域元数据,从而导致昂贵的磁盘持久性操作。因此,如果应用程序在大量区域之间切换太频繁,那么由于频繁的区域元数据同步,写性能将会降低。

类似地,HA-SMR驱动器还具有推荐的最大非顺序写入区域[5](非顺序区域问题)数量。由于媒体缓存的容量有限,当非顺序写操作太小且针对太多不同的LBA时,媒体缓存资源将被耗尽,清理将成为阻塞,这会降低读写性能。

3、HA-SMR驱动特性

3.1  测试设置和基本结果

我们的测试环境包括几个希捷8TB主机感知SMR驱动器(型号ST8000AS0022原型类型固件修订ZN03。注意,目前还没有大规模生产的非原型固件可用)。示例驱动器通过3Gbps SATA主板连接器连接到戴尔PowerEdge R420 1U服务器,并具有128个开放区域8个非顺序写入区域的推荐最大数量。libzbc (branch r04)用于获取驱动器的几何形状,监视区域的写指针位置/状态,并重置写指针此外,我们使用fio将各种微基准测试工作负载重放到示例驱动器。对该驱动器进行了初步测试,以发现基本的内部结构信息。我们发现HA-SMR样品驱动器(256MiB,实际上是区域大小)的带宽比[4](15 40MiB)中描述的DM-SMR对应产品要大得多。我们还观察到平均带回收时间变化很大(1 30+秒/区)。变化的原因将会在3.4节分析

3.2  开放区域问题

尽管驱动器为开放区域指定了建议的最大数量,但是系统设计人员仍然需要确切地知道,如果不遵循建议,性能将如何下降。为了给系统设计人员提供参考点并激发解决方案,我们进行了以下实验来评估顺序和非顺序工作负载下的开放区域问题。

我们在这个测试中使用了一个轻和繁重的工作负载,试图通过减少来自媒体缓存清理的干扰来隔离开放区域问题。这种工作负载的特点是在突发I/O请求之间有很长的空闲时间,通常可以在个人计算机中找到。

测试程序以循环方式在每个突发事件中向一组区域发出1000个写请求。这些区域的数量从20个到200个不等。顺序写和非顺序写都使用两种可能的I/O请求大小进行计算:大的(512KB)和小的(4KB)。结果总结为图1中的箱线图。从结果中我们观察到,对于顺序写操作和性能在120到140个区域之间明显下降,这与自我报告的128个开放区域建议相一致。例如,在4KB的情况下,吞吐量中值(红色条)从120区域下降到140区域,降幅高达57%。我们在第5节中提出了一种解决这种性能下降的方法。

令人惊讶的是,随着开放区域数量的增加,非顺序写操作的性能没有显著的吞吐量下降。这可能是因为非顺序写被重定向到媒体缓存,而自描述日志结构确保了一致性,因此出于可靠性的目的,非顺序区域不需要占用开放区域资源。因此,性能不再受建议最多128个开放区域的限制。

图1中另一个与直觉相反的观察是,顺序写并不总是比非顺序写获得更高的带宽。原因可能是1)非顺序数据块实际写入位于高性能外轨的媒体缓存中;2)将非顺序数据块按顺序记录到媒体缓存中,使磁盘臂的移动最小化;3)每次非顺序写的突发都没有在媒体缓存中积累足够的数据来触发阻塞的媒体缓存清理;顺序写性能可能会受到开放区域问题的影响。

总之,对于顺序工作负载,最好保持在建议的最大开放区域数以下,并逐渐从一组区域切换到另一组区域,以避免性能下降。这实际上意味着HA-SMR示例驱动器将提供与归档存储系统中的非shingled驱动器相同的性能,在归档存储系统中,数据按顺序写入一次并读取多次。此外,非顺序写没有开放区域的问题,因此HA-SMR驱动器对于轻和繁重的工作负载(如在个人计算机中)将具有令人满意的性能,在这些工作负载中,有足够的空闲时间让驱动器在下一次写之前进行媒体缓存清理。

3.3  非顺序区域问题

推荐的最大非顺序区域号表示由于媒体缓存清理成本而可以随机写入的区域总数的约束。然而,遗留的没有分区感知的工作负载可能很容易跨越超过建议的区域数(对于我们的示例驱动器来说是8个)。该测试用于评估驱动器在覆盖大量区域的非顺序工作负载下的性能。

在前面的测试中,使用了一个轻量级的工作负载来减少媒体缓存清理的干扰。相反,在这个测试中,创建了一个持续的非顺序写工作负载,它可以在媒体缓存中聚合足够的数据,从而迫使驱动器执行阻塞媒体缓存清理。具体地说,将一个256KB I/O大小的非顺序写工作负载分配到128个区域和256个区域,时间为2小时,结果如图2所示。

非顺序区域号图显示驱动器在处理写请求时执行清理。对应的吞吐量图显示了双峰性能:每次驱动器开始阻塞清理时,吞吐量从超过100MB/s(正常吞吐量模式)下降到大约0.1MB/s的低速率(低吞吐量模式)。第一种低吞吐量模式在128个区域持续超过25分钟,在256个区域持续超过37分钟。

因此,在积累了足够的非顺序数据之后,持续的非顺序工作负载将触发阻塞的媒体缓存清理,从而导致吞吐量严重下降。大量的非顺序区域会导致较长的时间吞吐量的恢复。表明平均清洗时间更长。因此,HA-SMR系统的设计人员应该尽可能减少非顺序区域的数量,以避免这种严重的性能下降。从另一个角度来看,HA-SMR驱动器非常适合作为第二层的分层存储体系结构,在第二层中,第一层闪存可能可以过滤掉大部分非顺序写请求。如果软件层能够很好地重组工作负载以避免太多的非顺序区域,那么它也可以作为第一层工作。

3.4  带清理时间

我们注意到,平均带清理时间在3.1节中变化很大。然而,准确估计带清理时间对于预测媒体缓存清理效率和非顺序写入性能至关重要。因此,在本节中,我们将研究不同的因素如何影响平均带清理时间。我们假设带清理时间取决于工作负载特性,如区域覆盖(由第3.3节验证)、更新比率、I/O请求偏移量、I/O请求数量、I/O请求大小等。在这里,区域的更新比率(U)被定义为区域内非顺序写入的数据的比例。区域的I/O请求偏移量定义为区域内发生更新的位置。

我们设计了第一个测试来研究更新比和I/O请求偏移量对平均频带清理时间的影响。

测试程序以不同的更新比率更新100个区域。一旦程序完成,我们测量非顺序区域数减少到零所需的时间,并通过将时间除以已清理的区域数来计算平均频带清理时间。此外,这里使用了四种不同的I/O请求偏移量:区域的开始偏移量、中间偏移量、结束偏移量和run - dom偏移量。此外,区域的初始状态可以是空的,也可以是满的。所有组合的试验结果如图3所示。

随着更新比U的增加,平均带清理时间相应增加。当写入一个空区域时,I/O请求偏移量越接近该区域的末尾,清理该区域所需的时间就越长。原因是,当将数据从媒体缓存迁移回原始区域时,驱动器必须在写指针之前将一些合成数据写入未写区域。因此,更新到空区中较高的LBA位置会导致在后续清洗过程中写入更多的合成数据。相反,当写入到一个完整的区域时,I/O请求偏移量越接近区域开始时,清理时间越长。这是因为将数据迁移回完整的区域需要在更新的LBAs之后读取和重写有效的区域数据,而修改较低的LBAs会导致读取和写入更多的数据。

从前面的测试中我们知道,当向区域写入更多数据时,平均清理时间会增加。但是,如果使用不同的I/O请求号(ionum)和I/O请求大小(iosize)编写相同数量的非顺序数据,则不清楚清洗时间是否相同。在第二个测试中,而不是增加更新比U通过提高I / O请求数量n,测试程序不断n但增加I / O请求大小s提高U(离开酒吧图。4)。相比之下,我们仍执行另一组测试,保持相同的但增加n,在图4得到正确的酒吧。注意,我们从= 20%开始,s0 =32KB,n0 = 800。最初将区域设置为空,以便清理开销接近有效的数据更新成本。可以看出,在这两种情况下,清洗时间都随着U的增长而增加。但是,如果我们增加I/O请求的大小,那么清理时间的增长速度将慢于提高I/O请求数量的情况。

综上所述,平均频带清理时间与区域覆盖、更新比、I/O请求数量和I/O请求大小呈正相关。I/O请求号比I/O请求大小对清理时间的贡献更大。I/O请求偏移量也会影响清理时间,这取决于读取/写入了多少额外的数据。

4、主机控制的间接缓冲区

在前面几节中观察到的特殊性能特性和问题对HA-SMR系统的设计者提出了相当大的挑战为了解决这个问题,我们利用HA-SMR独特的硬件特性和主机交互模型,提出了利用主机控制的间接缓冲区(HBuffer)的优点。这样的H-Buffer体现了一个HA-SMR三路径系统(机制)(图5),它可以支持多种工作负载分离算法(策略)。我们相信这种机制和策略的分离最终会导致HA-SMR性能下降问题的各种解决方案。

H-Buffer描述

驱动器的一小部分区域(如推荐的开放区域号,或与媒体缓存大小相当)保留为循环缓冲区(H-Buffer),可以重定向传入的数据。映射表保存在主机内存中,并偶尔刷新到常规区域,而数据块作为自描述日志记录下来,用于映射恢复。此外,主机负责将缓冲数据迁移回原始区域(H-Buffer cleanup)。

HA-SMR Three-data-path System

如图5所示,HA-SMR驱动本身支持数据路径1和2,其中直接数据路径1表示直接写入目标区域的顺序数据;2、媒体缓存数据路径表示非顺序数据被缓冲到媒体缓存中,然后迁移回原始区域。此外,我们的H-Buffer创建了一个新的数据路径3,即H-Buffer数据路径,它类似于媒体缓存数据路径,但是由主机而不是驱动器控制。注意,HA-SMR是惟一能够支持所有三个数据路径的SMR模型,因为它是惟一既能处理非顺序写操作(对于2)又能提供区域信息来支持精确的主机控制(对于3)的模型。

这三种数据路径各有优势:1)直接数据路径接受顺序数据,不需要任何重定向/迁移开销;2)介质缓存数据路径可以处理非顺序的数据清理,不需要向主机传输数据,也不需要向主机传输数据,具有更高的数据迁移带宽,不会给主机带来额外的计算工作量;3) H-Buffer数据路径可以利用主机更大的内存和更强大的处理器来支持增强型非顺序数据清理算法,预计效率更高;此外,H-Buffer具有重定向顺序数据的能力,这是媒体缓存数据路径无法做到的。

这个建议为三种数据路径切换策略打开了一个很大的设计空间,它们可以结合各自对不同工作负载的优势。

5、案例研究:开放区域问题

我们通过设计一个简单的数据路径切换策略(名为:open-zone-policy)来证明H-Buffer的潜力,该策略解决了open zone问题(第3.2节)。open-zone策略检测工作负载中的并发顺序写流。如果有超过推荐数量的流,则策略将把所有流切换到H-Buffer并稍后执行迁移。

其基本原理是,如果我们将传入的数据重定向并记录在H-缓冲区中,驱动器既可以避免频繁的元数据同步,又可以最小化磁盘臂的移动。这些好处可能会减轻甚至超过H-Buffer清理开销。

为了评估open-zone-policy,我们创建了一个包含200个并发顺序写流的微基准测试工作负载。我们假设系统为H-Buffer预留了100个区域。测试程序将工作负载重放到HA-SMR驱动器,比较使用或不应用open-zonepolicy的作业完成时间。图6总结了I/O请求大小在4KB到256KB之间的测试结果。如果策略是开着的,则时间被分成H-Buffer写和HBuffer迁移。我们发现,尽管H-Buffer正在执行额外的I/O操作,但是H-Buffer重定向的总I/O时间仍然比直接写短。因此,这种H-Buffer支持的开放区域策略显示了HBuffer带来性能优势的潜力。

 

posted on 2019-04-10 17:47  Jiweilearn  阅读(131)  评论(0)    收藏  举报

导航