feat: new router and benchmark setup
This commit is contained in:
@@ -221,3 +221,54 @@ fn ablate_rejects_belady_until_exact_algorithm_exists() {
|
||||
"unexpected error: {err:#}"
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn ablation_parallel_matches_serial() {
|
||||
let tmp = std::env::temp_dir().join("kvcache_sim_ablate_parallel");
|
||||
let _ = std::fs::remove_dir_all(&tmp);
|
||||
std::fs::create_dir_all(&tmp).unwrap();
|
||||
let trace_path = tmp.join("trace.jsonl");
|
||||
write_synthetic_trace(&trace_path);
|
||||
|
||||
let cfg = base_config(
|
||||
trace_path.to_str().unwrap(),
|
||||
tmp.to_str().unwrap(),
|
||||
RouterMode::Random,
|
||||
);
|
||||
let routers = [
|
||||
RouterMode::Random,
|
||||
RouterMode::LeastLoaded,
|
||||
RouterMode::TtlAware,
|
||||
RouterMode::Precise,
|
||||
];
|
||||
|
||||
let serial = driver::ablate_fixed_placement_with_parallelism(
|
||||
&cfg,
|
||||
&routers,
|
||||
&[ReplayEvictPolicy::Lru],
|
||||
1,
|
||||
)
|
||||
.expect("serial ablate");
|
||||
let parallel = driver::ablate_fixed_placement_with_parallelism(
|
||||
&cfg,
|
||||
&routers,
|
||||
&[ReplayEvictPolicy::Lru],
|
||||
2,
|
||||
)
|
||||
.expect("parallel ablate");
|
||||
|
||||
assert_eq!(parallel.len(), serial.len());
|
||||
for (lhs, rhs) in parallel.iter().zip(serial.iter()) {
|
||||
assert_eq!(lhs.router, rhs.router);
|
||||
assert_eq!(lhs.evict_policy, rhs.evict_policy);
|
||||
assert_eq!(lhs.placement_source, rhs.placement_source);
|
||||
assert!((lhs.ttft_mean - rhs.ttft_mean).abs() < 1e-9);
|
||||
assert!((lhs.ttft_p50 - rhs.ttft_p50).abs() < 1e-9);
|
||||
assert!((lhs.ttft_p95 - rhs.ttft_p95).abs() < 1e-9);
|
||||
assert!((lhs.ttft_p99 - rhs.ttft_p99).abs() < 1e-9);
|
||||
assert!((lhs.hit_rate_l0 - rhs.hit_rate_l0).abs() < 1e-12);
|
||||
assert!((lhs.hit_rate_l1 - rhs.hit_rate_l1).abs() < 1e-12);
|
||||
assert!((lhs.hit_rate_remote - rhs.hit_rate_remote).abs() < 1e-12);
|
||||
assert!((lhs.miss_rate - rhs.miss_rate).abs() < 1e-12);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user