使用 WARP 和 Perf 测试对 MinIO 企业对象存储进行基准测试

Benchmarking MinIO Enterprise Object Store with WARP and Perf test

诸如 AI/ML、高级分析和数据库等现代应用程序需要高性能的对象存储。 MinIO 企业级对象存储 结合了可扩展性和高性能,使各种工作负载(无论多么苛刻)都触手可及。我们的 已发布的基准测试 表明,MinIO 企业级对象存储是速度最快可用的对象存储,但它的运行速度仅取决于您提供的硬件和网络。WARP 和 Perf Test 的结果可用于跟踪性能随时间推移的变化,并在潜在问题演变为严重问题之前主动识别它们。

WARP 是一款开源的、功能齐全的 S3 性能评估软件,旨在执行 WARP 客户端和对象存储主机之间的测试。WARP 测量来自多个客户端针对 MinIO 集群的 GET 和 PUT 性能。WARP 具有许多选项,可以通过命令行或 YAML 文件进行配置,使您可以创建与您的工作负载相符的测试。请记住,以有意义的方式评估性能并使用代表对象存储运行的真实世界条件的数据和工作负载进行测试绝对至关重要。

相比之下,Perf Test 是一款易于使用的自动化性能测试,它提供了简化的体验和简洁的结果。我们 引入了 Perf Test,为 MinIO 企业级对象存储管理员提供了一种通过单个命令运行 MinIO 集群的分布式性能评估的功能。Perf Test 先运行 PUT 操作,然后运行 GET 操作,逐步增加负载以查明最大聚合吞吐量。测试的执行时间可能从几秒到几分钟不等,具体取决于您的 MinIO 集群。

WARP 和 Perf Test 之间存在一些重要的区别。WARP 是一款完整的端到端工具,它通过 WARP 客户端执行的操作来测试 MinIO 集群的性能。客户端机器正在通过网络对分布式 MinIO 集群执行对象的 PUT 和 GET 操作。这使得 WARP 成为测试预期客户端-服务器性能的极佳机制。相比之下,Perf Test 在 MinIO 实例上运行以执行对象对同一集群中其他 MinIO 实例的 PUT 和 GET 操作。因此,Perf Test 会告诉您性能等式服务器端能够实现什么。

WARP:完整的对象存储基准测试工具

首先,让我们看一下 WARP。WARP 是一种允许您在各种条件下彻底衡量 MinIO 或任何与 S3 兼容的对象存储的性能的工具。默认情况下,WARP 将对 MinIO 在分布式模式下运行时利用的所有磁盘执行读写混合测试。

对于此演示,我们将运行 WARP 来测试在分布式模式下运行的 MinIO。

WARP 位于 GitHub 存储库中,您还可以在其中找到详细的文档。我们将从在 分布式模式下部署 MinIO 开始。

MinIO 运行起来后,您将能够使用 WARP 测量性能,因此让我们开始吧。

步骤 1:为 WARP 客户端再创建 4 个实例,总共 8 个实例。

请按照 上一篇博文中的步骤部署实例,但不要配置额外的存储。运行 WARP 的实例必须足够强大,以便快速生成对象并测量 PUT 和 GET 操作,但不需要 MinIO 节点所需的存储卷。

步骤 2:在客户端上安装 WARP 并运行它。

[root@ip-172-31-19-7]# wget https://github.com/minio/warp/releases/download/v0.5.5/warp_0.5.5_Linux_arm64.tar.gz
2024-08-08 20:06:04 (66.3 MB/s) - 'warp_0.5.5_Linux_arm64.tar.gz' saved [3943887/3943887]

[root@ip-172-31-19-7]# tar -xzvf warp_0.5.5_Linux_arm64.tar.gz
LICENSE
README.md
warp_logo.png
warp
[root@ip-172-31-19-7]# ./warp client
warp: Listening on :7761

请注意,每个 WARP 客户端都在端口 7761 上监听。

步骤 3:运行 WARP 并启动混合基准测试。

