Skip to content

feat(deploy): three-axis sweep driver - #192

Closed
zzylol wants to merge 1 commit into
feat/measure-baseline-producer-columnsfrom
feat/three-axis-sweep-driver
Closed

zzylol wants to merge 1 commit into
feat/measure-baseline-producer-columnsfrom
feat/three-axis-sweep-driver

Conversation

@zzylol

@zzylol zzylol commented Apr 23, 2026

Copy link
Copy Markdown
Contributor

Summary

New run-three-axis-sweep.sh that iterates the (W, L, agg_type) grid from docs/sdk-aggregation-three-axis-design.md. Each paper §6.2 sub-sweep is a thin wrapper fixing two axes and varying the third:

Sub-sweep WINDOWS PROJECTIONS AGGS
6.2a time 1s 15s 60s 300s : dd-full
6.2b label 60s : zone,rack zone - dd-full
6.2c encoding 60s zone,rack raw-buffer dd-full dd-delta kll cms-full hll-full

(: = keep all labels; - = drop all; zone,rack = keep subset. : and - are bash-friendly escapes because the natural empty-string is awkward in a space-separated env var.)

How it works

  1. For each cell, docker compose downup with EXPORTER_SDK_WINDOW/PROJECTION/AGG set in env.
  2. Uses baseline-b0a-raw-stream.yml as the agent shape (OTLP → batch(1s) → OTLP) — neutral, keeps the agent from doing sketch work on top.
  3. Soaks for SOAK_S (default 180s), then invokes measure-baseline.py for one CSV row.
  4. Row tag is w${W}-l${PROJ_RAW}-a${AGG} so the output is trivially splittable back into the grid for plotting.

Verified locally

$ WINDOWS=5s PROJECTIONS=":" AGGS=raw-buffer SOAK_S=30 \
  CARDINALITY=50 FREQ_HZ=5 BYTES_WIN=3 \
  ./deploy/scripts/run-three-axis-sweep.sh > /tmp/sweep.csv

baseline,scale,rate,cardinality,producer_cpu_cores,...
w5s-l:-araw-buffer,N1,,50,0.025,9.754,322.269,...

Driver brings up/down cleanly, populates producer columns.

Stack dependency

Not in this PR

Numeric validation of the aggregator shapes (e.g., "does raw-buffer really emit every sample under gzip compression?") belongs to the §6.2c sub-sweep PR that uses this driver to collect actual data. This PR only validates the driver plumbing.

🤖 Generated with Claude Code

New sweep driver that iterates the `(W, L, agg_type)` grid defined
in docs/sdk-aggregation-three-axis-design.md, bringing up the
compose stack once per cell, soaking, calling measure-baseline.py,
and tearing down.

Each of the paper's §6.2 sub-sweeps is a thin wrapper fixing two
axes and varying the third:

  6.2a time:     WINDOWS="1s 15s 60s 300s" PROJECTIONS=":" AGGS="dd-full"
  6.2b label:    WINDOWS="60s"  PROJECTIONS=": zone,rack zone -"
                 AGGS="dd-full"
  6.2c encoding: WINDOWS="60s"  PROJECTIONS="zone,rack"
                 AGGS="raw-buffer dd-full dd-delta kll cms-full hll-full"

Implementation notes:
- PROJECTIONS uses ":" as a bash-friendly escape for "keep all
  labels" (the natural empty-string would be awkward to pass
  through a space-separated list) and "-" for "drop all".
  decode_projection() maps those back to what
  fake-exporter's EXPORTER_SDK_PROJECTION expects.
- Uses baseline-b0a-raw-stream.yml as a neutral agent shape
  (OTLP → batch(1s) → OTLP), which keeps the agent from running
  a sketch pipeline on top and conflating the SDK-side
  measurement. The SDK axis is the one under study.
- Row tag is "w${W}-l${PROJ_RAW}-a${AGG}" so the resulting CSV
  is trivially splittable back into the grid for plotting.

Smoke-tested locally against the PR #189/#190/#191 stack:

  $ WINDOWS=5s PROJECTIONS=":" AGGS=raw-buffer SOAK_S=30 \
    CARDINALITY=50 FREQ_HZ=5 BYTES_WIN=3 \
    ./deploy/scripts/run-three-axis-sweep.sh > /tmp/sweep.csv

  baseline,scale,rate,cardinality,producer_cpu_cores,...
  w5s-l:-araw-buffer,N1,,50,0.025,9.754,322.269,...

Driver brings up/down correctly, producer-side columns populate,
CSV is well-formed. Numeric validation of the aggregator output
(e.g., "does raw-buffer really emit every sample under gzip
compression?") belongs to the §6.2c sub-sweep PR that uses this
driver to collect actual data.

Stacked on feat/measure-baseline-producer-columns (#191) — that
PR adds the producer columns this script relies on.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@zzylol
zzylol deleted the branch feat/measure-baseline-producer-columns April 23, 2026 17:50
@zzylol zzylol closed this Apr 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant