🟡 [M25] truncate safety benchmark 首轮后文件规模改变导致迭代条件不一致 #44

Closed
opened 2026-06-05 11:54:15 +08:00 by dailz · 1 comment
Owner

问题

bench_truncate_safety_mmapbench_truncate_safety_pread 在循环外生成约 150K 行文件,但每轮截断后只重建 1000 行。第二轮开始测试文件规模与首轮不同。

影响

延迟统计混合了不同文件规模的数据,P50/P95/P99 失去可比性。

位置

  • crates/bench/src/suites/rotation.rs:27
  • crates/bench/src/suites/rotation.rs:52
  • crates/bench/src/suites/rotation.rs:85
  • crates/bench/src/suites/rotation.rs:108

建议

每次迭代前重新生成完整 growable 文件,或拆分预热迭代与正式迭代,确保正式样本的文件规模一致。

## 问题 `bench_truncate_safety_mmap` 和 `bench_truncate_safety_pread` 在循环外生成约 150K 行文件,但每轮截断后只重建 1000 行。第二轮开始测试文件规模与首轮不同。 ## 影响 延迟统计混合了不同文件规模的数据,P50/P95/P99 失去可比性。 ## 位置 - `crates/bench/src/suites/rotation.rs:27` - `crates/bench/src/suites/rotation.rs:52` - `crates/bench/src/suites/rotation.rs:85` - `crates/bench/src/suites/rotation.rs:108` ## 建议 每次迭代前重新生成完整 growable 文件,或拆分预热迭代与正式迭代,确保正式样本的文件规模一致。
dailz closed this issue 2026-06-07 09:02:27 +08:00
Author
Owner

已修复,提交 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

已修复,提交 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
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dailz/logViewer#44