Skip to content

Add amd64 tarball artifact and guard packaging alternatives#1854

Merged
oferchen merged 1 commit into
masterfrom
allow-oc-rsync-and-rsync-coexistence
Nov 1, 2025
Merged

Add amd64 tarball artifact and guard packaging alternatives#1854
oferchen merged 1 commit into
masterfrom
allow-oc-rsync-and-rsync-coexistence

Conversation

@oferchen
Copy link
Copy Markdown
Owner

@oferchen oferchen commented Nov 1, 2025

Summary

  • skip update-alternatives registration in Debian/RPM packaging when the upstream rsync package is present so both packages can coexist
  • extend the xtask packaging command to build an amd64 tarball, including new tar/flate2 helpers and tests

Testing

  • RUST_TEST_THREADS=1 cargo test -p xtask

https://chatgpt.com/codex/tasks/task_e_690575c1982c83239fbdea27b8191981

@oferchen oferchen merged commit 2c82cb8 into master Nov 1, 2025
@oferchen oferchen deleted the allow-oc-rsync-and-rsync-coexistence branch November 1, 2025 03:06
oferchen added a commit that referenced this pull request May 5, 2026
Static-analysis half of #1854: predicts cache-line residency, branch
behavior, and working-set size of BoundedReorderBuffer at 100K, 1M, and
10M items. Compares the BTreeMap-backed buffer with the ring-based
alternative already shipped in engine::concurrent_delta::ReorderBuffer
(#1734) and lists the perf counters and decision criteria the runtime
half must capture.
oferchen added a commit that referenced this pull request May 5, 2026
…3707)

