Skip to content

Benchmark gap remediation: PUB/SUB data-path perf, write coalescing, …#87

Merged
vorjdux merged 2 commits into
mainfrom
feature/benchmark-gap-analysis
Jun 27, 2026
Merged

Benchmark gap remediation: PUB/SUB data-path perf, write coalescing, …#87
vorjdux merged 2 commits into
mainfrom
feature/benchmark-gap-analysis

Conversation

@vorjdux

@vorjdux vorjdux commented Jun 27, 2026

Copy link
Copy Markdown
Owner

No description provided.

vorjdux added 2 commits June 27, 2026 15:02
…edition 2024, refreshed benchmarks

Performance work on the send and message paths, driven by a benchmark gap
analysis:

- Vectored writes for large frames (writev above a tuned threshold), so the
  body is not copied into the send buffer.
- Write coalescing for PUSH/PULL and a recv_batch path.
- PUB data-path pass: contiguous batch encoding, drain a full channel per
  coalesced write, caller-side subscription prefilter, allocation-light
  send_frames, and a generation-gated prefilter cache. PUB/SUB now beats
  rust-zmq on fan-out and edges it on topic filtering.
- Keep the broadcast path PoisonGuard-correct and documented.

Tooling and benches:

- Migrate the workspace to Rust edition 2024 and apply the rustfmt baseline.
- Rewrite the patterns PUB/SUB bench to time only steady-state transfer
  (the old numbers were a setup artifact), set zmq LINGER=0 to avoid
  teardown hangs, and bound criterion wall time.
- Tidy let-else and if-let on zmtp hot paths.

Docs:

- Add the benchmark gap remediation plan.
- Refresh README, docs/performance.md, and BENCHMARKS.md with numbers from
  the i7-1355U reference machine (Linux 6.17, rustc 1.96). Remove the
  sandbox section so this machine is the single reference. Correct the IPC
  claim to ~2.1x throughput with latency within noise. The cross-impl
  bench_peer table keeps prior-host numbers with a provenance note.
Roll the Unreleased performance work (vectored writes for large frames,
PUB/SUB broadcast coalescing, PullSocket::recv_batch) into 0.1.4, and add
the edition 2024 migration and the benchmark documentation refresh to the
changelog.

Bump the workspace package version and bring the lagging internal crate
dependency pins and the fuzz crate up to 0.1.4 so all crates move together.
@vorjdux
vorjdux merged commit 3e68d72 into main Jun 27, 2026
9 checks passed
@vorjdux
vorjdux deleted the feature/benchmark-gap-analysis branch June 27, 2026 15:30
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