-
Notifications
You must be signed in to change notification settings - Fork 4
[Paper/M0][P0] Build a reproducible monorepo workspace benchmark and trace-replay harness #41
Open
Labels
Milestone
Description
Parent research epic: #39
背景
现有 docs/perf_test.md 和 examples/fs_read_perf.rs 能用于工程调试,但不足以支撑系统论文。需要统一环境、可重复 workload、严格的缓存状态、标准基线和统计方法。
目标
新增 bench/,同时支持:
- 可控合成 monorepo;
- 真实开源项目构建;
- FUSE operation trace replay;
- 多 workspace 并发;
- 故障注入;
- 自动生成机器可读结果和论文图表输入。
Baselines
必须实现:
- 当前 ScorpioFS/Antares:每个 job 一个 FUSE workspace;
- warm bare clone +
git worktree; - Git partial clone + sparse checkout;
- materialized checkout + Linux kernel OverlayFS;
- 新 ScorpioFS 各阶段实现。
可选:
- EdenFS,只有在公开环境中可稳定复现时纳入;
- 预热 checkout pool,模拟 GitFarm 类工作区池。
Cache States
必须明确区分:
C0: cold daemon + empty disk cache
C1: warm daemon + empty target snapshot
C2: warm shared snapshot + new workspace
C3: warm workspace
C4: warm content cache but cold kernel/FUSE cache
不得简单用"cold/warm"两个模糊标签。
Workloads
- metadata storm:lookup/stat/readdir/readdirplus;
- 小文件随机读取;
- 大文件顺序读取;
- 深目录 traversal;
- sparse working-set read;
- write/copy-up/rename/delete;
- parallel candidate patches;
- clean build 和 incremental build;
- scripted Agent loop:search → inspect → edit → test → retry;
- trace replay,确保不同系统收到相同逻辑请求。
Tasks
- 新增合成仓库生成器,可控制文件数、目录深度、文件大小、重复内容率和修改比例;
- 新增 workload manifest,固定 seed、target、command 和环境变量;
- 新增 trace recorder/replayer;
- 新增 baseline adapter 接口;
- 新增并发控制,至少支持
1/4/16/64workspace; - 记录 kernel、CPU、RSS、disk、network 和 mount 数;
- 每次运行保存 commit SHA、kernel、CPU、内存、磁盘和配置;
- 默认重复至少 10 次,输出 95% confidence interval;
- 支持失败后保留原始日志;
- 输出
manifest.json、raw CSV/JSONL 和 summary CSV; - 提供 smoke 和 full 两套配置;
- 在 FUSE-capable VM/runner 中运行 smoke CI。
Acceptance Criteria
- 一条命令可以运行 smoke benchmark;
- 同一 manifest 在不同 baseline 上执行相同逻辑 workload;
- 输出包含所有环境元数据;
- 冷缓存和热缓存状态有自动检查,不依赖人工描述;
- 结果脚本不从日志文本中脆弱地正则提取核心指标;
- 同一机器连续两组 smoke run 的关键中位数偏差可解释并被记录;
- benchmark 失败会返回非零状态;
- artifact 不需要访问私有 Mega 数据才能完成最小复现。
论文产出
后续所有性能结论的共同实验底座。
Relevant Paths
bench/
examples/fs_read_perf.rs
docs/perf_test.md
tests/
.github/workflows/
Dependencies
建议使用 Issue 1 的统一指标,但仓库生成器和 baseline adapter 可先并行开发。