当我查看来自各种云托管提供商的磁盘(块设备)存储选项时,我通常会看到如下数字:
- 谷歌云(区域性 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?
答案1
Google 确实指定了 900.000 到 2.700.000 IOPS当地的SSD。这表明他们的硬件完全有能力。“区域 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,而 DIMM 接口似乎有点过头了。但方向很明确;即使是 NVMe 也可能很快变得太慢而无法用于本地存储。提高速度的秘诀是直接访问而没有开销。您引用的数字只是表明,增加开销后性能会下降到什么程度。
答案2
配额。多租户。冗余后计算主机 IOPS。存储堆栈(可能基于 IP)的可扩展性限制。销售优质、更快的 SSD 磁盘。实际上诚实且保守地对待实际问题。可能的原因有很多。
如果一个磁盘的限制太多,您可以连接多个磁盘并在一台主机上使用它们,例如使用 LVM。根据 IOPS 而不是容量来调整 SSD 的大小有点奇怪,但也许这就是这些磁盘类型的限制。
如果您希望运行自己的存储阵列,那就这么做吧。当然,这意味着您不能使用 AWS 或 GCP 的托管存储。
无论您的存储选项是什么,您都应该使用类似于您的工作负载的程序进行测试。如果可以,使用实际负载;如果必须,使用合成fio
IO diskspd
。
尤其是当你确实需要推动 100k IOPS 时。这种负载水平对于存储堆栈来说仍然是一项严峻的考验。