IO, IO分析,这就是我们的全部工作:Nimble架构师谈闪存存储测试

简介:

双峰IO分布成为确切了解阵列性能水平的理想途径。

IO, IO分析,这就是我们的全部工作:Nimble架构师谈闪存存储测试Nimble公司表示,基准测试应当将双模式纳入考量。

我们采访了Dimitris KrekoukiasNimbe Storage公司全球技术与策略架构师,旨在共同探讨存储阵列性能方面的议题——他对此有着一些强烈的个人观点,特别是关于Pure Storage的性能实现方案。

Pure 公司对于Krekoukias的观点给出了响应,这部分内容亦被添加到本次采访当中。双方的思路都认为,单纯的IO水平并不足以适应全部性能特性需求。

记者:首先请您谈谈存储阵列性能的相关要求。

Dimitris Krekoukias: 存储性能(或者其它任意性能指标)被市场宣传所过分夸大了。有时候营销人员会对其过分夸张地加以宣传,并将现实与数学计算相扭曲,从而让结论更加可信。

案例分析:Pure Storage公司给出的并非其32 KB数据块下的平均存储I/O,而是表示其阵列能够在32 KB I/O大小下提供高性能表现。

记者:您能不能具体加以解释?

Dimitris Krekoukias: 平均数值其实是一种最为基本的平均性能误导方式:一台超级跑车的平均时速为60英里。这里表达的虽然是实际情况,也就是表达了超级跑车的平均驾驶性能(因为需要将城市、高速与乡村路段进行综合),但其在解释该车辆在不同实际条件下的性能表现时却缺少真正的指导意义。

再举另一个与汽车相关的例子:Pure公司宣称某汽车品牌系列专门为四英尺高、100磅重的乘坐者所设计——这是因为两名成年人与两到三名儿童的正常家庭恰好能够给出这样的平均数值。然而,这样的车辆显然毫无用处——因为我们实际需要的是一辆适合五英尺八英寸、180磅重成年人以及四英尺高、45磅重儿童的车型。

记者:那么Nimble公司是否更了解存储IO这一特性?

Dimitris Krekoukias: Nimble Storage公司利用InfoSight进行全面的分析工作,这款工具负责收集更多存储阵列相关信息,旨在建立起一套极端精确的真实世界阵列使用方式视图。每天一天,都有跨越成千上万台阵列的数万亿个数据点由一套庞大的大数据后端进行处理与分析。

这些数据点当中包含有充足的信息,不仅能够预测并预防各类问题,同时也可以指明其它一些重要趋势——例如不同应用在实际运行当中对I/O的确切需求。

David Adamson(Nimble公司首席数据科学家)已经就此发布了一篇精彩的博文(点击此处查看)外加一系列研究成果,其着眼于具体应用对性能问题加以剖析。总结而言,他给出了以下结论:

 

  • 数量庞大的操作只需要使用小规模I/O。小规模I/O在处理延迟敏感型工作负载时更具效率。应用程序大多数以不足16 KB的水平使用I/O块,而且绝大部分集中在4到8 KB区间。这类I/O通常更具延迟敏感性且随机度很高。纵观全部客户与应用,大部分操作(全部读取操作中的52%,全部写入操作中的74%)都属于小规模I/O范畴。
  • 大规模数据则倾向于以大型I/O进行传输(大于64 KB)。大型I/O在处理高通量数据传输时效率更高。事实上,大部分此类数据(全部数据读取操作中的84%,全部数据写入操作中的72%)采用大于64 KB的I/O块大小。此类I/O更具连续性,且对于延迟并不敏感。
  • 其中的一大实例在于SQL Server。其存在着明显的双峰I/O密度特性——大部分I/O处于8 K或者大于64 K区间,其中相当一部分在高强度事务、延迟敏感型OLTP环境中被转化为小型I/O,而大型I/O则出现在OLAP类环境内。
  • 由于数据分布呈现出双峰特性(即使是在同一应用当中),因此其极限值可能出现在两个极端方向,这意味着利用单一平均值来定义I/O大小并无意义。实际上,I/O明显并不能依靠平均数来表达。

 

记者:这会对阵列基准测试带来怎样的影响?

Dimitris Krekoukias: 由于我们现在更多使用统计数据,同时了解不同方向及类型应用当中的I/O数量、类型与大小,因此我们能够更为精确地对存储方案进行基准测试。很明显,基准测试应当遵循真实应用场景下的双峰特性:

  • 较小的随机块会带来较高写入占比。一台出色的阵列应当有能力以极低且稳定的延迟完成大量写入操作。
  • 大型连续块(其中读取操作数量略高于写入操作)。一台出色的阵列需要具备高通量水平。

记者:您是否在实际 POC当中使用了这一方案?

Dimitris Krekoukias: 是的。Pure公司公开宣称其//m70阵列拥有32 K数据块条件下30万IOPS性能水平。最近,一家客户对Nimble AF7000(并非Nimble旗下最快的机型)

