【问题标题】:AWS EBS block sizeAWS EBS 块大小
【发布时间】:2017-04-15 10:07:21
【问题描述】:

您能否指出一些有关 EBS 如何在 gp2 卷的幕后工作的资源? 我理解它的方式,它是一项服务,但实际上它是以冗余方式将 SSD 驱动器阵列连接到实例的某种形式 实际的物理连接方法是什么? 该文档提到数据以 16KB 或 256KB 块传输的事实,但我找不到更多关于此的信息。 例如,如果在 Linux 中,我的分区被格式化为 4KB 块,这是否意味着 EBS 将使用 16KB 块将数据传输到磁盘和从磁盘传输数据,如果是这样的话,是否也使用 16KB 块格式化分区并进行优化?它上游? 如果我有一组非常随机的 4k 操作,这会触发相同数量的 16KB 块请求吗? 如果有人已经做过这样的测试,我真的很想听听......

【问题讨论】:

    标签: amazon-web-services amazon-ec2 amazon-ebs


    【解决方案1】:

    实际的物理连接方式是通过 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

    【讨论】:

    • 谢谢。与我本地的 NVM SSD 相比,gp2 并不太令人印象深刻。与 ec2 上的 1000k 和 160 MiB/秒相比,我的 SSD 可以执行 90000 IOPS 和 2GB/s 的顺序。此外,块大小使其对于小型随机读取的效率降低......
    • 那么用简单的英语来说,哪个是最好的块大小?例如如果我使用dd
    • @blamb 简单的英文,SSD 不小于 16K,HDD 不小于 1M。如上所述,您可能会发现卷可以比实例更快地获取数据,除非卷很小和/或实例很大。实验并让我们知道您是否有与此相矛盾的结果。如果您正在从最近从快照创建的 EBS 卷中读取,您还会遇到由首次读取/预热导致的显着减速,因为 EBS 的内部工作人员会转到 S3 从快照中获取尚未实际复制到的块音量。
    猜你喜欢
    • 2019-03-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-07
    • 2014-06-24
    • 2013-10-05
    • 2015-07-08
    • 2013-11-18
    • 2021-11-12
    相关资源
    最近更新 更多