IOPS 与吞吐量。选择 AWS EBS 时使用哪一个

IOPS vs Throughput. Which one to use while choosing AWS EBS

在选择合适的 EBS 卷类型时,我需要决定 if IOPS or throughput is a better performance measure.
问题是我不完全明白他们每个人在哪个实际场景中比另一个更好。
这个文档说“frequent read/write operations with small I/O size”非常适合 IOPS。

为什么吞吐量不是 "frequent read/write operations with small I/O size" 的完美衡量标准?

我在 this and 个问题中找不到答案。

让我们试着解释什么是吞吐量和I/O。

  • I/O是访问磁盘的次数。每次需要读取一个文件,需要"at least"访问一次文件。然而,内容是在 "chunks" 中读取的,每次您读取 "chunk" 时,都会请求一个新的 I/O。 想象一下咬巧克力棒,您至少需要访问一次巧克力棒,然后开始咬 (I/O) 直到结束。每一口都是I/O。您需要几个 I/O 才能吞下整个酒吧。

  • IOPS 是每秒 I/O。速度。所以基本上我们可以多快地咬巧克力棒。 IOPS EBS 是一个专门用于执行快速咬合的卷: Ñam-Ñam-Ñam vs Ñam------Ñam-----Ñam

  • 吞吐量是您在每个 I/O 中阅读的信息量。按照示例,您可以用两种不同的方式吃掉整块巧克力,小口(小吞吐量)或大口(大吞吐量),这取决于您的嘴巴大小。 Througput EBS volume专门用于执行big biting: Ñam vs Ñaaaaaaaam

I/O和Throughput有关系吗?当然。如果您必须从 EBS 读取一个大文件,而您的吞吐量很小(也就是您的嘴巴很小,所以您的咬合力很小),那么您需要更频繁地访问 (I/O) 直到文件被完全读取。 上午-上午-上午-上午

另一方面,如果你的嘴巴大(吞吐量大),那么你需要的咬数就会少,I/O。 Ñaaa​​am---Ñaaaam

所以他们可以以某种方式相互平衡,但是......有极端情况:

a) 假设您有一个非常小的小文件(或巧克力纳米棒)。 --- 在这种情况下,即使是最小的嘴巴也足够了。无论嘴巴大小,您都可以一口吃掉整个纳米棒。

b) 想象一下你有一桶无数微小的小文件(或巧克力纳米棒) --- 在这种情况下,即使是最小的嘴巴也足以吞下每一个酒吧。吞吐量大或小都不会给您带来更好的性能。但是,拥有 IOPS(每秒 I/O)会提高您的性能。吞吐量 EBS 卷的性能将比 IOPS 卷差得多。

c) 假设您有一桶包含数以亿计的大文件。 --- 所以你需要大文件的吞吐量和多次访问的 IOPS。那么你可能应该转向 EBS 通用(它有爆裂)

有了这个你应该能够做出一个答案,但对我来说:

但是 I/O 大的频繁操作呢? --> EBS 通用。这里 "high" 和 "frequent" 要求平衡音量。

大 I/O 大小的操作不频繁? --> EBS 吞吐量。 你需要尽可能大的嘴巴。

小 I/O 尺寸不频繁操作?--> 警告! "small" 适合您的尺码是多少?如果它们真的很小,那么我可能会转向 IOPS,因为 big/small 口(吞吐量)不会产生很大的不同。如果那些 "not frequent" 变成 "frequent"(更多用户?更复杂?)将从 IOPS 中受益。也许您也可以通过 EBS 通用型生存。 但是,第二个警告,"not frequent operations" 是什么意思,这些文件不经常访问?在这种情况下,您应该检查冷硬盘

一如既往,建议只是建议...最好的(因为您会对 "small" 的感觉感到惊讶)是在您有疑问的情况下测试性能。

用例:

  • 工作负载 -> 通常是通用卷
  • 数据库 -> 通常 IOPS(小数据但经常检索)
  • 大数据/数据仓库 -> 通常是吞吐量(大数据文件)
  • 冷硬盘 -> 冷文件服务器(移动到磁性之前的最低 IOPS)

(只是为了补充 Victor 的出色回答)AWS Fundamentals Core Concepts 文档中,不同存储服务在延迟、吞吐量和 IOPS 方面的性能特征如下.

如果您使用块存储服务 (Amazon EBS):

  • 延迟受卷类型选择的影响(例如,solid-state 驱动器与硬盘驱动器)。
  • 吞吐量和 IOPS 容量与大多数卷类型的卷大小成正比。

如果您使用的是文件系统服务(Amazon EFS 和 Amazon FSx 系列)

  • 延迟和 IOPS 受您选择的性能模式影响。
  • 吞吐量受您选择使用预配置吞吐量的影响。

如果您使用的是对象存储 (Amazon S3)

  • 延迟受到存储桶端点的地理距离的影响
  • 吞吐量受使用 throughput-optimized 分段上传等 API 的影响
  • IOPS 不可配置

如果您使用的是存档存储

  • 延迟受到存储桶端点的地理距离和检索方法选择的影响
  • 吞吐量受使用 throughput-optimized 分段上传等 API 的影响
  • IOPS 不可配置