Pure //m70(截至2016年8月Pure公司发布的最高端机型)进行了性能比较。
其中一项测试是以读取与写入操作五五开的方式执行,数据块则为较小的4 KB大小。Pure阵列的阵列只能实现相当于其宣传水平一半的IOPS数字。Nimble阵列在这方面胜出了,但这并不是重点所在。

其中的重点在于,Pure公司并没能真正践行其公布的性能水平,而事实上全闪存阵列的存在意义正是为了弥补性能需求制品,且为事务I/O提供具备可行性的I/O大小。因此Pure方面公布的32 KB IOPS数字(我们认为其应该全部为读取IOPS)在真实世界的应用环境内并无意义。

记者:那么您希望通过这个故事表达的是……

Dimitris Krekoukias: 一台设备当中包含闪存,并不代表着其就一定能为客户提供必要的性能提升。因此,大家至少应该同时向供应商询问相关产品在小型随机块与大型连续I/O层面的性能数字,其中亦包括高强度写入操作情况。另外,也别忘了询问小型块性能场景下的延迟水平。

Pure Storage与32 KB IO问题

Pure公司的一位发言人对Krekoukias提出的观点进行了详尽回应,并表示Pure公司“100%赞同,目前存储行业确实存在出于市场营销目标而利用特定块大小过度宣传存储性能的情况。”

这些固定块大小并不能真正代表一台阵列在运行工作负载时的实际性能水平。正因为如此,Pure公司才在过去两年中一直致力于由发布4 K IOPS数字转向发布32 K IOPS数字,这是因为我们认为后者更能代表真实世界中的工作负载情况(详见下文)。也正是出于这一理由,我们始终鼓励客户利用自己的真实工作负载副本进行测试,从而评估各类存储系统。

“Nimble公司似乎认为Pure方面将32 K IO视为全球通用型或者说平均数据块大小。如果大家查阅我们的博文,就会发现具体情况取决于您希望单纯了解IO大小还是实际数据传输(即大小权重型IO)。博文中对我们决定选择32 K而非4 K或者8 K的理由作出了明确阐述; 然而,这还只是与客户们就块大小进行探讨的一个起点。”

“FlashArray中并不存在32 KB IO大小假设或者优化。与大多数倾向于针对特定块元数据架构(例如4 K、8 K、16 K乃至32 K等等)工作负载进行优化的供应商,我们从开始设计时起就一直坚持使用可变块大小,因此能够在全部阵列当中实现可变IO大小(特别是在混合型/虚拟化工作负载当中)。”

“Pure Storage FlashArray的突出优势在于,其始终能够很好地处理混合型IO大小,且无需进行调整或者监控,从而保持稳定的性能水平与最大化数据量削减。我们在架构中并没有设定任何基础块大小。换句话来说,我们不会像经典存储系统那样在处理中等大小IO时发生拆分以及资源浪费的情况。旁注:举例来说,Nimble的数据削减机制需要在每个分卷基础之上进行设置/调整,从而操作固定的块大小……在我们看来,这并不是对当下云/混合型工作负载的正确架构处理思路。”

“那么我们既然没有在架构设计中针对特定IO大小进行优化,又为什么要以32 K为单位发布IOPS规格?在全闪存阵列发展早期,市场仍然遵循以固定块大小进行存储设备基准测试的习惯。事实上,大多数标准化基准测试都会着眼于特定块大小。由于我们必须选择其中一种大小,因此我们选择了更能代表工作负载在阵列中合并后实际情况的块大小。”

“旁注:有趣的是,我们发现Nimble公司并没有在其公布的性能规格当中透露任何IOPS块大小。”

“当然,我们发现其阵列中的IO大小加权平均值恰好接近32 K。正如我们的数据科学团队最近发布的博文所言,这一阵列加权平均IO在考虑进行各类工作负载合并之后基本就是在32 K左右。”

“从宏观层面来看,当大家考虑各类存储系统中的实际工作负载情况时,16 K或者更低块大小在IOPS方面更具优势,而64 K以上块大小的传输通量则更为出色。通过我们的博客,大家会看到数据分布确实存在着双峰模式。”

IO, IO分析,这就是我们的全部工作:Nimble架构师谈闪存存储测试

“我们很高兴地看到,其它供应商也开始进行类似的数据驱动型研究,而我们走得更远,也在基于这些研究结果致力于为各类数据服务提供更为理想的可变块大小设计方案。”

“我们一直在公开对此进行讨论,并鼓励整个市场重新审视长久以来被作为标准的块大小议题。”

感兴趣的朋友可以点击此处查看Pure公司在不同工作负载场景下给出的深层块大小分析结论。他们给出的共同的论点:单纯以4 K或者8 K形式进行基准测试并无意义,因为应用程序IO远远不只是单一块大小的简单重复。


原文发布时间为:2016年9月27日

本文作者:黄雅琦

本文来自云栖社区合作伙伴至顶网,了解相关信息可以关注至顶网。

