当我查看来自各种云托管提供商的磁盘(块设备)存储选项时,我通常会看到以下数字:
- 谷歌云(区域 SSD):15.000 - 100.000 读取 IOPS
- OVH 云:(高速/SSD):高达 3.000 IOPS
- AWS : ( io1 / SSD) : 高达 64.000 IOPS
我对底层技术一无所知。
即使这些云提供商会使用一些可用的较慢 SSD 选项(常规消费类 SATA SSD),其中一些磁盘的 IOPS 规格也适用于 90.0000 及以上范围内的读取和写入(查看 860 EVO SSD 2.5)。NVMe SSD 将提供更好的吞吐量。即使这些云提供商将这些 SSD 磁盘堆叠到某种存储集群中,我仍然会惊讶地看到 IOPS 会从 90.000 下降到 3.000。
我觉得这些数字没有可比性,即使使用了相同的指标 (IOPS)。
云提供商列出的磁盘 IOPS 与磁盘制造商列出的磁盘 IOPS 应该如何理解?
Google 确实为本地SSD指定了 900.000 到 2.700.000 IOPS 。这表明他们的硬件完全有能力。“区域 SSD”的 IOPS 低得多,但它是特定区域中的所有服务器都可以访问的磁盘。这意味着它对运行代码的服务器是远程的,并且在服务器和 SSD 之间有软件来管理并发访问。
是的,这会消耗大量 IOPS。这并不意外。只需看看本地 NVMe SSD (2.700.000 IOPS) 和非 NVMe (900.000 IOPS) 之间的巨大差异。仅仅通过在闪存芯片和 CPU 之间引入一条慢速总线,您已经损失了 66% 的原始性能。那可能是几厘米长的 SATA 电缆和电缆两侧的 SATA 芯片。原始 SSD 速度如此之高,以至于任何开销都将是巨大的。
英特尔甚至认为 NVMe 对于他们的 Optane 存储产品来说太慢了,于是选择了 DIMM,就像 RAM 一样。那讲得通; 英特尔的 CPU每秒可以进行数十亿次内存传输。(不是百万,真的多了三个数量级)。然而,Optane 似乎在这方面失败了:它的 IOPS 远低于 100 万,而且 DIMM 接口似乎是可笑的矫枉过正。但方向很明确;即使是 NVMe 也可能很快变得对于本地存储来说太慢了。速度的秘诀是无需开销的直接访问。您引用的数字只是显示了当您增加开销时性能会下降的严重程度。
配额。多租户。计算冗余后的主机 IOPS。其(可能基于 IP)存储堆栈的可扩展性限制。销售优质更快的 SSD 磁盘。实际上对实用的东西要诚实和保守。可能的原因清单很长。
如果一个磁盘过于受限,您可以附加多个磁盘并在一台主机上使用它们,例如 LVM。必须根据 IOPS 而不是容量来确定 SSD 的大小有点奇怪,但这也许是这些磁盘类型的限制。
如果您希望运行自己的存储阵列,请执行此操作。当然,这意味着您不能使用 AWS 或 GCP 等托管存储。
无论您的存储选项是什么,您都应该使用类似于您的工作负载的东西进行测试。如果可以的话,现实的负载,
fio
或者diskspd
如果你必须的话,合成 IO。特别是如果您确实需要推送 100k IOPS。这种负载水平仍然是对存储堆栈的认真练习。