tree: 884c6fb17c9c0072051e7e6c8edae7ba24fc209e
  1. no_flush_chart_cpu.pdf
  2. no_flush_chart_stacked.pdf
  3. no_flush_chart_timeline.pdf
  4. plot_memory.py
  5. README.md
cpp/experiment/chap03/E3_1_write_model/README.md

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 行,SNAPPY,batch_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.cppmemory_threshold=50MB
  • 产出:F3-1(顺序模式)、F3-2(混合模式)、T3-1~T3-4