Benchmark gap remediation: PUB/SUB data-path perf, write coalescing, …#87
Merged
Conversation
…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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.