相关文章
|
2月前
|
缓存 监控 算法
软件测试中的性能瓶颈分析与优化策略
【10月更文挑战第6天】 性能测试是确保软件系统在高负载条件下稳定运行的重要手段。本文将深入探讨性能测试的常见瓶颈,包括硬件资源、网络延迟和代码效率等问题。通过具体案例分析,我们将展示如何识别并解决这些问题,从而提升软件的整体性能。最后,文章还将分享一些实用的性能优化技巧,帮助读者在日常开发和测试中更好地应对性能挑战。
91 3
|
3月前
|
监控 测试技术 持续交付
软件测试中的性能瓶颈分析与优化策略
性能瓶颈,如同潜伏于软件深处的隐形障碍,悄然阻碍着系统的流畅运行。本文旨在揭示这些瓶颈的形成机理,剖析其背后的复杂成因,并汇聚一系列针对性的优化策略,为软件开发者提供一套系统性的解决方案。
56 5
|
3月前
|
安全 数据处理 数据安全/隐私保护
C/S架构与B/S架构的适用场景分析
C/S架构(客户端/服务器架构)与B/S架构(浏览器/服务器架构)在适用场景上各有特点,主要取决于应用的具体需求、用户群体、系统维护成本、跨平台需求等因素。
236 6
|
23天前
|
存储 SQL Apache
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
Apache Doris 是一个基于 MPP 架构的高性能实时分析数据库,以其极高的速度和易用性著称。它支持高并发点查询和复杂分析场景,适用于报表分析、即席查询、数据仓库和数据湖查询加速等。最新发布的 2.0.2 版本在性能、稳定性和多租户支持方面有显著提升。社区活跃,已广泛应用于电商、广告、用户行为分析等领域。
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
|
25天前
|
运维 NoSQL Java
后端架构演进:微服务架构的优缺点与实战案例分析
【10月更文挑战第28天】本文探讨了微服务架构与单体架构的优缺点,并通过实战案例分析了微服务架构在实际应用中的表现。微服务架构具有高内聚、低耦合、独立部署等优势,但也面临分布式系统的复杂性和较高的运维成本。通过某电商平台的实际案例,展示了微服务架构在提升系统性能和团队协作效率方面的显著效果,同时也指出了其带来的挑战。
60 4
|
2月前
|
存储 监控 分布式数据库
百亿级存储架构: ElasticSearch+HBase 海量存储架构与实现
本文介绍了百亿级数据存储架构的设计与实现,重点探讨了ElasticSearch和HBase的结合使用。通过ElasticSearch实现快速检索,HBase实现海量数据存储,解决了大规模数据的高效存储与查询问题。文章详细讲解了数据统一接入、元数据管理、数据一致性及平台监控等关键模块的设计思路和技术细节,帮助读者理解和掌握构建高性能数据存储系统的方法。
百亿级存储架构: ElasticSearch+HBase 海量存储架构与实现
|
2月前
|
存储 SQL 分布式计算
湖仓一体架构深度解析:构建企业级数据管理与分析的新基石
【10月更文挑战第7天】湖仓一体架构深度解析:构建企业级数据管理与分析的新基石
98 1
|
2月前
|
缓存 监控 测试技术
软件测试中的性能瓶颈分析与优化策略
本文深入探讨了在软件测试过程中,如何有效地识别和解决性能瓶颈问题。通过对性能瓶颈的定义、分类以及常见原因的分析,结合实际案例,提出了一系列针对性的优化策略和方法。这些策略旨在帮助测试人员和开发人员提高软件的性能表现,确保软件在高负载条件下依然能够稳定运行。
|
3月前
|
存储 监控 安全
SaaS业务架构:业务能力分析
【9月更文挑战第20天】在数字化时代,软件即服务(SaaS)模式逐渐成为企业软件解决方案的首选。SaaS 业务架构设计对于提供高效、可靠的服务至关重要。其核心业务能力包括:用户管理(注册登录、角色权限)、数据管理(存储备份、安全共享)、业务流程管理(设计定制、工作流自动化)、应用集成(第三方应用、移动应用)及客户服务(支持培训、反馈改进)。通过优化这些能力,可为企业提供更高效、可靠的 SaaS 服务。
61 11
|
3月前
|
测试技术 持续交付 UED
软件测试的艺术与科学:平衡创新与质量的探索在软件开发的波澜壮阔中,软件测试如同灯塔,指引着产品质量的方向。本文旨在深入探讨软件测试的核心价值,通过分析其在现代软件工程中的应用,揭示其背后的艺术性与科学性,并探讨如何在追求技术创新的同时确保产品的高质量标准。
软件测试不仅仅是技术活动,它融合了创造力和方法论,是软件开发过程中不可或缺的一环。本文首先概述了软件测试的重要性及其在项目生命周期中的角色,随后详细讨论了测试用例设计的创新方法、自动化测试的策略与挑战,以及如何通过持续集成/持续部署(CI/CD)流程优化产品质量。最后,文章强调了团队间沟通在确保测试有效性中的关键作用,并通过案例分析展示了这些原则在实践中的应用。
78 1