Skip to content

Tracker: run #777 eval plans end to end from saved plans #824

Closed

Description

@milindsrivastava1997

Goal

Take ASAP's saved plans from the #777 evaluation (sketch-bench autosketch_vs_asap, results in sketch-bench#203), convert them to StreamingConfig / InferenceConfig without a ControllerConfig or a re-solve, and run them with asap-tools/experiments/experiment_run_e2e.py. This is for the paper experiments, so it sits beside --planner milp, not inside it.

sketch-bench side: ProjectASAP/sketch-bench#204 (plan file, PromQL and label schema in the workload table).

TODO

Order

sketch-bench P1 plan file (done, #203) ──┐
sketch-bench P2 e2e block ───────────────┼─► B1 saved plan → MilpSolution ─► B2 --planner saved ─┐
                                         │                                                      ├─► e2e run (classic r=1 m=1)
B3 e2e skip-planner ─────────────────────┴──────────────────────────────────────────────────────┤
B4 exporter + query config ◄── P2 ───────────────────────────────────────────────────────────────┤
B6 engine: sum-of-rate, nested topk (#827) ─────────────────────────────────────────────────────┘

Not in scope

  • Roll-ups and Hydra in the engine (fix(planner): refuse roll-up plans in milp_output #814 refuses roll-ups). Multi-grouping waits on these.
  • Switching --planner milp from milp::minimize to minimize_usage_cost (sketch-bench#188). Not needed here, since the eval's plan is read, not re-solved.
  • Arrival-rate mismatch (eval 2e6 samples/s vs. scrape-based e2e): tracked as a decision in the sketch-bench issue.

Activity

  1. milindsrivastava1997 commented on Oct 15, 2026

    @milindsrivastava1997
    ContributorAuthor

    Done. All items are complete (B5 not needed), and the classic r=1 m=1 run works end to end from the saved plans.

    Smoke runs on CloudLab (classic table, cheapest cpu-weighted ASAP plan via --planner saved, controller.prebuilt_output_dir, paced feeder at 1 sample/s per series, compared with a Prometheus baseline over the same data):

    • The plan converts with no refusals into 6 aggregations: 2 DDSketch, MultipleIncrease, 2 MultipleSum and CountMinSketchWithHeap. Every planned query is served by ASAPQuery, with none forwarded.
    • sum by (job) (data), sum_over_time, sum by (job) (sum_over_time) and rate match Prometheus exactly. The exception is ranges whose start falls inside the data: 15m sums differ by ~0.1–0.3% per job, consistent with Prometheus' closed [E-W, E] vs. ASAPQuery's left-open (E-W, E].
    • Instant quantiles have median relative error 2.5–5% (max ~10%). topk(32, sum_over_time) has median <1% (max ~10%).
    • quantile_over_time is served from a sliding 5m/1m DDSketch. It returns results once the full range is covered: 15m with a 20 min starting delay, median ~5% error (max up to 31% at p99). The 1h/6h/24h ranges need runs at least that long.
    • Late client sends evicted 1s windows (7/300 empty instant quantiles). This is fixed in fix(asap-tools): keep 10 s more engine history for late query sends #893, and verified there: 300/300.

    Follow-ups, not tracked here:

    • Tail errors (~10%, up to 31% at p99 over 15m) against the plan's 5% target.
    • A paper-rate run (2e6 samples/s per metric) and runs long enough for the 1h/6h/24h windows.
    • experiment_run_e2e.py teardown leaves blackbox_exporter running on the main node.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions