Repository navigation
Commit 7281e2d
feat(asap-tools): run sketch-bench workload tables end to end with the paced feeder (#841)
* feat(planner): asap-planner --planner saved writes a sketch-bench eval plan without re-solving
Reads a plan from sketch-bench's autosketch_vs_asap plan file and the eval
table's `e2e` block (PromQL queries, the plan RQEs each reads, metric
labels), and writes streaming and inference YAML through the same
converter as --planner milp. experiment_run_e2e.py gains
controller.prebuilt_output_dir to deploy those configs instead of running
the planner.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix(planner): address review on --planner saved
Check saved picks against the RAQE's window rules, refuse duplicate
picks, reject avg queries before the leaf split, and take a roll-up's
grouping from the plan so the shared guard catches it. Share the flag
checks of --planner milp and saved. Copy only the two prebuilt configs
into a cleared output dir, refusing the dir itself.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat(asap-tools): run sketch-bench workload tables end to end with the paced feeder
- exporters.exporter_list.paced_feeder: experiment_run_e2e.py runs one
paced_feeder process per (sink, metric) on the worker nodes, pushing over
remote write to the query engine's ingest (sketchdb mode) and/or
Prometheus (other modes, or query_prometheus_too). It starts once its
sinks accept writes, shares one --start-ms and seed, and fails the run if
a feeder dies. Prometheus does not forward fed metrics to the query engine.
- Prometheus (bare-metal and containerized) starts with
--web.enable-remote-write-receiver when the feeder is configured.
- client_options.align_to_interval: repetition k evaluates at
floor((start - query_time_offset) / T) * T + k * T and is sent
query_time_offset after that time.
- sketch_bench_e2e/sketch_bench_e2e_configs.py writes an experiment_type
config from a table's e2e block: one query group per interval, the feeder
block, metrics, and controller.prebuilt_output_dir; structured queries
only with a SQL file.
- setup_dependencies.sh builds the feeder.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AnJ7LocWxguh3q4QWkCYae
* feat(asap-tools): give Prometheus a 5 s out-of-order window for the paced feeder
The feeder sends each tick's requests concurrently, so a series' samples
can reach Prometheus' remote-write receiver out of order within a second,
and Prometheus rejects them without an out-of-order window. When the paced
feeder is configured, the generated prometheus.yml (used by bare-metal and
containerized Prometheus) sets storage.tsdb.out_of_order_time_window: 5s.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AnJ7LocWxguh3q4QWkCYae
* feat(asap-tools): feed records metrics to ASAPQuery only
Records metrics (http, flows) reach remote write as one sample per value
field, many sharing a series and timestamp, which Prometheus' receiver
rejects. check_paced_feeder_config now takes the experiment modes: it
accepts records metrics when every mode feeds ASAPQuery only and refuses
them when a mode feeds Prometheus (baseline or query_prometheus_too).
The config generator feeds a table's records metrics only with
--sql-queries (only the structured queries read them); the config then
has no baseline mode, and records metrics stay out of `metrics`, which
with prebuilt planner configs only keeps fed metrics out of Prometheus'
forwarding.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AnJ7LocWxguh3q4QWkCYae
* fix(asap-tools): address review on the paced feeder runner
- Pass --samples-per-sec only to gauge and counter feeders and the new
records_per_sec as --records-per-sec only to records feeders; the
feeder exits on the other kind's flag.
- SQL query groups get time_window_seconds: 0; their templates read only
{{ end_time }} / {{ end_datetime }}, but the client refuses to render
templates without a window.
- Take the shared --start-ms after the per-node binary check and table
copy, so the 5 s lead covers only the launches.
- duration_secs must also cover the feeder's startup check before
steady_state_wait and the queries.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AnJ7LocWxguh3q4QWkCYae
* revert(asap-tools): drop Prometheus' out-of-order window for the paced feeder
The feeder now keeps each series' samples of a tick in one ordered
request, and Prometheus 2.53's remote-write receiver accepted a full feed
(48M samples) with no out-of-order window and no rejections. This reverts
f7e5a66; Prometheus keeps --web.enable-remote-write-receiver.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AnJ7LocWxguh3q4QWkCYae
* fix(asap-tools): give every e2e mode the same data windows
Each mode's feeder now stamps its data from the last multiple of the
aligned query intervals (sending it in real time from a shared send
time), and aligned query groups evaluate at that origin + k*T, sent once
the data has arrived. Every mode then answers over the same samples,
evaluation times stay on ASAPQuery's windows, and the first window is
never empty.
Also from review:
- refuse forward_unsupported_queries when sketchdb mode gives Prometheus
no data (the generator sets it false), and auto_discover_labels
- take the fed metrics from the feeder block
- launch feeders with one SSH per node and fail if that overruns the lead
- stop feeders at exit after a failed run
- resolve a relative workload_table; check parallelism only for sketchdb
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix(asap-tools): wait for an aligned feeder start instead of backdating
Feeders now start at the next multiple of the aligned intervals' LCM
(at most 600 s) rather than stamping data in the past, so the client
sends each query at its eval time + query_time_offset and the feeder
loses --send-at-ms.
Also from review:
- refuse sub-second aligned intervals and query_time_offset below
ASAPQuery's 5 s allowed lateness
- give feeder launches 10 s per node on top of the 5 s lead
- keep feeders running under flow.no_teardown
- refuse --sql-queries without --prebuilt-output-dir
- refuse other exporters next to the feeder with no listed metrics
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Milind Srivastava <milindsrivastava1997@gmail.com>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>1 parent bbb3033 commit 7281e2d
19 files changed
Lines changed: 2014 additions & 73 deletions
File tree
- .github/workflows
- asap-tools
- data-sources/paced-feeder
- src
- experiments
- experiment_utils
- services
- sketch_bench_e2e
- tests
- installation/common
- queriers/prometheus-client
- classes
- tests
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
92 | 92 | | |
93 | 93 | | |
94 | 94 | | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
95 | 98 | | |
96 | 99 | | |
97 | 100 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
160 | 160 | | |
161 | 161 | | |
162 | 162 | | |
163 | | - | |
164 | | - | |
| 163 | + | |
165 | 164 | | |
166 | 165 | | |
167 | 166 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
93 | 93 | | |
94 | 94 | | |
95 | 95 | | |
96 | | - | |
97 | | - | |
98 | | - | |
99 | | - | |
100 | | - | |
101 | 96 | | |
102 | 97 | | |
103 | 98 | | |
| |||
139 | 134 | | |
140 | 135 | | |
141 | 136 | | |
142 | | - | |
143 | 137 | | |
144 | 138 | | |
145 | 139 | | |
| |||
279 | 273 | | |
280 | 274 | | |
281 | 275 | | |
282 | | - | |
283 | | - | |
284 | | - | |
285 | | - | |
286 | | - | |
287 | | - | |
288 | | - | |
289 | | - | |
290 | 276 | | |
291 | 277 | | |
292 | 278 | | |
| |||
452 | 438 | | |
453 | 439 | | |
454 | 440 | | |
455 | | - | |
456 | | - | |
457 | 441 | | |
458 | 442 | | |
459 | 443 | | |
| |||
466 | 450 | | |
467 | 451 | | |
468 | 452 | | |
469 | | - | |
| 453 | + | |
470 | 454 | | |
471 | 455 | | |
472 | 456 | | |
473 | 457 | | |
474 | | - | |
| 458 | + | |
475 | 459 | | |
476 | 460 | | |
477 | 461 | | |
| |||
564 | 548 | | |
565 | 549 | | |
566 | 550 | | |
567 | | - | |
568 | 551 | | |
569 | 552 | | |
570 | 553 | | |
| |||
609 | 592 | | |
610 | 593 | | |
611 | 594 | | |
612 | | - | |
613 | | - | |
614 | | - | |
615 | | - | |
616 | | - | |
617 | | - | |
618 | | - | |
619 | 595 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
457 | 457 | | |
458 | 458 | | |
459 | 459 | | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
| 477 | + | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
460 | 502 | | |
461 | 503 | | |
462 | 504 | | |
| |||
500 | 542 | | |
501 | 543 | | |
502 | 544 | | |
| 545 | + | |
| 546 | + | |
| 547 | + | |
| 548 | + | |
| 549 | + | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
503 | 554 | | |
504 | 555 | | |
505 | 556 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
48 | 48 | | |
49 | 49 | | |
50 | 50 | | |
| 51 | + | |
| 52 | + | |
51 | 53 | | |
52 | 54 | | |
53 | 55 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
| 2 | + | |
2 | 3 | | |
3 | 4 | | |
4 | 5 | | |
5 | 6 | | |
| 7 | + | |
6 | 8 | | |
7 | 9 | | |
8 | 10 | | |
| |||
25 | 27 | | |
26 | 28 | | |
27 | 29 | | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
28 | 37 | | |
29 | 38 | | |
30 | 39 | | |
| |||
188 | 197 | | |
189 | 198 | | |
190 | 199 | | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
191 | 233 | | |
192 | 234 | | |
193 | 235 | | |
| |||
228 | 270 | | |
229 | 271 | | |
230 | 272 | | |
| 273 | + | |
| 274 | + | |
231 | 275 | | |
232 | 276 | | |
233 | 277 | | |
| |||
481 | 525 | | |
482 | 526 | | |
483 | 527 | | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
| 531 | + | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
| 538 | + | |
| 539 | + | |
| 540 | + | |
| 541 | + | |
| 542 | + | |
| 543 | + | |
| 544 | + | |
| 545 | + | |
| 546 | + | |
| 547 | + | |
| 548 | + | |
| 549 | + | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
| 556 | + | |
| 557 | + | |
| 558 | + | |
| 559 | + | |
| 560 | + | |
| 561 | + | |
| 562 | + | |
| 563 | + | |
| 564 | + | |
| 565 | + | |
| 566 | + | |
484 | 567 | | |
485 | 568 | | |
486 | 569 | | |
| |||
562 | 645 | | |
563 | 646 | | |
564 | 647 | | |
| 648 | + | |
| 649 | + | |
| 650 | + | |
565 | 651 | | |
566 | 652 | | |
567 | 653 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
134 | 134 | | |
135 | 135 | | |
136 | 136 | | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
137 | 148 | | |
138 | 149 | | |
139 | 150 | | |
| |||
186 | 197 | | |
187 | 198 | | |
188 | 199 | | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
189 | 224 | | |
190 | | - | |
191 | | - | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
192 | 230 | | |
193 | 231 | | |
194 | 232 | | |
| |||
0 commit comments