如何使用 WARP 和 Speedtest 对 MinIO 进行基准测试
客户将 MinIO 引入他们的环境,以获得在任何物理或虚拟硬件和 Kubernetes 上运行的高性能 S3 兼容对象存储。我们发布的基准测试表明 MinIO 是可用的最快的对象存储,但它只能以您提供的硬件和网络的速度运行。性能是我们团队的一大关注点,因此我们竭尽所能帮助管理员充分利用 MinIO。为了验证底层基础设施是否可以最佳地支持 MinIO,我们提供了两种评估性能和识别潜在瓶颈的方法:WARP 和 Speedtest。
AI/ML、高级分析和数据库等现代应用程序需要高性能对象存储。MinIO 的可扩展性和高性能的结合使每一个工作负载,无论多么苛刻,都触手可及。当性能至关重要时,您需要知道您正在实现最佳性能。WARP 和 Speedtest 的结果可用于跟踪一段时间内的性能,并在潜在问题发展为严重问题之前主动查明它们。
WARP 是一个开源的全功能 S3 性能评估软件,用于在 WARP 客户端和对象存储主机之间进行测试。WARP 测量来自多个客户端对 MinIO 集群的 GET 和 PUT 性能。WARP 有许多选项,由命令行或环境变量配置,允许您创建与您的工作负载一致的测试。请记住 - 以有意义的方式评估性能并使用代表对象存储运行的真实世界条件的数据和工作负载进行测试是绝对重要的。
相比之下,Speedtest 是一种易于使用的自动化性能测试,可提供简化的体验和简明的结果。我们在 11 月推出了 Speedtest,为 MinIO 管理员提供使用单个命令对其 MinIO 集群运行分布式性能评估的能力。Speedtest 运行 PUTS,然后运行 GETS,逐渐增加负载以查明最大聚合吞吐量。根据您的 MinIO 集群,测试可能需要几秒到几分钟的时间来执行。
WARP 和 Speedtest 之间有一些重要的区别。WARP 是一个完整的工具,可通过 WARP 客户端执行的操作来测试 MinIO 集群的性能。客户端机器正在通过网络将对象的 PUTS 和 GETS 操作到您的分布式 MinIO 集群。这使得 WARP 成为测试预期客户端-服务器性能的优秀机制。相比之下,Speedtest 运行在 MinIO 实例上,对同一集群中的其他 MinIO 实例进行对象的 PUTS 和 GETS。因此,Speedtest 会告诉您性能等式的服务器端的能力。
WARP 包含您可能想要针对对象存储运行的几乎所有测试(GET、PUT、DELETE、LIST、STAT、RETENTION),并且测试运行可以包括对象大小的自定义组合以匹配您的工作负载。Speedtest 运行设置的测试参数以快速查明最大吞吐量。虽然 WARP 需要额外的软件,但 Speedtest 包含在 MinIO 中,可以从 mc 界面或 MinIO 控制台运行。为了帮助排除故障,客户只需单击一下即可与 MinIO 工程师共享 Speedtest 结果。
WARP:一个完整的对象存储基准测试工具
首先,让我们看一下 WARP。WARP 是一种工具,可让您彻底对 MinIO 或任何与 S3 兼容的对象存储在各种条件下的性能进行基准测试。默认情况下,WARP 将对以分布式模式运行的 MinIO 使用的所有磁盘执行读写混合测试。

对于这个演示。我们将运行 WARP 来测试以分布式模式在 AWS 上运行的 MinIO。我们最近经常这样做,因此我们可以通过测试向潜在和当前客户提供我们发现的最高性能配置的建议。
WARP 位于GitHub 存储库中,您还可以在其中找到详细的文档。
我们将从以分布式模式部署 MinIO 开始。您可以自行下载 MinIO并将其安装到您的环境中,也可以按照本教程在 AWS EC2 上安装 MinIO。
无论哪种方式,我们都将从分布式 MinIO 部署开始:

一旦 MinIO 启动并运行,您将能够使用 WARP 测量性能,所以让我们开始吧。
第 0 步:使用分布式 MinIO 创建 4 个实例(也称为节点)。
请阅读并遵循如何在 AWS EC2 上以分布式模式安装 MinIO中提供的步骤。
第 1 步:为 WARP 客户端再创建 4 个实例,总共 8 个 AWS 实例。
对于所有 Amazon UI 或 AWS CLI,请按照上一篇博文中的步骤部署实例,但不要配置额外的存储。运行 WARP 的实例必须足够强大以快速生成对象并测量 PUT 和 GET 操作,但不需要 MinIO 节点所需的存储量。

第 2 步:在 WARP 客户端的 /etc/hosts 文件中添加主机。
获取 MinIO 实例的 IP 地址
获取 WARP 客户端的 IP 地址
在 /etc/hosts 文件中添加这些地址:
请注意,我们建议按连续顺序列出和使用主机。这简化了从命令行启动 WARP,并且更容易找到每个 WARP 客户端和 MinIO 主机。
第 3 步:在客户端上安装 WARP 并运行它。
[root@ip-172-31-19-7 ec2-user]# wget https://github.com/minio/warp/releases/download/v0.5.5/warp_0.5.5_Linux_arm64.tar.gz 2022-02-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 ec2-user]# tar -xzvf warp_0.5.5_Linux_arm64.tar.gz LICENSE README.md warp_logo.png warp [root@ip-172-31-19-7 ec2-user]# ./warp client warp: Listening on :7761
请注意,每个 WARP 客户端都在侦听端口 7761
第 4 步:运行 WARP 并启动混合基准测试。
您已经使用 WARP 完成了基本的混合模式性能测试。虽然我们使用混合模式测试来演示 WARP,但您通常会通过将各个操作(GET、PUT、LIST)分解为自己的测试运行而不是运行混合模式来获得更符合实际使用情况的更好结果-模式测试。
我们鼓励您参考文档以了解如何执行更多测试场景。例如,您可以启用 TLS 和服务器端加密来衡量它们对您环境的影响。您可以通过增加并发测试的数量来对基础设施施加更多压力。您可以使用对象大小的随机组合,或指定与当前环境和工作负载相匹配的对象大小。您可以将测试配置为运行一段定义的时间或像我们上面所做的那样自动终止。
WARP 结果显示在屏幕上,并保存到使用 zstandard 压缩的本地 CSV 文件中。
用于快速简便的性能评估的速度测试
如果您不想要 WARP 的全部灵活性,我们已经构建了一种使用 Speedtest 来衡量 MinIO 性能的快速简便的方法。Speedtest 通常在自动调谐模式下运行,逐渐增加负载以查明最大总吞吐量。
您可以使用 mc 运行 Speedtest:
$ mc support perf object
或者,您可以从 MinIO 控制台运行 Speedtest,MinIO 控制台是基于浏览器的 GUI,用于配置、管理和报告 MinIO 集群。只需导航到“支持”菜单并单击“性能”,然后单击“开始”按钮。

性能测试将运行。完成后,将显示聚合 GET 和 PUT 性能以及各个节点的性能。
有关 Speedtest 的更多详细信息和示例,请参阅本教程。
曲速前进!
今天开始下载 MinIO。加入我们的Slack 社区并与其他 MinIO 用户交流想法。如果您对使用 WARP 有任何具体问题,请通过我们的 Slack 频道(Matt Sarrel 和 Cesar Celis)联系我们或发送电子邮件至 sales@minio.org.cn。