Static-analysis half of #1854: predicts cache-line residency, branch
behavior, and working-set size of BoundedReorderBuffer at 100K, 1M, and
10M items. Compares the BTreeMap-backed buffer with the ring-based
alternative already shipped in engine::concurrent_delta::ReorderBuffer
(#1734) and lists the perf counters and decision criteria the runtime
half must capture.
oferchen added a commit that referenced this pull request May 7, 2026
…#3827)

Benchmark plan for cachegrind/perf profiling of BoundedReorderBuffer
(crates/transfer/src/reorder_buffer.rs) at 1M files. Documents BTreeMap
node layout, names the ring-buffer alternative from #1853, defines the
three workloads (in-order, mostly-in-order with 5% gap, pathological),
and pins L1d/LLC miss rate plus IPC as the decision metrics.

Tracking task: oc-rsync #1854.
oferchen added a commit that referenced this pull request May 7, 2026
#3941)

Specifies perf stat and cachegrind plan to test whether BTreeMap node
scatter dominates ReorderBuffer dispatch cost, and the 2x cycle/miss
threshold a VecDeque ring buffer must beat to justify replacement.
oferchen added a commit that referenced this pull request May 16, 2026
Add a Criterion bench that exercises ReorderBuffer's insert/drain
path at 1M out-of-order indexed items across three payload sizes
(32 B, 256 B, 4 KB) and three insertion patterns (fully reverse,
random shuffle, near-in-order with 10% deltas). The bench is gated
behind BENCH_REORDER_CACHE=1 so default cargo bench runs stay fast.

The top-of-file documents how to drive perf stat (Linux) and
cachegrind (any platform) against the produced binary, and how to
interpret the numbers - favorable cache metrics keep the existing
Box<[Option<T>]> layout, while unfavorable metrics motivate a flat
Vec plus occupancy-bitmap layout or a hot/cold storage split.

Payloads are pre-built outside the timed section via iter_batched
so the measurement reflects ReorderBuffer ops, not allocation.
Capacity is sized per pattern so no insert ever triggers grow().
oferchen added a commit that referenced this pull request May 16, 2026
Add a Criterion bench that exercises ReorderBuffer's insert/drain
path at 1M out-of-order indexed items across three payload sizes
(32 B, 256 B, 4 KB) and three insertion patterns (fully reverse,
random shuffle, near-in-order with 10% deltas). The bench is gated
behind BENCH_REORDER_CACHE=1 so default cargo bench runs stay fast.

The top-of-file documents how to drive perf stat (Linux) and
cachegrind (any platform) against the produced binary, and how to
interpret the numbers - favorable cache metrics keep the existing
Box<[Option<T>]> layout, while unfavorable metrics motivate a flat
Vec plus occupancy-bitmap layout or a hot/cold storage split.

Payloads are pre-built outside the timed section via iter_batched
so the measurement reflects ReorderBuffer ops, not allocation.
Capacity is sized per pattern so no insert ever triggers grow().
oferchen added a commit that referenced this pull request May 16, 2026
Add a Criterion bench that exercises ReorderBuffer's insert/drain
path at 1M out-of-order indexed items across three payload sizes
(32 B, 256 B, 4 KB) and three insertion patterns (fully reverse,
random shuffle, near-in-order with 10% deltas). The bench is gated
behind BENCH_REORDER_CACHE=1 so default cargo bench runs stay fast.

The top-of-file documents how to drive perf stat (Linux) and
cachegrind (any platform) against the produced binary, and how to
interpret the numbers - favorable cache metrics keep the existing
Box<[Option<T>]> layout, while unfavorable metrics motivate a flat
Vec plus occupancy-bitmap layout or a hot/cold storage split.

Payloads are pre-built outside the timed section via iter_batched
so the measurement reflects ReorderBuffer ops, not allocation.
Capacity is sized per pattern so no insert ever triggers grow().
oferchen added a commit that referenced this pull request May 16, 2026
Add a Criterion bench that exercises ReorderBuffer's insert/drain
path at 1M out-of-order indexed items across three payload sizes
(32 B, 256 B, 4 KB) and three insertion patterns (fully reverse,
random shuffle, near-in-order with 10% deltas). The bench is gated
behind BENCH_REORDER_CACHE=1 so default cargo bench runs stay fast.

The top-of-file documents how to drive perf stat (Linux) and
cachegrind (any platform) against the produced binary, and how to
interpret the numbers - favorable cache metrics keep the existing
Box<[Option<T>]> layout, while unfavorable metrics motivate a flat
Vec plus occupancy-bitmap layout or a hot/cold storage split.

Payloads are pre-built outside the timed section via iter_batched
so the measurement reflects ReorderBuffer ops, not allocation.
Capacity is sized per pattern so no insert ever triggers grow().
oferchen added a commit that referenced this pull request May 16, 2026
… (#4180)

* chore(bench): profile ReorderBuffer cache behavior at 1M items (#1854)

Add a Criterion bench that exercises ReorderBuffer's insert/drain
path at 1M out-of-order indexed items across three payload sizes
(32 B, 256 B, 4 KB) and three insertion patterns (fully reverse,
random shuffle, near-in-order with 10% deltas). The bench is gated
behind BENCH_REORDER_CACHE=1 so default cargo bench runs stay fast.

The top-of-file documents how to drive perf stat (Linux) and
cachegrind (any platform) against the produced binary, and how to
interpret the numbers - favorable cache metrics keep the existing
Box<[Option<T>]> layout, while unfavorable metrics motivate a flat
Vec plus occupancy-bitmap layout or a hot/cold storage split.

Payloads are pre-built outside the timed section via iter_batched
so the measurement reflects ReorderBuffer ops, not allocation.
Capacity is sized per pattern so no insert ever triggers grow().

* style(engine): fix clippy doc-lazy-continuation and hex literal grouping

* style(engine): break paragraph out of nested list in bench doc
oferchen added a commit that referenced this pull request May 18, 2026
…3707)

Static-analysis half of #1854: predicts cache-line residency, branch
behavior, and working-set size of BoundedReorderBuffer at 100K, 1M, and
10M items. Compares the BTreeMap-backed buffer with the ring-based
alternative already shipped in engine::concurrent_delta::ReorderBuffer
(#1734) and lists the perf counters and decision criteria the runtime
half must capture.
oferchen added a commit that referenced this pull request May 18, 2026
…#3827)

Benchmark plan for cachegrind/perf profiling of BoundedReorderBuffer
(crates/transfer/src/reorder_buffer.rs) at 1M files. Documents BTreeMap
node layout, names the ring-buffer alternative from #1853, defines the
three workloads (in-order, mostly-in-order with 5% gap, pathological),
and pins L1d/LLC miss rate plus IPC as the decision metrics.

Tracking task: oc-rsync #1854.
oferchen added a commit that referenced this pull request May 18, 2026
#3941)

Specifies perf stat and cachegrind plan to test whether BTreeMap node
scatter dominates ReorderBuffer dispatch cost, and the 2x cycle/miss
threshold a VecDeque ring buffer must beat to justify replacement.
oferchen added a commit that referenced this pull request May 18, 2026
… (#4180)

* chore(bench): profile ReorderBuffer cache behavior at 1M items (#1854)

Add a Criterion bench that exercises ReorderBuffer's insert/drain
path at 1M out-of-order indexed items across three payload sizes
(32 B, 256 B, 4 KB) and three insertion patterns (fully reverse,
random shuffle, near-in-order with 10% deltas). The bench is gated
behind BENCH_REORDER_CACHE=1 so default cargo bench runs stay fast.

The top-of-file documents how to drive perf stat (Linux) and
cachegrind (any platform) against the produced binary, and how to
interpret the numbers - favorable cache metrics keep the existing
Box<[Option<T>]> layout, while unfavorable metrics motivate a flat
Vec plus occupancy-bitmap layout or a hot/cold storage split.

Payloads are pre-built outside the timed section via iter_batched
so the measurement reflects ReorderBuffer ops, not allocation.
Capacity is sized per pattern so no insert ever triggers grow().

* style(engine): fix clippy doc-lazy-continuation and hex literal grouping

* style(engine): break paragraph out of nested list in bench doc
oferchen added a commit that referenced this pull request May 18, 2026
… (#4180)

* chore(bench): profile ReorderBuffer cache behavior at 1M items (#1854)

Add a Criterion bench that exercises ReorderBuffer's insert/drain
path at 1M out-of-order indexed items across three payload sizes
(32 B, 256 B, 4 KB) and three insertion patterns (fully reverse,
random shuffle, near-in-order with 10% deltas). The bench is gated
behind BENCH_REORDER_CACHE=1 so default cargo bench runs stay fast.

The top-of-file documents how to drive perf stat (Linux) and
cachegrind (any platform) against the produced binary, and how to
interpret the numbers - favorable cache metrics keep the existing
Box<[Option<T>]> layout, while unfavorable metrics motivate a flat
Vec plus occupancy-bitmap layout or a hot/cold storage split.

Payloads are pre-built outside the timed section via iter_batched
so the measurement reflects ReorderBuffer ops, not allocation.
Capacity is sized per pattern so no insert ever triggers grow().

* style(engine): fix clippy doc-lazy-continuation and hex literal grouping

* style(engine): break paragraph out of nested list in bench doc
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant