paint-brush
使用 WARP 和 Speedtest 对 MinIO 进行基准测试经过@minio
11,840 讀數
11,840 讀數

使用 WARP 和 Speedtest 对 MinIO 进行基准测试

经过 MinIO8m2023/11/08
Read on Terminal Reader

太長; 讀書

当性能至关重要时,您需要知道您正在实现尽可能最佳的性能。
featured image - 使用 WARP 和 Speedtest 对 MinIO 进行基准测试
MinIO HackerNoon profile picture
0-item
1-item


客户将 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架构


一旦 MinIO 启动并运行,您将能够使用 WARP 测量性能,所以让我们开始吧。

步骤0:使用分布式MinIO创建4个实例(也称为节点)。

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


创建实例

步骤 2:在 WARP 客户端的 /etc/hosts 文件中添加主机。

  1. 获取 MinIO 实例的 IP 地址
  2. 获取 WARP 客户端的 IP 地址
  3. 在 /etc/hosts 文件中添加这些地址:


 172.31.23.237 host1 172.31.26.78 host2 172.31.26.90 host3 172.31.19.110 host4 172.31.27.18 warp1 172.31.23.81 warp2 172.31.19.28 warp3 172.31.19.7 warp4


请注意,我们建议按连续顺序列出主机并与主机合作。这简化了从命令行启动 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 并启动混合基准测试。

 [root@ip-172-31-27-18 ec2-user]# WARP_ACCESS_KEY=minioadmin WARP_SECRET_KEY=minioadmin ./warp mixed --warp-client warp{1...4}:7761 --host host{1...4}:9000 --duration 120s --obj.size 64M --concurrent 64 warp: Benchmark data written to "warp-remote-2022-02-08[201339]-qymu.csv.zst" Mixed operations. Operation: DELETE, 10%, Concurrency: 256, Ran 1m54s. * Throughput: 39.90 obj/s Operation: GET, 45%, Concurrency: 256, Ran 1m54s. * Throughput: 10903.28 MiB/s, 178.64 obj/s Operation: PUT, 15%, Concurrency: 256, Ran 1m54s. * Throughput: 3628.27 MiB/s, 59.45 obj/s Operation: STAT, 30%, Concurrency: 256, Ran 1m54s. * Throughput: 119.98 obj/s Cluster Total: 14501.38 MiB/s, 397.44 obj/s over 1m55s. warp: Cleanup done. [root@ip-172-31-27-18 ec2-user]#


您已经使用 WARP 完成了基本的混合模式性能测试。虽然我们使用混合模式测试来演示 WARP,但通过将各个操作(GET、PUT、LIST)分解为自己的测试运行而不是运行混合模式,您通常会获得更好的结果(更符合实际使用情况)。 -模式测试。


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


WARP 结果显示在屏幕上,并保存到使用 zstandard 压缩的本地 CSV 文件中。

速度测试可实现快速、轻松的性能评估

如果您不想要 WARP 的全部灵活性,我们构建了一种使用 Speedtest 测量 MinIO 性能的快速且简单的方法。速度测试通常在自动调整模式下运行,逐渐增加负载以查明最大聚合吞吐量。


您可以使用 mc 运行 Speedtest:

 $ mc support perf object <alias>


 [root@ip-172-31-77-115 ec2-user]# ./mc support perf object myminio THROUGHPUT IOPS PUT 2.4 GiB/s 38 objs/s GET 4.6 GiB/s 73 objs/s Speedtest: MinIO 2022-02-01T18:00:14Z, 4 servers, 16 drives, 64 MiB objects, 72 threads


或者,您可以从 MinIO Console 运行 Speedtest,这是一个基于浏览器的 GUI,用于配置、管理和报告 MinIO 集群。只需导航至“支持”菜单并单击“性能”,然后单击“开始”按钮即可。


性能测试


将运行性能测试。完成后,将显示汇总的 GET 和 PUT 性能以及各个节点的性能。


有关 Speedtest 的更多详细信息和示例,请参阅本教程

曲速前进!

立即下载 MinIO开始吧。加入我们的Slack 社区并与其他 MinIO 用户交流想法。如果您对使用 WARP 有任何具体问题,请通过我们的 Slack 频道(Matt Sarrel 和 Cesar Celis)联系我们,或发送电子邮件至 [email protected]


也发布在这里