我在 Windows Server 2012R2 映像上使用了 4 个 10GB GP2 EBS 卷和 RAID0,如下所述:http://docs.aws.amazon.com/AWSEC2/latest/WindowsGuide/raid-config.html我使用的实例类型是 R3。大的
当突发池已满时,我期望看到 4*3000 (12K IOPS),但我始终只能达到 7480 IOPS。没关系。
之后,我将实例类型更改为 R4.large,它应该使用更新版本的 CPU(broadwell 而不是 Ivy Bridge),而且很可能更快。我保持其他一切相同,相同的磁盘、相同的操作系统、相同的测试:性能比 R3.large 差,大约为 6480 IOPS。
这里有什么问题?为什么同一实例组(R-“Memory Intensive”)的较新一代的性能会比以前更差?
您的约束似乎来自实例类型的网络限制,而不是 EBS 本身。
需要在两行之间进行一些阅读,但EBS 优化实例 文档讲述了一个有趣的故事——您的数字实际上比实例类型声称能够支持的估计 IOPS 更好。
EBS 优化实例有两个网络路径,其中一个专用于 EBS 连接,而不是只有一个网络路径由进出实例的所有 IP 流量共享......所以虽然文档没有明确说明这一点,但速度无论实例是否经过 EBS 优化,似乎都是相同的——不同之处在于,对于优化的实例,EBS 流量不必共享相同的管道。实例的总带宽翻了一番,一半分配给 EBS,一半分配给其他所有内容。
您提到使用 r3.large 实例,但表中未显示...但如果我们从 r3.xlarge 向后推断,则其中的数字非常小。
如文档中所述,IOPS 估计值是“基于 100% 只读工作负载的四舍五入近似值”,并且由于所列速度的连接是全双工的,因此混合读取和写入的数字可能会更大.
通过扫描 500 GiB gp2 卷的前 512 MiB 来测试我的一个 r3.large 似乎证实了这个网络速度。这台机器不是 EBS 优化的,在运行这个测试时没有处理任何有意义的工作负载。这与我之前对 r3.large 的观察一致。一段时间以来,我的设计假设是这些机器只有大约 0.25 Gbit/s 的连接速度,但测试似乎值得重复。当然,这是一个 Linux 系统,但基本原则都应该成立。
这看起来很像约 250 兆比特/秒的网络连接,当您需要存储吞吐量时,它的带宽并不多。与直觉相反,如果您的工作负载适合 t2 CPU 积分模型,您实际上会从 t2 获得比从 r3 获得的更好的性能。