Skip to content

aggregate: the remaining assembly is latency (a ~20 s join-tree floor + a 27-step serial resolve chain), not work #252

Description

@defenwycke

⏰ Status, 2026-09-13 — two of the three levers have shipped; the measurement has not

Verified against main at 95c5e84, not from memory.

lever state
1. resolve chain off the network ✅ shipped — HAZYNC_RESOLVE_LOCAL=1 (#270)
2. narrow top levels locally ⬜ not built
3. record per-worker RTT ✅ shipped — [rtt] peer=… kind=join rtt_ms=… bytes_out=… (#291)

The headline claim below is still unmeasured. This issue says run 4's 128.7 s of assembly was
geography, and says in as many words that "that part is inference, not measured (no RTTs were
recorded)". They are recorded now — timed on the server's clock at both ends, so
rtt_ms - compute_s*1000 gives transport and queueing without the two clocks having to agree,
which across rented boxes in several countries they do not.

Nobody has run it. The instrumentation exists; the number that would settle lever 1 and lever 3
needs the same receipts on one card type in two geographies, which needs cards. Until then this
issue's central claim remains inference, and lever 2 should not be built on the strength of it.

Follow-up to #235, which measured the aggregate's assembly on an N-sweep (A40s, same receipts and binary as milestone run 4). At fan-out, the part that no longer shrinks is latency, not work:

N join tree resolves (27, serial) assembly
4 135.2 s 26.2 s 162.5 s
26 37.3 s 25.4 s 63.5 s
  • Join tree ≈ 19.5 s + 463/N card-seconds. The wide levels scale with N. The narrow top levels (widths 37, 19, 10, 5, 3, 2, 1) are a critical path of ~1.1 s per level, each level waiting on the one below.
  • Resolves: 27 steps, each consuming the previous conditional, median ~0.8 s each (A40), ~0.4 GPUs busy. They're flat in N by construction.
  • Run 4 (4090s across 7 countries) measured 128.7 s of assembly where compute alone predicts ~17 s. Every join and resolve is a coordinator ↔ worker round trip carrying receipts, so geography is paid per step. That part is inference, not measured (no RTTs were recorded).

Levers (not built, not measured):

  1. Run the resolve chain on the coordinator (or one co-located worker) instead of 27 network round trips. On a 4090 that's ~6 s of compute.
  2. Do the narrow top levels locally: once a level is narrower than the fleet, stop distributing it.
  3. Keep an aggregate's fleet in one region, and record per-worker RTT in the runner so the geography question gets answered.

The first measurement that would settle (1) and (3): the same receipts on one card type, in two geographies, with per-step timestamps (the #235 sweep's serve.sh wrapper does this).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    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