blob: 663a0afc265da28afdfe7c5a063756147d2f3652 [file] [view]
# E3-1:写入内存模型验证
## 状态
- **E3-1b(主实验)**:✅ 已完成,数据在 `../../write_memory/`
- **E3-1a(无 flush 基线)**:TODO,需新增程序 `no_flush_bench`
---
## E3-1a:无 flush 基线(动机实验)
**产出**:F3-0(无 flush 时内存单调增长曲线)
**目的**:作为对照,直观说明"不做内存管理就会爆",与 F3-1/F3-2 形成 before/after 对比。
### 编译配置
**C5**(ENABLE_MEM_STAT=ON,需要 ModStat 追踪各模块内存)
### 程序:`no_flush_bench`
与现有 `write_memory.cpp` 逻辑基本相同,唯一区别:
- `memory_threshold` 设为极大值(如 `UINT64_MAX`),关闭自动 flush
- 不手动调用 `flush()`
- 内存超过某个上限(如 2 GB)时提前终止,避免 OOM
### 实验配置
E3-1b 完全一致(W0 基线:10 设备,200M 行,SNAPPYbatch_size=65536),仅 flush 行为不同。
### 预期现象
$M_{\text{data}}$ $M_{\text{meta}}$ 均单调递增,总内存持续攀升不回落。与 F3-1(有 flush 的锯齿形曲线)并排展示,对比鲜明。
### 输出
- `no_flush_stats.csv`:格式与 `write_memory_stats.csv` 相同
- `plot_no_flush.py`(或复用 `../../write_memory/plot_memory.py`
---
## E3-1b:有 flush 写入(主实验)
已完成,见 `../../write_memory/`
- 程序:`write_memory.cpp``memory_threshold=50MB`
- 产出:F3-1(顺序模式)、F3-2(混合模式)、T3-1~T3-4