验证读取侧内存公式:
$$M_{read} \approx M_{fixed} + batch_size \times s_{row} + N_{cols} \times C_{page}$$
read_mem_model需要 ENABLE_MEM_STAT=ON 来追踪各模块峰值内存。
cmake -DENABLE_MEM_STAT=ON -DBUILD_TEST=OFF .. cmake --build . --target read_mem_model
| 变量 | 取值 |
|---|---|
| N_cols(查询列数) | 1, 4, 8, 16 |
| batch_size | 1024, 4096, 16384, 65536 |
固定参数:
读取侧内存主要分布在:
MOD_TSBLOCK:TsBlock 缓冲,随 batch_size 线性增长MOD_DECODER_OBJ:解压缓冲,随 N_cols 线性增长MOD_DEFAULT:固定开销 M_fixed# 默认配置 ./read_mem_model # 指定基线文件和输出路径 ./read_mem_model <baseline_path> <csv_path> # 示例 ./read_mem_model read_mem_baseline.tsfile results.csv
read_memory_results.csv:
n_cols,batch_size,peak_total_kb,DEFAULT_kb,TVLIST_DATA_kb,TSBLOCK_kb,... 1,1024,... 1,4096,... ... 16,65536,...
使用 Python 脚本(如 plot_read_memory.py)绘制: