首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么IOPS很重要?

为什么IOPS很重要?
EN

Server Fault用户
提问于 2017-05-22 21:56:51
回答 8查看 13K关注 0票数 34

我知道IOPS和吞吐量是什么。吞吐量测量数据流,因为MB/s和IOPS表示每秒发生多少次I/O操作。

我不明白的是,为什么许多存储服务只显示它们提供的IOPS。我真的看不到任何情况,我更愿意知道IOPS而不是吞吐量。

为什么IOPS很重要?为什么AWS主要在IOPS中显示其存储条款?IOPS在哪里比吞吐量更相关(MB/s)?

编辑:

有些人正在研究这个问题,就好像我在问什么是随机访问,它如何影响性能,或者HDD和SSD是如何工作的……虽然我认为这些信息对刚开始存储行为的人是有用的,但是很多人都在关注这个问题,这不是问题的目标,问题是“当我看到IOPS数字时,我会得到什么新的信息,而不会看到吞吐量(MB/s)数字?”

EN

回答 8

Server Fault用户

回答已采纳

发布于 2017-05-22 22:13:11

吞吐量

当您执行像复制文件这样的事情时,吞吐量是非常有用的。当您执行几乎任何其他操作时,在磁盘上随机读取和写入将限制您。

IOPS

IOPS通常指定每个数据包的大小。例如,AWS gp2可以使用16KiB负载大小执行10,000个IOPS。乘以160毫巴/秒。但是,您不太可能一直使用完整的有效负载大小,因此实际吞吐量可能会更低。NB KiB为1024字节,KB为1000字节。

因为IOPS指定了一个数据包大小,它也为您提供了总吞吐量。然而,高吞吐量并不意味着您有高IOPS。

场景

考虑以下情况:

  • 启动你的电脑。考虑一下你的计算机中的SSD和旋转磁盘之间的区别,这是许多人都有第一手经验的事情。对于旋转磁盘,启动时间可以是一分钟,而对于SSD,这可以减少到10-15秒。这是因为当请求信息时,较高的IOPS会导致较低的延迟。旋转磁盘的吞吐量是相当好的,150 is /秒,尽管SSD可能更高--这并不是它更快的原因--而是返回信息的较低延迟。
  • 运行操作系统更新。它在磁盘上到处运行,添加和修补文件。如果您的IOPS很低,那么不管吞吐量如何,它都会很慢。
  • 运行数据库,例如,从大型数据库中选择少量数据。它将从索引读取,从多个文件读取,然后返回结果。再一次,它在磁盘上到处传播以收集信息。
  • 在你的电脑上玩游戏。它可能会从磁盘上加载大量纹理。在这种情况下,可能需要IOPS和吞吐量。

LTO磁带

考虑一下磁带备份系统。LTO6可以执行400‘m/秒的操作,但是(我在这里猜测)可能连一个随机IOP都不能执行,它可能会低到每IOP秒。另一方面,如果IOPS被定义为读取或写入一包数据到磁带,那么它可能会执行大量的顺序IOPS。

如果你试图用磁带引导一个操作系统,如果它能正常工作的话,它需要很长的时间。这就是为什么IOPS通常比吞吐量更有用的原因。

要理解存储设备,您可能想知道它是随机的还是顺序的IOPS,以及IO大小。由此可以获得吞吐量。

AWS

请注意,AWS确实为其所有存储类型在这页上发布了IOPS和吞吐量数字。通用SSD (gp2)可执行10,000个16 sec,最高可达160 of /秒。提供的IOPS (io1)为20,16 sec,最高为320 of /秒。

注意,使用gp2卷时,每GB提供3个IOPS,因此要获得10,000个IOPS,您需要一个3.33TB卷。我不记得io1卷是否有类似的限制(我已经有一段时间没有做过类似的测试),但我怀疑它们是这样的,如果是的话,可能是每GB 60 60IOPS。

结论

高的顺序吞吐量是有用的,在某些情况下是性能的限制因素,但是在大多数情况下,高IOPS可能更重要。当然,无论IOPS如何,您仍然需要合理的吞吐量。

票数 36
EN

Server Fault用户

发布于 2017-05-22 22:05:30

这是因为顺序吞吐量并不是大多数I/O活动发生的方式。

随机读/写操作更能代表正常的系统活动,这通常是受IOPS约束的。

将色情内容从我的一个服务器传输到我们的客户(或者上传到我们的CDN)在本质上是更有顺序的,您将看到吞吐量的影响。

但是,维护记录色情内容并通过站点跟踪用户活动的数据库在本质上是随机的,并且受到底层存储所能达到的小I/O操作/秒数的限制。

我可能需要2,000 IOPS才能在峰值使用时运行数据库,但由于活动的类型,在磁盘级别上只能看到30 of /S的吞吐量。磁盘容量为1200 in /S,但IOPS是环境的限制。

这是一种描述存储系统容量潜力的方法。SSD可能具有80,000 IOPS和600 may /S吞吐量的能力。您可以使用6个常规的10k SAS磁盘获得这种吞吐量,但只会产生大约2,000个IOPS。

票数 58
EN

Server Fault用户

发布于 2017-05-24 00:31:07

虽然白雪的回答是完全正确的,但我想提供一些更具体的数字,以帮助说明为什么差异是重要的。

正如ewwhite已经正确指出的那样,大多数非流应用程序主要执行非顺序磁盘操作,这就是IOPS除了理论峰值吞吐量之外还重要的原因。

当一位同事和我第一次在我们的开发系统中安装SSD以取代我们以前使用过的HDD时,我们对它们进行了一些性能测量,这确实强调了为什么这很重要:

SATA结果:

顺序读取吞吐量:~100 MB/s

非顺序读取吞吐量(2k块,IIRC):~1MB/S

PCIe-附SSD结果:

顺序读取吞吐量:~700 MB/s

非顺序读取吞吐量(2k块,IIRC):~125 MB/s

从这个例子中可以清楚地看到,仅仅列出每个设备的最大吞吐量就会给出它们之间比较的非常不准确的图片。当按顺序读取大文件时,SSD的速度只有HDD的6-7倍,但从磁盘的不同部分读取小块数据的速度是HDD的100倍以上。当然,对于HDD来说,这一限制很大程度上是因为HDD必须物理地将r/w磁头移动到所需的轨道上,然后等待所需的数据在磁头下旋转,而SSD没有可移动的物理部件。

我们的编译时间比简单比较最大吞吐量所显示的要大得多。以前花了30分钟以上的构建现在大约在一分钟内完成,因为在大型构建期间的磁盘I/O包括读取和写入许多单独的源文件,这些源文件不是很大,而且可能分散在磁盘上。

通过提供吞吐量和IOPS编号,您可以更好地了解给定工作负载在给定存储设备上的性能。如果您只是在流大量的数据,而这些数据并不是分段的,那么您将非常接近最大吞吐量。但是,如果您正在执行许多没有顺序存储在磁盘上的小读取和/或写入操作,那么您将受到IOPS的限制。

票数 6
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/851652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档