在自己的机器上复现 RustFS 性能基准:warp 压测实操

2026-07-17 RustFS 发了 1.0.0-beta.10,官方 warp 压测里 PUT 在 4MiB 对象上跑出 2.85× 于 MinIO。我看到这种数字第一反应是:我的机器能复现吗?还是只在 Azure 那套 4 节点 × 4 盘、32000 IOPS 的 NVMe 配置上才成立?这篇就讲怎么在你自己机器上把这套基准跑出来,以及哪些数字你能信、哪些得打折。

先把官方的测试环境摊开

复现前先对齐条件,不然数字没法比。beta.10 的压测环境是:

  • 4 节点 × 4 盘,每盘 300GB,单盘 32000 IOPS,Ubuntu 24.04,8 vCPU / 16GB RAM,跑在 Azure 上;
  • 用 MinIO 开源的 warp 工具,11 个对象尺寸、64 并发客户端、每轮跑 5 分钟,覆盖 GET / PUT / Mixed 三个阶段;
  • 对比对象是 MinIO RELEASE.2026-06-06,RustFS 是 1.0.0-beta.10(git tag 一致可查)。

一个中性提醒:绝对吞吐高度依赖磁盘 IOPS 和网络。你本地若是单盘 SATA 或云盘,绝对数值会低一大截,但 RustFS 相对 MinIO 的趋势通常能复现------这篇关心的是趋势,不是把官方数字当 SLA。

起一套最小可压测的 RustFS

单节点多盘(SNSD)就够跑出相对差异。注意 beta.10 起已经废弃 rustfsadmin 硬编码默认口令,必须显式设置访问密钥:

bash 复制代码
export RUSTFS_ACCESS_KEY="rustfstest"
export RUSTFS_SECRET_KEY="a-strong-secret-you-set"   # beta.10 起必须显式设置
export RUSTFS_VOLUMES="http://localhost:9000/data/rustfs{1...4}/mnmd"
export RUSTFS_ADDRESS=":9000"
rustfs server /data

如果你手上有 4 台机器,把上面 localhost 换成 rustfs-node{1...4} 就是分布式布局,和官方拓扑对齐。起完用 rc 探一下活:

bash 复制代码
rc alias set local http://localhost:9000 rustfstest rustfstest
rc mb local/bench
rc ls local

用 warp 把 PUT / GET / Mixed 三轮跑出来

warp 是 MinIO 家的开源压测工具,对 RustFS 同样适用(S3 兼容的好处就在这)。三个最实用的子命令:

bash 复制代码
warp put --host=http://localhost:9000 \
  --access-key=rustfstest --secret-key=rustfstest \
  --objects=10000 --obj.size=4KiB --concurrent=64 --duration=5m

warp get --host=http://localhost:9000 \
  --access-key=rustfstest --secret-key=rustfstest \
  --objects=10000 --obj.size=1MiB --concurrent=64 --duration=5m

warp mixed --host=http://localhost:9000 \
  --access-key=rustfstest --secret-key=rustfstest \
  --objects=10000 --obj.size=4MiB --concurrent=64 --duration=5m

跑完 warp 会给出各尺寸的 obj/s 和延迟。把不同 --obj.size 串起来,就能画出你机器上的「尺寸---吞吐」曲线。

读数字要诚实:PUT 全胜,GET 有区间

官方 beta.10 的 PUT 结果是 RustFS 在全部 11 个尺寸上胜出,4MiB 那档达到 2.85×。但 GET 不能一口咬定「RustFS 更快」------这张表才是完整的真相:

  • 小对象(1KiB--16KiB)和大于 4MiB 的大对象,RustFS 反超;
  • 100KiB--1MiB 中段 MinIO 暂时占优,其中 1MiB GET RustFS 只有 MinIO 的约 0.23×(差距最大)。

所以如果你的负载是「读多写少 + 中段尺寸为主」,别只看上面的 PUT 数字,自己用真实样本扫一遍再下结论。这也是为什么我强调要在你自己的机器上跑------官方曲线是 Azure 那套硬件的,你的硬件会平移、但形状大体不变。

收尾:你也能照做的复现清单

想验证 RustFS 的吞吐宣称,按这个顺序:

  1. 用上面的 RUSTFS_VOLUMES 展开写法起一套分布式(或单节点多盘),用 rc 确认能建桶列桶;
  2. warp put/get/mixed 各跑一遍,尺寸至少覆盖 4KiB / 1MiB / 4MiB 三档;
  3. 同期起一套同硬件 MinIO(同样 4×4 盘、同样 warp 参数)做对照,算出每档的比值;
  4. 重点看 PUT 是否全面领先、GET 中段是否仍落后,把比值存成基线再决定全量切换。

RustFS 把「Rust 写存储、S3 兼容、Apache 2.0」三件事捏到一起,性能故事的可信度不靠口号,靠你能不能在自己的机器上复现。仓库在这:https://github.com/rustfs/rustfs 。先照上面四步走一遍,比看十篇对比稿都实在。

以下是深入学习 RustFS 的推荐资源:RustFS

官方文档: RustFS 官方文档 - 提供架构、安装指南和 API 参考。

GitHub 仓库: GitHub 仓库 - 获取源代码、提交问题或贡献代码。

社区支持: GitHub Discussions - 与开发者交流经验和解决方案。

意见反馈:GitHub Issues

相关推荐
Είναι η κοπέλα9 小时前
显存计算与模型选择:你的显卡能跑多大的模型
人工智能·pytorch·python·开源·conda
寻林写彡10 小时前
云安全 | Docker 容器逃逸复盘(一):从隔离边界到运行时链路,如何确认自己身处容器
安全·云原生
miofly11 小时前
Reflection AI 发布 501B 参数开放权重模型 Beam
开源·github
m4Rk_13 小时前
【论文阅读】Agent 记忆机制(91):THEANINE——不删除过时记忆,让 Agent 记住事情是如何变化的
论文阅读·人工智能·学习·开源·github
microrain13 小时前
同一个寄存器,四种读法:SagooIoT Modbus 驱动的字节序、宽度与功能码
物联网·golang·开源·sagooiot
EatFan16 小时前
从 CUDA 到昇腾:一张对照表拆解 DeepSeek 最新开源组件(TileLang / DeepGEMM / DeepEP / TileKernels)
开源·cuda·deepseek·deepgemm·tilelang·华为昇腾
MrSYJ16 小时前
别人再问你路由表是啥,这篇文章摔它脸上
docker·云原生·kubernetes
ttwuai16 小时前
Go开源后台管理系统推荐:README、源码和License应该怎么验
开发语言·golang·开源
CEZ17 小时前
中小企业上 WMS 该先上哪几块:JeeWMS 开源 Java 仓库管理系统的分批上线清单
java·开源
运维开发王义杰17 小时前
ingress-nginx 退役后怎么选:Istio、Kong、Traefik 与 APISIX
云原生