每秒输入/输出操作 (IOPS) 和数据吞吐量是任何存储系统的两个流行的性能特征。在计算机技术的早期,当数据传输仅限于小型数据库查询时,IOPS 是可为系统管理员提供有关存储系统性能的主要指标。
在现代,随着大数据、在线视频流、分布式数据处理以及通过 Internet 传输大量数据的兴起,数据吞吐量变得越来越重要。与这些技术创新相关的数据密集型操作需要更好的存储和网络性能,不仅在 IOPS 方面,在吞吐量方面也是如此。
在本文中,我们将阐明 IOPS 和吞吐量之间的关系,以及如何使用这两个指标来评估存储系统性能。我们还将讨论如何测量 IOPS 和吞吐量,以及获得全面的存储系统性能图所需的其它因素。
什么是 IOPS?
IOPS 指标显示存储设备每秒可以执行多少次读取和/或写入操作。在一个硬盘驱动器 (HDD) 上执行单个操作,通常具有 512B 或 4KB 块,而现代固态驱动器 (SSD) 将存储内存暴露在以数据块连接的页面中,大小可达 512KB。
IOPS 指标本身并没有说明驱动器可以处理的数据量。这个数量取决于 IOPS 的数量和数据块大小(可以分配给单个 I/O 操作的最大比特/字节数量)。例如,给定相同的 IOPS 值,具有更大数据块的驱动器可以处理(读取或写入)更多数据。
此外,IOPS 可能会因数据是按顺序访问还是随机访问而有所不同。特别是对于 HDD,顺序写入的 IOPS 通常更高,因为磁盘磁头可以轻松访问contingent blocks。另一方面,随机读写需要磁盘头移动找到所需的位置。读写操作的 IOPS 值也可能有所差异。
由于这些原因,IOPS 可以分为四类:
随机读取的 IOPS
随机写入的 IOPS
顺序读取的 IOPS
顺序写入的 IOPS
什么是吞吐量?
存储吞吐量(也称为数据传输率)衡量每秒传入和传出存储设备的数据量。通常,吞吐量以 MB/s 为单位。吞吐量与 IOPS 和数据块大小密切相关。给定相同的 IOPS,数据块大小可以在吞吐量方面产生显着差异。特别是,较小的数据块会导致较低的吞吐量,因为每个 I/O 在不可分割的数据块中读取或写入数据。
与 IOPS 类似,数据吞吐量也取决于 I/O 的类型:随机或顺序。数据吞吐量接近顺序 I/O 的最大持续带宽。随机 I/O 的数据吞吐量明显小于 HDD 的顺序 I/O,但在现代 SSD 上具有可比性。
为什么选择 IOPS?
数据密集型应用程序(包括数据库、数据仓库和多媒体处理系统)的性能直接受到存储系统可以执行的输入/输出操作数量的影响。因此,您选择的存储介质应取决于这些应用程序的性能要求。高 IOPS(例如,现代 SSD 为 100,000)可以很好地表明存储系统将满足要求。
此外,DevOps 和基础设施运营商可以实施混合存储系统,将存储介质与不同的 IOPS 参数相结合。例如,将存储用于冗余的应用程序,例如存储“冷”(不可写)索引,可能会使用具有平均 IOPS 参数的 HDD。对于具有大量读取操作的应用程序,具有平均 IOPS 的 HDD 可能具有相当高的性能。相比之下,执行高频随机访问 I/O 的应用程序在对随机访问数据具有一致性能的 SSD 上效率更高。
将存储设备与不同的 IOPS 配置文件相结合有助于优化公司的存储支出,并使 DevOps 在为应用程序配置不同的存储介质方面更加灵活。
IOPS 的局限性
虽然 IOPS 可以用作一般的存储性能指标,但它更多地反映了存储系统的潜力,而不是其实际性能。单独来看,IOPS 指标揭示了给定存储驱动器可以执行的最大 I/O 操作量。但是,它并没有告诉我们存储设备可以处理的数据工作量。这是因为 IOPS 没有考虑数据块大小和响应时间等参数。相同的 IOPS 可能会导致不同的存储性能,具体取决于数据块大小。
此外,“出厂设置”IOPS 并不表示具有混合 I/O 配置文件的应用程序的性能。您必须在实际生产环境中测试 IOPS,以评估数据密集型应用程序的实际需求。
为什么选择数据吞吐量?
与 IOPS 相比,吞吐量提供了对存储性能的具体评估,因为它告诉您可以处理多少数据。您可以使用此指标来确定给定存储驱动器是否满足您的应用程序要求。
吞吐量取决于 IOPS 和数据块大小,以及 I/O 的类型(随机或顺序)。在随机访问模式中,从磁盘上的不同位置读取或写入数据。在这里,平均寻道时间对存储系统的性能起着重要作用。一般来说,随机 I/O 在 HDD 存储中的优化程度较低,而在现代 SSD 中效率更高,其中随机搜索取决于设备的内部控制器和内存接口速度。
在顺序 I/O 中,您正在处理以 MB/s 为单位测量的最大持续带宽。在顺序 I/O 操作期间,驱动器在临时存储块上运行,这意味着总吞吐量仅受 IOPS 限制。
吞吐量的局限性
与随机 I/O 相比,吞吐量对于评估大型顺序操作的存储系统性能更有用。在前一种情况下,它与 IOPS 指标完全一致,可以描述为最大持续带宽。
在通常涉及小数据块的随机 I/O 中,延迟和队列长度会导致性能大大偏离“出厂设置”吞吐量值。发送随机 I/O 请求可能会导致高延迟。因此,人们普遍认为,大文件和数据流的操作在顺序吞吐量方面效率更高。在这些情况下,关于“出厂设置”吞吐量的知识对实际存储性能的影响甚微。
计算吞吐量
给定 IOPS 和数据块大小,您可以计算顺序写入的存储吞吐量,如下所示:
吞吐量 = IOPS X 数据块大小
因此,例如,如果 IOPS 为 3,000,数据块大小为 512 KB,则驱动器的吞吐量为:
3000 * 512KB = 1,535 Mb
该值可以被视为最大持续带宽,因为在顺序 I/O 中,块是偶然的。在随机 I/O 的情况下,吞吐量还取决于平均搜索时间和磁盘延迟。
吞吐量也可能因应用程序的数据大小而异。操作系统和存储设备通常会组合较小的数据块来填充整个块,如果它们大于块大小,则将它们拆分。对于匹配块大小的应用程序数据,吞吐量测量将更加准确。
结论
IOPS 和吞吐量对于评估存储性能非常有用。然而,单独来看,IOPS 的信息量较少,因为它只显示了潜在的性能,而吞吐量提供了有关数据带宽的具体信息。
在评估存储性能时,DevOps 和基础设施运营商应考虑其它参数,例如网络延迟、I/O 配置文件和数据块大小。要评估存储性能,请避免仅使用存储驱动器的“出厂设置”指标。相反,使用真实的生产工作负载测试其实际性能。
| 留言与评论(共有 0 条评论) “” |