[root@ip-172-31-27-18]# ./warp mixed --warp-client warp{1...4}:7761 --host host{1...4}:9000 --duration 120s --obj.size 64M --access-key=minioadmin --secret-key=minioadmin --concurrent 64 --warp-client 172.31.27.18:7761,172.31.23.81:7761,172.31.19.28:7761,172.31.19.7:7761

--host 172.31.23.237:9000,172.31.26.78:9000,172.31.26.90:9000,172.31.19.110:9000
warp: 基准数据写入 "warp-remote-2024-08-08[201339]-qymu.csv.zst"                                                                                                                                                                      
混合操作。
操作:DELETE,10%,并发数:256,运行 1 分 54 秒。
* 吞吐量:39.90 obj/s

操作:GET,45%,并发数:256,运行 1 分 54 秒。
* 吞吐量:10903.28 MiB/s,178.64 obj/s

操作:PUT,15%,并发数:256,运行 1 分 54 秒。
* 吞吐量:3628.27 MiB/s,59.45 obj/s

操作:STAT,30%,并发数:256,运行 1 分 54 秒。
* 吞吐量:119.98 obj/s

集群总计:14501.38 MiB/s,397.44 obj/s,持续 1 分 55 秒。
warp: 清理 完成。                                                                                                                                                                                                                                
[root@ip-172-31-27-18]

您已使用 WARP 完成了一个基本的混合模式性能测试。虽然我们使用混合模式测试来演示 WARP,这更符合实际使用场景,但您也可以将各个操作(GET、PUT、STAT)分解成各自的测试运行,而不是运行混合模式测试。

我们建议您参考 文档,了解如何执行更多测试场景。例如,您可以启用 TLS 和服务器端加密来衡量它们在您环境中的影响。您可以通过增加并发测试的数量来更多地对基础设施施加压力。您可以使用对象大小的随机组合,或指定与您当前环境和工作负载匹配的对象大小。您可以将测试配置为运行一段时间,或者像我们在上面所做的那样自动终止。

WARP 结果显示在屏幕上,并保存到使用 zstandard 压缩的本地 CSV 文件中,该文件可用于进一步细分或分析。

性能测试,快速轻松地进行性能评估

如果您不想使用 WARP 的全部灵活性,我们构建了一种快速简便的方法来使用性能测试测量 MinIO 内部性能。性能测试最常在自动调整模式下运行,逐步增加负载以确定最大聚合吞吐量。

您可以使用 mc 运行性能测试

$ mc support perf object <别名>

[root@ip-172-31-77-115]# ./mc support perf object myminio

  吞吐量 IOPS    
PUT 2.4 GiB/s 38 objs/s
GET 4.6 GiB/s 73 objs/s

性能测试:MinIO 2024-08-01T18:00:14Z,4 台服务器,16 个磁盘,64 MiB 对象,72 个线程

或者,您可以从 MinIO 控制台(用于配置、管理和报告 MinIO 集群的基于浏览器的 GUI)运行性能测试。只需导航到“支持”菜单并点击“性能”,然后点击“开始”按钮。

性能测试将运行。在测试期间,传入流量将被暂时阻止。完成后,将显示聚合的 GET 和 PUT 性能以及各个节点的性能。

有关性能测试的更多详细信息和示例,请参阅此 教程

超高速前进!

WARP 包含您可能希望针对对象存储运行的几乎所有测试(GET、PUT、DELETE、LIST、STAT、RETENTION),并且测试运行可以包括自定义的对象大小混合以匹配您的工作负载。性能测试通过设置的测试参数快速查明最大吞吐量。虽然 WARP 需要额外的软件,但性能测试包含在 MinIO 中,并且可以通过 mc 接口或 MinIO 控制台运行。为了帮助进行故障排除,客户可以通过单击即可与 MinIO 工程师共享性能测试结果。  

立即开始 下载 MinIO。加入我们的 Slack 社区 并与其他 MinIO 用户交流想法。如果您对使用 WARP 或性能测试有任何具体问题,请通过我们的 Slack 频道与我们联系或发送电子邮件至 hello@minio.io。