Skip to content

Refactor client configuration into dedicated module#1642

Merged
oferchen merged 1 commit into
masterfrom
prepare-for-production-release-cleanup
Oct 30, 2025
Merged

Refactor client configuration into dedicated module#1642
oferchen merged 1 commit into
masterfrom
prepare-for-production-release-cleanup

Conversation

@oferchen
Copy link
Copy Markdown
Owner

Summary

  • move the client configuration structs, filter helpers, and bandwidth limit logic into a new client::config module that is re-exported for callers
  • slim down client::mod after the extraction so it focuses on orchestration logic and re-exports the configuration API
  • update the client tests to import the relocated helpers directly

Testing

  • cargo test -p rsync-core --lib -- --nocapture

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

@oferchen oferchen merged commit 3dfb156 into master Oct 30, 2025
@oferchen oferchen deleted the prepare-for-production-release-cleanup branch October 30, 2025 03:11
oferchen added a commit that referenced this pull request May 5, 2026
…1637) (#3721)

Audit current pool defaults (COPY_BUFFER_SIZE = 128 KiB,
max_buffers = available_parallelism()), document the workloads they were
tuned for, and call out where the defaults underprovision (1M-file
parallel bursts) and overprovision (sequential single-threaded
transfers, long-lived daemon mode). Cover the adaptive grow/shrink
policy from #1638-#1641, the OC_RSYNC_BUFFER_POOL_SIZE and
OC_RSYNC_BUFFER_POOL_STATS env vars from #1643, and the memory cap
interaction from #1188. Close with sizing rules of thumb for operators
and open questions for the pending #1642 benchmark.
oferchen added a commit that referenced this pull request May 7, 2026
Trim the audit to the five-section sizing brief: implementation
overview, default capacity and per-buffer size with line refs, sizing
assumptions (target concurrency, per-thread reuse, memory budget),
trade-offs (smaller pool vs larger pool, shared singleton, resizer
cadence), and five improvement proposals (workload-derived sizing,
CLI flag for OC_RSYNC_BUFFER_POOL_SIZE per #1643, instrumentation
hooks, idle drain, memory-cap-aware adaptive ceiling). Drops the
verbose history, recommendations, and pending-benchmark questions
that belong in #1642 follow-up notes.
oferchen added a commit that referenced this pull request May 17, 2026
…4254)

Adds a single-threaded Criterion benchmark that contrasts the fixed-size
BufferPool against the PID-controller-driven adaptive pool from
buffer_controller.rs across four workload shapes:

- steady_uniform - 1000 acquires of 64 KiB constant.
- bursty_small   - alternating bursts of 100 x 4 KiB and 10 x 1 MiB.
- growing        - 100 acquires each at 16 KiB, 64 KiB, 256 KiB, 1 MiB.
- shrinking      - reverse of growing.

The adaptive cell feeds record_transfer samples so the controller's PID
recommendation evolves over the run, mirroring the production wiring in
acquire_controlled_from. Companion to buffer_pool_contention.rs.

Refs #1642
oferchen added a commit that referenced this pull request May 18, 2026
…1637) (#3721)

Audit current pool defaults (COPY_BUFFER_SIZE = 128 KiB,
max_buffers = available_parallelism()), document the workloads they were
tuned for, and call out where the defaults underprovision (1M-file
parallel bursts) and overprovision (sequential single-threaded
transfers, long-lived daemon mode). Cover the adaptive grow/shrink
policy from #1638-#1641, the OC_RSYNC_BUFFER_POOL_SIZE and
OC_RSYNC_BUFFER_POOL_STATS env vars from #1643, and the memory cap
interaction from #1188. Close with sizing rules of thumb for operators
and open questions for the pending #1642 benchmark.
oferchen added a commit that referenced this pull request May 18, 2026
Trim the audit to the five-section sizing brief: implementation
overview, default capacity and per-buffer size with line refs, sizing
assumptions (target concurrency, per-thread reuse, memory budget),
trade-offs (smaller pool vs larger pool, shared singleton, resizer
cadence), and five improvement proposals (workload-derived sizing,
CLI flag for OC_RSYNC_BUFFER_POOL_SIZE per #1643, instrumentation
hooks, idle drain, memory-cap-aware adaptive ceiling). Drops the
verbose history, recommendations, and pending-benchmark questions
that belong in #1642 follow-up notes.
oferchen added a commit that referenced this pull request May 18, 2026
…4254)

Adds a single-threaded Criterion benchmark that contrasts the fixed-size
BufferPool against the PID-controller-driven adaptive pool from
buffer_controller.rs across four workload shapes:

- steady_uniform - 1000 acquires of 64 KiB constant.
- bursty_small   - alternating bursts of 100 x 4 KiB and 10 x 1 MiB.
- growing        - 100 acquires each at 16 KiB, 64 KiB, 256 KiB, 1 MiB.
- shrinking      - reverse of growing.

The adaptive cell feeds record_transfer samples so the controller's PID
recommendation evolves over the run, mirroring the production wiring in
acquire_controlled_from. Companion to buffer_pool_contention.rs.

Refs #1642
oferchen added a commit that referenced this pull request May 18, 2026
…4254)

Adds a single-threaded Criterion benchmark that contrasts the fixed-size
BufferPool against the PID-controller-driven adaptive pool from
buffer_controller.rs across four workload shapes:

- steady_uniform - 1000 acquires of 64 KiB constant.
- bursty_small   - alternating bursts of 100 x 4 KiB and 10 x 1 MiB.
- growing        - 100 acquires each at 16 KiB, 64 KiB, 256 KiB, 1 MiB.
- shrinking      - reverse of growing.

The adaptive cell feeds record_transfer samples so the controller's PID
recommendation evolves over the run, mirroring the production wiring in
acquire_controlled_from. Companion to buffer_pool_contention.rs.

Refs #1642
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