更新的 NVMe 基准测试:读取速度超过 2.6Tbps

Updated NVMe Benchmark: 2.6Tbps+ for READS

MinIO 坚信透明度和数据驱动的讨论。这就是我们发布基准测试并挑战业界其他公司也这样做。

这也是我们开发允许清晰、明确地衡量性能且易于复制的工具的原因。我们希望人们自己测试。

此外,我们在普通硬件上进行基准测试,而无需进行调整。这与其他供应商使用的经过高度调整的专用硬件方法截然不同,可以预见,这些方法让基准测试名声不佳。

我们挑战业界其他公司效仿。

我们最近更新了主存储的基准测试。对于我们的客户,主存储使用 NVMe 驱动器,因为它们具有价格/性能特性。我们将很快更新我们的 HDD 基准测试,以供那些希望了解 HDD 价格/性能的客户使用。

在这篇文章中,我们将介绍基准测试环境、工具、如何在您自己的环境中复制以及详细结果。对于那些希望快速了解的人,32 节点 MinIO 集群的结果可以总结如下:

实例类型

PUT/写入

GET/读取

奇偶校验

mc CLI 版本 

MinIO 版本

i3en.24xlarge




165 GiB/秒

325 GiB/秒


EC:4


RELEASE.2021-12-29T06-52-55Z


RELEASE.2021-12-29T06-49-06Z


在聚合基础上,这提供了 1.32 Tbps 的 PUT 吞吐量和 2.6 Tbps 的 GET 吞吐量。我们认为这是业界最快的。

基准测试设置

MinIO 相信在与向客户推荐的相同硬件上进行基准测试。对于主存储,我们建议使用 NVMe。一年多来,我们一直遵循这一建议,因为我们的客户向我们表明 NVMe 的价格/性能特性代表了这些主存储工作负载的最佳选择。

我们使用了标准的 AWS 裸机、存储优化实例,这些实例具有本地 NVMe 驱动器和 100 GbE 网络,以进行我们的工作。这些是 MinIO 向其生产客户推荐用于 AWS 云的相同实例。

实例

# 节点

AWS 实例类型

CPU

MEM

存储

网络

服务器

32

i3en.24xlarge

96

768GB

8x7500GB

100 Gbps


对于软件,我们使用了 AWS 上的默认 Ubuntu 20.04 安装、最新版本的 MinIO 以及我们内置的 Speedtest 功能。

属性

服务器操作系统

RELEASE.2021-12-29T06-52-55Z

MinIO 版本

RELEASE.2021-12-29T06-49-06Z

基准测试工具

mc admin speedtest

Speedtest 内置于 MinIO Server 中,可以通过控制台 UI 或**mc admin speedtest** 命令访问。它不需要特殊技能或额外软件。您可以在这里了解更多信息。

测量单个驱动器性能

使用 dd 命令测量每个驱动器的性能。DD 是一个 unix 工具,用于执行从一个文件到另一个文件的逐位数据复制。它提供了选项来控制每次读写操作的块大小。

以下是单个 NVMe 驱动器在 16MB 块大小、O_DIRECT 选项下进行 64 次复制的写入性能示例。请注意,我们为每个驱动器实现了超过 1.1 GB/秒的写入性能。

以下是单个 HDD 驱动器在 16MB 块大小下使用 O_DIRECT 选项进行 64 次复制的读取性能输出。请注意,我们为每个驱动器实现了超过 2.3 GB/秒的读取性能。

测量 JBOD 性能

使用 https://github.com/minio/dperf 测量带有 O_DIRECT 的 JBOD 性能。dperf 是一个文件系统基准测试工具,用于生成和测量文件系统的读写性能。dperf 命令默认使用 64 个并行线程、4MB 块大小和 O_DIRECT 进行操作。

网络性能

这些节点上的网络硬件允许最大 100 Gbit/秒。100 Gbit/秒 等于 12.5 Gbyte/秒 (1 Gbyte = 8 Gbit)。

因此,可以从这些节点中的每一个获得的预期最大吞吐量为 12.5 Gbyte/秒。

运行 32 节点分布式 MinIO 基准测试

MinIO 在自动调整模式下运行 Speedtest。自动调整模式会逐步增加负载以确定最大聚合吞吐量。

$ mc admin speedtest minio/

测试将运行并在屏幕上显示结果。根据您的 MinIO 集群,测试可能需要几秒到几分钟才能执行。标志 -v 表示详细模式。用户可以确定适当的擦除编码设置。我们推荐 EC:4,但在下面包含 EC:2 和 EC:4。

MINIO_STORAGE_CLASS_STANDARD=EC:2

MINIO_STORAGE_CLASS_STANDARD=EC:3

MINIO_STORAGE_CLASS_STANDARD=EC:4 (默认)


结果解读

写入阶段的平均网络带宽利用率为 77 Gbit/秒,读取阶段的平均网络带宽利用率为 84.6 Gbit/秒。这代表了客户端流量以及节点间流量。对于读写操作,客户端可以使用的带宽部分大约为一半。

在这些测试期间,网络几乎完全堵塞。如果为节点间流量提供专用网络,则可以预期更高的吞吐量。

请注意,写入基准测试的速度比读取基准测试慢,因为基准测试工具没有考虑写入放大(写入期间生成的奇偶校验数据的流量)。在这种情况下,100 Gbit 网络是瓶颈,因为 MinIO 在读写操作方面都接近硬件性能。

结论

根据以上结果,我们发现 MinIO 充分利用了可用的硬件。它的性能仅受可用的底层硬件限制。此基准测试已使用我们推荐的性能工作负载配置进行测试,并且可以在一小时内轻松复制,成本不到 350 美元。

您可以在此处下载基准测试的 PDF 版本。您可以在此处下载 MinIO。如果您有任何问题,请发送邮件至hello@min.io或加入Slack 社区