From 502479677b70ddaef7af7e6508f83f2a1c33cfa9 Mon Sep 17 00:00:00 2001 From: dailz Date: Fri, 5 Jun 2026 17:28:57 +0800 Subject: [PATCH] fix(bench): warn when clear_file_cache fails instead of silently skipping cold benchmarks (closes #41) --- crates/bench/src/suites/startup.rs | 76 ++++++++++++++++++------------ 1 file changed, 45 insertions(+), 31 deletions(-) diff --git a/crates/bench/src/suites/startup.rs b/crates/bench/src/suites/startup.rs index 94edebf..f463502 100644 --- a/crates/bench/src/suites/startup.rs +++ b/crates/bench/src/suites/startup.rs @@ -40,35 +40,42 @@ pub fn run(config: &BenchConfig) -> Vec { )); if !config.quick_mode { - if MetricsCollector::clear_file_cache(&config.test_file).is_ok() { - results.extend(bench_cold_open::("mmap", "plain", config)); - results.extend(bench_cold_open::( - "mmap", - "sequential", - config, - )); - results.extend(bench_cold_open::( - "mmap", "random", config, - )); - results.extend(bench_cold_open::( - "mmap", "populate", config, - )); - results.extend(bench_cold_open::( - "mmap", - "phase_aware", - config, - )); - results.extend(bench_cold_open::( - "pread", "plain", config, - )); - results.extend(bench_cold_open::( - "pread", "random", config, - )); - results.extend(bench_cold_open::( - "pread", - "sequential", - config, - )); + match MetricsCollector::clear_file_cache(&config.test_file) { + Ok(()) => { + results.extend(bench_cold_open::("mmap", "plain", config)); + results.extend(bench_cold_open::( + "mmap", + "sequential", + config, + )); + results.extend(bench_cold_open::( + "mmap", "random", config, + )); + results.extend(bench_cold_open::( + "mmap", "populate", config, + )); + results.extend(bench_cold_open::( + "mmap", + "phase_aware", + config, + )); + results.extend(bench_cold_open::( + "pread", "plain", config, + )); + results.extend(bench_cold_open::( + "pread", "random", config, + )); + results.extend(bench_cold_open::( + "pread", + "sequential", + config, + )); + } + Err(e) => { + eprintln!( + "WARNING: Failed to clear file cache; skipping cold startup benchmarks because results would not be cold: {e}" + ); + } } } @@ -88,8 +95,15 @@ fn bench_cold_open( variant: &str, config: &BenchConfig, ) -> Vec { - let _ = MetricsCollector::clear_file_cache(&config.test_file); - open_and_measure::(backend, variant, &config.test_file, "cold_open") + match MetricsCollector::clear_file_cache(&config.test_file) { + Ok(()) => open_and_measure::(backend, variant, &config.test_file, "cold_open"), + Err(e) => { + eprintln!( + "WARNING: Failed to clear file cache for {backend}/{variant}; skipping cold benchmark: {e}" + ); + Vec::new() + } + } } fn open_and_measure(