Skip to content

perf: benchmark inline versus worker placement for streaming ingestion #245

Description

@franciscojavierarceo

the current server-sent events (SSE) benchmark exercises the offloaded accumulator under concurrency, but it has no equivalent inline SSE control and uses an in-memory stream. that doesn't establish whether moving the live pipeline to a worker improves the workloads we care about. we should compare placement after the synchronous pipeline exists, then record whether offloading is worth implementing.

proposed third slice of #241, using the synchronous core from #243. relay extraction and client backpressure do not depend on a positive result here. this is a suggested scope; feel free to revise, combine, or remove it.

we should be able to verify that:

  • inline and worker variants run equivalent normalize/validate/fold/translate work with the same inputs and correctness checks; include both isolated processing and end-to-end measurements.
  • workloads cover realistic event sizes and arrival pacing, concurrent streams, long outputs, and slow consumers. report throughput, tail event latency, CPU use, memory, and worker/thread counts with reproducible commands and environment details.
  • experiments sweep bounded queue capacities with byte budgets and occupancy measurements; 16 entries is a candidate to test, not a prescribed default.
  • the experimental worker driver feeds input and drains output concurrently, passes tiny-capacity deadlock tests, and has explicit disconnect, cancellation, shutdown, and join/error handling. don't rely on aborting an already-running spawn_blocking task.
  • a recorded placement recommendation explains the tradeoffs against agreed latency/resource goals. keeping the live path inline is a valid outcome; production offloading is a separate follow-up only if the evidence supports it.

the existing benchmark is the baseline to extend.

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

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions