为协作智能体打造的
共享文件系统
Agent 不只是读取文件。它们持续地读取、写入、扫描、更新并交换产物。BrewFS 针对这种 RandRW 密集模式进行了优化 — 在 2026 年 7 月 24 日 Redis + RustFS 快照中,相同匹配 profile 下 完整排空混合 I/O 吞吐比 JuiceFS 高 92%。
为什么 agent 负载对文件系统的压力不同
Agent 不是顺序读取者
传统数据处理关注顺序吞吐。Agent 负载反复执行小块读取、局部写入、目录扫描、元数据查找与产物更新。
Agent 持续扫描项目结构
编码、研究与数据 agent 频繁执行目录遍历、stat、open、read、write 与 rename 操作。
Agent 产生大量中间文件
计划、日志、补丁、工具输出、报告、缓存、索引与临时文件都会成为活跃工作区的一部分。
Agent 共享状态
在多智能体系统中,一个 agent 的输出常常是另一个 agent 的输入。文件系统成为协作层。
更多 agent 放大随机 IO
单个 agent 已经会产生复杂的随机读写模式。多个 agent 同时运行会进一步放大随机 IO、元数据压力与并发工作区更新。
一个命名空间,协作多个 agent
BrewFS 让多个 agent 在同一个文件系统命名空间中工作。每个 agent 读取已有上下文、写入中间产物、更新任务输出,并通过普通文件路径交接结果。
这种结构对 agent 易于理解,对人类易于审查,对基础设施团队也易于持久化到对象存储。
/workspace
├── context/
│ ├── repo-summary.md
│ └── user-requirements.md
├── agents/
│ ├── planner/ plan.md
│ ├── executor/ result.json logs.txt
│ ├── reviewer/ review.md
│ └── reporter/ final.md
├── artifacts/
│ ├── patch.diff
│ ├── benchmark.csv
│ └── output.png
└── memory/
├── task-state.json
└── index-cache.bin真实 agent 如何访问文件系统
五种常见的 agent 模式,每种都有 BrewFS 为之构建的独特 IO 画像。
编码 Agent
多个编码 agent 扫描代码仓库、读取源文件、生成补丁、写入测试结果,并通过共享 BrewFS 工作区交换分析报告。
典型 IO
混合随机 I/O 才是 agent 负载最痛的地方
2026 年 7 月 24 日 README 快照在同一台本地主机上对比 BrewFS 与 JuiceFS:Redis 元数据、RustFS S3 兼容存储、关闭压缩、匹配 writeback profile、buffered io_uring fio、持久读预填充与严格写后排空。BrewFS 在 24 项匹配结果中领先 15 项。完整排空混合 I/O 快 92%,前台混合 I/O 快 51%,随机读快 37%。
基准环境
应用可见与完整排空吞吐
| 负载 | BrewFS | JuiceFS | 倍率 |
|---|---|---|---|
| 大文件读 | 194.34 MiB/s | 194.17 MiB/s | ~1.00x |
| 顺序读 | 740.60 MiB/s | 1,000.76 MiB/s | 0.74x |
| 随机读 | 1,726.10 MiB/s | 1,256.80 MiB/s | 1.37x |
| 大文件写(前台) | 195.05 MiB/s | 102.40 MiB/s | 1.90x |
| 顺序写(前台) | 189.33 MiB/s | 117.94 MiB/s | 1.61x |
| 随机写(前台) | 178.17 MiB/s | 117.43 MiB/s | 1.52x |
| 混合随机 I/O(前台) | 495.54 MiB/s | 328.76 MiB/s | 1.51x |
| 大文件写(完整排空) | 66.47 MiB/s | 79.13 MiB/s | 0.84x |
| 顺序写(完整排空) | 88.50 MiB/s | 144.44 MiB/s | 0.61x |
| 随机写(完整排空) | 89.31 MiB/s | 138.89 MiB/s | 0.64x |
| 混合 I/O 总计(完整排空) | 218.60 MiB/s | 113.86 MiB/s | 1.92x |
| 热本地缓存大文件读 | 2,395.32 MiB/s | 2,356.73 MiB/s | ~1.02x |
元数据吞吐
| 操作 | BrewFS | JuiceFS | 倍率 |
|---|---|---|---|
| Create | 1,004.61 ops/s | 549.01 ops/s | 1.83x |
| Open | 4,827.50 ops/s | 11,883.85 ops/s | 0.41x |
| Stat | 726,234.51 ops/s | 724,328.73 ops/s | ~1.00x |
| Readdir | 28,634.94 ops/s | 16,020.25 ops/s | 1.79x |
| Rename | 894.64 ops/s | 1,313.40 ops/s | 0.68x |
写入完成核算
| 负载 | BrewFS tool wall / post-drain | JuiceFS tool wall / post-drain |
|---|---|---|
| 大文件写 | 21 s / 41 s | 40 s / 12 s |
| 顺序写 | 21 s / 24 s | 70 s / 37 s |
| 随机写 | 24 s / 24 s | 70 s / 39 s |
| 混合随机 I/O | 26 s / 33 s | 21 s / 40 s |
完整工具 wall 时间
| 工具 | BrewFS wall | JuiceFS wall | 结果 |
|---|---|---|---|
| fio-bigread | 31 s | 5 s | pass / pass |
| fio-bigwrite | 21 s | 40 s | pass / pass |
| fio-seqread | 20 s | 21 s | pass / pass |
| fio-seqwrite | 21 s | 70 s | pass / pass |
| fio-randread | 21 s | 20 s | pass / pass |
| fio-randwrite | 24 s | 70 s | pass / pass |
| fio-randrw | 26 s | 21 s | pass / pass |
| metaperf | 293 s | 194 s | pass / pass |
| dirstress | 1 s | 3 s | pass / pass |
| dirperf | 17 s | 14 s | pass / pass |
重要说明
- 双方都使用各自 runner 的 writeback-throughput profile;这是吞吐对比,不是 durability 等价性声明。
- 完整排空吞吐按 fio 实际字节数除以 active I/O 时间与 post-write drain 之和计算。
- BrewFS 在 24 项匹配结果中领先 15 项(数据面 10/14,元数据 5/10)。JuiceFS 仍在顺序读、严格排空纯写,以及 TiKV create/open/rename 上领先。
- 这是 2026-07-24 的本地工程快照,不是针对所有部署的普适性能结论。
PERF_LOG_TO_CONSOLE=false PERF_FIO_SIZE=512m PERF_FIO_RUNTIME=20 \
bash docker/compose-xfstests/run_redis_perf.sh --s3 --writeback-throughput-profile
JUICEFS_META_BACKEND=redis PERF_LOG_TO_CONSOLE=false \
PERF_FIO_SIZE=512m PERF_FIO_RUNTIME=20 \
bash docker/compose-xfstests/run_juicefs_perf.sh --writeback-throughput-profile