扩展 MinIO:从 TB 到 PB 的性能基准测试

MinIO 提供了同类最佳的性能,正如我们之前在 基准测试 中反复展示的那样。在这些基准测试中,我们选择了最高端的硬件,并衡量了 MinIO 是否能够充分利用其提供的资源。这证明了两个关键点
- 确保 MinIO 利用了尽可能多的可用 CPU、网络和存储空间。
- 确保 MinIO **不是** I/O 瓶颈。
在上述方面取得了证明点之后,我们将注意力转向了测量 MinIO 沿着另一个同样重要的维度上的行为
- 确保 MinIO 的性能不会随着集群规模的增加而下降。
上面的图表描述了 MinIO 与 HDD 后端的线性可扩展性。这篇文章涵盖了 HDD 和 NVMe,以及我们在这些情况下看到的现象。
规模化性能
为了测量规模化性能,我们对 NVMe 和 HDD 后端进行了单独的测试。这是因为 NVMe 驱动器和硬盘驱动器具有不同的扩展动态,需要单独的测量。
NVMe 后端:性能扩展
单个 NVMe 驱动器的最大持续吞吐量约为 3.5 GB/秒(读取)和约 2.5 GB/秒(写入)。这意味着只需要 4 个 NVMe 驱动器就可以饱和 16x PCIe 2.0 通道(最大 16x PCIe 2.0 带宽为 8 GB/秒)。
在实际场景中,各种工作负载同时访问驱动器会证明需要更多驱动器。作为经验法则,每台机器 8 个 NVMe 驱动器可以被认为是收益递减点。
上面的图表描述了 MinIO 与 NVMe 后端的线性可扩展性。
上述动态使 NVMe 后端成为扩展工作负载的绝佳选择,其中**最大化吞吐量**是主要需求。
我们对 8 节点和 32 节点进行了测试,每个节点都配备了 8 个 NVMe 驱动器和 100 GBe 网络。每个驱动器的容量为 8 TB。总可用存储空间为 512 TB (0.5 PB) 和 2048 TB (2 PB)。

当我们将节点数量从 8 个增加到 32 个时,我们注意到读取性能几乎线性增长 (~4 倍)。
注意:PUT 数字似乎表明超线性可扩展性。但是,这是由于 AWS 硬件性能的差异造成的。在 32 节点测试的情况下,它们是在 AWS 推出裸机 NVMe 实例 (i3en.metal) 后进行的,这些实例没有这个问题。
HDD 后端:存储容量扩展
与 NVMe 驱动器形成对比,单个硬盘驱动器的最大持续吞吐量约为 250 MB/秒(读取和写入)。大约需要 32 个 HDD 同时以最高性能运行才能饱和 16x PCIe 2.0 通道。由于随机性(多个 I/O 请求)会快速降低 HDD 性能,因此每台机器可以证明使用更多驱动器。
与 NVMe 后端相比,HDD 能够使用更少的服务器实现更高的存储容量,因为可以在单个服务器中容纳更多驱动器。这使 HDD 后端成为扩展工作负载的绝佳选择,其中**最大化总存储容量**是主要需求。
我们对 16 节点和 24 节点进行了测试,每个节点都配备了 8 个 HDD 驱动器和 25 GBe 网络。每个驱动器的容量为 2 TB。总可用存储空间为 256 TB 和 384 TB。

当我们将节点数量从 16 个增加到 24 个 (1.5 倍) 时,我们注意到读取性能几乎线性增长。写入性能的增长低于线性,这可能是由于基准测试对驱动器造成的巨大负载导致随机 I/O 增加造成的。请注意,这些 AWS 实例的硬件性能也显示出轻微的差异。
结论
在扩展总存储空间时,HDD 后端必然会提供更好的价格、效率和性能。NVMe 后端更适合扩展客户端读取和写入数据的最大带宽。在这两种情况下,最大吞吐量都随着集群规模的增加而线性扩展。如果您有任何问题,请通过 sid@min.io 联系我。