Skip to content

Extend the publish sweep and attribute its limit to generators or Fanout - #2

Merged
vishr merged 1 commit into
mainfrom
feat/find-ingest-ceiling
Oct 15, 2026
Merged

vishr merged 1 commit into
mainfrom
feat/find-ingest-ceiling

Conversation

@vishr

@vishr vishr commented Oct 15, 2026

Copy link
Copy Markdown
Member

Summary

  • The publish preset sweeps 1, 2, 4, 8, 16, 32 and 64 generator processes per signal, so a split run can pass the point where Fanout stops scaling.
  • Split runs record generator-host CPU per trial (from /proc/stat at each phase boundary) and classify trials as generator-limited (generator at or above 90% CPU) or saturated (under 10% gain over the previous process count) instead of the ambiguous saturated-or-generator-limited.
  • Read-under-write scheduling stops at the measured phase boundary, before the final CPU read, so SSH latency cannot add reads to a phase.
  • docs/telemetrygen.md documents the generator's own limits, including the trace exporter's serialized batch processor and its dropping queue.

Verification

  • just test (tests and vet), ShellCheck and bash -n pass.
  • Unit tests cover the extended preset, /proc/stat arithmetic, the new classification cases, and the scheduling boundary with a delayed CPU read.

https://claude.ai/code/session_01XA52nWyQ3R5f5kK8kjpAQW

…or Fanout

A split run on a 32-vCPU Fanout VM doubled its accepted rate with every
doubling of generator processes up to 16 per signal while Fanout used about
17 cores, and every phase was classified saturated-or-generator-limited.
The publish sweep now runs 1 to 64 processes per signal. Split runs read
the generator host's /proc/stat at each phase boundary and record its
average CPU; a trial whose generator host averaged at least 90% of its CPUs
is generator-limited, and one that gained under 10% over the previous
process count with the generator below that is saturated. Read scheduling
stops at the measured phase boundary, before the final CPU read.

docs/telemetrygen.md explains the generator's own limits: trace exports
share one serialized batch processor whose queue drops when full, while
logs and metrics export per worker and wait for each acknowledgement.

Claude-Session: https://claude.ai/code/session_01XA52nWyQ3R5f5kK8kjpAQW
@vishr
vishr merged commit 2894044 into main Oct 15, 2026
2 checks passed
@vishr
vishr deleted the feat/find-ingest-ceiling branch October 15, 2026 07:21
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