Tech OnTap的读者可能大多都知道,存储系统的随机读取性能在很大程度上取决于硬盘数(存储系统中的硬盘总数)和硬盘转速(单位RPM)。但是,为提高性能而增加硬盘就意味着需要更多的功耗、散热及空间;而且,伴随着硬盘容量增加速度快于其性能表现的提升,很多应用程序可能为了获得最佳性能而要求增加磁盘轴,即便它们并不需要如此大的容量。
在开发性能提高模块(Performance Acceleration Module,简称PAM)时,NetApp的目标就是突破随机读取性能和轴数之间的联系,使得存储系统能在提供更高级别性能的同时减少对功耗、散热和空间的需求。衡量性能的其中一个重要方面是延迟时间或响应时间,亦即满足指定读取请求的时间。对于PAM而言,NetApp将其目标定为在高CPU负荷(80%) 的情况下,缩短一个数量级的平均读取延迟。我们首次发布的产品成功实现了这一目标。在内部测试过程中,我们还发现PAM能使Microsoft Exchange、VMware、文件服务及Perforce等多种常用应用程序显著提速。
本文将深入探讨PAM,其中包括:
- PAM软硬件概述
- 读取缓存策略
- 使用预测缓存统计(PCS)功能确定能否受益于PAM(无需购买模块)
什么是PAM?
简而言之,性能提高模块就是二级缓存:用于存放从WAFL缓冲区高速缓存中退出的块。(WAFL即NetApp的“任意位置写入文件布局”,用于定义NetApp如何在磁盘上排列数据。WAFL缓冲区高速缓存是系统内存中由WAFL维护的读取缓存。)在没有PAM的系统中,每次尝试读取系统内存中并不存在的数据时都会造成磁盘读取。配备PAM后,存储系统在发出磁盘读取前,会先检查请求的读取是否已缓存到其安装的任一模块中。Data ONTAP在系统内存中保留了一组缓存标记,因此它无需访问模块也可确定是否有块驻留在PAM中。由于在命中缓存时只需进行一次DMA操作,因此,这种能力可有效缩短访问延迟。与任何缓存一样,成功的关键在于“决定什么数据可进入缓存”的算法。我们接下来将详细探讨此问题。
性能提高模块可加快从各类工作中读取数据的速度,但它其实最适合具有大量小规模随机读取(例如消息传送、基于文件的应用程序、主目录)的工作。磁盘驱动器很难应付此类工作,因为在传输数据之外,它们还需要耗费大量时间去寻找指向正确位置的驱动器机头。
PAM是由硬件和软件组合而成的(PAM 软件称为FlexScale)。要启用硬件必须具备许可。PAM硬件模块的长度是PCIe卡的四分之三,每个模块可对16GB的DDR2内存进行双通道DMA访问,模块上含有一个自定义编码的现场可编程门阵列(FPGA),它可提供加速缓存任务所需的板载智能功能。表1中列出了各款存储系统所支持的最大模块数目。
强大的恢复能力是PAM的设计宗旨之一。由于该模块可充当缓存使用,因此可直接丢弃不可纠正的错误以利于磁盘读取。如果模块中的不可纠正错误率超过设定的阈值,模块将自动禁用,且系统将恢复为未缓存操作,不会中断服务或要求重启。在此过程中,ECC将用于检测误码,而数据 CRC则保护从CPU到卡内存再到CPU的端对端数据传送。
一旦出现模块禁用情况,系统就会显示错误消息并指出需要换出的问题模块。如果启用了NetApp AutoSupport,系统还会向NetApp传送消息,以便我们采取纠正措施(具体视服务协议的期限而定)。
智能缓存
PAM中实施的缓存策略,旨在优化小块随机读取对存储系统的访问。随机读取是指对存储系统磁盘中非邻接数据的读取。此类读取在逻辑位置上并不相邻,因此它们比起进行本地读取较多的工作而言会更难满足,需要更多的磁盘寻道操作和更长的平均读取延迟时间。另外,由于此类读取是随机的(由定义上看),所以根本无法预测所需的下一个块的位置并提前获取。
相反,连续读取因能够同时读取磁盘中的大量连续数据而经常得到满足。而且,不少算法都能够有效识别连续读取活动并预先读取数据。因此,我们最好是直接从磁盘中读取此类数据,而为可能再次读取的随机访问数据留出可用的读取缓存。
这正是PAM缓存算法试图实现的方式:默认情况下,它们会尝试从连续和(或)低价值的数据中区分出高价值的随机读取数据并将其保留在缓存中,以此避免耗时的磁盘读取过程。
需要注意的是,PAM缓存是基于WAFL来实现的。因为到了此时,我们已拥有比原来更为充足的数据信息,可对需缓存和可放弃的数据做出更为明智的决定。
为满足各种独特需求,NetApp还提供了更改缓存行为的性能。PAM支持以下三种操作模式:
- 默认模式,同时缓存数据和元数据。
- 元数据模式,仅缓存元数据。
- 低优先级模式,可缓存连续读取数据和其它低优先级数据。
默认模式
默认模式会同时缓存用户数据和元数据,类似于Data ONTAP为WAFL缓冲区高速缓存实施的缓存策略。对于NFS和CIFS等文件服务协议,元数据包括了维持文件和目录结构所需的数据。而在SAN中,元数据则包括了用于LUN数据簿记的少量块。
此模式最适用于工作集大小不超过PAM缓存大小的情况。而且,在有频繁访问的数据热点时也十分有用,可确保这些数据驻留在缓存中。
元数据模式
在此模式下,只有存储系统元数据才会进行缓存。对于很多随机工作而言,在缓存操作有效的一段时间内很少会重复使用应用程序数据。而元数据则不同,这些工作通常都需要重复使用它们,因此,缓存元数据将有助提高性能。另外,对于无法有效缓存的较大数据集(即活动数据集超出缓存的大小),仅缓存元数据也是一种可行的方法。
低优先级模式
在低优先级模式下,缓存对象不只是普通的数据和元数据,平时排除在外的低优先级数据也会包含在内。低优先级数据包括大型连续读取数据和最近写入的新增数据。写入数据一般都不会进行缓存,因为总写入工作很可能体积庞大,以致将缓存溢出并导致有用数据流失。此外,由于写入数据通常都不会再次读取(它们一般在执行写入时已经缓存到本地系统上),因此并不适合缓存。
在一些应用程序中,数据可能需要在写入后的某个滞后时间再次读取以便上游缓存可清除数据,低优先级模式在此时将十分有用。例如,基于 Web的应用程序会创建新数据并分发Web用户可在日后访问的链接,对于此类应用程序,此模式可避免磁盘读取。在某些Web应用程序中,我们发现首次读取的滞后时间很长,以致只能从磁盘中获得数据(即使后续数据调用足够频繁,可以使上游缓存处理)。通过将此类磁盘读取变为缓存命中,低优先级模式下的PAM会使此类应用程序提速。
此时,您自然想弄明白PAM是否有助于缓解工作量以及应采用哪种模式。
PCS:确定PAM能否提高性能
为助您确定存储系统能否受益于新增的缓存,NetApp开发了一款目前在Data ONTAP 7.3及后续版本中提供的Predictive Cache Statistics(预测缓存统计)软件。PCS可让您预测在系统缓存增加到两倍、四倍及八倍时所能得到的效果。
通过使用PCS,您可以确定PAM能否为您的工作提高性能,并确定自己需要多少模块。此外,您还可以测试不同的操作模式,以确定“默认”、“元数据”、“低优先级”这三种模式中哪一个最适合您。
要开始使用PCS,可通过以下命令启用该功能:
options flexscale.enable pcs
如果存储系统保持在80%以上的CPU使用率,建议您不要启用PCS。启用PCS 后,您必须让模拟缓存“热身”或收集数据块。缓存经过“热身”后,您即可使用NetApp的Perfstat工具查看和分析数据。
此过程将使用同时包括元数据和普通用户数据的默认缓存模式来模拟缓存。您也可以使用其它操作模式进行测试。
启用元数据模式:
options flexscale.normal_data_blocks off
启用低优先级模式:
options flexscale.normal_data_blocks on
options flexscale.lopri_blocks on
完成测试后,请禁用 PCS:
options flexscale.enable off
PCS 启用后,通过以下命令可了解当前情况:
> stats show -p flexscale-pcs
输出示例请见图 2。
图 2) PCS 输出示例。
以下指南有助您理解这些数据:
- 如果“hit/(invalidate+evict)”即“命中数/(无效数 + 退出数)”的比率很小,则很多数据将在被使用之前丢弃。“instance (ec0, ec1, ec2)”即“实例 (ec0, ec1, ec2)”可能太小。
- 如果“(hit+miss)/invalidate”即“(命中数 + 未命中数)/无效数”的比率很小,则可能表示工作有大量更新;可切换为元数据模式并再次检查命中率。
- 如果usage即“用量”很稳定且有少量“invalidate”即“无效数”和 “evict”即“退出数”,则表示工作集大小合适。
- 缓存的KB/s 数约等于每个块每秒命中数hit/s × 4KB。
值得注意的是,在PCS中模拟的三个缓存是级联缓存。在以上示例中,ec0表示大小为8GB的第一个缓存,ec1表示大小为8GB的第二个缓存,ec2 表示大小为16GB的第三个缓存。32GB缓存每秒的命中数是三个缓存每秒的命中数合计。级联缓存的主要优势在于,在为32GB 缓存测量准确命中率的过程中,我们也同时获得8GB 和16GB 缓存的命中率预计值。如此一来,我们便获得了命中率曲线中的三个点,并能够预计中间缓存大小的命中率。
PAM和FlexShare
FlexShare是Data ONTAP的一个选项,用于为各卷级别设置系统资源(处理器、内存及 I/O)的优先级,从而在控制器负荷较大时向特定卷中的工作分配更多资源。FlexShare能够与PAM完全兼容,在FlexShare中进行的设置适用于PAM缓存中的数据。凭借FlexShare,可以在使用PAM实施的全局策略上进行更为细化的控制。例如,如果使用FlexShare为某个卷指定较高的优先级,则该卷在缓存中的优先级也会较高。
结论
在IT预算有限的今天,我们迫切需要从公司的投资中获得最佳性能,同时降低功耗、散热及空间方面的需求。PAM实现了这个目标。它给予您调节缓存模式的灵活性,满足您在工作上的独特需求。在您作出购买决定前,PCS还能帮助您确定能否从PAM受益,所需的模块数和各种设置。
文章作者为NetApp公司Dave Tanis、Naresh Patel和Paul Updike。
Naresh Patel是NetApp性能工程技术总监。Naresh拥有性能学博士学位,从事软硬件系统性能评估工作超过22年,其中包括在NetApp任职的9年。
Dave Tanis是NetApp性能和PAM高级产品经理。Dave在系统工程和市场营销领域拥有丰富经验。他的19年职业生涯还包括研发性能工程设计、网络管理和产品管理。
Paul Updike是NetApp技术营销工程师。在其16年的IT从业生涯中,Paul曾在性能、理论及工程环境的不同领域任职。自从六年前加入NetApp以来,他一直致力于Data ONTAP和存储系统性能的最佳实施。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
相关推荐
-
使用闪存卡、SSD和软件方式解决虚拟桌面性能问题
有哪些软硬件可以应对虚拟桌面的性能问题?比如启动风暴或者登陆风暴?存储分层在这里面起什么作用?
-
两家云初创公司将填补云存储市场空白
微软的Windows Live SkyDrive、惠普的Upline和亚马逊的Simple Storage等服务说明了云存储的发展潜力,但是它们都有一个共同的特点,那就是都不适用于企业级存储应用。