实际的物理连接方式是通过 AWS 软件定义的以太网 LAN。 EBS 本质上是一个 SAN。这些卷没有物理连接到实例,但它们在物理上位于同一可用区内,访问是通过网络进行的。
如果实例是“EBS 优化型”,则会为实例和 EBS 之间的通信单独分配以太网带宽。否则,EBS 也会使用处理实例所有 IP 流量的同一以太网连接。
EBS gp2 卷背后的 SSD 是 4KiB 页面对齐的。
请参阅 24:15 左右开始的 AWS re:Invent 2015 | (STG403) Amazon EBS: Designing for Performance。
正如AWS re:Invent 2016: Deep Dive on Amazon Elastic Block Store (STG301) 中所述,EBS 卷不是物理卷。他们不会给你一个 SSD 驱动器。 EBS 卷是一个逻辑卷,它跨越整个可用区的众多分布式设备。 (设备上的块也在可用区内的 EBS 内复制到第二台设备。)
这些因素应该表明,实际 SSD 的性能并不是影响 EBS 性能的一个特别重要的因素。显然,EBS 会根据您为卷支付的费用分配资源……这当然与卷的大小以及您选择的功能集(卷类型)成正比。
16KiB 是 EBS 用于为 gp2 建立性能基准的 I/O 的标称大小。它可能没有其他特殊意义,因为它似乎与 EBS 分配给您的卷的处理资源和媒体设备本身一样多或更多——EBS 卷存在于拥有自己“资源”的存储集群中(CPU、内存、网络带宽等)和 16KiB 似乎是与 EBS 基础架构中某种资源分配相关的标称值。
请注意,sc1 和 st1 卷使用非常不同的标称 I/O 大小:1 MiB。显然,这与物理存储设备没有任何关系,因此这可以证明 gp2(和 io1)的 16KiB 数的结论。
gp2 卷最多可以执行几个限制中的最低值:
- 160 MiB/秒,取决于连接的实例类型‡
- 当前卷可用的瞬时 IOPS 数,这是最高的
- 100 IOPS,与卷大小无关
- 每个预置的卷大小 GiB 3 IOPS
- 令牌桶中可用的 IOPS 积分,上限为 3,000 IOPS
- 每个卷 10,000 IOPS,无论卷有多大
‡无论如何,较小的实例类型无法提供 160MiB/秒的网络带宽。例如,r3.xlarge 只有半千兆 (500 Mbps) 的网络带宽,将您到 EBS 的总流量限制在大约 62.5 MiB/秒,因此您无法将更多的吞吐量推到 EBS 卷上this 来自该类型的实例。 除非您使用非常大的实例或非常小的卷,否则 EBS 性能最可能的限制将是实例的限制,而不是 EBS 的限制。
您的上限为上述列表中的第一个(最低)阈值,标称 16 KiB I/O 大小的影响如下:如果您的 I/O 小于 16KiB,则您的最大可能 IOPS 不会增加,如果它们更大,您的最大可能 IOPS 可能会降低:
- 4KiB 的 I/O 大小不会提高性能,因为用于速率限制的 I/O 的标称大小是 16KiB,但是
- 4KiB 大小的 I/O 不太可能显着降低顺序 I/O 的性能,因为出于 EBS 的会计目的,它们是内部组合的。因此,如果您的实例要发出 4 × 4 KiB 的顺序 I/O 请求,那么 EBS 很可能将其计为 1 个 I/O
- 4KiB 大小的 I/O 和极其随机的 I/O 确实不会组合,因此理论上相对于相同数量的 16KiB 极其随机的 I/O 性能较差,但直觉和经验告诉我,这与学术上的界限和理论领域,除非在极少数情况下。它可能会像帮助一样伤害,因为小写入会使用相同数量的 IOPS,但会通过网络传输更多不必要的数据。
- 如果您的 I/O 大于 16KiB,如果您的磁盘带宽在达到 IOPS 阈值之前达到 160MiB/s 阈值,那么您的最大 IOPS 将会降低。
最后的想法是,EBS 在负载下表现最好。也就是说,进行一系列随机 I/O 的单个线程不会保持 EBS 卷的队列充满请求。如果不是这种情况,您将看不到最大可能的性能。
有关 EBS 性能的更多讨论,另请参阅 Amazon EBS Volume Performance on Linux Instances。