🟡 [M25] truncate safety benchmark 首轮后文件规模改变导致迭代条件不一致 #44
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
问题
bench_truncate_safety_mmap和bench_truncate_safety_pread在循环外生成约 150K 行文件,但每轮截断后只重建 1000 行。第二轮开始测试文件规模与首轮不同。影响
延迟统计混合了不同文件规模的数据,P50/P95/P99 失去可比性。
位置
crates/bench/src/suites/rotation.rs:27crates/bench/src/suites/rotation.rs:52crates/bench/src/suites/rotation.rs:85crates/bench/src/suites/rotation.rs:108建议
每次迭代前重新生成完整 growable 文件,或拆分预热迭代与正式迭代,确保正式样本的文件规模一致。
已修复,提交 97a2c6a。
根因: bench_truncate_safety_mmap 和 bench_truncate_safety_pread 在循环外生成 150K 行文件,循环内恢复只写 1000 行,导致第 2 轮起文件从 ~10MB 缩水到 ~67KB。
修复: 将 generate_growable_file 移入循环内,每轮迭代重新生成完整 150K 行文件,删除不充分的 1000 行恢复块。
影响: crates/bench/src/suites/rotation.rs