feat: new router and benchmark setup
This commit is contained in:
27
src/main.rs
27
src/main.rs
@@ -123,6 +123,10 @@ enum Cmd {
|
||||
/// routers are then run at that cluster size.
|
||||
#[arg(long, default_value = "cache_score")]
|
||||
auto_probe_router: String,
|
||||
/// Maximum number of routers to simulate concurrently.
|
||||
/// `0` means auto-detect from available CPU parallelism.
|
||||
#[arg(long, default_value_t = 0)]
|
||||
jobs: usize,
|
||||
#[command(flatten)]
|
||||
overrides: ConfigOverrides,
|
||||
},
|
||||
@@ -168,6 +172,7 @@ fn main() -> Result<()> {
|
||||
auto_target_ttft_mean,
|
||||
auto_candidates,
|
||||
auto_probe_router,
|
||||
jobs,
|
||||
overrides,
|
||||
} => cmd_ablate(
|
||||
&config,
|
||||
@@ -177,6 +182,7 @@ fn main() -> Result<()> {
|
||||
auto_target_ttft_mean,
|
||||
&auto_candidates,
|
||||
&auto_probe_router,
|
||||
jobs,
|
||||
&overrides,
|
||||
),
|
||||
Cmd::Validate { config, overrides } => cmd_validate(&config, &overrides),
|
||||
@@ -218,6 +224,7 @@ fn cmd_ablate(
|
||||
auto_target_ttft_mean: f64,
|
||||
auto_candidates: &str,
|
||||
auto_probe_router: &str,
|
||||
jobs: usize,
|
||||
overrides: &ConfigOverrides,
|
||||
) -> Result<()> {
|
||||
let mut base = load(path, overrides)?;
|
||||
@@ -254,12 +261,7 @@ fn cmd_ablate(
|
||||
sorted.sort_unstable();
|
||||
let probe_mode = RouterMode::parse(auto_probe_router)
|
||||
.with_context(|| format!("parsing --auto-probe-router='{auto_probe_router}'"))?;
|
||||
let chosen = auto_select_instances(
|
||||
&base,
|
||||
&sorted,
|
||||
probe_mode,
|
||||
auto_target_ttft_mean,
|
||||
)?;
|
||||
let chosen = auto_select_instances(&base, &sorted, probe_mode, auto_target_ttft_mean)?;
|
||||
eprintln!(
|
||||
"[ablate] auto-instances chose num_instances={} (target ttft_mean ≤ {:.3}s, probe_router={})",
|
||||
chosen,
|
||||
@@ -270,7 +272,7 @@ fn cmd_ablate(
|
||||
}
|
||||
|
||||
eprintln!(
|
||||
"[ablate] routers={} evict_policies={} num_instances={}",
|
||||
"[ablate] routers={} evict_policies={} num_instances={} jobs={}",
|
||||
modes
|
||||
.iter()
|
||||
.map(RouterMode::as_str)
|
||||
@@ -282,8 +284,13 @@ fn cmd_ablate(
|
||||
.collect::<Vec<_>>()
|
||||
.join(","),
|
||||
base.cluster.num_instances,
|
||||
if jobs == 0 {
|
||||
"auto".to_string()
|
||||
} else {
|
||||
jobs.to_string()
|
||||
},
|
||||
);
|
||||
let all = driver::ablate_fixed_placement(&base, &modes, &policies)?;
|
||||
let all = driver::ablate_fixed_placement_with_parallelism(&base, &modes, &policies, jobs)?;
|
||||
let agg_path = std::path::Path::new(&base.sim.output_dir).join("ablation.json");
|
||||
std::fs::create_dir_all(&base.sim.output_dir)?;
|
||||
std::fs::write(&agg_path, serde_json::to_string_pretty(&all)?)?;
|
||||
@@ -479,7 +486,9 @@ fn cmd_oracle(
|
||||
eprintln!(
|
||||
"[oracle] input_length filter [{}, {}] kept {}/{} requests",
|
||||
cfg.sim.input_length_min.unwrap_or(0),
|
||||
cfg.sim.input_length_max.map_or("∞".to_string(), |v| v.to_string()),
|
||||
cfg.sim
|
||||
.input_length_max
|
||||
.map_or("∞".to_string(), |v| v.to_string()),
|
||||
records.len(),
|
||||
raw_count,
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user